Bioplib
Protein Structure C Library
 All Data Structures Files Functions Variables Typedefs Macros Pages
pdb.h
Go to the documentation of this file.
1 /************************************************************************/
2 /**
3 
4  \file pdb.h
5 
6  \version V1.96
7  \date 30.09.17
8 
9  \brief Include file for PDB routines
10 
11  \copyright (c) UCL / Dr. Andrew C. R. Martin, UCL, Reading 1993-2017
12  \author Dr. Andrew C. R. Martin
13  \par
14  Institute of Structural & Molecular Biology,
15  University College London,
16  Gower Street,
17  London.
18  WC1E 6BT.
19  \par
20  andrew@bioinf.org.uk
21  andrew.martin@ucl.ac.uk
22 
23 **************************************************************************
24 
25  This code is NOT IN THE PUBLIC DOMAIN, but it may be copied
26  according to the conditions laid out in the accompanying file
27  COPYING.DOC.
28 
29  The code may be modified as required, but any modifications must be
30  documented so that the person responsible can be identified.
31 
32  The code may not be sold commercially or included as part of a
33  commercial product except as described in the file COPYING.DOC.
34 
35 **************************************************************************
36 
37  Description:
38  ============
39 
40 
41 **************************************************************************
42 
43  Usage:
44  ======
45 
46 **************************************************************************
47 
48  Revision History:
49  =================
50 - V1.0 04.11.88 Original
51 - V1.1 22.03.90 Added Secondary structure routines
52 - V1.2 28.03.90 Corrected field widths for V1.2 of ReadPDB
53 - V1.3 04.05.90 Added clear_pdb()
54 - V1.4 19.06.90 Changed SEC structure to correct chain and ins widths
55 - V1.5 19.07.90 Added INITINDEX macro
56 - V1.6 09.09.91 Added define so won't screw up if included twice
57 - V1.7 22.09.91 Altered character sizes for alignment
58 - V1.8 10.06.93 Changed to use REAL rather than float. Changed
59  order within structure
60 - V1.9 22.02.94 Added MAXSTDAA and MAXATINRES definitions
61 - V1.10 01.03.94 Added stuff for ResolPDB. Removed INIT_INDEX().
62  Added DISULPHIDE definition.
63  Added HADDINFO definition.
64 - V1.11 18.03.94 Added prototypes for ReadPDBOccRank() and
65  ReadPDBAtomsOccRank()
66  Added gPDBPartialOcc
67 - V1.12 23.05.94 Added FindNextChainPDB() prototype
68 - V1.13 24.08.94 Added OpenPGPFile() prototype. Added prototypes for
69  new version of FixPDB(). Added CTER styles
70 - V1.14 03.10.94 Added FindCofGPDBRange(), FindCofGPDBSCRange(),
71  ReadPDBALL()
72 - V1.15 05.10.94 Changed KillSidechain()
73 - V1.16 11.01.94 Added StripHPDB()
74 - V1.17 06.03.95 doReadPDB() is now defined here rather than static
75 - V1.18 17.07.95 ParseResSpec() is now a BOOL
76 - V1.19 24.07.95 Added FNam2PDB(), TermPDB()
77 - V1.20 25.07.95 Added GetPDBChainLabels()
78 - V1.21 08.08.95 Added FindResidueSpec() and FindNextResidue()
79 - V1.22 12.10.95 Added DupePDB(), CopyPDBCoords(), CalcCellTrans(),
80  GetCrystPDB(), WriteCrystPDB()
81 - V1.23 10.01.96 Added ExtractZonePDB()
82 - V1.24 08.02.96 Added FindResidue()
83 - V1.25 14.03.96 Added FitCaPDB(), FindAtomInRes()
84 - V1.26 18.06.96 Added InPDBZone() and ZONE_MODE_*. Modified prototype
85  for FindZonePDB()
86 - V1.27 23.07.96 Added AtomNameMatch() and LegalAtomSpec()
87 - V1.28 12.08.96 Added RepOneSChain() and EndRepSChain()
88 - V1.29 19.09.96 Added InPDBZoneSpec()
89 - V1.30 14.10.96 Added ReadSeqresPDB();
90 - V1.31 16.10.96 Added SelectCaPDB()
91 - V1.32 18.08.98 Changed SEC to SECSTRUC 'cos of conflict in SunOS
92  Also defines SEC macro if not defined to warn you to
93  change your code!
94 - V1.33 28.04.99 Added GetExptl()
95 - V1.34 15.02.01 Added atnam_raw[] to PDB
96  Added WriteGromosPDB(), WriteGromosPDBRecord(),
97  AtomNameRawMatch()
98 - V1.35 12.12.01 Added FitNCaCPDB()
99 - V1.36 30.05.02 Changed PDB field from 'junk' to 'record_type'
100  Added the WholePDB routines and definition
101 - V1.37 03.06.05 Added altpos to PDB.
102  Added altpos and atnam_raw to CLEAR_PDB
103 - V1.38 22.09.05 Added WritePDBRecordAtnam()
104 - V1.39 29.09.05 Added ParseResSpecNoUpper() and DoParseResSpec() By: TL
105 - V1.40 04.01.06 Added AddCBtiGly(), AddCBtoAllGly(),
106  StripGlyCB() By: ACRM
107 - V1.41 25.01.06 Added RemoveAlternates()
108 - V1.42 08.11.07 Added BuildAtomNeighbourPDBList()
109  FindAtomWildcardInRes()
110  DupeResiduePDB()
111 - V1.43 30.04.08 Added StripWatersPDB() and ISWATER() macro
112 - V1.44 01.06.09 Added extras field to PDB structure
113 - V1.45 24.11.09 Added PDBSTRUCT, PDBCHAIN, PDBRESIDUE
114  AllocPDBStructure(), FindNextChain(),
115  FreePDBStructure()
116 - V1.46 26.10.11 Added FindHetatmResidueSpec() and FindHetatmResidue()
117 - V1.47 12.12.11 Added GetExptlOld()
118  Added ResportStructureType()
119  Added new STRUCTURE_TYPE_* defines
120 - V1.48 04.02.14 Added CHAINMATCH macro. By: CTP
121 - V1.49 24.02.14 Added BiopFindResidue(), BiopFindHetatmResidue() and
122  BiopInPDBZone(). By: CTP
123 - V1.50 20.03.14 Added blFindZonePDB(). By: CTP
124 - V1.51 25.03.14 Added blGetPDBChainLabels(). By: CTP
125 - V1.52 22.04.14 Added CheckFileFormatPDBML(FILE *fp). By: CTP
126 - V1.53 07.05.14 Added deprecated.h and removed definitions for
127  deprecated funtions: FindHetatmResidue(), FindResidue(),
128  InPDBZone() and FindZonePDB(). By: CTP
129 - V1.54 02.06.14 Added WritePDBML() By: CTP
130 - V1.55 09.06.14 Added gPDBXML flag By: CTP
131 - V1.56 21.06.14 Added gPDBXMLForce flag and updated functions:
132  blWritePDB(), blWriteAsPDB(), blWriteAsPDBML(),
133  blFormatCheckWritePDB(), blWriteWholePDB(),
134  blWriteWholePDBHeader() and blWriteWholePDBTrailer().
135  By: CTP
136 - V1.57 07.07.14 Rename functions with 'bl' prefix. By: CTP
137 - V1.58 17.07.14 Added access and radius to PDB structure. Also
138  added CREATEPDBEXTRAS() and FREEPDBEXTRAS() By: ACRM
139 - V1.59 17.07.14 Added blSetElementSymbolFromAtomName() By: CTP
140 - V1.60 22.07.14 Added element and charge to PDB structure. By: ACRM
141 - V1.61 31.07.14 Updated deprecation: Removed deprecated.h and added
142  prototypes for renamed functions. By: CTP
143 - V1.62 04.08.14 Changed formal charge to int for PDB structure.
144  Updated CLEAR_PDB() to set access, radius, charge,
145  element and atomType. By: CTP
146 - V1.63 14.08.14 Moved deprecated function prototypes to deprecated.h
147  By: CTP
148 - V1.64 16.08.14 Replaced charge with formal_charge and partial_charge
149  for PDB structure. By: CTP
150 - V1.65 19.08.14 Renamed functions: blBuildAtomNeighbourPDBList(),
151  blExtractZonePDB(), blSelectAtomsPDB(), blStripHPDB(),
152  blStripWatersPDB() with AsCopy suffix indicating that
153  functions return a new PDB list rather than alter their
154  input PDB list.
155 - V1.66 17.09.14 Commented the fields of the PDB structure
156 - V1.67 24.10.14 Added blExtractZoneSpecPDB()
157 - V1.68 12.02.15 Added blWriteWholePDBNoConect()
158 - V1.69 17.02.15 Added segid to PDB structure and to CLEAR_PDB()
159 - V1.70 18.02.15 Added conect to PDB structure and to CLEAR_PDB()
160 - V1.71 19.02.15 Added blBuildConectData(), blAddConect() and
161  blIsBonded()
162 - V1.72 23.02.15 blWritePDB() and blWriteAsPDB() now return int instead
163  of void. Added blWriteTerCard(). blWritePDBTrailier()
164  now takes an additional numTer parameter and
165  blRenumAtomsPDB() takes a new offset parameter
166 - V1.73 24.02.15 Renamed blWriteAsPDB() to blWritePDBAsPDBorGromos() and
167  added a new parameter. Renamed blWriteAsPDBML() to
168  blWritePDBAsPDBML()
169 - V1.74 26.02.15 blWritePDBAsPDBML() now returns BOOL
170  blIsBonded() now takes a tolerance parameter
171  blBuildConectData() now takes a tolerance parameter
172  Added blReadSecWholePDB(), blReadDisulphideWholePDB(),
173  blReadSeqresWholePDB()
174 - V1.75 02.03.15 Renamed blGetExptl() to blGetExptlPDB()
175  Added blGetResolWholePDB(), blGetExptlWholePDB()
176  Added blWriteWholePDBHeaderNoRes()
177 - V1.76 10.03.15 Added blPrintResSpecHelp()
178  Removed blParseResSpecNoUpper()
179 - V1.77 16.03.15 Added blGetCrystWholePDB()
180  blDeleteAConect(), blDeleteAConectByNum()
181  blDeleteAtomPDB(), blDeleteAtomConects(),
182  blDeleteAtomRangePDB()
183  blAddOneDirectionConect() now does what blAddConect()
184  used to do. blAddConect() adds CONECT in both
185  directions
186 - V1.78 20.03.15 Added global variable gPDBModelNotFound for PDB reading
187  gPDBMultiNMR is now an int containing the number of
188  MODELs
189 - V1.79 26.03.15 Added blGetPDBCHainAsCopy()
190 - V1.80 17.04.15 Added blCopyConects() and blIndexAtomNumbersPDB()
191 - V1.81 28.04.15 Added blGetHeaderWholePDB(), blGetTitleWholePDB(),
192  blGetCompoundWholePDBChain(), blFindMolID(),
193  blGetSpeciesWholePDBChain() plus the COMPND and
194  PDBSOURCE structures
195 - V1.82 28.04.15 Modified blDoReadPDBML() By: CTP
196 - V1.83 13.05.15 Added blGetCompoundWholePDBMolID() and
197  blGetSpeciesWholePDBMolID() By: CTP
198 - V1.84 11.06.15 Added blGetSeqresAsStringWholePDB(),
199  blGetModresWholePDB(), blFindOriginalResType()
200 - V1.85 14.06.15 Added entity_id to PDB data structure and to CLEAR_PDB()
201  By: CTP
202 - V1.86 23.06.15 Added blAreResiduesBonded() and
203  blAreResiduePointersBonded() By: ACRM
204 - V1.87 26.06.15 Added blGetBiomoleculeWholePDB(), blFreeBiomolecule()
205  and associated structures
206 - V1.88 07.07.15 Added secstr item to PDB structure and to CLEAR_PDB.
207  Added INSERTMATCH()
208 - V1.89 14.07.15 Added MAKERESID() macro
209 - V1.90 21.07.15 Changed PDB.atomType to PDB.atomInfo
210  Added PDB.atomtype
211  Added ATOMTYPE_XXXXXXX defines
212  Added blIsConected()
213  Added blSetAtomTypes()
214  Added PDBEXTRASPTR()
215  Added RESIDMATCH()
216  Improved MAKERESID()
217 - V1.91 07.10.15 Added blExtractNotZonePDBAsCopy() and
218  blExtractNotZoneSpecPDBAsCopy()
219 - V1.92 02.11.15 Further improved MAKERESID()
220 - V1.93 26.11.15 Added blGetSeqresByChainWholePDB()
221 - V1.94 30.11.15 Make use of blMAXCHAINLABEL
222 - V1.95 11.08.16 Added blBuildResSpec()
223 - V1.96 30.09.17 Added blDeleteResiduePDB()
224 
225 *************************************************************************/
226 #ifndef _PDB_H
227 #define _PDB_H
228 
229 #include <stdio.h>
230 #include <string.h>
231 #include <ctype.h>
232 
233 #include "MathType.h"
234 #include "SysDefs.h"
235 #include "general.h"
236 #include "hash.h"
237 
238 #define MAXSTDAA 21 /* Number of standard amino acids (w/ PCA) */
239 #define MAXATINAA 14 /* Max number of (heavy) atoms in a standard aa */
240 #define MAXATINRES 23 /* Max number of (heavy) atoms in a standard aa
241  or nucleotide
242  */
243 #define MAXCONECT 8 /* Max number of CONECT connections */
244 #define DEFCONECTTOL 0.1 /* Default CONECT tolerence */
245 #define MAXPDBANNOTATION 640 /* Max size for storing a PDB header
246  annotation
247  */
248 #define blMAXCHAINLABEL 8
249 
250 
251 /* blATOMINFO is unused at present, but gives the flexibility of
252  associating type information with each PDB record.
253 */
254 typedef struct _blAtomInfo
255 {
257  pol,
258  NEff,
259  vdwr;
260  char atomtype[8];
261 } blATOMINFO;
262 
263 
264 /* This is our main PDB structure used for the PDB linked lists.
265 
266  The 'extras' field is used for flags or to attach another
267  structure or array to each PDB record. For example:
268 
269  typedef struct
270  {
271  REAL angle;
272  BOOL flag;
273  } EXTRAS;
274  PDB *p;
275 
276  for(p=pdb; p!=NULL; NEXT(p))
277  {
278  if((p->extras = (APTR)malloc(sizeof(EXTRAS)))==NULL)
279  return(FALSE);
280  }
281 
282  for(p=pdb; p!=NULL; NEXT(p))
283  {
284  ((EXTRAS *)p->extras)->flag = FALSE;
285  ((EXTRAS *)p->extras)->angle = (REAL)0.0;
286  }
287 */
288 
289 /* We recommend a dimension of 8 for all the character arrays below for
290  maxmimum portability. If memory footprint is a key consideration, some
291  of these can be reduced as noted with [MIN x] in the comments. Note
292  that restrictions on the size of items with a * are imposed by PDB
293  files are not imposed in PDBML or mmCIF files and consequently,
294  reducting these may prevent reading of these files.
295  See http://www.catb.org/esr/structure-packing/ for details of
296  optimizing the memory footprint of a structure.
297 */
298 typedef struct pdb_entry
299 {
300  REAL x, y, z, /* Coordinates */
301  occ, bval, /* Occupancy and B-value */
302  access, radius, /* Accessibility and radius - populated by
303  Bioplib routines */
304  partial_charge; /* Reserved for future use */
305  APTR extras; /* Pointer for users to add information */
306  blATOMINFO *atomInfo; /* Reserved for future use */
307  struct pdb_entry *next; /* Forward linked list */
308  struct pdb_entry *conect[MAXCONECT]; /* CONECT record links */
309  int atnum; /* Atom number */
310  int resnum; /* Residue number */
311  int formal_charge; /* Formal charge - used in XML files */
312  int nConect; /* Number of conections */
313  int entity_id; /* Entity ID - used in XML files */
314  int atomtype; /* See ATOMTYPE_XXXX */
315  char record_type[8]; /* ATOM / HETATM [MIN 7] */
316  char atnam[8]; /* Atom name, left justified [MIN 6] */
317  char atnam_raw[8]; /* Atom name as it appears in the PDB file
318  [MIN 6] */
319  char resnam[8]; /* Residue name [MIN 5] */
320  char insert[8]; /* Numbering insert code [MIN 3*] */
321  char chain[blMAXCHAINLABEL]; /* Chain label [MIN 3*] */
322  char element[8]; /* Element type [MIN 3] */
323  char segid[8]; /* Segment ID [MIN 3*] */
324  char altpos; /* Alternate position indicator */
325  char secstr; /* Secondary structure */
326 } PDB;
327 
328 typedef struct pdbresidue
329 {
330  struct pdbresidue *next, *prev;
333  int resnum;
335  char insert[8];
336  char resnam[8];
337  char resid[8];
338 } PDBRESIDUE;
339 
340 typedef struct pdbchain
341 {
342  struct pdbchain *next, *prev;
347 } PDBCHAIN;
348 
349 typedef struct
350 {
354 } PDBSTRUCT;
355 
356 
357 #define SELECT(x,w) (x) = (char *)malloc(5 * sizeof(char)); \
358  if((x) != NULL) strncpy((x),(w),5)
359 
360 typedef struct sec_entry
361 {
362  struct sec_entry *next;
363  char chain1[8];
364  char insert1[8];
365  char chain2[8];
366  char insert2[8];
367  int res1;
368  int res2;
369  char type;
370 } SECSTRUC;
371 
372 typedef struct _wholepdb
373 {
377  int natoms;
378 } WHOLEPDB;
379 
380 typedef struct _compnd
381 {
382  int molid;
391 } COMPND;
392 
393 typedef struct _pdbsource
394 {
398  int taxid;
399 } PDBSOURCE;
400 
401 typedef struct _modres
402 {
403  struct _modres *next;
404  char modres[8];
405  char origres[8];
406 } MODRES;
407 
408 typedef struct _biomt
409 {
410  struct _biomt *next;
411  int biomtNum;
413  transMatrix[3];
414 } BIOMT;
415 
416 typedef struct _biomolecule
417 {
419  /* From REMARK 300 */
422  /* From REMARK 350 */
424  char authorUnit[40],
425  softwareUnit[40],
426  *chains;
428 } BIOMOLECULE;
429 
430 
431 /* This is designed to cause an error message which prints this line
432  It has been tested with gcc and Irix cc and does as required in
433  both cases
434 */
435 #ifndef SEC
436 # define SEC (The_type_SEC_is_now_called_SECSTRUC_You_must_change_your_code *)
437 #endif
438 
439 typedef struct _disulphide
440 {
441  struct _disulphide *next;
442  int res1,
443  res2;
444  char chain1[8],
445  chain2[8],
446  insert1[8],
447  insert2[8];
448 } DISULPHIDE;
449 
450 typedef struct
451 {
452  int Total, /* Total hydrogens */
453  T1, /* Type 1 C-H's */
454  T2, /* Type 2 C-H2's */
455  T3, /* Type 3 C-H3's */
456  T4, /* Type 4 sp2 C-H's,>N-H */
457  T5; /* Type 5 O-H's =N-H's */
458 } HADDINFO;
459 
460 #define CLEAR_PDB(p) strcpy(p->record_type," "); \
461  p->atnum=0; \
462  strcpy(p->atnam," "); \
463  strcpy(p->atnam_raw," "); \
464  strcpy(p->resnam," "); \
465  p->resnum=0; \
466  strcpy(p->insert," "); \
467  strcpy(p->chain," "); \
468  p->x = 0.0; p->y = 0.0; p->z = 0.0; \
469  p->altpos = ' '; \
470  p->occ = 0.0; p->bval = 0.0; \
471  p->next = NULL; \
472  p->extras = NULL; \
473  p->access = 0.0; \
474  p->radius = 0.0; \
475  p->formal_charge = 0; \
476  p->partial_charge = 0.0; \
477  strcpy(p->element," "); \
478  strcpy(p->segid," "); \
479  p->conect[0] = NULL; \
480  p->nConect = 0; \
481  p->atomInfo = NULL; \
482  p->atomtype = 0; \
483  p->secstr = ' '; \
484  p->entity_id = 0;
485 
486 
487 #define ISWATER(z) (!strncmp((z)->resnam,"HOH",3) || \
488  !strncmp((z)->resnam,"OH2",3) || \
489  !strncmp((z)->resnam,"OHH",3) || \
490  !strncmp((z)->resnam,"DOD",3) || \
491  !strncmp((z)->resnam,"OD2",3) || \
492  !strncmp((z)->resnam,"ODD",3) || \
493  !strncmp((z)->resnam,"WAT",3))
494 
495 #define CHAINMATCH(chain1,chain2) !strcmp(chain1, chain2)
496 #define INSERTMATCH(ins1, ins2) !strcmp(ins1, ins2)
497 
498 #define PDBCHAINMATCH(p, q) !strcmp((p)->chain, (q)->chain)
499 #define PDBINSERTMATCH(p, q) !strcmp((p)->insert, (q)->insert)
500 
501 /* Called as CREATEPDBEXTRAS(pdb, EXTRATYPE) */
502 #define CREATEPDBEXTRAS(x, y) \
503  { PDB *_cpe_p; \
504  for(_cpe_p=(x); _cpe_p!=NULL; _cpe_p=_cpe_p->next){ \
505  _cpe_p->extras = (APTR)malloc(sizeof(y)); \
506  } \
507  }
508 
509 /* Called as FREEPDBEXTRAS(pdb) */
510 #define FREEPDBEXTRAS(x) \
511  { PDB *_fpe_p; \
512  for(_fpe_p=(x); _fpe_p!=NULL; _fpe_p=_fpe_p->next){ \
513  if(_fpe_p->extras != NULL){ \
514  free(_fpe_p->extras); \
515  _fpe_p->extras = NULL; \
516  } \
517  } \
518  }
519 
520 /* Eases access to items in the pdb->extras structure
521  For a PDB item 'p' and a p->extras of type 'EXTRAS', you
522  access a field, 'field' with
523  x = PDBEXTRASPTR(p, EXTRAS)->field;
524  -or-
525  PDBEXTRASPTR(p, EXTRAS)->field = x;
526  -or-
527  if(PDBEXTRASPTR(p, EXTRAS)->field == x)
528 */
529 #define PDBEXTRASPTR(p, type) ((type *)((p)->extras))
530 
531 /* Creates a residue identifier from the chain, resnum and insert */
532 #define MAKERESID(x, p) \
533  do { \
534  char _makeresid_dot[2]; \
535  int _makeresid_len = strlen((p)->chain); \
536  _makeresid_dot[0] = '\0'; \
537  if(_makeresid_len > 0) { \
538  if(isdigit((p)->chain[_makeresid_len - 1])) { \
539  strcpy(_makeresid_dot, "."); \
540  } \
541  } \
542  if((p)->insert[0]!=' ') \
543  sprintf((x), "%s%s%d%s", (p)->chain, _makeresid_dot, \
544  (p)->resnum, (p)->insert); \
545  else \
546  sprintf((x), "%s%s%d", (p)->chain, _makeresid_dot, \
547  (p)->resnum); \
548  } while(0)
549 
550 /* Determines whether two residue identifiers are the same */
551 #define RESIDMATCH(p, q) (((p)->resnum == (q)->resnum) && \
552  (!strcmp((p)->chain, (q)->chain)) && \
553  (!strcmp((p)->insert, (q)->insert)))
554 
555 /* These are the types returned by ResolPDB() */
556 #define STRUCTURE_TYPE_UNKNOWN 0
557 #define STRUCTURE_TYPE_XTAL 1
558 #define STRUCTURE_TYPE_NMR 2
559 #define STRUCTURE_TYPE_MODEL 3
560 #define STRUCTURE_TYPE_ELECTDIFF 4
561 #define STRUCTURE_TYPE_FIBER 5
562 #define STRUCTURE_TYPE_SSNMR 6
563 #define STRUCTURE_TYPE_NEUTRON 7
564 #define STRUCTURE_TYPE_EM 8
565 #define STRUCTURE_TYPE_SOLSCAT 9
566 #define STRUCTURE_TYPE_IR 10
567 #define STRUCTURE_TYPE_POWDER 11
568 #define STRUCTURE_TYPE_FRET 12
569 
570 /* These are the styles used by FixCterPDB() */
571 #define CTER_STYLE_STD 0
572 #define CTER_STYLE_GROMOS 1
573 #define CTER_STYLE_CHARMM 2
574 
575 /* Return flags from GetCrystPDB() */
576 #define XTAL_DATA_CRYST 0x0001
577 #define XTAL_DATA_ORIGX 0x0002
578 #define XTAL_DATA_SCALE 0x0004
579 
580 /* Modes for FindZonePDB() */
581 #define ZONE_MODE_RESNUM 0
582 #define ZONE_MODE_SEQUENTIAL 1
583 
584 /* Modes and macros for gPDBXMLForce */
585 #define FORCEXML_NOFORCE 0
586 #define FORCEXML_PDB 1
587 #define FORCEXML_XML 2
588 
589 /* For forcing writing in PDB or XML format */
590 #define FORCEPDB gPDBXMLForce = FORCEXML_PDB
591 #define FORCEXML gPDBXMLForce = FORCEXML_XML
592 
593 /* Atom types */
594 #define ATOMTYPE_NONRESIDUE 128
595 #define ATOMTYPE_UNDEF 0
596 #define ATOMTYPE_ATOM 1
597 #define ATOMTYPE_NUC 2
598 #define ATOMTYPE_MODPROT 3
599 #define ATOMTYPE_MODNUC 4
600 #define ATOMTYPE_NONSTDAA 5
601 #define ATOMTYPE_NONSTDNUC 6
602 #define ATOMTYPE_HETATM (7 | ATOMTYPE_NONRESIDUE)
603 #define ATOMTYPE_METAL (8 | ATOMTYPE_NONRESIDUE)
604 #define ATOMTYPE_WATER (9 | ATOMTYPE_NONRESIDUE)
605 #define ATOMTYPE_BOUNDHET (10 | ATOMTYPE_NONRESIDUE)
606 #define ATOMTYPE_BOUNDPOLYHET (11 | ATOMTYPE_NONRESIDUE)
607 
608 
609 /************************************************************************/
610 /* Globals
611 */
612 #ifdef RSC_MAIN
613  char gRSCError[80];
614 #else
615  extern char gRSCError[80];
616 #endif
617 
618 #ifdef READPDB_MAIN
620  int gPDBMultiNMR = 0;
621  BOOL gPDBXML = FALSE;
623 #else
624  extern BOOL gPDBPartialOcc;
625  extern int gPDBMultiNMR;
626  extern BOOL gPDBXML;
627  extern BOOL gPDBModelNotFound;
628 #endif
629 
630 #ifdef WRITEPDB_MAIN
632 #else
633  extern int gPDBXMLForce;
634 #endif
635 
636 /************************************************************************/
637 /* Prototypes
638 */
639 
640 PDB *blReadPDB(FILE *fp, int *natom);
641 PDB *blReadPDBAll(FILE *fp, int *natom);
642 PDB *blReadPDBAtoms(FILE *fp, int *natom);
643 PDB *blReadPDBOccRank(FILE *fp, int *natom, int OccRank);
644 PDB *blReadPDBAtomsOccRank(FILE *fp, int *natom, int OccRank);
645 WHOLEPDB *blDoReadPDB(FILE *fp, BOOL AllAtoms, int OccRank,
646  int ModelNum, BOOL DoWhole);
647 WHOLEPDB *blDoReadPDBML(FILE *fp, BOOL AllAtoms, int OccRank,
648  int ModelNum, BOOL DoWhole);
649 BOOL blCheckFileFormatPDBML(FILE *fp);
650 
651 int blWritePDB(FILE *fp, PDB *pdb);
652 int blWritePDBAsPDBorGromos(FILE *fp, PDB *pdb, BOOL doGromos);
653 BOOL blWritePDBAsPDBML(FILE *fp, PDB *pdb);
654 void blWriteTerCard(FILE *fp, PDB *p);
656 
657 BOOL blWriteWholePDB(FILE *fp, WHOLEPDB *wpdb);
658 BOOL blWriteWholePDBNoConect(FILE *fp, WHOLEPDB *wpdb);
659 void blWriteWholePDBHeader(FILE *fp, WHOLEPDB *wpdb);
660 void blWriteWholePDBTrailer(FILE *fp, WHOLEPDB *wpdb, int numTer);
661 void blWriteWholePDBHeaderNoRes(FILE *fp, WHOLEPDB *wpdb);
662 
663 BOOL blBuildConectData(PDB *pdb, REAL tol);
664 BOOL blAddConect(PDB *p, PDB *q);
666 BOOL blDeleteConect(PDB *p, PDB *q);
667 BOOL blDeleteAConectByNum(PDB *pdb, int cNum);
668 void blDeleteAtomConects(PDB *pdb);
669 BOOL blCopyConects(PDB *out, PDB *in);
670 BOOL blIsConected(PDB *p, PDB *q);
671 BOOL blIsBonded(PDB *p, PDB *q, REAL tol);
672 PDB *blDeleteAtomPDB(PDB *pdb, PDB *atom);
673 PDB *blDeleteAtomRangePDB(PDB *pdb, PDB *start, PDB *stop);
675  char *chain1, int resnum1, char *insert1,
676  char *chain2, int resnum2, char *insert2,
677  REAL tol);
679 
680 void blWritePDBRecord(FILE *fp, PDB *pdb);
681 void blWritePDBRecordAtnam(FILE *fp, PDB *pdb);
682 void blWriteGromosPDB(FILE *fp, PDB *pdb);
683 void blWriteGromosPDBRecord(FILE *fp, PDB *pdb);
684 void blGetCofGPDB(PDB *pdb, VEC3F *cg);
685 void blGetCofGPDBRange(PDB *start, PDB *stop, VEC3F *cg);
686 void blGetCofGPDBSCRange(PDB *start, PDB *stop, VEC3F *cg);
687 void blOriginPDB(PDB *pdb);
688 void blRotatePDB(PDB *pdb, REAL rm[3][3]);
689 void blTranslatePDB(PDB *pdb, VEC3F tvect);
690 BOOL blFitPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3]);
691 BOOL blFitCaPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3]);
692 BOOL blFitNCaCPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3]);
693 BOOL blFitCaCbPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3]);
694 REAL blCalcRMSPDB(PDB *pdb1, PDB *pdb2);
695 int blGetPDBCoor(PDB *pdb, COOR **coor);
696 BOOL blFindZonePDB(PDB *pdb, int start, char *startinsert, int stop,
697  char *stopinsert, char *chain, int mode,
698  PDB **pdb_start, PDB **pdb_stop);
699 int blHAddPDB(FILE *fp, PDB *pdb);
700 int blReadPGP(FILE *fp);
701 FILE *blOpenPGPFile(char *pgpfile, BOOL AllHyd);
702 PDB *blSelectAtomsPDBAsCopy(PDB *pdbin, int nsel, char **sel, int *natom);
703 PDB *blStripHPDBAsCopy(PDB *pdbin, int *natom);
704 SECSTRUC *blReadSecPDB(FILE *fp, int *nsec);
705 SECSTRUC *blReadSecWholePDB(WHOLEPDB *wpdb, int *nsec);
706 void blRenumAtomsPDB(PDB *pdb, int offset);
707 PDB *blFindEndPDB(PDB *start);
708 PDB *blFixOrderPDB(PDB *pdb, BOOL Pad, BOOL Renum);
709 PDB *blShuffleResPDB(PDB *start, PDB *end, BOOL Pad);
710 BOOL blGetAtomTypes(char *resnam, char **AtomTypes);
711 PDB *blKillPDB(PDB *pdb, PDB *prev);
712 void blCopyPDB(PDB *out, PDB *in);
713 BOOL blMovePDB(PDB *move, PDB **from, PDB **to);
714 PDB *blAppendPDB(PDB *first, PDB *second);
715 PDB *blShuffleBB(PDB *pdb);
716 REAL blCalcChi(PDB *pdb, int type);
717 PDB *blGetPDBByN(PDB *pdb, int n);
718 void blSetChi(PDB *pdb, PDB *next, REAL chi, int type);
719 BOOL blKillSidechain(PDB *ResStart, PDB *NextRes, BOOL doCB);
720 PDB *blDeleteResiduePDB(PDB **pPDB, PDB *res);
721 void blSetResnam(PDB *ResStart, PDB *NextRes, char *resnam, int resnum,
722  char *insert, char *chain);
723 void blApplyMatrixPDB(PDB *pdb, REAL matrix[3][3]);
724 BOOL blGetResolPDB(FILE *fp, REAL *resolution, REAL *RFactor,
725  int *StrucType);
726 BOOL blGetResolWholePDB(WHOLEPDB *wpdb, REAL *resolution, REAL *RFactor,
727  int *StrucType);
728 BOOL blGetExptlPDB(FILE *fp, REAL *resolution, REAL *RFactor, REAL *FreeR,
729  int *StrucType);
730 BOOL blGetExptlWholePDB(WHOLEPDB *wpdb, REAL *resolution, REAL *RFactor,
731  REAL *FreeR, int *StrucType);
732 BOOL blGetExptlOld(FILE *fp, REAL *resolution, REAL *RFactor, REAL *FreeR,
733  int *StrucType);
734 char *blReportStructureType(int type);
735 PDB **blIndexPDB(PDB *pdb, int *natom);
736 PDB **blIndexAtomNumbersPDB(PDB *pdb, int *indexSize);
737 DISULPHIDE *blReadDisulphidesPDB(FILE *fp, BOOL *error);
739 BOOL blParseResSpec(char *spec, char *chain, int *resnum, char *insert);
740 void blPrintResSpecHelp(FILE *fp);
741 void blBuildResSpec(PDB *p, char *resspec);
742 BOOL blDoParseResSpec(char *spec, char *chain, int *resnum, char *insert,
743  BOOL uppercaseresspec);
744 BOOL blRepSChain(PDB *pdb, char *sequence, char *ChiTable, char *RefCoords);
745 PDB *blFindNextChainPDB(PDB *pdb);
746 BOOL blFixCterPDB(PDB *pdb, int style);
747 BOOL blCalcCterCoords(PDB *p, PDB *ca_p, PDB *c_p, PDB *o_p);
748 int blCalcTetraHCoords(PDB *nter, COOR *coor);
749 int blAddNTerHs(PDB **ppdb, BOOL Charmm);
750 char *blFNam2PDB(char *filename);
751 PDB *blTermPDB(PDB *pdb, int length);
752 char **blGetPDBChainLabels(PDB *pdb, int *nchains);
753 PDB *blGetPDBChainAsCopy(PDB *pdbin, char *chain);
754 PDB *blFindHetatmResidueSpec(PDB *pdb, char *resspec);
755 PDB *blFindResidueSpec(PDB *pdb, char *resspec);
756 PDB *blFindNextResidue(PDB *pdb);
757 PDB *blDupePDB(PDB *in);
758 BOOL blCopyPDBCoords(PDB *out, PDB *in);
759 void blCalcCellTrans(VEC3F UnitCell, VEC3F CellAngles,
760  VEC3F *xtrans, VEC3F *ytrans, VEC3F *ztrans);
761 int blGetCrystPDB(FILE *fp, VEC3F *UnitCell, VEC3F *CellAngles,
762  char *spacegroup,
763  REAL OrigMatrix[3][4], REAL ScaleMatrix[3][4]);
764 int blGetCrystWholePDB(WHOLEPDB *wpdb, VEC3F *UnitCell, VEC3F *CellAngles,
765  char *spacegroup,
766  REAL OrigMatrix[3][4], REAL ScaleMatrix[3][4]);
767 void blWriteCrystPDB(FILE *fp, VEC3F UnitCell, VEC3F CellAngles,
768  char *spacegroup,
769  REAL OrigMatrix[3][4], REAL ScaleMatrix[3][4]);
770 PDB *blExtractZonePDBAsCopy(PDB *inpdb, char *chain1, int resnum1,
771  char *insert1, char *chain2, int resnum2,
772  char *insert2);
773 PDB *blExtractZoneSpecPDBAsCopy(PDB *pdb, char *firstRes, char *lastRes);
774 PDB *blExtractNotZonePDBAsCopy(PDB *inpdb, char *chain1, int resnum1,
775  char *insert1, char *chain2, int resnum2,
776  char *insert2);
777 PDB *blExtractNotZoneSpecPDBAsCopy(PDB *pdb, char *firstRes, char *lastRes);
778 PDB *blFindResidue(PDB *pdb, char *chain, int resnum, char *insert);
779 PDB *blFindHetatmResidue(PDB *pdb, char *chain, int resnum, char *insert);
780 PDB *blFindAtomInRes(PDB *pdb, char *atnam);
781 BOOL blInPDBZone(PDB *p, char *chain, int resnum1, char *insert1,
782  int resnum2, char *insert2);
783 BOOL blInPDBZoneSpec(PDB *p, char *resspec1, char *resspec2);
784 BOOL blAtomNameMatch(char *atnam, char *spec, BOOL *ErrorWarn);
785 BOOL blAtomNameRawMatch(char *atnam, char *spec, BOOL *ErrorWarn);
786 BOOL blLegalAtomSpec(char *spec);
787 BOOL blRepOneSChain(PDB *pdb, char *ResSpec, char aa, char *ChiTable,
788  char *RefCoords);
789 BOOL blRepOneSChainForce(PDB *pdb, char *ResSpec, char aa, char *ChiTable,
790  char *RefCoords);
791 void blEndRepSChain(void);
792 char **blReadSeqresPDB(FILE *fp, int *nchains);
793 char **blReadSeqresWholePDB(WHOLEPDB *wpdb, int *nchains);
794 PDB *blSelectCaPDB(PDB *pdb);
795 char *blFixAtomName(char *name, REAL occup);
796 
797 void blFreeWholePDB(WHOLEPDB *wpdb);
798 WHOLEPDB *blReadWholePDB(FILE *fpin);
799 WHOLEPDB *blReadWholePDBAtoms(FILE *fpin);
800 BOOL blAddCBtoGly(PDB *pdb);
801 BOOL blAddCBtoAllGly(PDB *pdb);
802 PDB *blStripGlyCB(PDB *pdb);
803 PDB *blRemoveAlternates(PDB *pdb);
805  REAL NeighbDist);
806 PDB *blFindAtomWildcardInRes(PDB *pdb, char *pattern);
807 PDB *blDupeResiduePDB(PDB *in);
808 PDB *blStripWatersPDBAsCopy(PDB *pdbin, int *natom);
810 PDB *blFindNextChain(PDB *pdb);
811 void blFreePDBStructure(PDBSTRUCT *pdbstruct);
812 void blSetElementSymbolFromAtomName(char *element, char * atom_name);
814  char *header, int maxheader,
815  char *date, int maxdate,
816  char *pdbcode, int maxcode);
817 char *blGetTitleWholePDB(WHOLEPDB *wpdb);
818 BOOL blGetCompoundWholePDBChain(WHOLEPDB *wpdb, char *chain,
819  COMPND *compnd);
820 int blFindMolID(WHOLEPDB *wpdb, char *chain);
821 BOOL blGetSpeciesWholePDBChain(WHOLEPDB *wpdb, char *chain,
822  PDBSOURCE *source);
823 BOOL blGetCompoundWholePDBMolID(WHOLEPDB *wpdb, int molid,
824  COMPND *compnd);
825 BOOL blGetSpeciesWholePDBMolID(WHOLEPDB *wpdb, int molid,
826  PDBSOURCE *source);
827 char *blGetSeqresAsStringWholePDB(WHOLEPDB *wpdb, char **chains,
828  MODRES *modres, BOOL doNucleic);
830  BOOL doNucleic);
832 void blFindOriginalResType(char *orig, char *new, MODRES *modres);
834 void blFreeBiomolecule(BIOMOLECULE *biomolecule);
836 
837 /************************************************************************/
838 /* Include deprecated functions */
839 #define _PDB_H_DEPRECATED
840 #include "deprecated.h"
841 /************************************************************************/
842 
843 #endif
PDB * blDeleteAtomRangePDB(PDB *pdb, PDB *start, PDB *stop)
Definition: KillPDB.c:122
PDB * blRemoveAlternates(PDB *pdb)
Definition: ReadPDB.c:1362
BOOL blGetResolWholePDB(WHOLEPDB *wpdb, REAL *resolution, REAL *RFactor, int *StrucType)
Definition: ResolPDB.c:244
DISULPHIDE * blReadDisulphidesWholePDB(WHOLEPDB *wpdb, BOOL *error)
Definition: RdSSPDB.c:174
int natoms
Definition: pdb.h:377
BOOL blFitCaCbPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3])
Definition: FitCaCbPDB.c:122
void blEndRepSChain(void)
Definition: rsc.c:479
struct sec_entry * next
Definition: pdb.h:362
PDB * blFindNextChain(PDB *pdb)
Definition: StructurePDB.c:252
int biomtNum
Definition: pdb.h:411
REAL vdwr
Definition: pdb.h:256
BOOL blAtomNameMatch(char *atnam, char *spec, BOOL *ErrorWarn)
#define MAXPDBANNOTATION
Definition: pdb.h:245
BOOL blIsConected(PDB *p, PDB *q)
Definition: BuildConect.c:629
char * blGetTitleWholePDB(WHOLEPDB *wpdb)
void blGetCofGPDBRange(PDB *start, PDB *stop, VEC3F *cg)
BOOL blIsBonded(PDB *p, PDB *q, REAL tol)
Definition: BuildConect.c:326
PDB * blFindEndPDB(PDB *start)
APTR extras
Definition: pdb.h:305
BOOL blGetCompoundWholePDBMolID(WHOLEPDB *wpdb, int molid, COMPND *compnd)
BOOL blGetSpeciesWholePDBMolID(WHOLEPDB *wpdb, int molid, PDBSOURCE *source)
BOOL blAddCBtoAllGly(PDB *pdb)
Definition: GlyCB.c:239
void blSetChi(PDB *pdb, PDB *next, REAL chi, int type)
Definition: SetChi.c:119
char ** blReadSeqresWholePDB(WHOLEPDB *wpdb, int *nchains)
Definition: RdSeqPDB.c:228
BOOL blCalcCterCoords(PDB *p, PDB *ca_p, PDB *c_p, PDB *o_p)
STRINGLIST * trailer
Definition: pdb.h:376
char strain[MAXPDBANNOTATION]
Definition: pdb.h:395
int res1
Definition: pdb.h:442
char ** blReadSeqresPDB(FILE *fp, int *nchains)
Definition: RdSeqPDB.c:113
PDB * blFindAtomWildcardInRes(PDB *pdb, char *pattern)
PDB * blDeleteResiduePDB(PDB **pPDB, PDB *res)
Definition: KillPDB.c:245
PDBRESIDUE * residues
Definition: pdb.h:344
BOOL blDeleteAConectByNum(PDB *pdb, int cNum)
Definition: BuildConect.c:500
struct pdbchain PDBCHAIN
char ** blGetPDBChainLabels(PDB *pdb, int *nchains)
REAL rotMatrix[3][3]
Definition: pdb.h:412
int resnum
Definition: pdb.h:310
char * chains
Definition: pdb.h:424
PDB * blExtractZonePDBAsCopy(PDB *inpdb, char *chain1, int resnum1, char *insert1, char *chain2, int resnum2, char *insert2)
REAL partial_charge
Definition: pdb.h:300
struct _modres * next
Definition: pdb.h:403
BOOL blInPDBZone(PDB *p, char *chain, int resnum1, char *insert1, int resnum2, char *insert2)
Definition: InPDBZone.c:115
char fragment[MAXPDBANNOTATION]
Definition: pdb.h:383
REAL NEff
Definition: pdb.h:256
PDB * stop
Definition: pdb.h:343
short BOOL
Definition: SysDefs.h:64
int biomolNumber
Definition: pdb.h:423
APTR * extras
Definition: pdb.h:332
char insert[8]
Definition: pdb.h:335
struct _biomt * next
Definition: pdb.h:410
BOOL blGetExptlWholePDB(WHOLEPDB *wpdb, REAL *resolution, REAL *RFactor, REAL *FreeR, int *StrucType)
Definition: ResolPDB.c:350
PDB * blExtractNotZonePDBAsCopy(PDB *inpdb, char *chain1, int resnum1, char *insert1, char *chain2, int resnum2, char *insert2)
void blGetCofGPDB(PDB *pdb, VEC3F *cg)
Definition: GetCGPDB.c:98
struct _disulphide * next
Definition: pdb.h:441
void blSetResnam(PDB *ResStart, PDB *NextRes, char *resnam, int resnum, char *insert, char *chain)
Definition: SetResnam.c:101
int numBiomolecules
Definition: pdb.h:421
Definition: pdb.h:298
void blWritePDBRecord(FILE *fp, PDB *pdb)
Definition: WritePDB.c:415
char modres[8]
Definition: pdb.h:404
PDB * blGetPDBChainAsCopy(PDB *pdbin, char *chain)
void blBuildResSpec(PDB *p, char *resspec)
Definition: ParseRes.c:352
PDB * blTermPDB(PDB *pdb, int length)
Definition: TermPDB.c:112
BOOL blDeleteConect(PDB *p, PDB *q)
BOOL blAtomNameRawMatch(char *atnam, char *spec, BOOL *ErrorWarn)
PDB * stop
Definition: pdb.h:331
Redirect calls to deprecated functions.
char engineered[MAXPDBANNOTATION]
Definition: pdb.h:383
REAL pol
Definition: pdb.h:256
void blWriteCrystPDB(FILE *fp, VEC3F UnitCell, VEC3F CellAngles, char *spacegroup, REAL OrigMatrix[3][4], REAL ScaleMatrix[3][4])
PDB * blSelectAtomsPDBAsCopy(PDB *pdbin, int nsel, char **sel, int *natom)
Definition: SelAtPDB.c:173
void blPrintResSpecHelp(FILE *fp)
Definition: ParseRes.c:330
char resnam[8]
Definition: pdb.h:336
BOOL blFitCaPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3])
Definition: FitCaPDB.c:117
struct pdbresidue PDBRESIDUE
Defines for using hash functions.
STRINGLIST * details
Definition: pdb.h:420
void * APTR
Definition: SysDefs.h:59
BOOL blFitPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3])
Definition: FitPDB.c:117
BOOL gPDBXML
PDBSTRUCT * blAllocPDBStructure(PDB *pdb)
Definition: StructurePDB.c:109
char chain[blMAXCHAINLABEL]
Definition: pdb.h:346
BOOL blGetCompoundWholePDBChain(WHOLEPDB *wpdb, char *chain, COMPND *compnd)
STRINGLIST * header
Definition: pdb.h:375
PDB * blExtractZoneSpecPDBAsCopy(PDB *pdb, char *firstRes, char *lastRes)
#define FALSE
Definition: macros.h:223
SECSTRUC * blReadSecPDB(FILE *fp, int *nsec)
Definition: RdSecPDB.c:141
Definition: pdb.h:372
void blOriginPDB(PDB *pdb)
Definition: OriginPDB.c:96
void blFreePDBStructure(PDBSTRUCT *pdbstruct)
Definition: StructurePDB.c:219
PDB * blFindHetatmResidueSpec(PDB *pdb, char *resspec)
char altpos
Definition: pdb.h:324
int atnum
Definition: pdb.h:309
char record_type[8]
Definition: pdb.h:315
struct sec_entry SECSTRUC
char chain2[8]
Definition: pdb.h:365
struct _pdbsource PDBSOURCE
Definition: pdb.h:401
WHOLEPDB * blReadWholePDBAtoms(FILE *fpin)
Definition: ReadPDB.c:2363
PDB * blKillPDB(PDB *pdb, PDB *prev)
Definition: KillPDB.c:214
BOOL blCopyPDBCoords(PDB *out, PDB *in)
BOOL blCopyConects(PDB *out, PDB *in)
Definition: BuildConect.c:574
void blCalcCellTrans(VEC3F UnitCell, VEC3F CellAngles, VEC3F *xtrans, VEC3F *ytrans, VEC3F *ztrans)
REAL blCalcChi(PDB *pdb, int type)
Definition: CalcChiPDB.c:111
int nConect
Definition: pdb.h:312
void blApplyMatrixPDB(PDB *pdb, REAL matrix[3][3])
Definition: ApMatPDB.c:92
BOOL blCheckFileFormatPDBML(FILE *fp)
Definition: ReadPDB.c:2161
BIOMT * biomt
Definition: pdb.h:427
Definition: aalist.h:70
int gPDBMultiNMR
char softwareUnit[40]
Definition: pdb.h:424
WHOLEPDB * blReadWholePDB(FILE *fpin)
Definition: ReadPDB.c:2328
char chain1[8]
Definition: pdb.h:363
char insert1[8]
Definition: pdb.h:444
PDB * blAppendPDB(PDB *first, PDB *second)
Definition: AppendPDB.c:109
BOOL blFixCterPDB(PDB *pdb, int style)
Definition: FixCterPDB.c:138
SECSTRUC * blReadSecWholePDB(WHOLEPDB *wpdb, int *nsec)
Definition: RdSecPDB.c:256
PDB * blReadPDBAtomsOccRank(FILE *fp, int *natom, int OccRank)
Definition: ReadPDB.c:586
char atnam[8]
Definition: pdb.h:316
PDB ** blIndexAtomNumbersPDB(PDB *pdb, int *indexSize)
Definition: IndexPDB.c:156
char * blFNam2PDB(char *filename)
Definition: FNam2PDB.c:123
void blWriteWholePDBTrailer(FILE *fp, WHOLEPDB *wpdb, int numTer)
Definition: WritePDB.c:1643
Definition: MathType.h:69
PDB * blReadPDBAtoms(FILE *fp, int *natom)
Definition: ReadPDB.c:503
BOOL blAddOneDirectionConect(PDB *p, PDB *q)
Definition: BuildConect.c:200
STRINGLIST * blSetPDBAtomTypes(PDB *pdb)
Definition: atomtype.c:95
char resnam[8]
Definition: pdb.h:319
PDB * blGetPDBByN(PDB *pdb, int n)
Definition: GetPDBByN.c:106
int entity_id
Definition: pdb.h:313
int blFindMolID(WHOLEPDB *wpdb, char *chain)
APTR * extras
Definition: pdb.h:345
BOOL blWriteWholePDBNoConect(FILE *fp, WHOLEPDB *wpdb)
void blRotatePDB(PDB *pdb, REAL rm[3][3])
Definition: RotPDB.c:101
PDB * blFindNextResidue(PDB *pdb)
BOOL blRepSChain(PDB *pdb, char *sequence, char *ChiTable, char *RefCoords)
Definition: rsc.c:193
double REAL
Definition: MathType.h:67
void blFreeWholePDB(WHOLEPDB *wpdb)
Definition: ReadPDB.c:2293
int blReadPGP(FILE *fp)
Definition: HAddPDB.c:301
PDB * blShuffleBB(PDB *pdb)
Definition: OrderPDB.c:389
Definition: pdb.h:340
BOOL blFormatCheckWritePDB(PDB *pdb)
Definition: WritePDB.c:269
REAL z
Definition: pdb.h:300
PDB * blReadPDB(FILE *fp, int *natom)
Definition: ReadPDB.c:419
void blWriteWholePDBHeader(FILE *fp, WHOLEPDB *wpdb)
Definition: WritePDB.c:1608
REAL radius
Definition: pdb.h:300
PDB * blReadPDBOccRank(FILE *fp, int *natom, int OccRank)
Definition: ReadPDB.c:545
BOOL blKillSidechain(PDB *ResStart, PDB *NextRes, BOOL doCB)
PDB * pdb
Definition: pdb.h:374
Definition: hash.h:85
char other[MAXPDBANNOTATION]
Definition: pdb.h:383
char commonName[MAXPDBANNOTATION]
Definition: pdb.h:395
char element[8]
Definition: pdb.h:322
PDB * pdb
Definition: pdb.h:351
char * blGetSeqresAsStringWholePDB(WHOLEPDB *wpdb, char **chains, MODRES *modres, BOOL doNucleic)
PDB * blBuildAtomNeighbourPDBListAsCopy(PDB *pdb, PDB *pRes, REAL NeighbDist)
BOOL gPDBPartialOcc
BOOL blFindZonePDB(PDB *pdb, int start, char *startinsert, int stop, char *stopinsert, char *chain, int mode, PDB **pdb_start, PDB **pdb_stop)
Definition: FindZonePDB.c:105
char insert2[8]
Definition: pdb.h:444
PDB * blReadPDBAll(FILE *fp, int *natom)
Definition: ReadPDB.c:460
APTR * extras
Definition: pdb.h:353
int blGetCrystWholePDB(WHOLEPDB *wpdb, VEC3F *UnitCell, VEC3F *CellAngles, char *spacegroup, REAL OrigMatrix[3][4], REAL ScaleMatrix[3][4])
Definition: GetCrystPDB.c:293
BOOL blAddConect(PDB *p, PDB *q)
Definition: BuildConect.c:173
int res2
Definition: pdb.h:442
REAL blCalcRMSPDB(PDB *pdb1, PDB *pdb2)
Definition: CalcRMSPDB.c:110
char resid[8]
Definition: pdb.h:337
int molid
Definition: pdb.h:382
char chain2[8]
Definition: pdb.h:444
struct _biomolecule * next
Definition: pdb.h:418
PDB * blDupePDB(PDB *in)
Definition: DupePDB.c:113
void blDeleteAtomConects(PDB *pdb)
Definition: BuildConect.c:536
BOOL blFitNCaCPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3])
Definition: FitNCaCPDB.c:114
char gRSCError[80]
char secstr
Definition: pdb.h:325
MODRES * blGetModresWholePDB(WHOLEPDB *wpdb)
BOOL blGetResolPDB(FILE *fp, REAL *resolution, REAL *RFactor, int *StrucType)
Definition: ResolPDB.c:193
PDB * blDupeResiduePDB(PDB *in)
BOOL gPDBModelNotFound
PDBCHAIN * chains
Definition: pdb.h:352
char insert1[8]
Definition: pdb.h:364
PDB * blStripWatersPDBAsCopy(PDB *pdbin, int *natom)
struct _compnd COMPND
char synonym[MAXPDBANNOTATION]
Definition: pdb.h:383
#define TRUE
Definition: macros.h:219
BOOL blDoParseResSpec(char *spec, char *chain, int *resnum, char *insert, BOOL uppercaseresspec)
Definition: ParseRes.c:214
BOOL blWritePDBAsPDBML(FILE *fp, PDB *pdb)
Definition: WritePDB.c:525
char atomtype[8]
Definition: pdb.h:260
BOOL blBuildConectData(PDB *pdb, REAL tol)
Definition: BuildConect.c:251
#define FORCEXML_NOFORCE
Definition: pdb.h:585
struct _wholepdb WHOLEPDB
void blWritePDBRecordAtnam(FILE *fp, PDB *pdb)
Definition: WritePDB.c:471
BOOL blGetSpeciesWholePDBChain(WHOLEPDB *wpdb, char *chain, PDBSOURCE *source)
BOOL blInPDBZoneSpec(PDB *p, char *resspec1, char *resspec2)
Definition: pdb.h:408
int formal_charge
Definition: pdb.h:311
char chain1[8]
Definition: pdb.h:444
Definition: pdb.h:380
BOOL blGetExptlOld(FILE *fp, REAL *resolution, REAL *RFactor, REAL *FreeR, int *StrucType)
Definition: ResolPDB.c:666
struct pdbchain * next
Definition: pdb.h:342
char ec[MAXPDBANNOTATION]
Definition: pdb.h:383
struct pdbresidue * prev
Definition: pdb.h:330
BOOL blGetExptlPDB(FILE *fp, REAL *resolution, REAL *RFactor, REAL *FreeR, int *StrucType)
Definition: ResolPDB.c:289
void blWriteWholePDBHeaderNoRes(FILE *fp, WHOLEPDB *wpdb)
Definition: WritePDB.c:1809
int taxid
Definition: pdb.h:398
struct _biomolecule BIOMOLECULE
REAL access
Definition: pdb.h:300
void blWriteGromosPDB(FILE *fp, PDB *pdb)
Definition: WritePDB.c:1491
char atnam_raw[8]
Definition: pdb.h:317
char chain[MAXPDBANNOTATION]
Definition: pdb.h:383
char authorUnit[40]
Definition: pdb.h:424
int blWritePDB(FILE *fp, PDB *pdb)
Definition: WritePDB.c:223
BOOL blRepOneSChainForce(PDB *pdb, char *ResSpec, char aa, char *ChiTable, char *RefCoords)
Definition: rsc.c:350
struct _disulphide DISULPHIDE
int blCalcTetraHCoords(PDB *nter, COOR *coor)
REAL mass
Definition: pdb.h:256
struct _modres MODRES
Definition: pdb.h:349
BOOL blWriteWholePDB(FILE *fp, WHOLEPDB *wpdb)
Definition: WritePDB.c:1557
Header file for general purpose routines.
PDB * start
Definition: pdb.h:343
void blWriteGromosPDBRecord(FILE *fp, PDB *pdb)
Definition: WritePDB.c:1517
int blAddNTerHs(PDB **ppdb, BOOL Charmm)
Definition: AddNTerHs.c:123
DISULPHIDE * blReadDisulphidesPDB(FILE *fp, BOOL *error)
Definition: RdSSPDB.c:114
PDB * blFindResidueSpec(PDB *pdb, char *resspec)
#define MAXCONECT
Definition: pdb.h:243
char * blFixAtomName(char *name, REAL occup)
Definition: ReadPDB.c:1291
BOOL blGetAtomTypes(char *resnam, char **AtomTypes)
Definition: OrderPDB.c:349
int blHAddPDB(FILE *fp, PDB *pdb)
Definition: HAddPDB.c:250
PDB * blFindResidue(PDB *pdb, char *chain, int resnum, char *insert)
Definition: FindResidue.c:117
struct pdbchain * prev
Definition: pdb.h:342
PDB * blFindAtomInRes(PDB *pdb, char *atnam)
Definition: pdb.h:450
PDB ** blIndexPDB(PDB *pdb, int *natom)
Definition: IndexPDB.c:117
char insert2[8]
Definition: pdb.h:366
char segid[8]
Definition: pdb.h:323
int gPDBXMLForce
void blFreeBiomolecule(BIOMOLECULE *biomolecule)
#define blMAXCHAINLABEL
Definition: pdb.h:248
System-type variable type definitions.
void blWriteTerCard(FILE *fp, PDB *p)
Definition: WritePDB.c:382
PDB * blFixOrderPDB(PDB *pdb, BOOL Pad, BOOL Renum)
Definition: OrderPDB.c:169
int blWritePDBAsPDBorGromos(FILE *fp, PDB *pdb, BOOL doGromos)
Definition: WritePDB.c:308
struct _blAtomInfo blATOMINFO
char * blReportStructureType(int type)
Definition: ResolPDB.c:410
REAL occ
Definition: pdb.h:300
BOOL blRepOneSChain(PDB *pdb, char *ResSpec, char aa, char *ChiTable, char *RefCoords)
Definition: rsc.c:319
PDB * blStripHPDBAsCopy(PDB *pdbin, int *natom)
Definition: StripHPDB.c:115
char molecule[MAXPDBANNOTATION]
Definition: pdb.h:383
WHOLEPDB * blDoReadPDBML(FILE *fp, BOOL AllAtoms, int OccRank, int ModelNum, BOOL DoWhole)
Definition: ReadPDB.c:1624
int res1
Definition: pdb.h:367
BOOL blAreResiduesBonded(PDB *pdb, char *chain1, int resnum1, char *insert1, char *chain2, int resnum2, char *insert2, REAL tol)
Definition: BuildConect.c:360
BOOL blLegalAtomSpec(char *spec)
void blFindOriginalResType(char *orig, char *new, MODRES *modres)
int atomtype
Definition: pdb.h:314
BOOL blAddCBtoGly(PDB *pdb)
Definition: GlyCB.c:112
Type definitions for maths.
PDB * blDeleteAtomPDB(PDB *pdb, PDB *atom)
Definition: KillPDB.c:173
struct pdb_entry * next
Definition: pdb.h:307
int resnum
Definition: pdb.h:333
struct pdb_entry * conect[MAXCONECT]
Definition: pdb.h:308
PDB * blSelectCaPDB(PDB *pdb)
Definition: SelectCaPDB.c:124
PDB * start
Definition: pdb.h:331
BIOMOLECULE * blGetBiomoleculeWholePDB(WHOLEPDB *wpdb)
int res2
Definition: pdb.h:368
char chain[blMAXCHAINLABEL]
Definition: pdb.h:321
void blTranslatePDB(PDB *pdb, VEC3F tvect)
Definition: TranslatePDB.c:95
void blCopyPDB(PDB *out, PDB *in)
Definition: CopyPDB.c:108
int Total
Definition: pdb.h:452
REAL transMatrix[3]
Definition: pdb.h:412
int blGetCrystPDB(FILE *fp, VEC3F *UnitCell, VEC3F *CellAngles, char *spacegroup, REAL OrigMatrix[3][4], REAL ScaleMatrix[3][4])
Definition: GetCrystPDB.c:122
char chain[blMAXCHAINLABEL]
Definition: pdb.h:334
PDB * blFindHetatmResidue(PDB *pdb, char *chain, int resnum, char *insert)
void blSetElementSymbolFromAtomName(char *element, char *atom_name)
Definition: WritePDB.c:1433
WHOLEPDB * blDoReadPDB(FILE *fp, BOOL AllAtoms, int OccRank, int ModelNum, BOOL DoWhole)
Definition: ReadPDB.c:707
PDB * blStripGlyCB(PDB *pdb)
Definition: GlyCB.c:271
blATOMINFO * atomInfo
Definition: pdb.h:306
PDB * blExtractNotZoneSpecPDBAsCopy(PDB *pdb, char *firstRes, char *lastRes)
struct pdb_entry PDB
char origres[8]
Definition: pdb.h:405
struct pdbresidue * next
Definition: pdb.h:330
int blGetPDBCoor(PDB *pdb, COOR **coor)
Definition: GetPDBCoor.c:104
REAL x
Definition: pdb.h:300
char scientificName[MAXPDBANNOTATION]
Definition: pdb.h:395
REAL y
Definition: pdb.h:300
BOOL blGetHeaderWholePDB(WHOLEPDB *wpdb, char *header, int maxheader, char *date, int maxdate, char *pdbcode, int maxcode)
Definition: pdb.h:360
BOOL blParseResSpec(char *spec, char *chain, int *resnum, char *insert)
Definition: ParseRes.c:158
REAL bval
Definition: pdb.h:300
void blRenumAtomsPDB(PDB *pdb, int offset)
char type
Definition: pdb.h:369
void blGetCofGPDBSCRange(PDB *start, PDB *stop, VEC3F *cg)
PDB * blShuffleResPDB(PDB *start, PDB *end, BOOL Pad)
Definition: OrderPDB.c:228
char insert[8]
Definition: pdb.h:320
struct _biomt BIOMT
BOOL blAreResiduePointersBonded(PDB *res1, PDB *res2, REAL tol)
Definition: BuildConect.c:394
FILE * blOpenPGPFile(char *pgpfile, BOOL AllHyd)
Definition: HAddPDB.c:1347
char mutation[MAXPDBANNOTATION]
Definition: pdb.h:383
PDB * blFindNextChainPDB(PDB *pdb)
HASHTABLE * blGetSeqresByChainWholePDB(WHOLEPDB *wpdb, MODRES *modres, BOOL doNucleic)
BOOL blMovePDB(PDB *move, PDB **from, PDB **to)
Definition: MovePDB.c:100