Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
PLMD::ReferenceArguments Class Referenceabstract

In many applications (e.g. More...

#include <ReferenceArguments.h>

Inheritance diagram for PLMD::ReferenceArguments:
Inheritance graph
[legend]

Public Member Functions

 ReferenceArguments (const ReferenceConfigurationOptions &ro)
 
unsigned getNumberOfReferenceArguments () const
 Get the number of reference arguments. More...
 
void getArgumentRequests (std::vector< std::string > &, bool disable_checks=false)
 Get the arguments required. More...
 
void setArgumentNames (const std::vector< std::string > &arg_vals)
 Set the names of the arguments. More...
 
void setReferenceArguments (const std::vector< double > &arg_vals, const std::vector< double > &sigma)
 Set the positions of the refernce arguments. More...
 
double getReferenceArgument (const unsigned &i) const
 Get the value of the ith reference argument. More...
 
void printArguments (OFile &ofile, const std::string &fmt) const
 Print the arguments out. More...
 
const std::vector< double > & getReferenceArguments ()
 Return all the reference arguments. More...
 
const std::vector< double > & getReferenceMetric ()
 
const std::vector< std::string > & getArgumentNames ()
 Return names. More...
 
virtual double calculateArgumentDistance (const std::vector< Value * > &vals, const std::vector< double > &arg, ReferenceValuePack &myder, const bool &squared) const
 Calculate the euclidean/malanobius distance the atoms have moved from the reference configuration in CV space. More...
 
std::string getName () const
 Return the name of this metric. More...
 
virtual unsigned getNumberOfReferencePositions () const
 
virtual void getAtomRequests (std::vector< AtomNumber > &, bool disable_checks=false)
 Retrieve the atoms that are required for this guy. More...
 
virtual void set (const PDB &)
 Set the final number of arguments. More...
 
virtual void read (const PDB &)=0
 Do all local business for setting the configuration. More...
 
void setWeight (const double &ww)
 Set the weight for this frame. More...
 
double getWeight () const
 Return the weight for this frame. More...
 
double calculate (const std::vector< Vector > &pos, const Pbc &pbc, const std::vector< Value * > &vals, ReferenceValuePack &myder, const bool &squared=false) const
 Calculate the distance from the reference configuration. More...
 
virtual double calc (const std::vector< Vector > &pos, const Pbc &pbc, const std::vector< Value * > &vals, const std::vector< double > &args, ReferenceValuePack &myder, const bool &squared) const =0
 Calculate the distance from the reference configuration. More...
 
template<class T >
bool parse (const std::string &key, T &t, bool ignore_missing=false)
 Return the derivatives of the distance wrt the cell vectors. More...
 
template<class T >
bool parseVector (const std::string &key, std::vector< T > &t, bool ignore_missing=false)
 Parse vector from the pdb remarks. More...
 
void parseFlag (const std::string &key, bool &t)
 Parse a flag. More...
 
void checkRead ()
 Check that all the remarks in the pdb have been read in. More...
 
void copyDerivatives (const ReferenceConfiguration *)
 Copy derivatives from one frame to this frame. More...
 
void setNamesAndAtomNumbers (const std::vector< AtomNumber > &numbers, const std::vector< std::string > &arg)
 Set the atom numbers and the argument names. More...
 
void setReferenceConfig (const std::vector< Vector > &pos, const std::vector< double > &arg, const std::vector< double > &metric)
 Set the reference structure (perhaps should also pass the pbc and align and displace ) More...
 
void print (OFile &ofile, const double &time, const double &weight, const double &lunits, const double &old_norm)
 Print a pdb file containing the reference configuration. More...
 
void print (OFile &ofile, const std::string &fmt, const double &lunits)
 
virtual const std::vector< Vector > & getReferencePositions () const
 These are overwritten in ReferenceArguments and ReferenceAtoms but are required here to make PLMD::distance work. More...
 
virtual const std::vector< AtomNumber > & getAbsoluteIndexes ()
 These are overwritten in ReferenceArguments and ReferenceAtoms to make frame copying work. More...
 
virtual bool pcaIsEnabledForThisReference ()
 Stuff for pca. More...
 
virtual double projectAtomicDisplacementOnVector (const unsigned &i, const Matrix< Vector > &eigv, const std::vector< Vector > &pos, ReferenceValuePack &mypack) const
 
bool isDirection () const
 Stuff for sanity checks on distance. More...
 
virtual void setupPCAStorage (ReferenceValuePack &mypack)
 Stuff to setup pca. More...
 

Protected Member Functions

void readArgumentsFromPDB (const PDB &pdb)
 Read in the atoms from the pdb file. More...
 
void setReferenceArguments ()
 Set the values of the colvars based on their current instantanous values (used in Analysis) More...
 
void error (const std::string &msg)
 Derivatives wrt to the arguments. More...
 

Protected Attributes

bool hasweights
 Are we reading weights from input. More...
 
bool hasmetric
 Are we calculating a Malanobius distance. More...
 

Private Attributes

std::vector< double > weights
 The weights for normed euclidean distance. More...
 
Matrix< double > metric
 The N X N matrix we are using to calculate our Malanobius distance. More...
 
std::vector< double > trig_metric
 
std::vector< double > reference_args
 The values of the colvars in the reference configuration. More...
 
std::vector< std::string > arg_names
 The names of the arguments. More...
 
std::vector< unsigned > der_index
 The indices for setting derivatives. More...
 

Detailed Description

In many applications (e.g.

paths, fields, property maps) it is necessary to calculate the distance between two configurations. These distances can be calculated in a variety of different ways. For instance, one can assert that the distance between the two configuration is the distance one would have to move all the atoms to transform configuration 1 into configuration

  1. Alternatively, one could calculate the values of a large set of collective coordinates in the two configurations and then calculate the Euclidean distances between these two points in the resulting high-dimensional vector space. Lastly, one can combine these two forms of distance calculation to calculate a hybrid distance. Plumed allows one to use all these forms of distance calculations and also to implement new forms of distance. You should inherit from this class if your distance involves reference colvar values. This class and PLMD::ReferenceAtoms mirror the functionalities in PLMD::ActionWithArguments and PLMD::ActionAtomistic respectively but for distances.

Constructor & Destructor Documentation

PLMD::ReferenceArguments::ReferenceArguments ( const ReferenceConfigurationOptions ro)
explicit

Member Function Documentation

virtual double PLMD::ReferenceConfiguration::calc ( const std::vector< Vector > &  pos,
const Pbc pbc,
const std::vector< Value * > &  vals,
const std::vector< double > &  args,
ReferenceValuePack myder,
const bool &  squared 
) const
pure virtualinherited

Calculate the distance from the reference configuration.

Implemented in PLMD::MultiDomainRMSD, PLMD::SingleDomainRMSD, PLMD::ArgumentOnlyDistance, PLMD::Direction, and PLMD::FakeFrame.

double PLMD::ReferenceConfiguration::calculate ( const std::vector< Vector > &  pos,
const Pbc pbc,
const std::vector< Value * > &  vals,
ReferenceValuePack myder,
const bool &  squared = false 
) const
inherited

Calculate the distance from the reference configuration.

double PLMD::ReferenceArguments::calculateArgumentDistance ( const std::vector< Value * > &  vals,
const std::vector< double > &  arg,
ReferenceValuePack myder,
const bool &  squared 
) const
virtual

Calculate the euclidean/malanobius distance the atoms have moved from the reference configuration in CV space.

Reimplemented in PLMD::DotProductDistance.

void PLMD::ReferenceConfiguration::checkRead ( )
inherited

Check that all the remarks in the pdb have been read in.

void PLMD::ReferenceConfiguration::copyDerivatives ( const ReferenceConfiguration )
inherited

Copy derivatives from one frame to this frame.

void PLMD::ReferenceConfiguration::error ( const std::string &  msg)
protectedinherited

Derivatives wrt to the arguments.

The virial contribution has to be stored Derivatives wrt to the atoms Crash with an error

const std::vector< AtomNumber > & PLMD::ReferenceConfiguration::getAbsoluteIndexes ( )
inlinevirtualinherited

These are overwritten in ReferenceArguments and ReferenceAtoms to make frame copying work.

Reimplemented in PLMD::ReferenceAtoms.

const std::vector< std::string > & PLMD::ReferenceArguments::getArgumentNames ( )
inlinevirtual

Return names.

Reimplemented from PLMD::ReferenceConfiguration.

void PLMD::ReferenceArguments::getArgumentRequests ( std::vector< std::string > &  argout,
bool  disable_checks = false 
)
virtual

Get the arguments required.

Reimplemented from PLMD::ReferenceConfiguration.

virtual void PLMD::ReferenceConfiguration::getAtomRequests ( std::vector< AtomNumber > &  ,
bool  disable_checks = false 
)
inlinevirtualinherited

Retrieve the atoms that are required for this guy.

Reimplemented in PLMD::ReferenceAtoms.

std::string PLMD::ReferenceConfiguration::getName ( ) const
inherited

Return the name of this metric.

unsigned PLMD::ReferenceArguments::getNumberOfReferenceArguments ( ) const
inlinevirtual

Get the number of reference arguments.

Reimplemented from PLMD::ReferenceConfiguration.

unsigned PLMD::ReferenceConfiguration::getNumberOfReferencePositions ( ) const
inlinevirtualinherited

Reimplemented in PLMD::ReferenceAtoms.

double PLMD::ReferenceArguments::getReferenceArgument ( const unsigned &  i) const
inlinevirtual

Get the value of the ith reference argument.

Reimplemented from PLMD::ReferenceConfiguration.

const std::vector< double > & PLMD::ReferenceArguments::getReferenceArguments ( )
inlinevirtual

Return all the reference arguments.

Reimplemented from PLMD::ReferenceConfiguration.

const std::vector< double > & PLMD::ReferenceArguments::getReferenceMetric ( )
virtual

Reimplemented from PLMD::ReferenceConfiguration.

const std::vector< Vector > & PLMD::ReferenceConfiguration::getReferencePositions ( ) const
inlinevirtualinherited

These are overwritten in ReferenceArguments and ReferenceAtoms but are required here to make PLMD::distance work.

Reimplemented in PLMD::ReferenceAtoms.

double PLMD::ReferenceConfiguration::getWeight ( ) const
inlineinherited

Return the weight for this frame.

bool PLMD::ReferenceConfiguration::isDirection ( ) const
inherited

Stuff for sanity checks on distance.

template<class T >
bool PLMD::ReferenceConfiguration::parse ( const std::string &  key,
T &  t,
bool  ignore_missing = false 
)
inherited

Return the derivatives of the distance wrt the cell vectors.

This returns false for everything other than DRMSD as these sort of calculations have to be done separately when you use RMSD Parse something from the pdb remarks

void PLMD::ReferenceConfiguration::parseFlag ( const std::string &  key,
bool &  t 
)
inherited

Parse a flag.

template<class T >
bool PLMD::ReferenceConfiguration::parseVector ( const std::string &  key,
std::vector< T > &  t,
bool  ignore_missing = false 
)
inherited

Parse vector from the pdb remarks.

virtual bool PLMD::ReferenceConfiguration::pcaIsEnabledForThisReference ( )
inlinevirtualinherited
void PLMD::ReferenceConfiguration::print ( OFile ofile,
const double &  time,
const double &  weight,
const double &  lunits,
const double &  old_norm 
)
inherited

Print a pdb file containing the reference configuration.

void PLMD::ReferenceConfiguration::print ( OFile ofile,
const std::string &  fmt,
const double &  lunits 
)
inherited
void PLMD::ReferenceArguments::printArguments ( OFile ofile,
const std::string &  fmt 
) const

Print the arguments out.

virtual double PLMD::ReferenceConfiguration::projectAtomicDisplacementOnVector ( const unsigned &  i,
const Matrix< Vector > &  eigv,
const std::vector< Vector > &  pos,
ReferenceValuePack mypack 
) const
inlinevirtualinherited
virtual void PLMD::ReferenceConfiguration::read ( const PDB )
pure virtualinherited
void PLMD::ReferenceArguments::readArgumentsFromPDB ( const PDB pdb)
protected

Read in the atoms from the pdb file.

void PLMD::ReferenceConfiguration::set ( const PDB pdb)
virtualinherited

Set the final number of arguments.

Set the final number of atoms Set the reference configuration using a PDB

void PLMD::ReferenceArguments::setArgumentNames ( const std::vector< std::string > &  arg_vals)

Set the names of the arguments.

void PLMD::ReferenceConfiguration::setNamesAndAtomNumbers ( const std::vector< AtomNumber > &  numbers,
const std::vector< std::string > &  arg 
)
inherited

Set the atom numbers and the argument names.

void PLMD::ReferenceArguments::setReferenceArguments ( )
protected

Set the values of the colvars based on their current instantanous values (used in Analysis)

void PLMD::ReferenceArguments::setReferenceArguments ( const std::vector< double > &  arg_vals,
const std::vector< double > &  sigma 
)

Set the positions of the refernce arguments.

void PLMD::ReferenceConfiguration::setReferenceConfig ( const std::vector< Vector > &  pos,
const std::vector< double > &  arg,
const std::vector< double > &  metric 
)
inherited

Set the reference structure (perhaps should also pass the pbc and align and displace )

virtual void PLMD::ReferenceConfiguration::setupPCAStorage ( ReferenceValuePack mypack)
inlinevirtualinherited
void PLMD::ReferenceConfiguration::setWeight ( const double &  ww)
inlineinherited

Set the weight for this frame.

Member Data Documentation

std::vector<std::string> PLMD::ReferenceArguments::arg_names
private

The names of the arguments.

std::vector<unsigned> PLMD::ReferenceArguments::der_index
private

The indices for setting derivatives.

bool PLMD::ReferenceArguments::hasmetric
protected

Are we calculating a Malanobius distance.

bool PLMD::ReferenceArguments::hasweights
protected

Are we reading weights from input.

Matrix<double> PLMD::ReferenceArguments::metric
private

The N X N matrix we are using to calculate our Malanobius distance.

std::vector<double> PLMD::ReferenceArguments::reference_args
private

The values of the colvars in the reference configuration.

std::vector<double> PLMD::ReferenceArguments::trig_metric
private
std::vector<double> PLMD::ReferenceArguments::weights
private

The weights for normed euclidean distance.


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