PDB++(3)
NAME
- pdb++ - A C++ class for manipulating Brookhaven Protein
DataBank records
SYNOPSIS
- #include <pdb++.h>
....
PDB record;
while (cin >> record) {
switch (record.type()) {
case PDB::ATOM:
cout << record.atom.xyz[0] << ' ' << record.atom.xyz[0]
<< ' ' << record.atom.xyz[0] << endl;
....
break;
}
}
....
DESCRIPTION
- The routines listed below are available in the pdb++
library; the include file is typically found in
/usr/local/midas/include/pdb++.h and the library archive is
in /usr/local/midas/lib/libpdb.a.
- The PDB class provides methods for parsing Brookhaven
Protein DataBank (PDB) records (lines from a PDB file) into
structures and expanding those structures back into PDB
records. Rather than provide access functions for each
possible field, the structure containing the parsed record
is publicly available. The field names are listed in the
header file.
- The PDB class has several enhancements to the Brookhaven
Protein DataBank specification: four character residue
names, the PDBRUN set of scene annotation records (see
reference in the SEE ALSO section), and atom serial number
overflow protection. Four character residue names work
because everywhere in the specification a three character
residue name appears, there is a blank afterwards. Atom
serial number overflow protection works for ATOM, HETATM,
and SIGATM records, by assigning an unique serial number
over 10000. Unfortunately, it is not possible to fix PDB
records that refer to atom serial numbers, such as CONECT
records.
MEMBER CONSTANTS
- BufLen
- The maximum length of a generated PDB record string
(including the null byte).
- PDBRUNVersion
- The default version of the PDBRUN scene annotation
records.
- There are also constants for each known PDB record type
(e.g., ATOM, HETATM, etc.), and the constant UNKNOWN for an
unknown PDB record.
- The following constants are for each PDBRUN scene annotation
record type: USER_PDBRUN, USER_EYEPOS, USER_ATPOS,
USER_WINDOW, USER_FOCUS, USER_VIEWPORT, USER_BGCOLOR,
USER_ANGLE, USER_DISTANCE, USER_FILE, USER_MARKNAME,
USER_MARK, USER_CNAME, USER_COLOR, USER_RADIUS, USER_OBJECT,
USER_ENDOBJ, USER_CHAIN, USER_GFX_BEGIN, USER_GFX_END,
USER_GFX_COLOR, USER_GFX_NORMAL, USER_GFX_VERTEX,
USER_GFX_FONT, USER_GFX_TEXTPOS, and USER_GFX_LABEL.
- The following constants are for the various graphics
primitives supported in scenes: GFX_UNKNOWN, GFX_POINTS,
GFX_MARKERS, GFX_LINES, GFX_LINE_STRIP, GFX_LINE_LOOP,
GFX_TRIANGLES, GFX_TRIANGLE_STRIP, GFX_TRIANGLE_FAN,
GFX_QUADS, GFX_QUAD_STRIP, and GFX_POLYGON.
MEMBER TYPES
- typedef char Date[10]
- A text field containing a date, typically
day-month-year, where day is numeric, month is a
three-letter abbreviation, and year is the last two
digits of the year.
- typedef char AName[5]
- A PDB atom name, e.g., NO2*.
- typedef char RName[5]
- Residue name, e.g., ALA.
- typedef char PName[5]
- PDB name, e.g., 9lyz.
- typedef char Id[4]
- Generic short id field.
- typedef double Real
- Size of floating point numbers read and written.
- struct Residue
- A Residue consists of a residue name (name), a chain
identifier (chainId), a sequence number (seqNum), and
an insertion code (insertCode).
MEMBER FUNCTIONS
pdb()
pdb(RecordType t)
pdb(const char *buf)
Constructors. The first two above construct a zeroed
instance of the given record type (default UNKNOWN).
The last constructor above fills in all of the fields
of the instance from the given PDB record text.
- RecordType type() const
- Return the type of PDB instance.
- void type(RecordType t)
- Change the PDB record type of the instance and
reinitialize all the fields to default values (zero in
all cases except for an ATOM's occupancy which defaults
to 1.0).
- const char *chars() const;
- Return a string containing the PDB record in textual
form.
- static int PdbrunInputVersion()
- Return the current PDBRUN scene annotation version used
to parse text records.
- static int PdbrunOutputVersion()
- Return the current PDBRUN scene annotation version used
to create text records.
- static void PdbrunInputVersion(int v)
- Set the current PDBRUN scene annotation version used to
parse text records.
- static void PdbrunOutputVersion(int v)
- Set the current PDBRUN scene annotation version used to
create text records.
- static recordType getType(const char *buf)
- Return the PDB record type for the given line of text.
- static GfxType getGfxType(const char *buf)
- static const char *gfxChars(GfxType gt)
- static int sscanf(const char *, const char *, ...)
- A version of sscanf(3) whose format's behave like
FORTRAN formats where field widths are sacrosanct. If
the input line is short, then the rest of the fields
are initialized to default values. Any literal
characters in the format must match the input. The
format characters are: space, ignore input character;
c, character (array), default to a space; d, integer,
default zero; f, double, default zero; s, get a C
string, trailing spaces are stripped and it is null
terminated, default an empty string. sscanf returns
the number of input fields converted (may be less than
expected if the input line is short) or -1 if an error
is found.
- static int sprintf(char *, const char *, ...)
- A version of sprintf(3) whose format's behave like
FORTRAN formats where field widths are sacrosanct.
Literal characters are copied as is. If the text or
number to be printed is larger than the given field
width, then the field is filled in with asterisks. The
format characters are: d, integer; D, integer where
zero is written as spaces; s, right-justified string (a
negative field width left-justifies); c, character
(array), zero characters are converted to spaces; f,
floating point, normal printf precisions are used.
I/O FUNCTIONS
- ostream &operator<<(ostream &s, const PDB &p)
- Output the current PDB record on the given output
stream.
- istream &operator>>(istream &s, PDB &p)
- Read a line from the given input stream and convert to
a PDB record.
SEE ALSO
- ``Protein Data Bank Atomic Coordinate and Bibliographic
Entry Format Description,'' Febuary 1992, Brookhaven
National Laboratory, the January 1993 Protein Data Bank
Quarterly Newsletter, ``Annotating PDB Files with Scene
Information,'' Gregory S. Couch, et. al., (submitted for
publication).
NOTES
- The subtype field of USERxx structure tells what the xx part
was. The rest of the line, up to the card sequence portion,
is the text field.
- Due to the way Brookhaven encodes their files, atom names
often have leading blanks and sometimes have embedded
blanks. Residue names occasionally have leading blanks too.
To be entirely consistent with the PDB format, the
programmer should put those blanks in before using the chars
member function.
BUGS
- Routines are needed to convert to and from PDB typesetting
conventions in COMPND, SOURCE, AUTHOR, and JRNL records.
COPYRIGHT
- Copyright c 1994 The Regents of the University of
California. All rights reserved.
- Redistribution and use in source and binary forms are
permitted provided that the above copyright notice and this
paragraph are duplicated in all such forms and that any
documentation, advertising materials, and other materials
related to such distribution and use acknowledge that the
software was developed by the University of California, San
Francisco. The name of the University may not be used to
endorse or promote products derived from this software
without specific prior written permission. THIS SOFTWARE IS
PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
PURPOSE.