module Bio.PDB.Structure(String,
vdot, vnorm, vproj, vperpend, vperpends, vdihedral, (*|), (|*),
Structure(..), Model(..), Chain(..), Residue(..), Atom(..))
where
import GHC.Generics(Generic)
import Prelude hiding(String)
import Bio.PDB.EventParser.PDBEvents(String, Vector3(..))
import Control.DeepSeq
import Bio.PDB.Structure.List as L
import Bio.PDB.Structure.Vector
data Structure = Structure {
models :: L.List Model
} deriving (Eq, Show, Generic)
instance NFData Structure where
rnf m = rnf (models m) `seq` ()
data Model = Model { modelId :: !Int,
chains :: L.List Chain
} deriving (Eq, Show, Generic)
instance NFData Model where
rnf m = modelId m `seq` rnf (chains m) `seq` ()
data Chain = Chain { chainId :: !Char,
residues :: L.List Residue
} deriving (Eq, Show, Generic)
instance NFData Chain where
rnf m = chainId m `seq` rnf (residues m) `seq` ()
data Residue = Residue { resName :: !String,
resSeq :: !Int,
atoms :: L.List Atom,
insCode :: !Char
} deriving (Eq, Show, Generic)
instance NFData Residue where
rnf r = rnf (atoms r) `seq` ()
data Atom = Atom { atName :: !String,
atSerial :: !Int,
coord :: !Vector3,
bFactor :: !Double,
occupancy :: !Double,
element :: !String,
segid :: !String,
charge :: !String,
hetatm :: !Bool
} deriving (Eq, Show, Generic)
instance NFData Atom where
rnf (Atom {}) = ()