mmtf-0.1.0.0: src/Bio/MMTF/Type.hs
module Bio.MMTF.Type where
import Data.Int (Int32, Int8)
import Data.Text (Text)
data UnitCell = UnitCell { ucA :: !Float
, ucB :: !Float
, ucC :: !Float
, ucAlpha :: !Float
, ucBeta :: !Float
, ucGamma :: !Float
}
deriving (Show, Eq)
data Transform = Transform { chainIndexList :: ![Int32]
, matrix :: ![Float]
}
deriving (Show, Eq)
data Assembly = Assembly { transformList :: ![Transform]
, assemblyName :: !Text
}
deriving (Show, Eq)
data Entity = Entity { entityChainIndexList :: ![Int32]
, entityDescription :: !Text
, entityType :: !Text
, entitySequence :: !Text
}
deriving (Show, Eq)
data GroupType = GroupType { gtFormalChargeList :: ![Int32]
, gtAtomNameList :: ![Text]
, gtElementList :: ![Text]
, gtBondAtomList :: ![Int32]
, gtBondOrderList :: ![Int32]
, gtGroupName :: !Text
, gtSingleLetterCode :: !Char
, gtChemCompType :: !Text
}
deriving (Show, Eq)
data SecondaryStructure = PiHelix -- 0
| Bend -- 1
| AlphaHelix -- 2
| Extended -- 3
| ThreeTenHelix -- 4
| Bridge -- 5
| Turn -- 6
| Coil -- 7
| Undefined -- -1
deriving (Show, Eq)
data FormatData = FormatData { mmtfVersion :: !Text
, mmtfProducer :: !Text
}
deriving (Show, Eq)
data StructureData = StructureData { title :: !(Maybe Text)
, structureId :: !(Maybe Text)
, depositionDate :: !(Maybe Text)
, releaseDate :: !(Maybe Text)
, numBonds :: !Int32
, numAtoms :: !Int32
, numGroups :: !Int32
, numChains :: !Int32
, numModels :: !Int32
, spaceGroup :: !(Maybe Text)
, unitCell :: !(Maybe UnitCell)
, ncsOperatorList :: !(Maybe [[Float]])
, bioAssemblyList :: !(Maybe [Assembly])
, entityList :: !(Maybe [Entity])
, resolution :: !(Maybe Float)
, rFree :: !(Maybe Float)
, rWork :: !(Maybe Float)
, experimentalMethods :: !(Maybe [Text])
, bondAtomList :: !(Maybe [Int32]) -- binary (type 4)
, bondOrderList :: !(Maybe [Int8]) -- binary (type 2)
}
deriving (Show, Eq)
data ModelData = ModelData { chainsPerModel :: ![Int32] }
deriving (Show, Eq)
data ChainData = ChainData { groupsPerChain :: ![Int32]
, chainIdList :: ![Text] -- binary (type 5, length 4)
, chainNameList :: !(Maybe [Text]) -- binary (type 5, length 4)
}
deriving (Show, Eq)
data GroupData = GroupData { groupList :: ![GroupType]
, groupTypeList :: ![Int32] -- binary (type 4)
, groupIdList :: ![Int32] -- binary (type 8)
, secStructList :: !(Maybe [SecondaryStructure]) -- binary (type 2)
, insCodeList :: !(Maybe [Char]) -- binary (type 6)
, sequenceIndexList :: !(Maybe [Int32]) -- binary (type 8)
}
deriving (Show, Eq)
data AtomData = AtomData { atomIdList :: !(Maybe [Int32]) -- binary (type 8)
, altLocList :: !(Maybe [Char]) -- binary (type 6)
, bFactorList :: !(Maybe [Float]) -- binary (type 10)
, xCoordList :: ![Float] -- binary (type 10)
, yCoordList :: ![Float] -- binary (type 10)
, zCoordList :: ![Float] -- binary (type 10)
, occupancyList :: !(Maybe [Float]) -- binary (type 9)
}
deriving (Show, Eq)
data MMTF = MMTF { format :: !FormatData
, structure :: !StructureData
, model :: !ModelData
, chain :: !ChainData
, group :: !GroupData
, atom :: !AtomData
}
deriving (Show, Eq)