PDB Package


Description:

The PDB package supports basic operations on PDB files.

It contains classes representing each structural element of a PDB file (such as atoms, residues, chains, models, and file), and provides a function for reading the data structure from a PDB file (PDBFile::ReadFile(char *filename)). The structure is hierarchical: a PDBFile can contain multiple PDBModels; a PDBModel belongs to exactly one PDBFile and can contain multiple PDBChains; a PDBChain belongs to exactly one PDBModel and can contain multiple PDBResidues; a PDBResidue belongs to exactly one PDBChain and can contain multiple PDBAtoms; and a PDBAtom belongs to example one PDBResidue. For each structural element, there is a C++ class that contains member functions to find its parent (e.g., PDBChain *PDBResidue::Chain(void)) and its children (e.g., int PDBResidue::NAtoms(void) and PDBAtom *PDBResidue::Atom(int k)).

The package also has some utitilty functions for computing distances, aligning atoms, computing bonds, etc. The simplest way to get started is to start from one of the many example programs (listed below).

Classes:

Useful functions:


PDBAminoAcid

Constructor:

PDBAminoAcid(int id, char *name, char *code, char letter, int group,
int natoms, RNScalar hydrophobicity, const RNRgb& color);

Properties:

int ID(void) const;
const char *Name(void) const;
const char *Code(void) const;
char Letter(void) const;
int Group(void) const;
RNScalar Hydrophobicity(void) const;
const RNRgb& Color(void) const;
RNBoolean IsMarked(void) const;
RNScalar Value(void) const;
void *Data(void) const;

Properties for each atom of amino acid:

int NAtoms(void) const;
const char *AtomName(int k) const;
PDBElement *AtomElement(int k) const;
RNScalar AtomCharge(int k) const;

Manipulation functions:

void SetData(void *data);
void SetValue(RNScalar value);
void SetMark(void);
void UnsetMark(void);


PDBAtom

Constructor:

PDBAtom(PDBModel *model, PDBChain *chain, PDBResidue *residue, PDBElement *element,
int serial, const char *atom_name, int altLoc, RNScalar x, RNScalar y, RNScalar z,
RNScalar occupancy, RNScalar tempFactor, RNScalar charge, RNBoolean hetatm = FALSE);
~PDBAtom(void);

Properties:

int ID(void) const;
int Serial(void) const;
const char *Name(void) const;
const R3Point& Position(void) const;
RNScalar Occupancy(void) const;
RNScalar TempFactor(void) const;
RNScalar Charge(void) const;
int AlternateLocation(void) const;
RNScalar Radius(void) const;
RNScalar Hydrophobicity(void) const;
const RNRgb& Color(void) const;
R3Box BBox(void) const;
RNBoolean IsHetAtom(void) const;
RNBoolean IsBackbone(void) const;
RNBoolean IsBonded(PDBAtom *atom);
RNBoolean IsBonded(PDBResidue *residue);
RNBoolean IsMarked(void) const;
RNScalar Value(void) const;
void *Data(void) const;

Bond access functions:

int NBonds(void) const;
PDBBond *Bond(int k) const;

Other access functions:

PDBElement *Element(void) const;
PDBResidue *Residue(void) const;
PDBAminoAcid *AminoAcid(void) const;
PDBChain *Chain(void) const;
PDBModel *Model(void) const;
PDBFile *File(void) const;

Manipulation functions:

void Transform(const R3Affine& affine);
void SetPosition(const R3Point& position);
void SetName(const char *name);
void SetData(void *data);
void SetValue(RNScalar value);
void SetMark(void);
void UnsetMark(void);


PDBBond

Constructor:

PDBBond(PDBAtom *atom1, PDBAtom *atom2, PDBBondType type = PDB_UNKNOWN_BOND);
~PDBBond(void);

Properties:

int ID(void) const;
PDBBondType Type(void) const;
RNLength Length(void) const;
const RNRgb& Color(void) const;
RNBoolean IsMarked(void) const;
RNScalar Value(void) const;
void *Data(void) const;

