LOOS  v2.3.2
loos::PDB Class Reference

PDB reading/writing class. More...

#include <pdb.hpp>

Inheritance diagram for loos::PDB:
Collaboration diagram for loos::PDB:

Public Member Functions

 PDB (const std::string &fname)
 Read in PDB from a filename.
 
 PDB (std::istream &ifs)
 Read in a PDB from an ifstream.
 
virtual PDBclone (void) const
 Clones an object for polymorphism (see AtomicGroup::clone() for more info)
 
PDB copy (void) const
 Creates a deep copy (see AtomicGroup::copy() for more info)
 
void showCharge (bool b)
 Special handling for charges since the PDB form is daft.
 
bool showCharge (void) const
 
bool strict (void) const
 
bool autoTerminate (void) const
 
void strict (const bool b)
 Determins how strict the input parser is to the '96 PDB standard.
 
void autoTerminate (bool b)
 Automatically insert TER record at end of output. More...
 
Remarksremarks (void)
 Accessor for the remarks object...
 
void remarks (const Remarks &)
 Accessor for the remarks object...
 
const UnitCellunitCell (void)
 
void unitCell (const UnitCell &)
 
void read (std::istream &is)
 Read in PDB from an ifstream. More...
 
- Public Member Functions inherited from loos::AtomicGroup
 AtomicGroup (const int n)
 Creates a new AtomicGroup with n un-initialized atoms. More...
 
 AtomicGroup (const AtomicGroup &g)
 Copy constructor (atoms and box shared)
 
AtomicGroup copy (void) const
 Creates a deep copy of this group. More...
 
uint length (void) const
 
uint size (void) const
 
bool empty (void) const
 
pAtom getAtom (const int i) const
 Get the ith atom from this group.
 
pAtom & operator[] (const int i)
 Same as getAtom(i)
 
const pAtom & operator[] (const int i) const
 
AtomicGroupappend (pAtom pa)
 Append the atom onto the group.
 
AtomicGroupappend (std::vector< pAtom > pas)
 Append a vector of atoms.
 
AtomicGroupappend (const AtomicGroup &grp)
 Append an entire AtomicGroup onto this one (concatenation)
 
AtomicGroupremove (pAtom pa)
 Delete a single atom.
 
AtomicGroupremove (std::vector< pAtom > pas)
 Deletes a set of atoms.
 
AtomicGroupremove (const AtomicGroup &grp)
 Deletes all atoms in the passed grp that are also in the current group.
 
AtomicGroupoperator+= (const AtomicGroup &rhs)
 
AtomicGroupoperator+= (const pAtom &rhs)
 
AtomicGroup operator+ (const AtomicGroup &rhs)
 
AtomicGroup operator+ (const pAtom &rhs)
 
bool operator== (AtomicGroup &rhs)
 Equality test for two groups. More...
 
bool operator!= (AtomicGroup &rhs)
 Inequality test for two groups.
 
bool operator== (const AtomicGroup &rhs) const
 Equality test for const groups. More...
 
bool operator!= (const AtomicGroup &rhs) const
 Inequality test for two groups.
 
AtomicGroup subset (const int offset, const int len=0)
 subset() and excise() args are patterned after perl's substr... More...
 
AtomicGroup excise (const int offset, const int len=0)
 excise returns the excised atoms as a group...
 
template<class EqualsOp >
bool contains (const pAtom &p, const EqualsOp &op)
 Determines if a pAtom is contained in this group using the EqualsOp atom-equality policy. More...
 
bool contains (const pAtom &p)
 Determines if a pAtom is contained in this group using the AtomEquals policy (ie the default comparison policy)
 
template<class EqualsOp >
bool contains (const AtomicGroup &g, const EqualsOp &op)
 Determines if the passed group is a subset of the current group using the EqualsOp atom-equality policy.
 
bool contains (const AtomicGroup &g)
 Determines if a group is a subset of the current group using the default AtomEquals policy.
 
template<class EqualsOp >
bool containsAny (const AtomicGroup &g, const EqualsOp &op)
 Determines if a group contains any atom.
 
bool containsAny (const AtomicGroup &g)
 Determines if a group contains any atom using the default AtomEquals policy.
 
template<class EqualsOp >
AtomicGroup intersect (const AtomicGroup &g, const EqualsOp &op)
 Computes the intersection of two groups using the EqualsOp atom-equality policy. More...
 
AtomicGroup intersect (const AtomicGroup &g)
 Intersection of two groups.
 
template<class EqualsOp >
AtomicGroup merge (const AtomicGroup &g, const EqualsOp &op)
 Union of two groups using the specified atom-equality policy. More...
 
AtomicGroup merge (const AtomicGroup &g)
 Union of two groups using the default AtomEquals atom-equality policy.
 
