BALL  1.4.1
PDBFile.h
Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 
00005 #ifndef BALL_FORMAT_PDBFILE_H
00006 #define BALL_FORMAT_PDBFILE_H
00007 
00008 #ifndef BALL_CONCEPT_PROPERTY_H
00009 # include <BALL/CONCEPT/property.h>
00010 #endif
00011 
00012 #ifndef BALL_FORMAT_GENERICMOLFILE_H
00013 # include <BALL/FORMAT/genericMolFile.h>
00014 #endif
00015 
00016 #ifndef BALL_DATATYPE_OPTIONS_H
00017 # include <BALL/DATATYPE/options.h>
00018 #endif
00019 
00020 #ifndef BALL_DATATYPE_QUADRUPLE_H
00021 # include <BALL/DATATYPE/quadruple.h>
00022 #endif
00023 
00024 #ifndef BALL_FORMAT_PDBDEFS_H
00025 # include <BALL/FORMAT/PDBdefs.h>
00026 #endif
00027 
00028 #ifndef BALL_FORMAT_PDBINFO_H
00029 # include <BALL/FORMAT/PDBInfo.h>
00030 #endif
00031 
00032 #ifndef BALL_KERNEL_PDBAtom_H
00033 # include <BALL/KERNEL/PDBAtom.h>
00034 #endif
00035 
00036 #ifndef BALL_KERNEL_SYSTEM_H
00037 # include <BALL/KERNEL/system.h>
00038 #endif
00039 
00040 #ifndef BALL_KERNEL_RESIDUE_H
00041 # include <BALL/KERNEL/residue.h>
00042 #endif
00043 
00044 #ifndef BALL_KERNEL_SECONDARYSTRUCTURE_H
00045 # include <BALL/KERNEL/secondaryStructure.h>
00046 #endif
00047 
00048 #if defined(BALL_HAS_UNORDERED_MAP) || defined(BALL_HAS_HASH_MAP)
00049 #ifdef BALL_EXTEND_HASH_IN_STD_NS
00050 namespace std
00051 {
00052 #endif
00053   namespace BALL_MAP_NAMESPACE {
00054     template<>
00055     struct hash<BALL::Quadruple<BALL::String, BALL::PDB::Character, BALL::PDB::Integer, BALL::PDB::AChar> >
00056     {
00057       size_t
00058       operator()(const BALL::Quadruple<BALL::String, BALL::PDB::Character, BALL::PDB::Integer, BALL::PDB::AChar>& f) const
00059       { return (size_t)f.third; }
00060     };
00061   }
00062 #ifdef BALL_EXTEND_HASH_IN_STD_NS
00063 }
00064 #endif
00065 #endif
00066 
00067 namespace BALL
00068 {
00069 
00074   class BALL_EXPORT PDBFile
00075     : public GenericMolFile,
00076       public PropertyManager
00077   {
00078     public:
00079 
00085     struct BALL_EXPORT Option 
00086     {
00093       static const char* VERBOSITY;
00094 
00101       static const char* STRICT_LINE_CHECKING;
00102       
00110       static const char* CHOOSE_MODEL;
00111 
00117       static const char* STORE_SKIPPED_RECORDS;
00118 
00124       static const char* IGNORE_XPLOR_PSEUDO_ATOMS;
00125 
00131       static const char* PARSE_PARTIAL_CHARGES;
00132 
00137       static const char* WRITE_PDBFORMAT_1996;
00138     };
00139 
00142     struct BALL_EXPORT Default 
00143     {
00148       static const Index VERBOSITY;
00149 
00154       static const bool STRICT_LINE_CHECKING;
00155 
00160       static const Index CHOOSE_MODEL;
00161 
00165       static const bool STORE_SKIPPED_RECORDS;
00166 
00170       static const bool IGNORE_XPLOR_PSEUDO_ATOMS;
00171 
00175       static const bool PARSE_PARTIAL_CHARGES;
00176 
00181       static const bool WRITE_PDBFORMAT_1996;
00182 
00183     };
00184 
00188 
00189     Options options;
00191     PDBInfo info;
00193 
00197 
00200     PDBFile();
00201       
00205     PDBFile(const String& filename, File::OpenMode open_mode = std::ios::in);
00206 
00209     PDBFile(const Options& new_options);
00210 
00213     virtual ~PDBFile();
00215 
00219 
00221     virtual void clear(int state);
00222 
00224     virtual void clear();
00225 
00227 
00231 
00233     virtual float getVersion() const;
00234 
00239     void selectModel(Index index);
00240 
00252     void selectAltLocationIndicator(char c);
00253 
00255     Index getSelectedModel() const;
00256 
00258     void selectAllModels();
00259 
00261     Index getCurrentModel() const;
00262 
00264     char* getRecordString();
00265 
00267     const char* getRecordString() const;
00268 
00270     Index getRecordNumber() const;
00271 
00273     PDB::RecordType getRecordType() const;
00274 
00278     virtual const char* getAtomElementSymbol
00279       (const PDB::Atom atom_name,
00280        PDB::Atom element_symbol);
00281 
00283     virtual const char* getAtomName
00284       (const PDB::Atom atom_name);
00285 
00287     virtual char getAtomRemotenessIndicator
00288       (const PDB::Atom atom_name);
00289 
00291     virtual short getAtomBranchDesignator
00292       (const PDB::Atom atom_name);
00293 
00295     Size countRecordFields() const;
00296 
00300     Size countRecord
00301       (PDB::RecordType record_type,
00302        bool from_begin_of_file = true);
00303 
00306     Size countRecords
00307       (bool from_begin_of_file = true);
00309 
00316 
00317     bool parseLine(const char* line, Size size, const char* format_string, ...);
00318 
00320     bool readLine(char* line, Size size, bool extract_values);
00321 
00323     bool readFirstRecord(bool read_values = true);
00324 
00326     bool readNextRecord(bool read_values = true);
00327 
00332     bool readRecords();
00333 
00338     virtual bool readUnknownRecord(const char* line);
00339 
00342     virtual bool readInvalidRecord(const char* line);
00343 
00352     bool skipCurrentRecord();
00353 
00355     virtual bool interpretRecord(const PDB::RecordANISOU& record);
00356     virtual bool fillRecord(const char* line, Size size, PDB::RecordANISOU& record);
00357     virtual bool parseRecordANISOU(const char* line, Size size);
00358 
00360     virtual bool interpretRecord(const PDB::RecordATOM& record);
00361     virtual bool fillRecord(const char* line, Size size, PDB::RecordATOM& record);
00362     virtual bool parseRecordATOM(const char* line, Size size);
00363 
00365     virtual bool interpretRecord(const PDB::RecordAUTHOR& record);
00366     virtual bool fillRecord(const char* line, Size size, PDB::RecordAUTHOR& record);
00367     virtual bool parseRecordAUTHOR(const char* line, Size size);
00368 
00370     virtual bool interpretRecord(const PDB::RecordCAVEAT& record);
00371     virtual bool fillRecord(const char* line, Size size, PDB::RecordCAVEAT& record);
00372     virtual bool parseRecordCAVEAT(const char* line, Size size);
00373 
00375     virtual bool interpretRecord(const PDB::RecordCISPEP& record);
00376     virtual bool fillRecord(const char* line, Size size, PDB::RecordCISPEP& record);
00377     virtual bool parseRecordCISPEP(const char* line, Size size);
00378 
00380     virtual bool interpretRecord(const PDB::RecordCOMPND& record);
00381     virtual bool fillRecord(const char* line, Size size, PDB::RecordCOMPND& record);
00382     virtual bool parseRecordCOMPND(const char* line, Size size);
00383 
00385     virtual bool interpretRecord(const PDB::RecordCONECT& record);
00386     virtual bool fillRecord(const char* line, Size size, PDB::RecordCONECT& record);
00387     virtual bool parseRecordCONECT(const char* line, Size size);
00388 
00392     virtual bool interpretRecord(const PDB::RecordCRYST1& record);
00393     virtual bool fillRecord(const char* line, Size size, PDB::RecordCRYST1& record);
00394     virtual bool parseRecordCRYST1(const char* line, Size size);
00395 
00397     virtual bool interpretRecord(const PDB::RecordDBREF& record);
00398     virtual bool fillRecord(const char* line, Size size, PDB::RecordDBREF& record);
00399     virtual bool parseRecordDBREF(const char* line, Size size);
00400 
00402     virtual bool interpretRecord(const PDB::RecordEND& record);
00403     virtual bool fillRecord(const char* line, Size size, PDB::RecordEND& record);
00404     virtual bool parseRecordEND(const char* line, Size size);
00405 
00407     virtual bool interpretRecord(const PDB::RecordENDMDL& record);
00408     virtual bool fillRecord(const char* line, Size size, PDB::RecordENDMDL& record);
00409     virtual bool parseRecordENDMDL(const char* line, Size size);
00410 
00412     virtual bool interpretRecord(const PDB::RecordEXPDTA& record);
00413     virtual bool fillRecord(const char* line, Size size, PDB::RecordEXPDTA& record);
00414     virtual bool parseRecordEXPDTA(const char* line, Size size);
00415 
00419     virtual bool interpretRecord(const PDB::RecordFORMUL& record);
00420     virtual bool fillRecord(const char* line, Size size, PDB::RecordFORMUL& record);
00421     virtual bool parseRecordFORMUL(const char* line, Size size);
00422 
00424     virtual bool interpretRecord(const PDB::RecordFTNOTE& record);
00425     virtual bool fillRecord(const char* line, Size size, PDB::RecordFTNOTE& record);
00426     virtual bool parseRecordFTNOTE(const char* line, Size size);
00427 
00431     virtual bool interpretRecord(const PDB::RecordHEADER& record);
00432     virtual bool fillRecord(const char* line, Size size, PDB::RecordHEADER& record);
00433     virtual bool parseRecordHEADER(const char* line, Size size);
00434 
00436     virtual bool interpretRecord(const PDB::RecordHELIX& record);
00437     virtual bool fillRecord(const char* line, Size size, PDB::RecordHELIX& record);
00438     virtual bool parseRecordHELIX(const char* line, Size size);
00439 
00441     virtual bool interpretRecord(const PDB::RecordHET& record);
00442     virtual bool fillRecord(const char* line, Size size, PDB::RecordHET& record);
00443     virtual bool parseRecordHET(const char* line, Size size);
00444 
00446     virtual bool interpretRecord(const PDB::RecordHETATM& record);
00447     virtual bool fillRecord(const char* line, Size size, PDB::RecordHETATM& record);
00448     virtual bool parseRecordHETATM(const char* line, Size size);
00449 
00451     virtual bool interpretRecord(const PDB::RecordHETNAM& record);
00452     virtual bool fillRecord(const char* line, Size size, PDB::RecordHETNAM& record);
00453     virtual bool parseRecordHETNAM(const char* line, Size size);
00454 
00456     virtual bool interpretRecord(const PDB::RecordHETSYN& record);
00457     virtual bool fillRecord(const char* line, Size size, PDB::RecordHETSYN& record);
00458     virtual bool parseRecordHETSYN(const char* line, Size size);
00459 
00461     virtual bool interpretRecord(const PDB::RecordHYDBND& record);
00462     virtual bool fillRecord(const char* line, Size size, PDB::RecordHYDBND& record);
00463     virtual bool parseRecordHYDBND(const char* line, Size size);
00464 
00466     virtual bool interpretRecord(const PDB::RecordJRNL& record);
00467     virtual bool fillRecord(const char* line, Size size, PDB::RecordJRNL& record);
00468     virtual bool parseRecordJRNL(const char* line, Size size);
00469 
00471     virtual bool interpretRecord(const PDB::RecordKEYWDS& record);
00472     virtual bool fillRecord(const char* line, Size size, PDB::RecordKEYWDS& record);
00473     virtual bool parseRecordKEYWDS(const char* line, Size size);
00474 
00476     virtual bool interpretRecord(const PDB::RecordLINK& record);
00477     virtual bool fillRecord(const char* line, Size size, PDB::RecordLINK& record);
00478     virtual bool parseRecordLINK(const char* line, Size size);
00479 
00483     virtual bool interpretRecord(const PDB::RecordMASTER& record);
00484     virtual bool fillRecord(const char* line, Size size, PDB::RecordMASTER& record);
00485     virtual bool parseRecordMASTER(const char* line, Size size);
00486 
00488     virtual bool interpretRecord(const PDB::RecordMODEL& record);
00489     virtual bool fillRecord(const char* line, Size size, PDB::RecordMODEL& record);
00490     virtual bool parseRecordMODEL(const char* line, Size size);
00491 
00493     virtual bool interpretRecord(const PDB::RecordMODRES& record);
00494     virtual bool fillRecord(const char* line, Size size, PDB::RecordMODRES& record);
00495     virtual bool parseRecordMODRES(const char* line, Size size);
00496 
00500     virtual bool interpretRecord(const PDB::RecordMTRIX1& record);
00501     virtual bool fillRecord(const char* line, Size size, PDB::RecordMTRIX1& record);
00502     virtual bool parseRecordMTRIX1(const char* line, Size size);
00503 
00507     virtual bool interpretRecord(const PDB::RecordMTRIX2& record);
00508     virtual bool fillRecord(const char* line, Size size, PDB::RecordMTRIX2& record);
00509     virtual bool parseRecordMTRIX2(const char* line, Size size);
00510 
00514     virtual bool interpretRecord(const PDB::RecordMTRIX3& record);
00515     virtual bool fillRecord(const char* line, Size size, PDB::RecordMTRIX3& record);
00516     virtual bool parseRecordMTRIX3(const char* line, Size size);
00517 
00521     virtual bool interpretRecord(const PDB::RecordOBSLTE& record);
00522     virtual bool fillRecord(const char* line, Size size, PDB::RecordOBSLTE& record);
00523     virtual bool parseRecordOBSLTE(const char* line, Size size);
00524 
00528     virtual bool interpretRecord(const PDB::RecordORIGX1& record);
00529     virtual bool fillRecord(const char* line, Size size, PDB::RecordORIGX1& record);
00530     virtual bool parseRecordORIGX1(const char* line, Size size);
00531 
00535     virtual bool interpretRecord(const PDB::RecordORIGX2& record);
00536     virtual bool fillRecord(const char* line, Size size, PDB::RecordORIGX2& record);
00537     virtual bool parseRecordORIGX2(const char* line, Size size);
00538 
00542     virtual bool interpretRecord(const PDB::RecordORIGX3& record);
00543     virtual bool fillRecord(const char* line, Size size, PDB::RecordORIGX3& record);
00544     virtual bool parseRecordORIGX3(const char* line, Size size);
00545 
00547     virtual bool interpretRecord(const PDB::RecordREMARK& record);
00548     virtual bool fillRecord(const char* line, Size size, PDB::RecordREMARK& record);
00549     virtual bool parseRecordREMARK(const char* line, Size size);
00550 
00552     virtual bool interpretRecord(const PDB::RecordREVDAT& record);
00553     virtual bool fillRecord(const char* line, Size size, PDB::RecordREVDAT& record);
00554     virtual bool parseRecordREVDAT(const char* line, Size size);
00555 
00557     virtual bool interpretRecord(const PDB::RecordSCALE1& record);
00558     virtual bool fillRecord(const char* line, Size size, PDB::RecordSCALE1& record);
00559     virtual bool parseRecordSCALE1(const char* line, Size size);
00560 
00562     virtual bool interpretRecord(const PDB::RecordSCALE2& record);
00563     virtual bool fillRecord(const char* line, Size size, PDB::RecordSCALE2& record);
00564     virtual bool parseRecordSCALE2(const char* line, Size size);
00565 
00567     virtual bool interpretRecord(const PDB::RecordSCALE3& record);
00568     virtual bool fillRecord(const char* line, Size size, PDB::RecordSCALE3& record);
00569     virtual bool parseRecordSCALE3(const char* line, Size size);
00570 
00572     virtual bool interpretRecord(const PDB::RecordSEQADV& record);
00573     virtual bool fillRecord(const char* line, Size size, PDB::RecordSEQADV& record);
00574     virtual bool parseRecordSEQADV(const char* line, Size size);
00575 
00577     virtual bool interpretRecord(const PDB::RecordSEQRES& record);
00578     virtual bool fillRecord(const char* line, Size size, PDB::RecordSEQRES& record);
00579     virtual bool parseRecordSEQRES(const char* line, Size size);
00580 
00582     virtual bool interpretRecord(const PDB::RecordSHEET& record);
00583     virtual bool fillRecord(const char* line, Size size, PDB::RecordSHEET& record);
00584     virtual bool parseRecordSHEET(const char* line, Size size);
00585 
00587     virtual bool interpretRecord(const PDB::RecordSIGATM& record);
00588     virtual bool fillRecord(const char* line, Size size, PDB::RecordSIGATM& record);
00589     virtual bool parseRecordSIGATM(const char* line, Size size);
00590 
00594     virtual bool interpretRecord(const PDB::RecordSIGUIJ& record);
00595     virtual bool fillRecord(const char* line, Size size, PDB::RecordSIGUIJ& record);
00596     virtual bool parseRecordSIGUIJ(const char* line, Size size);
00597 
00599     virtual bool interpretRecord(const PDB::RecordSITE& record);
00600     virtual bool fillRecord(const char* line, Size size, PDB::RecordSITE& record);
00601     virtual bool parseRecordSITE(const char* line, Size size);
00602 
00604     virtual bool interpretRecord(const PDB::RecordSLTBRG& record);
00605     virtual bool fillRecord(const char* line, Size size, PDB::RecordSLTBRG& record);
00606     virtual bool parseRecordSLTBRG(const char* line, Size size);
00607 
00611     virtual bool interpretRecord(const PDB::RecordSOURCE& record);
00612     virtual bool fillRecord(const char* line, Size size, PDB::RecordSOURCE& record);
00613     virtual bool parseRecordSOURCE(const char* line, Size size);
00614 
00616     virtual bool interpretRecord(const PDB::RecordSPRSDE& record);
00617     virtual bool fillRecord(const char* line, Size size, PDB::RecordSPRSDE& record);
00618     virtual bool parseRecordSPRSDE(const char* line, Size size);
00619 
00621     virtual bool interpretRecord(const PDB::RecordSSBOND& record);
00622     virtual bool fillRecord(const char* line, Size size, PDB::RecordSSBOND& record);
00623     virtual bool parseRecordSSBOND(const char* line, Size size);
00624 
00626     virtual bool interpretRecord(const PDB::RecordTER& record);
00627     virtual bool fillRecord(const char* line, Size size, PDB::RecordTER& record);
00628     virtual bool parseRecordTER(const char* line, Size size);
00629 
00631     virtual bool interpretRecord(const PDB::RecordTITLE& record);
00632     virtual bool fillRecord(const char* line, Size size, PDB::RecordTITLE& record);
00633     virtual bool parseRecordTITLE(const char* line, Size size);
00634 
00636     virtual bool interpretRecord(const PDB::RecordTURN& record);
00637     virtual bool fillRecord(const char* line, Size size, PDB::RecordTURN& record);
00638     virtual bool parseRecordTURN(const char* line, Size size);
00639 
00643     virtual bool interpretRecord(const PDB::RecordTVECT& record);
00644     virtual bool fillRecord(const char* line, Size size, PDB::RecordTVECT& record);
00645     virtual bool parseRecordTVECT(const char* line, Size size);
00647 
00649     virtual bool hasFormat();
00650 
00651     typedef HashMap<PDB::Integer, PDBAtom*> PDBAtomMap;
00652     typedef Quadruple<String, PDB::Character, PDB::Integer, PDB::AChar> ResidueQuadruple;
00653     typedef HashMap<ResidueQuadruple, Residue*> ResidueMap;
00654     typedef std::list<ResidueQuadruple> QuadrupleList;
00655     typedef std::list<SecondaryStructure*> SecStructList;
00656     
00657 
00660 
00664     PDBFile& operator >> (Protein& protein);
00665 
00669     PDBFile& operator >> (Molecule& molecule);
00670 
00674     PDBFile& operator >> (System& system);
00675 
00679     PDBFile& operator << (const Protein& protein);
00680 
00684     PDBFile& operator << (const System& system);
00685 
00689     PDBFile& operator << (const Molecule& molecule);
00690 
00696     bool read(Protein& protein);
00697 
00703     bool read(Molecule& protein);
00704 
00710     bool read(System& system);
00711 
00716     Molecule* read();
00717 
00723     bool write(const Protein& protein);
00724 
00730     bool write(const Molecule& molecule);
00731 
00737     bool write(const System& system);
00738 
00744     bool write(const System& system, const PDBInfo& info);
00746 
00747     protected:
00748 
00749     //_
00750     PDBFile(const File& pdbf);
00751 
00752     //_
00753     PDBFile& operator = (const PDBFile& pdbf);
00754 
00755     /*_ A helper function for initializing certain data structures. Used by
00756         constructors.
00757     */
00758     void init_() ;
00759 
00760     void postprocessSSBonds_();
00761     void postprocessHelices_();
00762     void postprocessSheetsTurns_(QuadrupleList& sectruct_list, SecStructList& new_secstruct_list);
00763     void postprocessRandomCoils_();
00764 
00765     
00766 
00767     // Method related to the writing of PDB files
00768 
00769     // 
00770     void write_(const AtomContainer& ac, const PDBInfo& info = PDBInfo());
00771 
00777     void writeRecord_(PDB::RecordType record, ...);
00778     void writeCONECTRecords_(PDB::Structure::ConectAtomList& cl);
00779 
00786     void writeRawRecord_(const char* format, const char* tag, ...);
00787     
00789     void addAllRecords_(const PDBInfo& info, PDB::RecordType type);
00790     
00792     void writeRecord_(const PDB::RecordSEQRES& seqres);
00794     void writeRecord_(const PDB::RecordHELIX& helix);
00796     void writeRecord_(const PDB::RecordSHEET& helix);
00798     void writeRecord_(const PDB::RecordTURN& helix);
00800     void writeRecord_(const PDB::RecordSSBOND& helix);
00802     void writeRecord_(const PDB::RecordCONECT& helix);
00804     void writeRecord_(const PDB::RecordCRYST1& cryst1);
00806     void writeRecord_(const PDB::RecordMTRIX1& mtrix1);
00808     void writeRecord_(const PDB::RecordMTRIX2& mtrix2);
00810     void writeRecord_(const PDB::RecordMTRIX3& mtrix3);
00811     
00812     void writeAtom_(const PDB::Structure::AtomEntry& atom, PDB::AdditionalAtomInfo& cr, bool hetatm = false);
00813     
00814     void writeTitleSection_(const PDB::Structure& structure, const PDBInfo& info);
00815     void writePrimaryStructureSection_(const PDB::Structure& structure, const PDBInfo& info);
00816     void writeHeterogenSection_(const PDB::Structure& structure, const PDBInfo& info);
00817     void writeSecondaryStructureSection_(const PDB::Structure& structure, const PDBInfo& info);
00818     void writeConnectivityAnnotationSection_(const PDB::Structure& structure, const PDBInfo& info);
00819     void writeMiscellaneousFeaturesSection_(const PDB::Structure& structure, const PDBInfo& info);
00820     void writeCrystallographicSection_(const PDB::Structure& structure, const PDBInfo& info);
00821     void writeCoordinateSection_(const PDB::Structure& structure, const PDBInfo& info);
00822     void writeConnectivitySection_(const PDB::Structure& structure, const PDBInfo& info);
00823     void writeBookKeepingSection_(const PDB::Structure& structure, const PDBInfo& info);
00824 
00825     void writeSEQRESSection_(const std::vector<std::pair<char, String> >& chain_residues);
00826     void writeHELIXSection_(const PDB::Structure& structure);
00827     void writeSHEETSection_(const PDB::Structure& structure);
00828     void writeTURNSection_(const PDB::Structure& structure);
00829     void writeSSBONDSection_(const PDB::Structure& structure);
00830     void writeHYDBNDSection_(const PDB::Structure& structure);
00831     void writeSLTBRGSection_(const PDB::Structure& structure);
00832     void writeCRYST1Section_(const PDB::Structure& structure);
00833     void writeMTRIXnSection_(const PDB::Structure& structure);
00834 
00838     static void extractStructure_(const AtomContainer& ac, PDB::Structure& structure);
00839     
00843     static bool isHeteroAtom_(const Atom& atom);
00844     
00850     static void updateAdditionalAtomInfo_(const PDB::Structure::AtomEntry& atom, PDB::AdditionalAtomInfo& cr);
00851       
00852 
00853     char line_buffer_[PDB::SIZE_OF_PDB_LINE_BUFFER];
00854 
00855     String residue_name_;
00856     Index residue_sequence_number_;
00857     Index current_model_;
00858     Index current_record_;
00859     Size record_fields_;
00860     PDB::RecordType current_record_type_;
00861     PDB::RecordTypeFormat compare_record_type_format_; 
00862 
00863     PDBAtomMap PDB_atom_map_;
00864     ResidueMap residue_map_;
00865     QuadrupleList ssbond_list_;
00866     QuadrupleList helix_list_;
00867     QuadrupleList sheet_list_;
00868     QuadrupleList turn_list_;
00869 
00870     SecStructList new_helix_secstruc_list_;
00871     SecStructList new_sheet_secstruc_list_;
00872     SecStructList new_turn_secstruc_list_;
00873 
00874     char alternate_location_indicator_;
00875     PDB::AChar insertion_code_;
00876     PDB::Character chain_ID_;
00877     PDB::Integer sequence_number_;
00878     PDB::AChar code_;
00879     Protein* current_protein_;
00880     const Protein* current_const_protein_;
00881     Chain* current_chain_;
00882     const Chain* current_const_chain_;
00883     Residue*  current_residue_;
00884     const Residue* current_const_residue_;
00885     PDBAtom* current_PDB_atom_;
00886     const Atom* current_const_atom_;
00887     String name_;
00888     HashMap<const Atom*, Position> atom_map_;
00889     
00891     PDB::BookKeeping book_keeping_;
00892 
00894     int verbosity_;
00895 
00896     bool strict_line_checking_;
00897 
00899     Index selected_model_;
00900 
00902     bool store_skipped_records_;
00903 
00905     bool ignore_xplor_pseudo_atoms_;
00906     
00908     bool parse_partial_charges_;
00909 
00911     bool write_pdbformat_1996_;
00912   };
00913 
00914 
00915 
00916 
00917 
00921   inline
00922   BALL_EXPORT HashIndex Hash(const PDBFile::ResidueQuadruple& quadruple)
00923     
00924   {
00925     return (Index)quadruple.third;
00926   }
00927 
00931   inline
00932   BALL_EXPORT std::ostream& operator << (std::ostream& s, const Quadruple<String,PDB::Character,PDB::Integer,PDB::AChar>& /* q */)
00933   {
00934     return s;
00935   }
00936 
00937 
00938 
00939 # ifndef BALL_NO_INLINE_FUNCTIONS
00940 #   include <BALL/FORMAT/PDBFile.iC>
00941 # endif
00942 
00943 } // namespace BALL
00944 
00945 #endif // BALL_FORMAT_PDBFILE_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines