PROFASI  Version 1.5
Public Member Functions | List of all members
prf::Ligand Class Reference

An abstract class providing a base for amino acids and capping groups. More...

#include <Ligand.hh>

Inheritance diagram for prf::Ligand:
Inheritance graph
[legend]

Public Member Functions

virtual int rotDof_assign_and_reconstruct (int i, double mgd, int &a0, int &a1)
 Assign to (sidechain) dof i, and return the range of moved atoms.
 
virtual int rotDof_assign (int il, double mgd)
 Assign to (sidechain) dof i, but don't recalculate any coordinates.
 
virtual double get_rotDof (int il)
 Value of the i'th (sidechain) dof.
 
virtual bool get_rotDofAxis (int i, Atom &a0, Atom &a1)
 Get the atoms defining the axis of the i'th sidechain dof.
 
virtual double get_coord (int i)
 Value of the i'th coordinate.
 
virtual void set_coord (int i, double x)
 Set the i'th coordinate.
 
virtual int n_coord () const
 Total number of coordinates.
 
virtual double get_dof (int i)
 Get the value of the i'th true degree of freedom.
 
virtual void set_dof (int i, double x)
 Set the value of the i'th true degree of freedom.
 
virtual int n_dof () const
 Total number of true degrees of freedom.
 
virtual int set_coord_xml (prf_xml::XML_Node *rs, int typecheck=1)
 Assign degrees of freedom from an XML_Node object.
 

Detailed Description

The word "Ligand", as used inside PROFASI is an abstraction. It means a collection of atoms with covalent connections. It has a name and a few degrees of freedom, and it can be a part of a protein chain. Amino acids are, in this sense, Ligands, and so are capping groups like Acetyl or NH2. It makes no sense to define a bare, "Ligand" object, as it has few useful properties. It will have atoms, but will not know how to place them in space, for instance. So, the Ligand class does not have a public constructor. One can only inherit from this class to create a more useful object and then use the inheritted class in the program.

Member Function Documentation

double Ligand::get_coord ( int  i)
virtual

For an EndGroup, this would mean the torsional degrees of freedom in the group. For an AminoAcid, it would be the phi, psi, omega angles, followed by the side chain degrees of freedom. Note that the omega angles are not really degrees of freedom in PROFASI. Neither is the phi angle for Proline or D-Proline. But for uniformity of the backbone description, they are included in what are generically called "coordinates". The specialized functions like BBDOF() in Protein do not count omega or Proline phi angles in the list of degrees of freedom. But Protein::get_coord(i) will return the omega angle if i corresponds to it.

Reimplemented in prf::AminoAcid.

int Ligand::n_coord ( ) const
virtual

Number of degrees of freedom, including fixed backbone angles like omega angles and proline phi angles.

Reimplemented in prf::AminoAcid.

int Ligand::rotDof_assign_and_reconstruct ( int  i,
double  mgd,
int &  a0,
int &  a1 
)
virtual

Assigns to the i'th degree of freedom of this Ligand and reconstructs. Puts the unique ids of the first and the last changed atoms in a0 and a1. An important difference from the older, obsolete, ROTDOF(...) is that the index i is interpreted as the index within this Ligand, not the index with respece to the whole system.

Reimplemented in prf::AminoAcid.

void Ligand::set_coord ( int  i,
double  x 
)
virtual

Same as get_coord() but this function sets the value.

Reimplemented in prf::AminoAcid.

int Ligand::set_coord_xml ( prf_xml::XML_Node rs,
int  typecheck = 1 
)
virtual

This function tries to extract values for all the degrees of freedom of the Ligand from an XML_Node, passed through its pointer. It checks if the 3 letter code in the XML_Node matches with the 3 letter code of the Ligand. If they match, dof info is extracted from the node and assigned. If they don't and the flag typecheck is non-zero, an error results. If typecheck is 0, the ligand type mismatch is ignored, and the everything that can be assigned from the XML node is assigned.

Note: At present XML tag "coordinates" and "dofs" are treated in the same way in this function. The function can only read in coordinates, which means, a node should have values for phi, psi, omega even if the residue is a proline. The values passed as interpreted as coordinates, not as degrees of freedom. It does not harm to pass rubbish values for the angles which are not real degrees of freedom. Nothing is ever assigned to torsion angles which are model constants in ProFASi.


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

PROFASI: Protein Folding and Aggregation Simulator, Version 1.5
© (2005-2016) Anders Irbäck and Sandipan Mohanty
Documentation generated on Mon Jul 18 2016 using Doxygen version 1.8.2