AtomicGroup select (const AtomSelector &sel) const
 Return a group consisting of atoms for which sel predicate returns true...
 
std::vector< AtomicGroupsplitByUniqueSegid (void) const
 Returns a vector of AtomicGroups split from the current group based on segid. More...
 
std::vector< AtomicGroupsplitByMolecule (void) const
 Returns a vector of AtomicGroups split based on bond connectivity.
 
std::vector< AtomicGroupsplitByResidue (void) const
 Returns a vector of AtomicGroups, each comprising a single residue. More...
 
std::map< std::string, AtomicGroupsplitByName (void) const
 Returns a vector of AtomicGroups, each containing atoms with the same name.
 
AtomicGroup centrifyByMolecule () const
 Replace a group with the center of masses of contained molecules. More...
 
AtomicGroup centrifyByResidue () const
 Replace a group with the cente of masses of contained residues (see centrifyByMolecule())
 
pAtom findById (const int id) const
 Find a contained atom by its atomid. More...
 
AtomicGroup groupFromID (const std::vector< int > &id_list) const
 Create a new group from a vector of atomids. More...
 
AtomicGroup getResidue (pAtom res)
 
void renumber (const int start=1, const int stride=1)
 Renumber the atomid's of the contained atoms...
 
int minId (void) const
 
int maxId (void) const
 
int minResid (void) const
 
int maxResid (void) const
 
int numberOfResidues (void) const
 
int numberOfSegids (void) const
 
bool allHaveProperty (const Atom::bits &property) const
 True if all atoms in the group have the passed property(ies)
 
bool anyHaveProperty (const Atom::bits &property) const
 True if any atom in the group have the passed property(ies)
 
bool hasBonds (void) const
 Does any atom in the group have bond information???
 
bool hasCoords (void) const
 Do all the atoms in the group have coordinates?
 
void clearBonds (void)
 Remove any bonding information present in contained atoms.
 
void pruneBonds ()
 Attempt to prune connectivity (only retain bonds to atoms within this AtomicGroup) More...
 
void resetAtomIndices ()
 Reset the atom indices (used for interfacing with trajectories) More...
 
uint deduceAtomicNumberFromMass (const double tol=0.1)
 Deduce atomic number from mass (if present), returning number of atoms assigned. More...
 
bool sorted (void) const
 Is the array of atoms already sorted??? More...
 
void sort (void)
 Sort based on atomid.
 
bool isPeriodic (void) const
 Test whether or not periodic boundary conditions are set.
 
GCoord periodicBox (void) const
 Fetch the periodic boundary conditions.
 
void periodicBox (const GCoord &c)
 Set the periodic boundary conditions.
 
void periodicBox (const greal x, const greal y, const greal z)
 Set the periodic boundary conditions.
 
loos::SharedPeriodicBox sharedPeriodicBox () const
 Provide access to the underlying shared periodic box...
 
void removePeriodicBox ()
 Remove periodicity.
 
void reimage ()
 
void reimageByAtom ()
 Reimage atoms individually into the primary cell.
 
void mergeImage (pAtom &p)
 Takes a group that's split across a periodic boundary and reimages it so it's all together. More...
 
void mergeImage ()
 Takes a group that's split across a periodic boundary and reimages it so it's all together, using the first atom in the AtomicGroup as the reference. More...
 
AtomicGroup within (const double dist, AtomicGroup &grp) const
 Find atoms in the current group that are within dist angstroms of any atom in grp.
 
AtomicGroup within (const double dist, AtomicGroup &grp, const GCoord &box) const
 Find atoms in grp that are within dist angstroms of atoms in the current group, considering periodicity.
 
bool contactWith (const double dist, const AtomicGroup &grp, const uint min=1) const
 Returns true if any atom of current group is within dist angstroms of grp. More...
 
bool contactWith (const double dist, const AtomicGroup &grp, const GCoord &box, const uint min=1) const
 Returns true if any atom of current group is within dist angstroms of grp. More...
 
void findBonds (const double dist=1.65)
 Distance-based search for bonds. More...
 
template<class T >
apply (T func)
 Apply a functor or a function to each atom in the group. More...
 
iterator begin (void)
 
iterator end (void)
 
const_iterator begin (void) const
 
const_iterator end (void) const
 
std::vector< GCoordboundingBox (void) const
 Bounding box for the group... More...
 
GCoord centerAtOrigin (void)
 Translates the group so that the centroid is at the origin. More...
 
GCoord centroid (void) const
 Centroid of atoms (ignores mass, operates in group coordinates)
 
greal radius (const bool use_atom_as_reference=false) const
 Maximum radius from centroid of all atoms (not gyration) More...
 
GCoord centerOfMass (void) const
 Center of mass of the group (in group coordinates)
 
GCoord centerOfElectrons (void) const
 Analogous to center of mass.
 
GCoord dipoleMoment (void) const
 Dipole moment, relative to group's centroid.
 