Atom access functions:

int NAtoms(void) const;
PDBAtom *Atom(int k) const;
PDBAtom *OtherAtom(PDBAtom *atom) const;

Manipulation functions:

void SetData(void *data);
void SetValue(RNScalar value);
void SetMark(void);
void UnsetMark(void);


PDBChain

Constructor:

PDBChain(PDBModel *model, const char *name);
~PDBChain(void);

Property functions:

int ID(void) const;
const char *Name(void) const;
const R3Box& BBox(void) const;
R3Point Centroid(void) const;
RNLength Radius(void) const;
const RNRgb& Color(void) const;
RNBoolean IsMarked(void) const;
RNScalar Value(void) const;
void *Data(void) const;

Atom access functions:

int NAtoms(void) const;
PDBAtom *Atom(int k) const;

Residue access functions:

int NResidues(void) const;
PDBResidue *Residue(int k) const;

Other access functions:

PDBModel *Model(void) const;
PDBFile *File(void) const;

Bond access functions:

int NBonds(void) const;
PDBBond *Bond(int k) const;

Search access functions:

PDBAtom *FindAtom(const char *str) const;
PDBResidue *FindResidue(const char *str) const;
PDBResidue *FindResidue(const char *residue_name, int residue_sequence, int residue_insertion_code) const;
PDBStructureType FindAny(const char *str, PDBResidue **residue = NULL,
PDBAtom **atom = NULL, PDBStructureType maxlevel = PDB_ATOM) const;

Manipulation functions:

void Transform(const R3Affine& affine);
PDBResidue *InsertCopy(PDBResidue *residue);
void SetName(const char *name);
void SetData(void *data);
void SetValue(RNScalar value);
void SetMark(void);
void UnsetMark(void);


PDBElement

Constructor:

PDBElement(int id, const char *name, int atomic_number, RNScalar atomic_weight,
RNLength covalent_radius, RNLength van_der_waals_radius, RNLength united_atom_radius,
RNScalar electronegativity, RNScalar charge, const RNRgb& color);

Properties:

int ID(void) const;
const char *Name(void) const;
int AtomicNumber(void) const;
RNScalar AtomicWeight(void) const;
RNLength Radius(void) const;
RNScalar Electronegativity(void) const;
RNScalar Charge(void) const;
const RNRgb& Color(void) const;
RNBoolean IsMarked(void) const;
RNScalar Value(void) const;
void *Data(void) const;

Manipulation functions:

void SetData(void *data);
void SetValue(RNScalar value);
void SetMark(void);
void UnsetMark(void);


PDBFile

Constructor:

PDBFile(const char *name = NULL);
~PDBFile(void);

Property functions:

int ID(void) const;
const char *Name(void) const;
const R3Box BBox(void) const;
R3Point Centroid(void) const;
RNLength Radius(void) const;
const RNRgb& Color(void) const;
RNBoolean IsMarked(void) const;
RNScalar Value(void) const;
void *Data(void) const;

Model access functions:

int NModels(void) const;
PDBModel *Model(int k) const;

Search access functions:

PDBAtom *FindAtom(const char *str) const;
PDBResidue *FindResidue(const char *str) const;
PDBChain *FindChain(const char *str) const;
PDBModel *FindModel(const char *str) const;
PDBStructureType FindAny(const char *str,
PDBModel **model = NULL, PDBChain **chain = NULL,
PDBResidue **residue = NULL, PDBAtom **atom = NULL,
PDBStructureType maxlevel = PDB_ATOM) const;

Manipulation functions:

void Transform(const R3Affine& affine);
PDBModel *InsertCopy(PDBModel *model);
void SetName(const char *name);
void SetData(void *data);
void SetValue(RNScalar value);
void SetMark(void);
void UnsetMark(void);

I/O functions:

