LOOS  v2.3.2
loos::PSF Class Reference

Class for reading a subset of the PSF format. More...

#include <psf.hpp>

Inheritance diagram for loos::PSF:
Collaboration diagram for loos::PSF:

Public Member Functions

 PSF (const std::string &fname)
 
 PSF (std::fstream &ifs)
 
virtual PSFclone (void) const
 Clones an object for polymorphism (see AtomicGroup::clone() for more info)
 
PSF copy (void) const
 Creates a deep copy (see AtomicGroup::copy() for more info)
 
void read (std::istream &is)
 
- 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)
 

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

Class for reading a subset of the PSF format.

Notes:

PSF files don't have coordinates, so the coordinates property won't be set. As a result, you'll get an UnsetProperty exception if you try to access the coordinates. The idea is you use a PSF with something else which will supply the coordinates (usually some kind of Trajectory).

This code will read both NAMD and CHARMM PSF files, since it doesn't use the atom type information anyway.

The code extracts the atom/residue/segment names and numbers, plus mass, partial charge, and connectivity. Higher order connectivity (angles, dihedrals, etc) are ignored.

Atomic numbers will be deduced from the masses. No error is generated if an atomic mass is unknown to LOOS. In order to verify that all atoms have an assigned mass, use the following,

bool ok = psf.allHaveProperty(Atom::anumbit);

Definition at line 60 of file psf.hpp.


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