greal totalCharge (void) const
 
greal totalMass (void) const
 
greal radiusOfGyration (void) const
 
greal sphericalVariance (const pAtom) const
 Spherical variance of group with respect to target atom. More...
 
greal sphericalVariance (const GCoord) const
 
greal rmsd (const AtomicGroup &)
 Compute the RMSD between two groups. More...
 
std::vector< GCoordgetTransformedCoords (const XForm &) const
 Returns a vector of coordinates transformed by the passed XForm. More...
 
void translate (const GCoord &v)
 Translate an atomic group by vector v.
 
void rotate (const GCoord &axis, const greal angle_in_degrees)
 Rotate group's coordinates (right-handed, about centroid)
 
void applyTransform (const XForm &)
 Apply the given transform to the group's coordinates...
 
void copyCoordinatesFrom (const AtomicGroup &g, const uint offset=0, const uint length=0)
 Copy coordinates from g into current group. More...
 
std::vector< uint > atomOrderMapFrom (const AtomicGroup &g)
 Map the order of atoms in AtomicGroup g into the current group. More...
 
void copyMappedCoordinatesFrom (const AtomicGroup &g, const std::vector< uint > &order)
 Given a mapping of atom order, copy the coordinates into the current group. More...
 
void copyMappedCoordinatesFrom (const AtomicGroup &g)
 Copy the coordinates from the group mapping the atom order. More...
 
void perturbCoords (const greal)
 Each atom is moved in a random direction by a vector of the passed size.
 
std::vector< GCoordprincipalAxes (void) const
 Compute the principal axes of a group. More...
 
std::vector< GCoordmomentsOfInertia (void) const
 Computes the moments of inertia for a group. More...
 
GMatrix superposition (const AtomicGroup &)
 Calculates the transformation matrix for superposition of groups. More...
 
GMatrix alignOnto (const AtomicGroup &)
 Superimposes the current group onto the passed group. More...
 
void setCoords (double *seq, int m, int n)
 
void getCoords (double **outseq, int *m, int *n)
 
std::vector< double > coordsAsVector () const
 

Static Public Member Functions

static pAtomicGroup create (const std::string &fname)
 
static PDB fromAtomicGroup (const AtomicGroup &)
 Class method for creating a PDB from an AtomicGroup. More...
 

Friends

std::ostream & operator<< (std::ostream &, const PDB &)
 Output as a PDB. More...
 
std::ostream & FormatConectRecords (std::ostream &, const PDB &)
 

Additional Inherited Members

- Public Types inherited from loos::AtomicGroup
typedef std::vector< pAtom >::iterator iterator
 
typedef std::vector< pAtom >::const_iterator const_iterator
 
typedef pAtom value_type
 
- Static Public Attributes inherited from loos::AtomicGroup
static const double superposition_zero_singular_value = 1e-10
 
- Protected Member Functions inherited from loos::AtomicGroup
void setGroupConnectivity ()
 
- Protected Attributes inherited from loos::AtomicGroup
std::vector< pAtom > atoms
 
loos::SharedPeriodicBox box
 

Detailed Description

PDB reading/writing class.

This class models a basic PDB file format. Special handling is included for dealing with periodic boundary conditions. If there is a special REMARK header, then the box size is extracted from this and stored in the parent AtomicGroup. If not, but a CRYST1 record is present, then the a, b, c parameters are used to set the periodic box.

This class can handle some minor variations in the PDB format (since there are so many different standards out there). This is determined by the strictness_policy setting. Be default, a weak strictness is used. This will allow variations like frame-shifts in the resid field to be accepted. If you would rather have the strict formatting honored, you'll need to set each PDB object to strict:

PDB pdb;
pdb.strict(true);

Definition at line 69 of file pdb.hpp.

Member Function Documentation

void loos::PDB::autoTerminate ( bool  b)

Automatically insert TER record at end of output.

Controls whether or not a "TER" record is automatically added when printing out the group/PDB

Definition at line 545 of file pdb.cpp.

PDB loos::PDB::fromAtomicGroup ( const AtomicGroup g)
static

Class method for creating a PDB from an AtomicGroup.

There should probably be some internal checks to make sure we have enough info to actually write out a PDB, but currently there are no such checks...

Definition at line 528 of file pdb.cpp.

void loos::PDB::read ( std::istream &  is)

Read in PDB from an ifstream.

Top level parser... Reads a PDB from an input stream

Definition at line 332 of file pdb.cpp.

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const PDB p 
)
friend

Output as a PDB.

There are some formatting changes that occur when the group has a large number of atoms or resids. The most significant is when you have 100,000 or more, in which case you lose the altloc and chainid fields on output. However, the output PDB will load into pymol...

Definition at line 485 of file pdb.cpp.


The documentation for this class was generated from the following files: