module Bio.PDB.EventParser.ParseMASTER(parseMASTER)
where
import Prelude hiding(String)
import qualified Data.ByteString.Char8 as BS
import Bio.PDB.EventParser.PDBEvents
import Bio.PDB.EventParser.PDBParsingAbstractions
masterFields :: [(Int, String -> ParsedField)]
masterFields = [(6, mKeyword "record header" "MASTER" ),
(10, mSpc 4 ),
(15, mInt "number of REMARK records" ),
(20, mInt "<zero>" ),
(25, mInt "number of HET records" ),
(30, mInt "number of HELIX records" ),
(35, mInt "number of SHEET records" ),
(40, pInt "number of TURN records" ),
(45, mInt "number of SITE records" ),
(50, mInt "number of coordinate transform records (ORIGX, SCALE,MTRIX)"),
(55, mInt "number of atomic coordinate records (ATOM, HETATM)"),
(60, mInt "number of MASTER records" ),
(65, mInt "number of CONECT records" ),
(70, mInt "number of SEQRES records" )]
parseMASTER line line_no = return $ if null errs
then [result]
else errs
where
(fields, errs) = parseFields masterFields line line_no
[fRec, _, fNumRemark, fZero, fNumHet, fNumHelix, fNumSheet, fNumTurn,
fNumSite, fNumXform, fNumAts, fNumMaster, fNumConect, fNumSeqres] = fields
IFInt numRemark = fNumRemark
IFInt 0 = fZero
IFInt numHet = fNumHet
IFInt numHelix = fNumHelix
IFInt numSheet = fNumSheet
IFInt numTurn = fNumTurn
IFInt numSite = fNumSite
IFInt numXform = fNumXform
IFInt numAts = fNumAts
IFInt numMaster = fNumMaster
IFInt numConect = fNumConect
IFInt numSeqres = fNumSeqres
result = MASTER numRemark numHet numHelix numSheet numTurn
numSite numXform numAts numMaster numConect
numSeqres