BALL  1.4.1
PDBdefs.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_PDBDEFS_H
00006 #define BALL_FORMAT_PDBDEFS_H
00007 
00008 #ifndef BALL_COMMON_H
00009 # include <BALL/common.h>
00010 #endif
00011 
00012 #ifndef BALL_KERNEL_ATOM_H
00013 # include <BALL/KERNEL/atom.h>
00014 #endif
00015 
00016 #ifndef BALL_KERNEL_SECONDARYSTRUCTURE_H
00017 # include <BALL/KERNEL/secondaryStructure.h>
00018 #endif
00019 
00020 #ifndef BALL_KERNEL_CHAIN_H
00021 # include <BALL/KERNEL/chain.h>
00022 #endif
00023 
00024 #ifndef BALL_KERNEL_RESIDUE_H
00025 # include <BALL/KERNEL/residue.h>
00026 #endif
00027 
00028 #ifndef BALL_DATATYPES_HASHSET_H
00029 # include <BALL/DATATYPE/hashSet.h>
00030 #endif
00031 
00032 #ifndef BALL_MATHS_MATRIX44_H
00033 # include <BALL/MATHS/matrix44.h>
00034 #endif
00035 
00036 namespace BALL 
00037 {
00038 
00039 
00045   namespace PDB 
00046   {
00049     enum
00050     {
00051       SIZE_OF_PDB_RECORD_LINE      = 80,
00052       SIZE_OF_PDB_LINE_BUFFER      = 256,   
00053       SIZE_OF_FORMAT_STRING_BUFFER = 256
00054     };
00055 
00058     enum RecordType
00059     {
00060       RECORD_TYPE__UNKNOWN = 0,
00061       RECORD_TYPE__ANISOU,
00062       RECORD_TYPE__ATOM,
00063       RECORD_TYPE__AUTHOR,
00064       RECORD_TYPE__CAVEAT,
00065       RECORD_TYPE__CISPEP,
00066       RECORD_TYPE__COMPND,
00067       RECORD_TYPE__CONECT,
00068       RECORD_TYPE__CON06,
00069       RECORD_TYPE__CON061,
00070       RECORD_TYPE__CON062,
00071       RECORD_TYPE__CON063,
00072       RECORD_TYPE__CON064,
00073       RECORD_TYPE__CRYST1,
00074       RECORD_TYPE__DBREF,
00075       RECORD_TYPE__END,
00076       RECORD_TYPE__ENDMDL,
00077       RECORD_TYPE__EXPDTA,
00078       RECORD_TYPE__FORMUL,
00079       RECORD_TYPE__FTNOTE,
00080       RECORD_TYPE__HEADER,
00081       RECORD_TYPE__HELIX,
00082       RECORD_TYPE__HET,
00083       RECORD_TYPE__HETATM,
00084       RECORD_TYPE__HETNAM,
00085       RECORD_TYPE__HETSYN,
00086       RECORD_TYPE__HYDBND,
00087       RECORD_TYPE__JRNL,
00088       RECORD_TYPE__KEYWDS,
00089       RECORD_TYPE__LINK,
00090       RECORD_TYPE__MASTER,
00091       RECORD_TYPE__MODEL,
00092       RECORD_TYPE__MODRES,
00093       RECORD_TYPE__MTRIX1,
00094       RECORD_TYPE__MTRIX2,
00095       RECORD_TYPE__MTRIX3,
00096       RECORD_TYPE__OBSLTE,
00097       RECORD_TYPE__ORIGX1,
00098       RECORD_TYPE__ORIGX2,
00099       RECORD_TYPE__ORIGX3,
00100       RECORD_TYPE__REMARK,
00101       RECORD_TYPE__REVDAT,
00102       RECORD_TYPE__SCALE1,
00103       RECORD_TYPE__SCALE2,
00104       RECORD_TYPE__SCALE3,
00105       RECORD_TYPE__SEQADV,
00106       RECORD_TYPE__SEQRES,
00107       RECORD_TYPE__SHEET,
00108       RECORD_TYPE__SIGATM,
00109       RECORD_TYPE__SIGUIJ,
00110       RECORD_TYPE__SITE,
00111       RECORD_TYPE__SLTBRG,
00112       RECORD_TYPE__SOURCE,
00113       RECORD_TYPE__SPRSDE,
00114       RECORD_TYPE__SSBOND,
00115       RECORD_TYPE__TER,
00116       RECORD_TYPE__TITLE,
00117       RECORD_TYPE__TURN,
00118       RECORD_TYPE__TVECT,
00119         
00120       NUMBER_OF_REGISTERED_RECORD_TYPES,
00121       
00122       ALL_RECORD_TYPES
00123     };
00124 
00127     BALL_EXPORT extern const char* FORMAT_UNKNOWN;
00128     BALL_EXPORT extern const char* FORMAT_ANISOU;
00129     BALL_EXPORT extern const char* FORMAT_ATOM;
00130     BALL_EXPORT extern const char* FORMAT_ATOM_PARTIAL_CRG;
00131     BALL_EXPORT extern const char* FORMAT_AUTHOR;
00132     BALL_EXPORT extern const char* FORMAT_CAVEAT;
00133     BALL_EXPORT extern const char* FORMAT_CISPEP;
00134     BALL_EXPORT extern const char* FORMAT_COMPND;
00135     BALL_EXPORT extern const char* FORMAT_CONECT;
00136     BALL_EXPORT extern const char* FORMAT_CON06;
00137     BALL_EXPORT extern const char* FORMAT_CON06_1;
00138     BALL_EXPORT extern const char* FORMAT_CON06_2;
00139     BALL_EXPORT extern const char* FORMAT_CON06_3;
00140     BALL_EXPORT extern const char* FORMAT_CON06_4;
00141     BALL_EXPORT extern const char* FORMAT_CRYST1;
00142     BALL_EXPORT extern const char* FORMAT_DBREF;
00143     BALL_EXPORT extern const char* FORMAT_END;
00144     BALL_EXPORT extern const char* FORMAT_ENDMDL;
00145     BALL_EXPORT extern const char* FORMAT_EXPDTA;
00146     BALL_EXPORT extern const char* FORMAT_FORMUL;
00147     BALL_EXPORT extern const char* FORMAT_FTNOTE;
00148     BALL_EXPORT extern const char* FORMAT_HEADER;
00149     BALL_EXPORT extern const char* FORMAT_HELIX;
00150     BALL_EXPORT extern const char* FORMAT_HET;
00151     BALL_EXPORT extern const char* FORMAT_HETATM;
00152     BALL_EXPORT extern const char* FORMAT_HETNAM;
00153     BALL_EXPORT extern const char* FORMAT_HETSYN;
00154     BALL_EXPORT extern const char* FORMAT_HYDBND;
00155     BALL_EXPORT extern const char* FORMAT_JRNL;
00156     BALL_EXPORT extern const char* FORMAT_KEYWDS;
00157     BALL_EXPORT extern const char* FORMAT_LINK;
00158     BALL_EXPORT extern const char* FORMAT_MASTER;
00159     BALL_EXPORT extern const char* FORMAT_MODEL;
00160     BALL_EXPORT extern const char* FORMAT_MODRES;
00161     BALL_EXPORT extern const char* FORMAT_MTRIX1;
00162     BALL_EXPORT extern const char* FORMAT_MTRIX2;
00163     BALL_EXPORT extern const char* FORMAT_MTRIX3;
00164     BALL_EXPORT extern const char* FORMAT_OBSLTE;
00165     BALL_EXPORT extern const char* FORMAT_ORIGX1;
00166     BALL_EXPORT extern const char* FORMAT_ORIGX2;
00167     BALL_EXPORT extern const char* FORMAT_ORIGX3;
00168     BALL_EXPORT extern const char* FORMAT_REMARK;
00169     BALL_EXPORT extern const char* FORMAT_REVDAT;
00170     BALL_EXPORT extern const char* FORMAT_SCALE1;
00171     BALL_EXPORT extern const char* FORMAT_SCALE2;
00172     BALL_EXPORT extern const char* FORMAT_SCALE3;
00173     BALL_EXPORT extern const char* FORMAT_SEQADV;
00174     BALL_EXPORT extern const char* FORMAT_SEQRES;
00175     BALL_EXPORT extern const char* FORMAT_SHEET;
00176     BALL_EXPORT extern const char* FORMAT_SIGATM;
00177     BALL_EXPORT extern const char* FORMAT_SIGUIJ;
00178     BALL_EXPORT extern const char* FORMAT_SITE;
00179     BALL_EXPORT extern const char* FORMAT_SLTBRG;
00180     BALL_EXPORT extern const char* FORMAT_SOURCE;
00181     BALL_EXPORT extern const char* FORMAT_SPRSDE;
00182     BALL_EXPORT extern const char* FORMAT_SSBOND;
00183     BALL_EXPORT extern const char* FORMAT_TER;
00184     BALL_EXPORT extern const char* FORMAT_TITLE;
00185     BALL_EXPORT extern const char* FORMAT_TURN;
00186     BALL_EXPORT extern const char* FORMAT_TVECT;
00188 
00191     BALL_EXPORT extern const char* RECORD_TAG_ANISOU;
00192     BALL_EXPORT extern const char* RECORD_TAG_ATOM;
00193     BALL_EXPORT extern const char* RECORD_TAG_AUTHOR;
00194     BALL_EXPORT extern const char* RECORD_TAG_CAVEAT;
00195     BALL_EXPORT extern const char* RECORD_TAG_CISPEP;
00196     BALL_EXPORT extern const char* RECORD_TAG_COMPND;
00197     BALL_EXPORT extern const char* RECORD_TAG_CONECT;
00198     BALL_EXPORT extern const char* RECORD_TAG_CON06;
00199     BALL_EXPORT extern const char* RECORD_TAG_CON061;
00200     BALL_EXPORT extern const char* RECORD_TAG_CON062;
00201     BALL_EXPORT extern const char* RECORD_TAG_CON063;
00202     BALL_EXPORT extern const char* RECORD_TAG_CON064;
00203     BALL_EXPORT extern const char* RECORD_TAG_CRYST1;
00204     BALL_EXPORT extern const char* RECORD_TAG_DBREF;
00205     BALL_EXPORT extern const char* RECORD_TAG_END;
00206     BALL_EXPORT extern const char* RECORD_TAG_ENDMDL;
00207     BALL_EXPORT extern const char* RECORD_TAG_EXPDTA;
00208     BALL_EXPORT extern const char* RECORD_TAG_FORMUL;
00209     BALL_EXPORT extern const char* RECORD_TAG_FTNOTE;
00210     BALL_EXPORT extern const char* RECORD_TAG_HEADER;
00211     BALL_EXPORT extern const char* RECORD_TAG_HELIX;
00212     BALL_EXPORT extern const char* RECORD_TAG_HET;
00213     BALL_EXPORT extern const char* RECORD_TAG_HETATM;
00214     BALL_EXPORT extern const char* RECORD_TAG_HETNAM;
00215     BALL_EXPORT extern const char* RECORD_TAG_HETSYN;
00216     BALL_EXPORT extern const char* RECORD_TAG_HYDBND;
00217     BALL_EXPORT extern const char* RECORD_TAG_JRNL;
00218     BALL_EXPORT extern const char* RECORD_TAG_KEYWDS;
00219     BALL_EXPORT extern const char* RECORD_TAG_LINK;
00220     BALL_EXPORT extern const char* RECORD_TAG_MASTER;
00221     BALL_EXPORT extern const char* RECORD_TAG_MODEL;
00222     BALL_EXPORT extern const char* RECORD_TAG_MODRES;
00223     BALL_EXPORT extern const char* RECORD_TAG_MTRIX1;
00224     BALL_EXPORT extern const char* RECORD_TAG_MTRIX2;
00225     BALL_EXPORT extern const char* RECORD_TAG_MTRIX3;
00226     BALL_EXPORT extern const char* RECORD_TAG_OBSLTE;
00227     BALL_EXPORT extern const char* RECORD_TAG_ORIGX1;
00228     BALL_EXPORT extern const char* RECORD_TAG_ORIGX2;
00229     BALL_EXPORT extern const char* RECORD_TAG_ORIGX3;
00230     BALL_EXPORT extern const char* RECORD_TAG_REMARK;
00231     BALL_EXPORT extern const char* RECORD_TAG_REVDAT;
00232     BALL_EXPORT extern const char* RECORD_TAG_SCALE1;
00233     BALL_EXPORT extern const char* RECORD_TAG_SCALE2;
00234     BALL_EXPORT extern const char* RECORD_TAG_SCALE3;
00235     BALL_EXPORT extern const char* RECORD_TAG_SEQADV;
00236     BALL_EXPORT extern const char* RECORD_TAG_SEQRES;
00237     BALL_EXPORT extern const char* RECORD_TAG_SHEET;
00238     BALL_EXPORT extern const char* RECORD_TAG_SIGATM;
00239     BALL_EXPORT extern const char* RECORD_TAG_SIGUIJ;
00240     BALL_EXPORT extern const char* RECORD_TAG_SITE;
00241     BALL_EXPORT extern const char* RECORD_TAG_SLTBRG;
00242     BALL_EXPORT extern const char* RECORD_TAG_SOURCE;
00243     BALL_EXPORT extern const char* RECORD_TAG_SPRSDE;
00244     BALL_EXPORT extern const char* RECORD_TAG_SSBOND;
00245     BALL_EXPORT extern const char* RECORD_TAG_TER;
00246     BALL_EXPORT extern const char* RECORD_TAG_TITLE;
00247     BALL_EXPORT extern const char* RECORD_TAG_TURN;
00248     BALL_EXPORT extern const char* RECORD_TAG_TVECT;
00250 
00254 
00255     typedef char   AChar;
00257     typedef char   Atom[5];
00259     typedef char   Character;
00261     typedef long   Continuation;
00263     typedef char   Date[10];
00265     typedef char   IDcode[5];
00267     typedef long   Integer;
00269     typedef char   PDBList[SIZE_OF_PDB_RECORD_LINE + 1];
00271     typedef char   LString[SIZE_OF_PDB_RECORD_LINE + 1];
00273     typedef char   LString2[3];
00275     typedef char   LString3[4];
00277     typedef char   LString4[5];
00279     typedef char   LString5[6];
00281     typedef char   LString6[7];
00283     typedef char   LString7[8];
00285     typedef char   LString8[9];
00287     typedef char   LString9[10];
00289     typedef char   LString10[11];
00291     typedef char   LString11[12];
00293     typedef char   LString12[13];
00295     typedef char   LString13[14];
00297     typedef char   LString21[22];
00299     typedef double Real;
00301     typedef char   RecordName[7];
00303     typedef char   ResidueName[4];
00305     typedef char   SList[SIZE_OF_PDB_RECORD_LINE + 1];
00307     typedef char   Specification[SIZE_OF_PDB_RECORD_LINE + 1];
00309     typedef char   SpecificationList[SIZE_OF_PDB_RECORD_LINE + 1];
00311     typedef char   PDBString[SIZE_OF_PDB_RECORD_LINE + 1];
00313     typedef char   String2[3];
00315     typedef char   String3[4];
00317     typedef char   String4[5];
00319     typedef char   String5[6];
00321     typedef char   String40[41];
00323     typedef long   SymmetryOperator;
00325 
00329 
00332     struct BALL_EXPORT RecordTypeFormat
00333     {
00334       public:
00335       RecordType    record_type;
00336       char          string[7];
00337       const char*   format_string;
00338     };
00339 
00340     struct BALL_EXPORT Residue
00341     {
00342       ResidueName name;
00343       Character   chain_ID;
00344       Integer     sequence_number;
00345       AChar       insertion_code;
00346       
00347       Residue() { clear(); }
00348       void clear()
00349       {
00350         name[0] = '\0';
00351         chain_ID = ' ';
00352         sequence_number = 0;
00353         insertion_code = ' ';
00354       }
00355       void set(const ::BALL::Residue& residue)
00356       {
00357         strncpy(name, residue.getName().c_str(), 3);
00358         sequence_number = residue.getID().toInt();
00359         const Chain* chain = residue.getChain();
00360         chain_ID = (chain == 0 ? ' ' : chain->getName().c_str()[0]);
00361         insertion_code = residue.getInsertionCode();
00362       }
00363     };
00364 
00365 
00368     struct BALL_EXPORT RecordUNKNOWN
00369     {
00370       Real max_record_size[SIZE_OF_PDB_RECORD_LINE];
00371     };
00372     
00375     struct BALL_EXPORT RecordANISOU
00376     {
00377       RecordType  record_type;
00378       RecordName  record_name;
00379       Integer     serial_number;
00380       Atom        atom_name;
00381       Character   alternate_location_indicator;
00382       Residue     residue;
00383       Integer     u11;
00384       Integer     u22;
00385       Integer     u33;
00386       Integer     u12;
00387       Integer     u13;
00388       Integer     u23;
00389       LString4    segment_ID;
00390       LString2    element_symbol;
00391       LString2    charge; 
00392     };
00393 
00396     struct BALL_EXPORT RecordATOM
00397     {
00398       RecordType  record_type;
00399       RecordName  record_name;
00400       Integer     serial_number;
00401       Atom        atom_name;
00402       Character   alternate_location_indicator;
00403       Residue     residue;
00404       Real        orthogonal_vector[3];
00405       Real        occupancy;
00406       Real        temperature_factor;
00407       LString4    segment_ID;
00408       LString2    element_symbol;
00409       LString2    charge; 
00410       LString4    partial_charge; // not standard! Read if option PARSE_PARTIAL_CHARGES is set!
00411     };
00412 
00415     struct BALL_EXPORT RecordAUTHOR
00416     {
00417       RecordType   record_type;
00418       RecordName   record_name;
00419       Continuation continuation;
00420       PDBList      authors;
00421     };
00422 
00425     struct BALL_EXPORT RecordCAVEAT
00426     {
00427       RecordType   record_type;
00428       RecordName   record_name;
00429       Continuation continuation;
00430       IDcode       entry_code;
00431       PDBString    comment;
00432     };
00433 
00436     struct BALL_EXPORT RecordCISPEP
00437     {
00439       RecordType     record_type;
00440       RecordName     record_name;
00441       Integer        record_serial_number;
00442       Residue        residue[2];
00443       Integer        specific_model_ID;
00444       Real           angle_measure;
00445     };
00446 
00449     struct BALL_EXPORT RecordCOMPND
00450     {
00451       RecordType        record_type;
00452       RecordName        record_name;
00453       Continuation      continuation;
00454       SpecificationList component_description;
00455     };
00456     
00459     struct BALL_EXPORT RecordCONECT
00460     {
00461       RecordType record_type;
00462       RecordName record_name;
00463       Integer    atom_serial_number;
00464       Integer    bond_atom[4];
00465       Integer    hbond_atom[4];
00466       Integer    salt_bridge_atom[2];
00467       
00468       void clear()
00469       {
00470         record_type = PDB::RECORD_TYPE__CONECT;
00471         record_name[0] = '\0';
00472         atom_serial_number = 0;
00473         bond_atom[0] = bond_atom[1] = bond_atom[2] = bond_atom[3] = 0;
00474         hbond_atom[0] = hbond_atom[1] = hbond_atom[2] = hbond_atom[3] = 0;
00475         salt_bridge_atom[0] = salt_bridge_atom[1] = 0;
00476       }
00477     };
00478 
00481     struct BALL_EXPORT RecordCON06
00482     {
00483       RecordType record_type;
00484       RecordName record_name;
00485       Integer    atom_serial_number;
00486       Integer    bond_atom[4];
00487       
00488       void clear()
00489       {
00490         record_type = PDB::RECORD_TYPE__CON06;
00491         record_name[0] = '\0';
00492         atom_serial_number = 0;
00493         bond_atom[0] = bond_atom[1] = bond_atom[2] = bond_atom[3] = 0;
00494       }
00495     };
00496 
00497     struct BALL_EXPORT RecordCON061
00498     {
00499       RecordType record_type;
00500       RecordName record_name;
00501       Integer    atom_serial_number;
00502       Integer    bond_atom[4];
00503       
00504       void clear()
00505       {
00506         record_type = PDB::RECORD_TYPE__CON061;
00507         record_name[0] = '\0';
00508         atom_serial_number = 0;
00509         bond_atom[0] = bond_atom[1] = bond_atom[2] = bond_atom[3] = 0;
00510       }
00511     };
00512 
00513     struct BALL_EXPORT RecordCON062
00514     {
00515       RecordType record_type;
00516       RecordName record_name;
00517       Integer    atom_serial_number;
00518       Integer    bond_atom[1];
00519       
00520       void clear()
00521       {
00522         record_type = PDB::RECORD_TYPE__CON062;
00523         record_name[0] = '\0';
00524         atom_serial_number = 0;
00525         bond_atom[0] = 0;
00526       }
00527     };
00528 
00529     struct BALL_EXPORT RecordCON063
00530     {
00531       RecordType record_type;
00532       RecordName record_name;
00533       Integer    atom_serial_number;
00534       Integer    bond_atom[2];
00535       
00536       void clear()
00537       {
00538         record_type = PDB::RECORD_TYPE__CON063;
00539         record_name[0] = '\0';
00540         atom_serial_number = 0;
00541         bond_atom[0] = bond_atom[1] = 0;
00542       }
00543     };
00544 
00545     struct BALL_EXPORT RecordCON064
00546     {
00547       RecordType record_type;
00548       RecordName record_name;
00549       Integer    atom_serial_number;
00550       Integer    bond_atom[3];
00551       
00552       void clear()
00553       {
00554         record_type = PDB::RECORD_TYPE__CON064;
00555         record_name[0] = '\0';
00556         atom_serial_number = 0;
00557         bond_atom[0] = bond_atom[1] = bond_atom[2]  = 0;
00558       }
00559     };
00560 
00561 
00564     struct BALL_EXPORT RecordCRYST1
00565     {
00566       RecordType record_type;
00567       RecordName record_name;
00569       struct UnitCell
00570       {
00571         Real     a;
00572         Real     b;
00573         Real     c;
00574         Real     alpha;
00575         Real     beta;
00576         Real     gamma;
00577         LString  space_group;
00578         Integer  z_value;
00579       } unit_cell;
00580     };
00581 
00584     struct BALL_EXPORT RecordDBREF
00585     {
00586       RecordType record_type;
00587       RecordName record_name;
00588       IDcode     entry_code;
00589       Character  chain_ID;
00591       struct InitialSequence
00592       {
00593         Integer  number;
00594         AChar    insertion_code;
00595       } initial_sequence;
00597       struct EndingSequence
00598       {
00599         Integer  number;
00600         AChar    insertion_code;
00601       } ending_sequence;
00602       LString6   sequence_database_name;
00603       LString8   sequence_database_accession_code;
00604       LString12  sequence_database_ID_code;
00606       struct InitialDatabaseSegment
00607       {
00608         Integer  number;
00609         AChar    insertion_code;
00610       } initial_database_segment;
00612       struct EndingDatabaseSegment
00613       {
00614         Integer  number;
00615         AChar    insertion_code;
00616       } ending_database_segment;
00617     };
00618 
00620     struct BALL_EXPORT RecordEND
00621     {
00622       RecordType record_type;
00623       RecordName record_name;
00624     };
00625 
00627     struct BALL_EXPORT RecordENDMDL
00628     {
00629       RecordType record_type;
00630       RecordName record_name;
00631     };
00632     
00634     struct BALL_EXPORT RecordEXPDTA
00635     {
00636       RecordType   record_type;
00637       RecordName   record_name;
00638       Continuation continuation;
00639       SList        technique;
00640     };
00641     
00643     struct BALL_EXPORT RecordFORMUL
00644     {
00645       RecordType record_type;
00646       RecordName record_name;
00647       Integer    component_number;
00648       LString3   het_ID;
00649       Integer    continuation_number;
00650       Character  is_water;
00651       PDBString  chemical_formula;
00652     };
00653     
00655     struct BALL_EXPORT RecordFTNOTE
00656     {
00657       RecordType record_type;
00658       RecordName record_name;
00659       Integer    number;
00660       PDBString  text;
00661     };
00662     
00664     struct BALL_EXPORT RecordHEADER
00665     {
00666       RecordType record_type;
00667       RecordName record_name;
00668       String40   classification;
00669       Date       deposition_date;
00670       IDcode     ID_code;
00671     };
00672     
00674     struct BALL_EXPORT RecordHELIX
00675     {
00676       RecordType    record_type;
00677       RecordName    record_name;
00678       Integer       serial_number;
00679       LString3      helix_ID;
00680       Residue       initial_residue;
00681       Residue       terminal_residue;
00682       Integer       helix_class;
00683       PDBString     comment;
00684       Integer       length;
00685 
00686       RecordHELIX() { clear(); }
00687       void clear()
00688       {
00689         record_type = RECORD_TYPE__HELIX;
00690         strncpy(record_name, RECORD_TAG_HELIX, 6);
00691         serial_number = 0;
00692         helix_ID[0] = '\0';
00693         initial_residue.clear();
00694         terminal_residue.clear();
00695         helix_class = 0;
00696         comment[0] = '\0';
00697         length = 0;
00698       }
00699     };
00700     
00702     struct BALL_EXPORT RecordHET
00703     {
00704       RecordType record_type;
00705       RecordName record_name;
00706       Residue    residue;
00707       Integer    number_of_HETATM_records;
00708       PDBString  text;
00709     };
00710     
00712     struct BALL_EXPORT RecordHETATM
00713     {
00714       RecordType  record_type;
00715       RecordName  record_name;
00716       Integer     serial_number;
00717       Atom        atom_name;
00718       Character   alternate_location_indicator;
00719       Residue     residue;
00720       Real        orthogonal_vector[3];
00721       Real        occupancy;
00722       Real        temperature_factor;
00723       LString4    segment_ID;
00724       LString2    element_symbol;
00725       LString2    charge; 
00726     };
00727     
00729     struct BALL_EXPORT RecordHETNAM
00730     {
00731       RecordType   record_type;
00732       RecordName   record_name;
00733       Continuation continuation;
00734       LString3     het_ID;
00735       PDBString    chemical_name;
00736     };
00737     
00739     struct BALL_EXPORT RecordHETSYN
00740     {
00741       RecordType   record_type;
00742       RecordName   record_name;
00743       Continuation continuation;
00744       LString3     het_ID;
00745       SList        het_synonyms;
00746     };
00747     
00749     struct BALL_EXPORT RecordHYDBND
00750     {
00751       RecordType       record_type;
00752       RecordName       record_name;
00754       struct BALL_EXPORT HydrogenPartnerAtom
00755       {
00756         Atom           atom_name;
00757         Character      alternate_location_indicator;
00758         Residue        residue;
00759       };
00760 
00761       HydrogenPartnerAtom hydrogen_partner_atom[2];
00763       struct BALL_EXPORT HydrogenAtom
00764       {
00765         Atom           atom_name;
00766         Character      alternate_location_indicator;
00767         Residue        residue;
00768       };
00769       HydrogenAtom hydrogen_atom;
00770       SymmetryOperator first_non_hydrogen_atom;
00771       SymmetryOperator second_non_hydrogen_atom;
00772     };
00773     
00775     struct BALL_EXPORT RecordJRNL
00776     {
00777       RecordType record_type;
00778       RecordName record_name;
00779       LString    text;
00780     };
00782     struct BALL_EXPORT RecordKEYWDS
00783     {
00784       RecordType   record_type;
00785       RecordName   record_name;
00786       Continuation continuation;
00787       PDBList      keywords;
00788     };
00790     struct BALL_EXPORT RecordLINK
00791     {
00792       RecordType      record_type;
00793       RecordName      record_name;
00795       struct BALL_EXPORT LinkPartner
00796       {
00797         Atom          atom_name;
00798         Character     alternate_location_indicator;
00799         Residue       residue;
00800       };
00801       LinkPartner link_partner[2];
00802       SymmetryOperator first_atom;
00803       SymmetryOperator second_atom;
00804     };
00806     struct BALL_EXPORT RecordMASTER
00807     {
00808       RecordType record_type;
00809       RecordName record_name;
00810       Integer    number_of_REMARK_records;
00811       Integer    zero;
00812       Integer    number_of_HET_records;
00813       Integer    number_of_HELIX_records;
00814       Integer    number_of_SHEET_records;
00815       Integer    number_of_TURN_records;
00816       Integer    number_of_SITE_records;
00817       Integer    number_of_ORIGX_SCALE_MTRIX_records;
00818       Integer    number_of_ATOM_HETATM_records;
00819       Integer    number_of_TER_records;
00820       Integer    number_of_CONECT_records;
00821       Integer    number_of_SEQRES_records;
00822 
00823       RecordMASTER() { clear(); }
00824       void clear()
00825       {
00826         record_type = RECORD_TYPE__MASTER;
00827         strcpy(record_name, RECORD_TAG_MASTER);
00828         zero = number_of_HET_records = number_of_HELIX_records
00829              = number_of_SHEET_records = number_of_TURN_records
00830              = number_of_SITE_records = number_of_ORIGX_SCALE_MTRIX_records
00831              = number_of_ATOM_HETATM_records = number_of_TER_records
00832              = number_of_CONECT_records = number_of_SEQRES_records = 0;
00833       }
00834     };
00836     struct BALL_EXPORT RecordMODEL
00837     {
00838       RecordType record_type;
00839       RecordName record_name;
00840       Integer    model_serial_number;
00841     };
00843     struct BALL_EXPORT RecordMODRES
00844     {
00845       RecordType  record_type;
00846       RecordName  record_name;
00847       IDcode      entry_code;
00848       Residue     residue;
00849       ResidueName standard_residue_name;
00850       PDBString   comment;
00851     };
00853     struct BALL_EXPORT RecordMTRIX1
00854     {
00855       RecordType record_type;
00856       RecordName record_name;
00857       Integer    serial_number;
00858       Real       transformation_matrix[4];
00859       Integer    is_given;
00860     };
00862     struct BALL_EXPORT RecordMTRIX2
00863     {
00864       RecordType record_type;
00865       RecordName record_name;
00866       Integer    serial_number;
00867       Real       transformation_matrix[4];
00868       Integer    is_given;
00869     };
00871     struct BALL_EXPORT RecordMTRIX3
00872     {
00873       RecordType record_type;
00874       RecordName record_name;
00875       Integer    serial_number;
00876       Real       transformation_matrix[4];
00877       Integer    is_given;
00878     };
00880     struct BALL_EXPORT RecordOBSLTE
00881     {
00882       RecordType   record_type;
00883       RecordName   record_name;
00884       Continuation continuation;
00885       Date         entry_replaced_date;
00886       IDcode       entry_code;
00887       IDcode       replacing_entry_code[8];
00888     };
00890     struct BALL_EXPORT RecordORIGX1
00891     {
00892       RecordType record_type;
00893       RecordName record_name;
00894       Real       transformation_matrix[4];
00895     };
00897     struct BALL_EXPORT RecordORIGX2
00898     {
00899       RecordType record_type;
00900       RecordName record_name;
00901       Real       transformation_matrix[4];
00902     };
00904     struct BALL_EXPORT RecordORIGX3
00905     {
00906       RecordType record_type;
00907       RecordName record_name;
00908       Real       transformation_matrix[4];
00909     };
00911     struct BALL_EXPORT RecordREMARK
00912     {
00913       RecordType record_type;
00914       RecordName record_name;
00915       Integer    remark_number;
00916       LString    text;
00917     };
00919     struct BALL_EXPORT RecordREVDAT
00920     {
00921       RecordType   record_type;
00922       RecordName   record_name;
00923       Integer      modification_number;
00924       Continuation continuation;
00925       Date         modification_date;
00926       String5      modification_ID;
00927       Integer      modification_type;
00928       LString6     name_of_modified_record[4];
00929     };
00930 
00932     struct BALL_EXPORT RecordSCALE1
00933     {
00934       RecordType record_type;
00935       RecordName record_name;
00936       Real       transformation_matrix[4];
00937     };
00938 
00940     struct BALL_EXPORT RecordSCALE2
00941     {
00942       RecordType record_type;
00943       RecordName record_name;
00944       Real       transformation_matrix[4];
00945     };
00946 
00948     struct BALL_EXPORT RecordSCALE3
00949     {
00950       RecordType record_type;
00951       RecordName record_name;
00952       Real       transformation_matrix[4];
00953     };
00954 
00956     struct BALL_EXPORT RecordSEQADV
00957     {
00958       RecordType  record_type;
00959       RecordName  record_name;
00960       IDcode      id_code;
00961       Residue     residue;
00962       LString4    database;
00963       LString9    db_id_code;
00964       LString3    db_res;
00965       Integer     db_seq;
00966       LString21   comment;
00967     };
00968 
00970     struct BALL_EXPORT RecordSEQRES
00971     {
00972       RecordType  record_type;
00973       RecordName  record_name;
00974       Integer     serial_number;
00975       Character   chain_ID;
00976       Integer     number_of_residues_in_chain;
00977       ResidueName residue_name[13];
00978 
00979       RecordSEQRES()
00980       {
00981         clear();
00982       }
00983 
00984       void clear()
00985       {
00986         record_type = RECORD_TYPE__SEQRES;
00987         strncpy(record_name, RECORD_TAG_SEQRES, 6);
00988         serial_number = 0;
00989         chain_ID = ' ';
00990         number_of_residues_in_chain = 0L;
00991         residue_name[0][0] = '\0';
00992         residue_name[1][0] = '\0';
00993         residue_name[2][0] = '\0';
00994         residue_name[3][0] = '\0';
00995         residue_name[4][0] = '\0';
00996         residue_name[5][0] = '\0';
00997         residue_name[6][0] = '\0';
00998         residue_name[7][0] = '\0';
00999         residue_name[8][0] = '\0';
01000         residue_name[9][0] = '\0';
01001         residue_name[10][0] = '\0';
01002         residue_name[11][0] = '\0';
01003         residue_name[12][0] = '\0';
01004       }
01005     };
01006 
01008     struct BALL_EXPORT RecordSHEET
01009     {
01010       RecordType    record_type;
01011       RecordName    record_name;
01012       Integer       strand_number;
01013       LString3      sheet_ID;
01014       Integer       number_of_strands;
01015       Residue       initial_residue;
01016       Residue       terminal_residue;
01017       Integer       sense_of_strand;
01018       Atom          atom_name_in_current_strand;
01019       Residue       residue_in_current_strand;
01020       Atom          atom_name_in_previous_strand;
01021       Residue       residue_in_previous_strand;
01022 
01023       RecordSHEET() { clear(); }
01024       void clear()
01025       {
01026         record_type = RECORD_TYPE__SHEET;
01027         strncpy(record_name, RECORD_TAG_SHEET, 6);
01028         strand_number = 0;
01029         sheet_ID[0] = '\0';;
01030         number_of_strands = 0; 
01031         initial_residue.clear();
01032         terminal_residue.clear();
01033         sense_of_strand = 0;
01034         atom_name_in_current_strand[0] = '\0';
01035         residue_in_current_strand.clear();
01036         atom_name_in_previous_strand[0] = '\0';
01037         residue_in_previous_strand.clear();
01038       }
01039     };
01040 
01042     struct BALL_EXPORT RecordSIGATM
01043     {
01044       RecordType  record_type;
01045       RecordName  record_name;
01046       Integer     serial_number;
01047       Atom        atom_name;
01048       Character   alternate_location_indicator;
01049       Residue     residue;
01050       Real        standard_vector_deviation[3];
01051       Real        standard_occupancy_deviation;
01052       Real        standard_temperature_deviation;
01053       LString4    segment_ID;
01054       LString2    element_symbol;
01055       LString2    charge; 
01056     };
01057 
01059     struct BALL_EXPORT RecordSIGUIJ
01060     {
01061       RecordType  record_type;
01062       RecordName  record_name;
01063       Integer     serial_number;
01064       Atom        atom_name;
01065       Character   alternate_location_indicator; 
01066       Residue     residue;
01067       Integer     sig11;
01068       Integer     sig22;
01069       Integer     sig33;
01070       Integer     sig12;
01071       Integer     sig13;
01072       Integer     sig23;
01073       LString4    segment_ID;
01074       LString2    element_symbol;
01075       LString2    charge; 
01076     };
01077 
01079     struct BALL_EXPORT RecordSITE
01080     {
01081       RecordType    record_type;
01082       RecordName    record_name;
01083       Integer       sequence_number;
01084       LString3      name;
01085       Integer       number_of_residues;
01086       Residue       residue[4];
01087     };
01088 
01090     struct BALL_EXPORT RecordSLTBRG
01091     {
01092       RecordType      record_type;
01093       RecordName      record_name;
01095       struct BALL_EXPORT PartnerAtom
01096       {
01097         Atom          atom_name;
01098         Character     alternate_location_indicator;
01099         Residue       residue;
01100       };
01101       
01102       PartnerAtom partner_atom[2];
01103       SymmetryOperator first_atom;
01104       SymmetryOperator second_atom;
01105     };
01106 
01108     struct BALL_EXPORT RecordSOURCE
01109     {
01110       RecordType        record_type;
01111       RecordName        record_name;
01112       Continuation      continuation;
01113       SpecificationList sources;
01114     };
01115 
01117     struct BALL_EXPORT RecordSPRSDE
01118     {
01119       RecordType        record_type;
01120       RecordName        record_name;
01121       Continuation      continuation;
01122       Date              date;
01123       IDcode            id_code;
01124       IDcode            old_codes[8];
01125     };
01126 
01128     struct BALL_EXPORT RecordSSBOND
01129     {
01130       RecordType    record_type;
01131       RecordName    record_name;
01132       Integer       serial_number;
01133       Residue       partner_residue[2];
01134       SymmetryOperator symmetry_operator[2];
01135       
01136       RecordSSBOND() { clear(); }
01137       void clear()
01138       {
01139         record_type = RECORD_TYPE__SSBOND;
01140         strncpy(record_name, RECORD_TAG_SSBOND, 6);
01141         serial_number = 0;
01142         partner_residue[0].clear();
01143         partner_residue[1].clear();
01144         symmetry_operator[0] = 0;
01145         symmetry_operator[1] = 0;
01146       }
01147     };
01148 
01151     struct BALL_EXPORT RecordTER
01152     {
01153       RecordType  record_type;
01154       RecordName  record_name;
01155       Integer     serial_number;
01156       Residue     residue;
01157     };
01158 
01161     struct BALL_EXPORT RecordTITLE
01162     {
01163       RecordType   record_type;
01164       RecordName   record_name;
01165       Continuation continuation;
01166       PDBString    title;
01167     };
01168 
01171     struct BALL_EXPORT RecordTURN
01172     {
01173       RecordType    record_type;
01174       RecordName    record_name;
01175       Integer       sequence_number;
01176       LString3      turn_ID;
01177       Residue       initial_residue;
01178       Residue       terminal_residue;
01179       PDBString     comment;
01180       
01181       RecordTURN() { clear(); }
01182       void clear()
01183       {
01184         record_type = RECORD_TYPE__TURN;
01185         strncpy(record_name, RECORD_TAG_TURN, 6);
01186         sequence_number = 0;
01187         turn_ID[0] = '\0';;
01188         initial_residue.clear();
01189         terminal_residue.clear();
01190         comment[0] = '\0';
01191       }
01192     };
01193 
01196     struct BALL_EXPORT RecordTVECT
01197     {
01198       RecordType record_type;
01199       RecordName record_name;
01200       Integer    serial_number;
01201       Real       translation_vector[3];
01202       PDBString  comment;
01203     };
01205 
01209     struct BALL_EXPORT BookKeeping
01210     {
01211       Size remark_records;
01212       Size het_records;
01213       Size helix_records;
01214       Size sheet_records;
01215       Size turn_records;
01216       Size site_records;
01217       Size coordinate_transformation_records;
01218       Size atomic_coordinate_records;
01219       Size ter_records;
01220       Size conect_records;
01221       Size seqres_records;
01222       
01223       BookKeeping()
01224       {
01225         clear();
01226       }
01227 
01228       void clear()
01229       {
01230         remark_records = 0;
01231         het_records = 0;
01232         helix_records = 0;
01233         sheet_records = 0;
01234         turn_records = 0;
01235         site_records = 0;
01236         coordinate_transformation_records = 0;
01237         atomic_coordinate_records = 0;
01238         ter_records = 0;
01239         conect_records = 0;
01240         seqres_records = 0;
01241       }
01242     };
01243 
01244 
01245     struct BALL_EXPORT Structure  
01246     {
01247       struct BALL_EXPORT AtomEntry
01248       {
01249         const BALL::Atom* atom;
01250         const BALL::Residue* residue;
01251         const BALL::SecondaryStructure* sec_struct;
01252         const BALL::Chain* chain;
01253         AtomEntry(const BALL::Atom& a)
01254         {
01255           atom = &a;
01256           residue = a.getResidue();
01257           sec_struct = a.getSecondaryStructure();
01258           chain = a.getChain();
01259         }
01260       };
01261       
01262 
01263       struct BALL_EXPORT ConectAtomList
01264       {
01265         Position serial_number;
01266         std::list<Position> bonds;
01267         std::list<Position> hbonds;
01268         std::list<Position> saltbridges;
01269       };
01270 
01271       struct BALL_EXPORT UnitCellInfo
01272       {
01273         Real     a;
01274         Real     b;
01275         Real     c;
01276         Real     alpha;
01277         Real     beta;
01278         Real     gamma;
01279         LString  space_group;
01280         Integer  z_value;
01281 
01282         UnitCellInfo()
01283           : a(0),
01284             b(0),
01285             c(0),
01286             alpha(0),
01287             beta(0),
01288             gamma(0),
01289             z_value(-1)
01290         {
01291           strcpy(space_group, "");  
01292         }
01293       } unitcell_info;
01294 
01295       struct BALL_EXPORT NCSMatrix
01296       {
01297         Real     matrix[12];
01298         Integer  isgiven;
01299         NCSMatrix(const BALL::Matrix4x4& m, bool is_given)
01300         {
01301           matrix[0] = m(0,0); matrix[1] = m(0,1); matrix[2] = m(0,2); matrix[3] = m(0,3);
01302           matrix[4] = m(1,0); matrix[5] = m(1,1); matrix[6] = m(1,2); matrix[7] = m(1,3);
01303           matrix[8] = m(2,0); matrix[9] = m(2,1); matrix[10] = m(2,2); matrix[11] = m(2,3);
01304           isgiven = is_given;
01305         }
01306       };
01307 
01308       std::vector<NCSMatrix> ncs_matrices;
01309       std::vector<AtomEntry> atoms;
01310 
01311       HashSet<const ::BALL::Atom*>  conect_atoms;
01312       std::vector<const Bond*>      hydrogen_bonds;
01313       std::vector<const Bond*>      saltbridges;
01314       std::vector<const Bond*>      ssbonds;
01315 
01316       std::vector<std::pair<AChar, String> >    chain_residue_names;
01317       std::vector<const SecondaryStructure*>    sec_structs;
01318 
01319       void clear()
01320       {
01321         atoms.clear();
01322         conect_atoms.clear();
01323         hydrogen_bonds.clear();
01324         saltbridges.clear();
01325         ssbonds.clear();
01326       }
01327 
01328     };
01329 
01333     struct BALL_EXPORT AdditionalAtomInfo
01334     {
01335       const Chain* current_chain;
01336       const ::BALL::Residue* current_residue;
01337       Integer residue_id;
01338       AChar residue_insertion_code;
01339       AChar chain_id;
01340       LString3 residue_name;
01341       LString4 pdb_id;
01342       Position number; // number of the ATOM/HETATM/TER record
01343       
01344       AdditionalAtomInfo()
01345         : current_chain(0x0),
01346           current_residue(0x0),
01347           residue_id(1),
01348           residue_insertion_code(' '),
01349           chain_id(' '),
01350           number(1)
01351       {
01352         strncpy(residue_name, "UNK", 4);
01353         strncpy(pdb_id, "    ", 5);
01354       }
01355     };
01356 
01359     BALL_EXPORT extern const RecordTypeFormat RECORD_TYPE_FORMAT [];
01360 
01361   } // namespace PDB
01362 
01363 } // namespace BALL
01364 
01365 #endif // BALL_FORMAT_PDBDEFS_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines