5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . /012348None5AAdds instances of Params for tuples of more than ten Buildables. 6789:;<=>5 6789:;<=>5None ?@ABCDEFGHIJ@GJ ?@ABCDEFGHIJNoneKLMNOPKLMNOPNone LThis module wraps 3D vector operations, and adds missing ones. Also hides a Vector class KDefines type alias for position and translation vectors in PDB structures. 8Unpacks an abstract 3D vector into a triple of Doubles. ;Maps an operation that modifies a Double onto a 3D vector. AMaps an operation on a pair of Doubles onto a pair of 3D vectors  coordinatewise. <Normalises to a unit vector in the same direction as input. *Computes a dot product of two 3D vectors. 82-norm of a vector (also called a magnitude or length.) KCompute dihedral between three bond vectors using spherical angle formula. Scalar product. (Q0 indicates side on which one can put a scalar.) Scalar product. (Q0 indicates side on which one can put a scalar.) cFinds a vector component of the first vector that is a projection onto direction of second vector. @Returns a component of the vector v that is perpendicular to w. RFinds a component of the vector v that is perpendicular to all vectors in a list.  R      RNone/Type alias for a mutable sequence of elements. 1Type alias for a immutable sequence of elements. Empty vector. Vector with a single element Create a new mutable vector. 1Allocate initial space for a new mutable vector. Length of mutable vector. ?Default initial size of a mutable vector for residue contents. =Default initial size of a mutable vector for chain contents. ADefault initial size of a mutable vector for structure contents. (Appends an element to a mutable vector. :Finalizes a mutable vector, and returns immutable vector. # [Does it shrink allocated space?]   on immutable vectors. !! on immutable vectors. "" on immutable vectors. ## on immutable vectors. $$ on immutable vectors. %% on immutable vectors. && on immutable vectors. '' on immutable vectors. (( on immutable vectors. )+Conversion of an immutable vector to list. *# on immutable vectors. +!Indexing of an immutable vector. S !"#$%&'()*+T !"#$%&'()*+(#% !"&$')*+S !"#$%&'()*+TNoneUEGenerates a direct instance of iterable between $typA and $typB with . given names of getter and setter, so that:  $getter :: $typA -> $typB & $setter :: $typB -> $typA -> $typA VCGenerates convenience function for iterating over a single object. W#Generates a transitive instance of , between $typA and $typC,  assuming existence of , $typA $typB, and , $typB $typC. ,-./0123UVW ,-./0123UVW,-./0123UVWNone48We use only strict ByteString as strings in PDB parser. 444 Safe-Inferred5#Enumeration of beta-strand sense. 567567576576 Safe-Inferred8Enumeration of helix types JPDB Class number in columns 39-40 for each type of helix in HELIX record:  Right-handed alpha (default)  Right-handed omega  Right-handed pi  Right-handed gamma  Right-handed 3 - 10  Left-handed alpha  Left-handed omega  Left-handed gamma  2 - 7 ribbon/helix  Polyproline 9helix2code converts a 8' enumeration into an PDB CLASS number. :/helix2code converts an PDB CLASS number into a 8 enumeration. 8XYZ[\]^_`a9:89:89:8 a`_^]\[ZYX9: Safe-Inferred;AEnumeration of experimental methods occuring in the PDB archive. E)Generates an ExpMethod from words in PDB F%Converts an ExpMethod back into text ;<=>?@ABCDEF ;<=>?@ABCDEF ;DCBA@?>=<EF; DCBA@?>=<EFNoneG$Datatype for event-based PDB parser DResidue id: residue name, chain, residue id, residue insertion code LAtom id: atom name, residue name, chain, residue id, residue insertion code GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~45678;<=>?@ABCDGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~24Gwvuqmljf^]ZXUQJIHxyz{|}~rstnopnopkghi_`abcde_`abgh_`[\abghYVWRSTKLMNOP5768;DCBA@?>=<Gwvuqmljf^]ZXUQJIHxyz{|}~rstnopnopkghi_`abcde_`abgh_`[\abghYVWRSTKLMNOPNone&b<A common type for shuttling parsed and typed record values. c3Splits a string into substrings by column numbers. d Converts a b containing 4< into this string or an empty string if nothing was parsed. e4Construct an error message by concatenating list of  Bytestrings fhParser for an optional single-character field, first argument is a name of a field, second is an input. g9Parser for an optional spacing, an argument is an input. hOld version of pSpc . NOTE: also slower than using new trimFront ieParser for an optional integer field, first argument is a field name, a second argument is an input. jReports error from pInt. kdParser for an optional string field, first argument is a field name, a second argument is an input. llParser for an optional floating-point field, first argument is a field name, a second argument is an input. m=A helper method for converting a parser of an optional field : into a parser of an optional field with a default value. nSParser for an optional single character field with a default value, arguments are:  field name  default value  input oJParser for an optional integer field with a default value, arguments are:  field name  default value  input pIParser for an optional string field with a default value, arguments are:  field name  default value  input qQParser for an optional floating-point field with a default value, arguments are:  field name  default value  input r]Converts an optional field parser into a mandatory field parser that bails on missing input. Arguments are:   name of the field type @ a parser function that takes field name, and input and returns b $A results is a function that takes:   field name  input and returns a b. s6Return error message when mandatory field is missing. tLParser for a mandatory character field with a default value, arguments are:  field name  input uQParser for a mandatory floating-point field with a default value, arguments are:  field name  input vIParser for a mandatory string field with a default value, arguments are:  field name  input wJParser for a mandatory integer field with a default value, arguments are:  field name x5Parser for a mandatory spacing field, arguments are:  number of columns for spacing  input yVParser for a fixed field that can be filled with one of many keywords, arguments are:  field name  a list of valid keywords  input z8Parser for a fixed single keyword field, arguments are:  field name  keyword  input {SDissects columns from stage 1 parsing, and applies converters from stage 2 parsing * list of string parsers that return typed b values @ list of column numbers that indicate a beginning of each field  input |"Finds IFError values in a list of b values, and returns / a list of error events in case there are any. * list of string parsers that return typed b values @ list of column numbers that indicate a beginning of each field . line number to be injected into error events  input }CUses field declarations that are list of (column number, parser to b, ...) 1 tuples and applies it to a given line of input. Arguments are:  field declarations list  input line ! ordinal number of an input line ~Returns if a given b/ value _certainly_ represents a missing value. Returns if a given b/ value _certainly_ represents a present value. CMerges a set of values that corresponds to a residue description. Arguments are:  B boolean indicating, if the field group may omit a residue number  field group name (description) 9 column number beginning the residue description entries  b. containing a three letter residue identifier  b- containing a single letter chain identifier  b containing a residue number  b% containing a residue insertion code A result is a / of pair with column number and error message,  or # value with a residue description. LMerges a set of values that corresponds to an optional residue description. Arguments are:  B boolean indicating, if the field group may omit a residue number  field group name (description) 9 column number beginning the residue description entries  b. containing a three letter residue identifier  b- containing a single letter chain identifier  b containing a residue number  b% containing a residue insertion code A result is a / of pair with column number and error message,  or  / value that may contain a residue description. HMerges a set of values that correspond to a mandatory atom description. Arguments are:   field group name (description) 9 column number beginning the residue description entries  b+ containing a three letter atom identifier  b. containing a three letter residue identifier  b- containing a single letter chain identifier  b containing a residue number  b% containing a residue insertion code A result is a / of pair with column number and error message,  or - value that may contain an atom description. HMerges a set of values that correspond to an optional atom description. Arguments are:   field group name (description) 9 column number beginning the residue description entries  b+ containing a three letter atom identifier  b. containing a three letter residue identifier  b- containing a single letter chain identifier  b containing a residue number  b% containing a residue insertion code A result is a / of pair with column number and error message,  or  - value that may contain an atom description. Changes a list of & values, into a list of all values in  entries. \Extracts Left (column_number, error_message) values from a list of results in a given line,  to form IC events with a given line number, column number and error message.  Arguments:   line number  list of 6 (column_number, error_message_string) result values,  where . entries are used to generate error messages. Result is a list of G entries that contain I s (if any.) Changes a list of & values, into a list of all values in  entries. Utility: Changes a list of  s to a list of values hidden in  _ records. ,bcdefghijklmnopqrstuvwxyz{|}~"Jbdfgiklnopqtuvwxyz}&bcdefghijklmnopqrstuvwxyz{|}~NoneParses an ATOM record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. {-@ SPECIALIZE parseATOM :: Bool -> String -> Int -> IO [PDBEvent] -} Parses an ANISOU record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. NoneParses a HEADER record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. NoneParses a TITLE record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. None'Parses a record with a single integer.  Arguments:   constructor  input line  input line number -Result is a monad action returning a list of Gs. Parses a NUMMDL record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. Parses a MODEL record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. NoneParses a REVDAT record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. NoneParses a CONECT record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. NoneParses a SEQRES record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. NoneParses a CRYST1 record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. NoneParses a HET record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs.  NoneParses a SHEET record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. !NoneParses a TER record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. "NoneFields of the MASTER record Parses a MASTER record.  Arguments:   input line  input line number .Result is a mionad action returning a list of Gs. #NoneParses a MODRES record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. $NoneParses a SEQADV record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. %NoneParses a CAVEAT record.  Arguments:  input line  input line number &NoneParses a SPLIT record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. 'NoneDParses a JRNL or REMARK 1 record that contains a journal reference.  Arguments:  E boolean indicating, if it is first reference for a structure (JRNL)  or any other (REMARK 1.)  input line  input line number -Result is a monad action returning a list of Gs. 8Parses a JRNL record that contains a journal reference.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. <Parses a REMARK 1 record that contains a journal reference.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. (None"Parses a _generic_ REMARK record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. )NoneFields of a DBREF record. Parses a DBREF record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. List of fields in DBREF1 line List of fields in DBREF2 line. ,Checks agreement between DBREF1 and DBREF2. ,Parses a pair of DBREF1 and DBREF2 records.  Arguments:   two input lines as a tuple  input line number -Result is a monad action returning a list of Gs. *None"Parses a HETNAM or HETSYN record.  Arguments:  & boolean indicating, if it is HETNAM ( ) or HETSYN ( ) record  input line  input line number -Result is a monad action returning a list of Gs. +NoneParses a HET record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. ,NoneParses a FORMUL record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. -NoneParses a CISPEP record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. .NoneParses a SSBOND record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. /NoneParses a LINK record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. 0NoneParses a SLTBRG record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. 1NoneParses a HYDBND record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. 2NoneParses a SITE record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. 3None#Parses an OBSLTE or SPRSDE record:  Arguments:   a PDBEvent constructor:  OBSLTE or  SPRSDE   input line  input line number -Result is a monad action returning a list of Gs. Parses a OBSLTE record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. Parses a SPRSDE record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. 4NoneParses a COMPND record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. Parses a SOURCE record:  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. .NOTE: SOURCE record values are always Strings 5None'String type used all over the library. 9Fields of the KEYWDS, AUTHOR, EXPDTA and MDLTYP records. 0Parses a record that contains a list of values.  Arguments:   a matrix constructor 4 a separator characteristic for this type of record  input line  input line number -Result is a monad action returning a list of Gs. Parses a KEYWDS record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. Parses a AUTHOR record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. Parses a EXPDTA record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. Parses a MDLTYP record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. 6None8Parses a single line with matrix or vector information.  Arguments:  , record constructor: SCALEn, ORIGXn, MTRIXn  input line  input line number -Result is a monad action returning a list of Gs. Parses a SCALEn record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. Parses a ORIGXn record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. Parses a MTRIXn record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs. 7NoneParses a TVECT record.  Arguments:   input line  input line number -Result is a monad action returning a list of Gs.  NoneParses an input stream input with name fname at line line_no, and uses parsed input evts to perform an action on them and accumulator acc. 9Returns the ultimate value of the accumulated results in acc Cafter all actions are performed in an order consistent with input. Parses a strict ByteString contents named fname and performs action O on events given by parsing chunks, returning accumulated results. Accumulator  is primed by acc. 7Checks whether line was ignored as unknown record type  NoneSingle atom position < | NOTE: disordered atoms are now reported as multiplicates  eResidue groups all atoms assigned to the same aminoacid or nucleic acid base within a polymer chain. 9Single linear polymer chain of protein, or nucleic acids SPDB entry may contain multiple models, with slight differences in coordinates etc. 8Structure holds all data parsed from a single PDB entry !     % 4     %4           None,-./0123,-./0123 NoneStandard nucleic acid codes RList of all correspondences between FASTA 1-letter codes, and PDB 3-letter codes.  Standard protein codes  6List of both standard and non-standard protein codes.  \Dictionary of translations from all 3-letter PDB codes into 1-letter FASTA aminoacid codes.  CDictionary of translations from 1-letter FASTA aminoacid (standard + protein) codes into 3-letter PDB codes. 6Three-letter PDB code for an unknown type of residue. :One-letter aminoacid code for an unknown type of residue. PDictionary mapping three-letter PDB residue code to a single-letter FASTA code. UDictionary mapping single-letter FASTA standard aminoacid code to a PDB residue name   Converts a  8& into a one character aminoacid code.  Converts an , yielding  0s into a list of aminoacid one-character codes.   Converts an , yielding  0s into a list of aminoacid one-character codes. BScans a list and applies first argument to all consecutive pairs, + and second argument to the beginning or ` lone wolf` , mapping to  a list of the same length. AConvert a filename and Chain into a text of FASTA format record. 2 First argument tells if we want gaps included.       !" !" !"      !"9None#$%&'#$%&'#$%&' None(0Basic elemental parameters as suggested by CSD. XTODO: May be better as a newtype, and make sure that other modules use this declaration NInternal method that reports error to stderr, and return given default value. )!Atomic number of a given element +#Atomic mass of a given element in g/mol ,*Van der Waals radius of the given element ()*+,-.()*+,-.(-.)+*,()*+,-.None@Record holding a current state of the structure record builder. /RGiven filename, and contents, parses a whole PDB file, returning a monadic action ( | with a tuple of (Structure, [PDBEvent])), where the list of events contains all # | parsing or construction errors. /Initial state of the structure record builder. DChecks that a residue with a given identification tuple is current, 9 | or if not, then closes previous residue (if present),  | and marks a new ,,current'' residue in a state of builder. FChecks that a chain with a given identification character is current, H | and if not, creates one. Also checks that we have any model in which  | to assign the chain. IChecks that a current model has been declared, and creates zeroth model,  | if no such model exists. T TODO: when createing a dummy model, check that there are no models declared before / [Otherwise one needs to report an error!] hCloses construction of a current residue and appends this residue to a current chain. (Monadic action.) &closeResidue :: State.State BState () JFinalizes construction of current chain, and appends it to current model. $closeChain :: State.State BState () :Reports error during building of structure for PDB entry. . TODO: This should be probably monadic action  TODO: forgot about line/column number passing! (Finalizes construction of current model 9Finalizes construction of record holding PDB entry data. P NOTE: this one is different and should only be used after parsing is complete! ePerforms a match on a single PDBEvent and performs relevant change to a BState of structure builder. ?parseStep :: (State.MonadState BState m) => PDBEvent -> m () BCreates a new model within structure builder. (For internal use.) 6 WARNING: And forgets anything that was there before! [Finalizes state of structure builder, and returns pair of a structure, and list of errors. w NOTE: should have a monadic action for each error instead. Then possibly default monad that accumulates these errors.  !"#$%&'()*/+//  !"#$%&'()*/+None0#Prints a PDBEvent to a filehandle. 18Reports whether a given PDB record is already printable ) [temporary method, they all should be.]  Including errors. 0,-1./001010,-1./0None1ShowS like type for a list of Gs. 24Writes a structure in a PDB format to a filehandle. 2Generates list of Gs from a given Structure. 3Generates list of Gs from a given Model. 4Generates list of Gs from a given Chain. 5Generates list of G&s from a given Residue and its Chain. 6Generates list of G1s from a given Atom, its Residue, and its Chain. 1223456221223456None46Write structure to a .pdb file. (NOT YET IMPLEMENTED) 7839:;434347839:;4 None6 ,-./0123     #$%&'()*+,-34634     ,-./0123$%&'# (-)+*,<:;<:;=:;>:;?:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345566 7 8 8 9 : ; < / = 1 3 4 8 8 > ?  @ @ A B B C D E E F G H I J K L M N9O9P9Q9R9S T U V W X Y Z[\]^[^_`abcdefghijklmnopqrstuvwxyz{|}~O{{{{{  !!""##$$%%&&''''(())))))**++,,--..//0011223333 4 4 4 4 5o5555556666677        !"#$%&'()*+,-. / 0 1 2 3 4 5 6 7 89:;<=>?@ABCDE9FGHIJKLMNOPQRSTUVWXYZ[\]o^_`ab hPDB-0.99Bio.PDB.EventParser.PDBEventsBio.PDB.IO.OpenAnyFileBio.PDB.Structure.VectorBio.PDB.Structure.ListBio.PDB.IterableBio.PDB.EventParser.StrandSenseBio.PDB.EventParser.HelixTypes'Bio.PDB.EventParser.ExperimentalMethods"Bio.PDB.EventParser.PDBEventParserBio.PDB.Structure Bio.PDB.FastaBio.PDBBio.PDB.Structure.ElementsBio.PDB.StructureBuilder#Bio.PDB.EventParser.PDBEventPrinterBio.PDB.StructurePrinter Bio.PDB.IOBio.PDB.Util.MissingInstancesBio.PDB.EventParser.FastParseBio.PDB.InstantiateIterableBio.PDB.Common*Bio.PDB.EventParser.PDBParsingAbstractionsBio.PDB.EventParser.ParseATOMBio.PDB.EventParser.ParseHEADERBio.PDB.EventParser.ParseTITLE"Bio.PDB.EventParser.ParseIntRecordBio.PDB.EventParser.ParseREVDATBio.PDB.EventParser.ParseCONECTBio.PDB.EventParser.ParseSEQRESBio.PDB.EventParser.ParseCRYST1Bio.PDB.EventParser.ParseHELIXBio.PDB.EventParser.ParseSHEETBio.PDB.EventParser.ParseTERBio.PDB.EventParser.ParseMASTERBio.PDB.EventParser.ParseMODRESBio.PDB.EventParser.ParseSEQADVBio.PDB.EventParser.ParseCAVEATBio.PDB.EventParser.ParseSPLITBio.PDB.EventParser.ParseJRNLBio.PDB.EventParser.ParseREMARKBio.PDB.EventParser.ParseDBREFBio.PDB.EventParser.ParseHETNAMBio.PDB.EventParser.ParseHETBio.PDB.EventParser.ParseFORMULBio.PDB.EventParser.ParseCISPEPBio.PDB.EventParser.ParseSSBONDBio.PDB.EventParser.ParseLINKBio.PDB.EventParser.ParseSLTBRGBio.PDB.EventParser.ParseHYDBNDBio.PDB.EventParser.ParseSITE#Bio.PDB.EventParser.ParseObsoleting'Bio.PDB.EventParser.ParseSpecListRecord#Bio.PDB.EventParser.ParseListRecord%Bio.PDB.EventParser.ParseMatrixRecordBio.PDB.EventParser.ParseTVECTResidueBio.PDB.Iterable.UtilsAC-Vector-2.3.2Data.Vector.V3v3zv3yv3xVector3readFile writeFileVec3D unpackVec3Dvmapvzip vnormalisevdotvnorm vdihedral*||*vprojvperpend vperpendsTempListListempty singletonnew initialNew tempLengthresidueVectorSizechainVectorSize defaultSizeaddfinalizefoldlfoldl'foldrmapfiltermapMfoldMlengthlasttoListvimap!IterableimapMimapifoldMifoldrifoldlifoldl'ilengthString StrandSenseT AntiparallelParallelHelixT helix2code code2helix ExpMethodOtherExpMethodSolutionScattering SolutionNMR SolidStateNMRElectronMicroscopyElectronCrystallographyNeutronDiffractionFiberDiffractionXRayDiffraction mkExpMethod showExpMethodPDBEventPDBIgnoredLine PDBParseErrorSEQADVpdbId advResiduedatabase accessionCode dbResnamedbSeqNumMODRESpdbCoderesiduestdResJRNLcontentisFirstTVECTvecHYDBNDatHaltlocHSLTBRGLINKat1altloc1at2altloc2symop1symop2linkdistSSBONDsymOp1symOp2bondLenSPLITcodesSPRSDEOBSLTEdatethisentriesSITEsiteidnumresresiduesENDMDLENDMASTER numRemarknumHetnumHelixnumSheetnumTurnnumSitenumXformnumAts numMaster numConect numSeqresTERresnameSOURCECOMPNDtokensCRYST1abcalphabetagammaspcGrpzValueMTRIXnrelMolSCALEnORIGXnnotSHEETstrandIdsheetId numStrandssensecurAtprevAtHELIXiniResendRes helixClasslenCISPEPres1res2angleFORMULcompNumisWaterformulaHETseqNuminsCodeatmNum descriptionHETNAMhetIdname notSynonymREVDATmodNummodDatmodIdmodTypdetailsDBREF iniSeqNumPDB iniInsCodePDB endSeqNumPDB endInsCodePDB seqDbName seqDbAccCode seqDbIdCode iniSeqNumInDbiniInsCodeInPDBRef endSeqNumInDbendInsCodeInPDBRefCAVEATcontpdbidcommentCONECTatomsMODELNUMMDLMDLTYPEXPDTA expMethodsREMARKtextAUTHORKEYWDSaListTITLE continuationtitleHEADERclassificationdepDateidCodeSEQRESserialnumresListSIGUIJANISOUu_1_1u_2_2u_3_3u_1_2u_1_3u_2_3SIGATMATOMnoatomtyperestypechainresidresinsaltloccoords occupancybfactorsegideltchargehetatmRESIDATIDparsePDBRecordsAtomatNameatSerialcoordbFactorelementresNameresSeqChainchainIdModelmodelIdchains StructuremodelsdefaultResnamedefaultFastaCoderesname2fastacodefastacode2resname fastaSequencefastaGappedSequence fastaRecordfastaGappedRecord firstModelnumAtoms numResidues numChains numModelsElement atomicNumbercovalentRadius atomicMassvanDerWaalsRadius assignElement guessElementparseprint isPrintablewrite$fParams(,,,,,,,,,,)$fParams(,,,,,,,,,,,,,,,,,,,)$fParams(,,,,,,,,,,,,,,,,,,)$fParams(,,,,,,,,,,,,,,,,,)$fParams(,,,,,,,,,,,,,,,,)$fParams(,,,,,,,,,,,,,,,)$fParams(,,,,,,,,,,,,,,)$fParams(,,,,,,,,,,,,,)$fParams(,,,,,,,,,,,,)$fParams(,,,,,,,,,,,)ordstrtof digitValuefinalstrtof0strtof1 makeDouble checkSpaces trimFronttrimRearbutlasttrim readFile' throwNotFoundgetCodec gzipParams isReadable simpleReadbaseGHC.Num*$fArbitraryVector3$fNFDataTempList gen_iterable self_iterabletrans_iterable Polyproline Ribbon2_7 LeftGamma LeftOmega LeftAlpha Right3_10 RightGammaRightPi RightOmega RightAlpha ParsedFieldsplitByColumnsunstrifErrorpChrpSpcpSpcOpIntpIntErrpStrpDoubledConvdChrdIntdStrdDouble mandFieldmandFieldErrMsgmChrmDoublemStrmIntmSpc mKeywordsmKeywordconvertColumnsfindColumnErrors parseFields nonEmptyIFfullIF fgResidue Data.EitherEithermaybeFgResidue Data.MaybeMaybefgAtom maybeFgAtomleftsLeft liftFgErrsrightsRight maybeListJustIFNoneIFErrorIFDoubleIFCharIFStrIFInt parseATOM parseANISOU atomFields anisouFields parseHEADER headerFields parseTITLE titleFieldsparseIntRecord parseNUMMDL parseMODEL nummdlFields parseREVDAT revdatFieldspStrList strListErrs parseCONECT conectFieldsintList parseSEQRES seqresFields splitResidues parseCRYST1 crystFields parseHELIX helixFields parseSHEETparseTER terFields masterFields parseMASTER parseMODRES modresFields parseSEQADV parseCAVEAT caveatFields parseSPLITparseJournalRef parseJRNL parseREMARK1 parseREMARK remarkFields dbrefFields parseDBREF dbref1Fields dbref2FieldscheckEqs parseDBREF12 parseHETNAMghc-prim GHC.TypesTrueFalse hetnamFieldsparseHET hetFields parseFORMUL formulFields parseCISPEP cispepFields parseSSBOND ssbondFields parseLINK linkFields parseSLTBRG sltbrgFields parseHYDBND hydbndFields parseSITE siteFieldsparseObsoleting parseOBSLTE parseSPRSDEobsoletingFields parseCOMPND parseSOURCEspecListRecordFieldsparseSpecListRecord listFieldsparseListRecord parseKEYWDS parseAUTHOR parseEXPDTA parseMDLTYPparseMatrixRecord parseSCALEn parseORIGXn parseMTRIXn parseTVECT parsePDBLines ignoreLine $fNFDataAtom$fNFDataResidue $fNFDataChain $fNFDataModel$fNFDataStructure$fIterableStructureModel$fIterableModelChain$fIterableChainResidue$fIterableResidueAtom$fIterableStructureStructure$fIterableModelModel$fIterableChainChain$fIterableResidueResidue$fIterableAtomAtom$fIterableStructureChain$fIterableStructureResidue$fIterableStructureAtom$fIterableModelResidue$fIterableModelAtom$fIterableChainAtomcodebook_nucleic_acidscodebookcodebook_standard_proteincodebook_proteinresname2fastacodeDictionaryfastacode2resnameDictionaryres2codescan2 fastaRecord' defaultingBStateinitializeState checkResidue checkChain checkModel closeResidue closeChainaddError closeModelcloseStructure parseStep openModel parseFinishcurrentResidue currentModel currentChaincurrentStructureresidueContents chainContents modelContentsstructureContentserrorsline_no ParsingMonad parsePDBRecnextLineshowContinuationcontd printSpecList printList printMatrix PDBEventSstructureEvents modelEvents chainEvents residueEvents atomEventsforceexceptionHandler printError showError