PROFASI  Version 1.5
Public Member Functions | List of all members
ContactOrder Class Reference

Relative contact order. More...

#include <ContactOrder.hh>

Inheritance diagram for ContactOrder:
Inheritance graph

Public Member Functions

void of_chain (int i)
 Which chain. Contact order only works on one chain. Default is 0.
int of_chain () const
 Which chain is currently in use.
double get_cutoff () const
 Currently used cutoff to define contacts.
void set_cutoff (double x)
 Define a cutoff distance to be used in the definition of a contact.
double evaluate ()
 Actual calculation of the value of the observable.
int init_obs ()
 All observables must implement one initialize routine.
void rangeEstimate (double &x1, double &x2)
 Estimate a range in which values of this observable are expected.
- Public Member Functions inherited from prf::Observable
void set (std::string cmd)
 Give the object an instruction to process during initialization.
virtual void refresh ()
 Necessary before an observable value is used.
virtual double delta (Update *u)
 Quick estimate of the change in an Observable due to an update.
double operator() ()
 Retrieve the value of the observable.
double Value ()
 Retrieve the value of the observable.
void disable_stats ()
 Stop collecting statistical data like averages and histograms.
void enable_stats ()
 Start collecting statistical data like averages and histograms.
- Public Member Functions inherited from prf::Named
 Named ()
 Create an object with name "unnamed".
 Named (const char *st)
 Create an object with name st given as a C string.
 Named (std::string st)
 Create an object with a name given as a string.
std::string Name () const
 Retrive the name of an object.
void Name (std::string gnm)
 Assign a new name to an object.

Detailed Description

This observable makes sense for individual chains only. It is a measure of the complexity of the topology of a protein fold, which is useful for proteins large enough to have tertiary structure. The definition is as in :

"Contact Order, Transition State Placement and the Refolding Rates of Single Domain Proteins", Kevin W. Plaxco, Kim T. Simons and David Baker, J. Mol. Biol. (1998) 277, 985-994

Qualitatively, contact order is the mean sequence separation between residues in physical contact, normalized by the chain length. A purely helical structure will have relatively small contact order, as the residues in contact are close in sequence. In a &#946;-sheet, the contacting residues could be very far in sequence, leading to high contact orders. This class returns the contact order in percentage, which is conventional.

For the evaluation of contact order, the following definition of a contact is used: two residues are in contact if any non-hydrogen atom of one is within D Angstroms of a non-hydrogen atom of the other. The default value of cutoff D is 6, but can be changed. There is no minimum sequence separation for a contact for this observable. So, neighbouring residues are always in contact, and contribute to the average.

As a note on using this class, we point out that for a 100 residue protein with 1000 heavy atoms, in the worst case scenario, about half a million distances would have to be evaluated. This would be very expensive. It is therefore not recommended to use this Observable as one of the very frequently evaluated variable, like for instance, secondary structure content. Using the "cell" information from the excluded volume energy term can speed it up. But that is not available to Observable classes at the moment. Until further notice, we recommend that this class is only used for post run analysis programs.

Member Function Documentation

int ContactOrder::init_obs ( )

Even if it seems that one particular observable might need additional arguments during initialization, it is advantageous to have a uniform syntax for all of them. So, when additional arguments are needed, one should provide them in a separate function called before initialization, and then call init_obs without arguments. The name init_obs instead of a more natural "init" or "initialize" is because an Observable often inherits from other classes which represent its character more fundamentally. So, the names such as "init" are kept free for such base classes.

Reimplemented from prf::Observable.

void ContactOrder::rangeEstimate ( double &  x1,
double &  x2 

The default is between 0 and 1. So, for observables with values always between 0 and 1, you need not over-write this virtual function. Sometimes the observable will have a different fixed range, determined by its definition. Sometimes the range can not be determined perfectly. In such a case, let this function just return something reasonable.

Reimplemented from prf::Observable.

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