240 #define MAXATINRES 23
244 #define DEFCONECTTOL 0.1
245 #define MAXPDBANNOTATION 640
248 #define blMAXCHAINLABEL 8
357 #define SELECT(x,w) (x) = (char *)malloc(5 * sizeof(char)); \
358 if((x) != NULL) strncpy((x),(w),5)
436 # define SEC (The_type_SEC_is_now_called_SECSTRUC_You_must_change_your_code *)
460 #define CLEAR_PDB(p) strcpy(p->record_type," "); \
462 strcpy(p->atnam," "); \
463 strcpy(p->atnam_raw," "); \
464 strcpy(p->resnam," "); \
466 strcpy(p->insert," "); \
467 strcpy(p->chain," "); \
468 p->x = 0.0; p->y = 0.0; p->z = 0.0; \
470 p->occ = 0.0; p->bval = 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; \
481 p->atomInfo = NULL; \
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))
495 #define CHAINMATCH(chain1,chain2) !strcmp(chain1, chain2)
496 #define INSERTMATCH(ins1, ins2) !strcmp(ins1, ins2)
498 #define PDBCHAINMATCH(p, q) !strcmp((p)->chain, (q)->chain)
499 #define PDBINSERTMATCH(p, q) !strcmp((p)->insert, (q)->insert)
502 #define CREATEPDBEXTRAS(x, y) \
504 for(_cpe_p=(x); _cpe_p!=NULL; _cpe_p=_cpe_p->next){ \
505 _cpe_p->extras = (APTR)malloc(sizeof(y)); \
510 #define FREEPDBEXTRAS(x) \
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; \
529 #define PDBEXTRASPTR(p, type) ((type *)((p)->extras))
532 #define MAKERESID(x, p) \
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, "."); \
542 if((p)->insert[0]!=' ') \
543 sprintf((x), "%s%s%d%s", (p)->chain, _makeresid_dot, \
544 (p)->resnum, (p)->insert); \
546 sprintf((x), "%s%s%d", (p)->chain, _makeresid_dot, \
551 #define RESIDMATCH(p, q) (((p)->resnum == (q)->resnum) && \
552 (!strcmp((p)->chain, (q)->chain)) && \
553 (!strcmp((p)->insert, (q)->insert)))
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
571 #define CTER_STYLE_STD 0
572 #define CTER_STYLE_GROMOS 1
573 #define CTER_STYLE_CHARMM 2
576 #define XTAL_DATA_CRYST 0x0001
577 #define XTAL_DATA_ORIGX 0x0002
578 #define XTAL_DATA_SCALE 0x0004
581 #define ZONE_MODE_RESNUM 0
582 #define ZONE_MODE_SEQUENTIAL 1
585 #define FORCEXML_NOFORCE 0
586 #define FORCEXML_PDB 1
587 #define FORCEXML_XML 2
590 #define FORCEPDB gPDBXMLForce = FORCEXML_PDB
591 #define FORCEXML gPDBXMLForce = FORCEXML_XML
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)
646 int ModelNum,
BOOL DoWhole);
648 int ModelNum,
BOOL DoWhole);
697 char *stopinsert,
char *chain,
int mode,
698 PDB **pdb_start,
PDB **pdb_stop);
722 char *insert,
char *chain);
731 REAL *FreeR,
int *StrucType);
743 BOOL uppercaseresspec);
763 REAL OrigMatrix[3][4],
REAL ScaleMatrix[3][4]);
766 REAL OrigMatrix[3][4],
REAL ScaleMatrix[3][4]);
769 REAL OrigMatrix[3][4],
REAL ScaleMatrix[3][4]);
814 char *header,
int maxheader,
815 char *date,
int maxdate,
816 char *pdbcode,
int maxcode);
839 #define _PDB_H_DEPRECATED
PDB * blDeleteAtomRangePDB(PDB *pdb, PDB *start, PDB *stop)
PDB * blRemoveAlternates(PDB *pdb)
BOOL blGetResolWholePDB(WHOLEPDB *wpdb, REAL *resolution, REAL *RFactor, int *StrucType)
DISULPHIDE * blReadDisulphidesWholePDB(WHOLEPDB *wpdb, BOOL *error)
BOOL blFitCaCbPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3])
void blEndRepSChain(void)
PDB * blFindNextChain(PDB *pdb)
BOOL blAtomNameMatch(char *atnam, char *spec, BOOL *ErrorWarn)
BOOL blIsConected(PDB *p, PDB *q)
char * blGetTitleWholePDB(WHOLEPDB *wpdb)
void blGetCofGPDBRange(PDB *start, PDB *stop, VEC3F *cg)
BOOL blIsBonded(PDB *p, PDB *q, REAL tol)
PDB * blFindEndPDB(PDB *start)
BOOL blGetCompoundWholePDBMolID(WHOLEPDB *wpdb, int molid, COMPND *compnd)
BOOL blGetSpeciesWholePDBMolID(WHOLEPDB *wpdb, int molid, PDBSOURCE *source)
BOOL blAddCBtoAllGly(PDB *pdb)
void blSetChi(PDB *pdb, PDB *next, REAL chi, int type)
char ** blReadSeqresWholePDB(WHOLEPDB *wpdb, int *nchains)
BOOL blCalcCterCoords(PDB *p, PDB *ca_p, PDB *c_p, PDB *o_p)
char strain[MAXPDBANNOTATION]
char ** blReadSeqresPDB(FILE *fp, int *nchains)
PDB * blFindAtomWildcardInRes(PDB *pdb, char *pattern)
PDB * blDeleteResiduePDB(PDB **pPDB, PDB *res)
BOOL blDeleteAConectByNum(PDB *pdb, int cNum)
char ** blGetPDBChainLabels(PDB *pdb, int *nchains)
PDB * blExtractZonePDBAsCopy(PDB *inpdb, char *chain1, int resnum1, char *insert1, char *chain2, int resnum2, char *insert2)
BOOL blInPDBZone(PDB *p, char *chain, int resnum1, char *insert1, int resnum2, char *insert2)
char fragment[MAXPDBANNOTATION]
BOOL blGetExptlWholePDB(WHOLEPDB *wpdb, REAL *resolution, REAL *RFactor, REAL *FreeR, int *StrucType)
PDB * blExtractNotZonePDBAsCopy(PDB *inpdb, char *chain1, int resnum1, char *insert1, char *chain2, int resnum2, char *insert2)
void blGetCofGPDB(PDB *pdb, VEC3F *cg)
struct _disulphide * next
void blSetResnam(PDB *ResStart, PDB *NextRes, char *resnam, int resnum, char *insert, char *chain)
void blWritePDBRecord(FILE *fp, PDB *pdb)
PDB * blGetPDBChainAsCopy(PDB *pdbin, char *chain)
void blBuildResSpec(PDB *p, char *resspec)
PDB * blTermPDB(PDB *pdb, int length)
BOOL blDeleteConect(PDB *p, PDB *q)
BOOL blAtomNameRawMatch(char *atnam, char *spec, BOOL *ErrorWarn)
Redirect calls to deprecated functions.
char engineered[MAXPDBANNOTATION]
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)
void blPrintResSpecHelp(FILE *fp)
BOOL blFitCaPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3])
struct pdbresidue PDBRESIDUE
Defines for using hash functions.
BOOL blFitPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3])
PDBSTRUCT * blAllocPDBStructure(PDB *pdb)
char chain[blMAXCHAINLABEL]
BOOL blGetCompoundWholePDBChain(WHOLEPDB *wpdb, char *chain, COMPND *compnd)
PDB * blExtractZoneSpecPDBAsCopy(PDB *pdb, char *firstRes, char *lastRes)
SECSTRUC * blReadSecPDB(FILE *fp, int *nsec)
void blOriginPDB(PDB *pdb)
void blFreePDBStructure(PDBSTRUCT *pdbstruct)
PDB * blFindHetatmResidueSpec(PDB *pdb, char *resspec)
struct sec_entry SECSTRUC
struct _pdbsource PDBSOURCE
WHOLEPDB * blReadWholePDBAtoms(FILE *fpin)
PDB * blKillPDB(PDB *pdb, PDB *prev)
BOOL blCopyPDBCoords(PDB *out, PDB *in)
BOOL blCopyConects(PDB *out, PDB *in)
void blCalcCellTrans(VEC3F UnitCell, VEC3F CellAngles, VEC3F *xtrans, VEC3F *ytrans, VEC3F *ztrans)
REAL blCalcChi(PDB *pdb, int type)
void blApplyMatrixPDB(PDB *pdb, REAL matrix[3][3])
BOOL blCheckFileFormatPDBML(FILE *fp)
WHOLEPDB * blReadWholePDB(FILE *fpin)
PDB * blAppendPDB(PDB *first, PDB *second)
BOOL blFixCterPDB(PDB *pdb, int style)
SECSTRUC * blReadSecWholePDB(WHOLEPDB *wpdb, int *nsec)
PDB * blReadPDBAtomsOccRank(FILE *fp, int *natom, int OccRank)
PDB ** blIndexAtomNumbersPDB(PDB *pdb, int *indexSize)
char * blFNam2PDB(char *filename)
void blWriteWholePDBTrailer(FILE *fp, WHOLEPDB *wpdb, int numTer)
PDB * blReadPDBAtoms(FILE *fp, int *natom)
BOOL blAddOneDirectionConect(PDB *p, PDB *q)
STRINGLIST * blSetPDBAtomTypes(PDB *pdb)
PDB * blGetPDBByN(PDB *pdb, int n)
int blFindMolID(WHOLEPDB *wpdb, char *chain)
BOOL blWriteWholePDBNoConect(FILE *fp, WHOLEPDB *wpdb)
void blRotatePDB(PDB *pdb, REAL rm[3][3])
PDB * blFindNextResidue(PDB *pdb)
BOOL blRepSChain(PDB *pdb, char *sequence, char *ChiTable, char *RefCoords)
void blFreeWholePDB(WHOLEPDB *wpdb)
PDB * blShuffleBB(PDB *pdb)
BOOL blFormatCheckWritePDB(PDB *pdb)
PDB * blReadPDB(FILE *fp, int *natom)
void blWriteWholePDBHeader(FILE *fp, WHOLEPDB *wpdb)
PDB * blReadPDBOccRank(FILE *fp, int *natom, int OccRank)
BOOL blKillSidechain(PDB *ResStart, PDB *NextRes, BOOL doCB)
char other[MAXPDBANNOTATION]
char commonName[MAXPDBANNOTATION]
char * blGetSeqresAsStringWholePDB(WHOLEPDB *wpdb, char **chains, MODRES *modres, BOOL doNucleic)
PDB * blBuildAtomNeighbourPDBListAsCopy(PDB *pdb, PDB *pRes, REAL NeighbDist)
BOOL blFindZonePDB(PDB *pdb, int start, char *startinsert, int stop, char *stopinsert, char *chain, int mode, PDB **pdb_start, PDB **pdb_stop)
PDB * blReadPDBAll(FILE *fp, int *natom)
int blGetCrystWholePDB(WHOLEPDB *wpdb, VEC3F *UnitCell, VEC3F *CellAngles, char *spacegroup, REAL OrigMatrix[3][4], REAL ScaleMatrix[3][4])
BOOL blAddConect(PDB *p, PDB *q)
REAL blCalcRMSPDB(PDB *pdb1, PDB *pdb2)
struct _biomolecule * next
void blDeleteAtomConects(PDB *pdb)
BOOL blFitNCaCPDB(PDB *ref_pdb, PDB *fit_pdb, REAL rm[3][3])
MODRES * blGetModresWholePDB(WHOLEPDB *wpdb)
BOOL blGetResolPDB(FILE *fp, REAL *resolution, REAL *RFactor, int *StrucType)
PDB * blDupeResiduePDB(PDB *in)
PDB * blStripWatersPDBAsCopy(PDB *pdbin, int *natom)
char synonym[MAXPDBANNOTATION]
BOOL blDoParseResSpec(char *spec, char *chain, int *resnum, char *insert, BOOL uppercaseresspec)
BOOL blWritePDBAsPDBML(FILE *fp, PDB *pdb)
BOOL blBuildConectData(PDB *pdb, REAL tol)
struct _wholepdb WHOLEPDB
void blWritePDBRecordAtnam(FILE *fp, PDB *pdb)
BOOL blGetSpeciesWholePDBChain(WHOLEPDB *wpdb, char *chain, PDBSOURCE *source)
BOOL blInPDBZoneSpec(PDB *p, char *resspec1, char *resspec2)
BOOL blGetExptlOld(FILE *fp, REAL *resolution, REAL *RFactor, REAL *FreeR, int *StrucType)
char ec[MAXPDBANNOTATION]
BOOL blGetExptlPDB(FILE *fp, REAL *resolution, REAL *RFactor, REAL *FreeR, int *StrucType)
void blWriteWholePDBHeaderNoRes(FILE *fp, WHOLEPDB *wpdb)
struct _biomolecule BIOMOLECULE
void blWriteGromosPDB(FILE *fp, PDB *pdb)
char chain[MAXPDBANNOTATION]
int blWritePDB(FILE *fp, PDB *pdb)
BOOL blRepOneSChainForce(PDB *pdb, char *ResSpec, char aa, char *ChiTable, char *RefCoords)
struct _disulphide DISULPHIDE
int blCalcTetraHCoords(PDB *nter, COOR *coor)
BOOL blWriteWholePDB(FILE *fp, WHOLEPDB *wpdb)
Header file for general purpose routines.
void blWriteGromosPDBRecord(FILE *fp, PDB *pdb)
int blAddNTerHs(PDB **ppdb, BOOL Charmm)
DISULPHIDE * blReadDisulphidesPDB(FILE *fp, BOOL *error)
PDB * blFindResidueSpec(PDB *pdb, char *resspec)
char * blFixAtomName(char *name, REAL occup)
BOOL blGetAtomTypes(char *resnam, char **AtomTypes)
int blHAddPDB(FILE *fp, PDB *pdb)
PDB * blFindResidue(PDB *pdb, char *chain, int resnum, char *insert)
PDB * blFindAtomInRes(PDB *pdb, char *atnam)
PDB ** blIndexPDB(PDB *pdb, int *natom)
void blFreeBiomolecule(BIOMOLECULE *biomolecule)
System-type variable type definitions.
void blWriteTerCard(FILE *fp, PDB *p)
PDB * blFixOrderPDB(PDB *pdb, BOOL Pad, BOOL Renum)
int blWritePDBAsPDBorGromos(FILE *fp, PDB *pdb, BOOL doGromos)
struct _blAtomInfo blATOMINFO
char * blReportStructureType(int type)
BOOL blRepOneSChain(PDB *pdb, char *ResSpec, char aa, char *ChiTable, char *RefCoords)
PDB * blStripHPDBAsCopy(PDB *pdbin, int *natom)
char molecule[MAXPDBANNOTATION]
WHOLEPDB * blDoReadPDBML(FILE *fp, BOOL AllAtoms, int OccRank, int ModelNum, BOOL DoWhole)
BOOL blAreResiduesBonded(PDB *pdb, char *chain1, int resnum1, char *insert1, char *chain2, int resnum2, char *insert2, REAL tol)
BOOL blLegalAtomSpec(char *spec)
void blFindOriginalResType(char *orig, char *new, MODRES *modres)
BOOL blAddCBtoGly(PDB *pdb)
Type definitions for maths.
PDB * blDeleteAtomPDB(PDB *pdb, PDB *atom)
struct pdb_entry * conect[MAXCONECT]
PDB * blSelectCaPDB(PDB *pdb)
BIOMOLECULE * blGetBiomoleculeWholePDB(WHOLEPDB *wpdb)
char chain[blMAXCHAINLABEL]
void blTranslatePDB(PDB *pdb, VEC3F tvect)
void blCopyPDB(PDB *out, PDB *in)
int blGetCrystPDB(FILE *fp, VEC3F *UnitCell, VEC3F *CellAngles, char *spacegroup, REAL OrigMatrix[3][4], REAL ScaleMatrix[3][4])
char chain[blMAXCHAINLABEL]
PDB * blFindHetatmResidue(PDB *pdb, char *chain, int resnum, char *insert)
void blSetElementSymbolFromAtomName(char *element, char *atom_name)
WHOLEPDB * blDoReadPDB(FILE *fp, BOOL AllAtoms, int OccRank, int ModelNum, BOOL DoWhole)
PDB * blStripGlyCB(PDB *pdb)
PDB * blExtractNotZoneSpecPDBAsCopy(PDB *pdb, char *firstRes, char *lastRes)
int blGetPDBCoor(PDB *pdb, COOR **coor)
char scientificName[MAXPDBANNOTATION]
BOOL blGetHeaderWholePDB(WHOLEPDB *wpdb, char *header, int maxheader, char *date, int maxdate, char *pdbcode, int maxcode)
BOOL blParseResSpec(char *spec, char *chain, int *resnum, char *insert)
void blRenumAtomsPDB(PDB *pdb, int offset)
void blGetCofGPDBSCRange(PDB *start, PDB *stop, VEC3F *cg)
PDB * blShuffleResPDB(PDB *start, PDB *end, BOOL Pad)
BOOL blAreResiduePointersBonded(PDB *res1, PDB *res2, REAL tol)
FILE * blOpenPGPFile(char *pgpfile, BOOL AllHyd)
char mutation[MAXPDBANNOTATION]
PDB * blFindNextChainPDB(PDB *pdb)
HASHTABLE * blGetSeqresByChainWholePDB(WHOLEPDB *wpdb, MODRES *modres, BOOL doNucleic)
BOOL blMovePDB(PDB *move, PDB **from, PDB **to)