int ReadFile(const char *filename);
int WriteFile(const char *filename) const;
int Read(FILE *fp = NULL);
int Write(FILE *fp = NULL) const;

More I/O functions:

int ReadASAFile(char *filename);
int ReadGrowFile(char *filename);
int ReadConsurfFiles(char *hssp_basename);
int ReadHsspFiles(char *hssp_basename);

Other useful functions:

void CreateBonds(PDBResidue *ligand, RNLength max_gap = 1);
PDBFile *CopyBiomolecule(void);
int IsBiomolecule(void) const;


PDBModel

Constructor:

PDBModel(PDBFile *file, const char *name = NULL);
~PDBModel(void);

Property functions:

int ID(void) const;
const char *Name(void) const;
const R3Box& BBox(void) const;
R3Point Centroid(void) const;
RNLength Radius(void) const;
const RNRgb& Color(void) const;
RNBoolean IsMarked(void) const;
RNScalar Value(void) const;
void *Data(void) const;

Atom access functions:

int NAtoms(void) const;
PDBAtom *Atom(int k) const;

Residue access functions:

int NResidues(void) const;
PDBResidue *Residue(int k) const;

Chain access functions:

int NChains(void) const;
PDBChain *Chain(int k) const;

File access functions:

PDBFile *File(void) const;

Bond access functions:

int NBonds(void) const;
PDBBond *Bond(int k) const;

Search access functions:

PDBAtom *FindAtom(const char *str) const;
PDBResidue *FindResidue(const char *str) const;
PDBChain *FindChain(const char *str) const;
PDBStructureType FindAny(const char *str,
PDBChain **chain = NULL, PDBResidue **residue = NULL,
PDBAtom **atom = NULL, PDBStructureType maxlevel = PDB_ATOM) const;

Manipulation functions:

void Transform(const R3Affine& affine);
PDBChain *InsertCopy(PDBChain *chain);
void SetName(const char *name);
void SetData(void *data);
void SetValue(RNScalar value);
void SetMark(void);
void UnsetMark(void);


PDBResidue

Constructor:

PDBResidue(PDBModel *model, PDBChain *chain, const char *name, int sequence, int insertion_code);
~PDBResidue(void);

Property functions:

int ID(void) const;
const char *Name(void) const;
int Sequence(void) const;
int InsertionCode(void) const;
const RNRgb& Color(void) const;
const R3Box& BBox(void) const;
R3Point Centroid(void) const;
RNLength Radius(void) const;
RNBoolean HasHetAtoms(void) const;
RNBoolean IsBonded(PDBAtom *atom);
RNBoolean IsBonded(PDBResidue *residue);
RNBoolean IsMarked(void) const;
RNScalar Value(void) const;
void *Data(void) const;

Atom access functions:

int NAtoms(void) const;
PDBAtom *Atom(int k) const;

Bond access functions:

int NBonds(void) const;
PDBBond *Bond(int k) const;

Other access functions:

PDBAminoAcid *AminoAcid(void) const;
PDBChain *Chain(void) const;
PDBModel *Model(void) const;
PDBFile *File(void) const;

Search access functions:

PDBAtom *FindAtom(const char *str) const;
PDBAtom *FindAtom(const char *atom_name, int atom_serial, int altLoc = 0) const;
int FindAtoms(char **atom_names, PDBAtom **atom_ptrs, int natoms);
PDBStructureType FindAny(const char *str, PDBAtom **atom = NULL, PDBStructureType maxlevel = PDB_ATOM) const;

Manipulation functions:

void Transform(const R3Affine& affine);
PDBAtom *InsertCopy(PDBAtom *atom);
void SetName(const char *name);
void SetData(void *data);
void SetValue(RNScalar value);
void SetMark(void);
void UnsetMark(void);

Other seful functions:

int ConstructCoordinateSystem(R3CoordSystem& cs, int coordinate_system_type = 0);


Click this to go back to list of GAPS packages.

funk@cs.princeton.edu