Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | Friends | 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)
 
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...
 
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 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...
 
void copyDerivatives (const ReferenceConfiguration *)
 Parse something from the pdb remarks Copy derivatives from one frame to this frame. More...
 
void displaceReferenceArguments (const double &weight, const std::vector< double > &displace)
 Displace the positions of the reference atoms. More...
 
void displaceReferenceConfiguration (const double &weight, Direction &dir)
 Move the reference configuration by an ammount specified using a Direction. More...
 
virtual void extractArgumentDisplacement (const std::vector< Value *> &vals, const std::vector< double > &arg, std::vector< double > &dirout) const
 Extract the displacement from a position in a space. More...
 
void extractDisplacementVector (const std::vector< Vector > &pos, const std::vector< Value *> &vals, const std::vector< double > &arg, const bool &nflag, Direction &mydir) const
 Extract a Direction giving you the displacement from some position. More...
 
virtual const std::vector< AtomNumber > & getAbsoluteIndexes ()
 These are overwritten in ReferenceArguments and ReferenceAtoms to make frame copying work. More...
 
const std::vector< std::string > & getArgumentNames () override
 Return names. More...
 
void getArgumentRequests (std::vector< std::string > &, bool disable_checks=false) override
 Get the arguments required. More...
 
virtual void getAtomRequests (std::vector< AtomNumber > &, bool disable_checks=false)
 Retrieve the atoms that are required for this guy. More...
 
std::string getName () const
 Return the name of this metric. More...
 
unsigned getNumberOfReferenceArguments () const override
 Get the number of reference arguments. More...
 
virtual unsigned getNumberOfReferencePositions () const
 
double getReferenceArgument (const unsigned &i) const override
 Get the value of the ith reference argument. More...
 
const std::vector< double > & getReferenceArguments () const override
 Return all the reference arguments. More...
 
const std::vector< double > & getReferenceMetric () override
 
virtual const std::vector< Vector > & getReferencePositions () const
 These are overwritten in ReferenceArguments and ReferenceAtoms but are required here to make PLMD::distance work. More...
 
void moveReferenceArguments (const std::vector< double > &arg_vals)
 Set the positions of the reference arguments. More...
 
virtual bool pcaIsEnabledForThisReference ()
 Stuff for pca. More...
 
double projectArgDisplacementOnVector (const std::vector< double > &eigv, const std::vector< Value *> &vals, const std::vector< double > &arg, ReferenceValuePack &mypack) const
 Project the displacement of the arguments on a vector. More...
 
double projectDisplacementOnVector (const Direction &mydir, const std::vector< Value *> &vals, const std::vector< double > &arg, ReferenceValuePack &mypack) const
 
virtual void read (const PDB &)=0
 Do all local business for setting the configuration. More...
 
void setReferenceArguments (const std::vector< double > &arg_vals, const std::vector< double > &sigma)
 Set the positions of the refernce arguments. More...
 
virtual void setupPCAStorage (ReferenceValuePack &mypack)
 Stuff to setup pca. More...
 

Protected Member Functions

void error (const std::string &msg)
 Crash with an error. More...
 
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...
 

Protected Attributes

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

Private Attributes

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

Friends

class Direction
 
class ReferenceConfiguration
 

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

◆ ReferenceArguments()

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

Member Function Documentation

◆ calc()

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::ArgumentOnlyDistance, PLMD::SingleDomainRMSD, PLMD::Direction, and PLMD::FakeFrame.

◆ calculate()

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.

◆ calculateArgumentDistance()

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.

◆ copyDerivatives()

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

Parse something from the pdb remarks Copy derivatives from one frame to this frame.

◆ displaceReferenceArguments()

void PLMD::ReferenceArguments::displaceReferenceArguments ( const double &  weight,
const std::vector< double > &  displace 
)

Displace the positions of the reference atoms.

◆ displaceReferenceConfiguration()

void PLMD::ReferenceConfiguration::displaceReferenceConfiguration ( const double &  weight,
Direction dir 
)
inherited

Move the reference configuration by an ammount specified using a Direction.

◆ error()

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

Crash with an error.

◆ extractArgumentDisplacement()

void PLMD::ReferenceArguments::extractArgumentDisplacement ( const std::vector< Value *> &  vals,
const std::vector< double > &  arg,
std::vector< double > &  dirout 
) const
virtual

Extract the displacement from a position in a space.

Reimplemented in PLMD::Direction.

◆ extractDisplacementVector()

void PLMD::ReferenceConfiguration::extractDisplacementVector ( const std::vector< Vector > &  pos,
const std::vector< Value *> &  vals,
const std::vector< double > &  arg,
const bool &  nflag,
Direction mydir 
) const
inherited

Extract a Direction giving you the displacement from some position.

◆ getAbsoluteIndexes()

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

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

Reimplemented in PLMD::ReferenceAtoms.

◆ getArgumentNames()

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

Return names.

Reimplemented from PLMD::ReferenceConfiguration.

◆ getArgumentRequests()

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

Get the arguments required.

Reimplemented from PLMD::ReferenceConfiguration.

◆ getAtomRequests()

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.

◆ getName()

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

Return the name of this metric.

◆ getNumberOfReferenceArguments()

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

Get the number of reference arguments.

Reimplemented from PLMD::ReferenceConfiguration.

◆ getNumberOfReferencePositions()

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

Reimplemented in PLMD::ReferenceAtoms.

◆ getReferenceArgument()

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

Get the value of the ith reference argument.

Reimplemented from PLMD::ReferenceConfiguration.

◆ getReferenceArguments()

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

Return all the reference arguments.

Reimplemented from PLMD::ReferenceConfiguration.

◆ getReferenceMetric()

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

Reimplemented from PLMD::ReferenceConfiguration.

◆ getReferencePositions()

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.

◆ moveReferenceArguments()

void PLMD::ReferenceArguments::moveReferenceArguments ( const std::vector< double > &  arg_vals)

Set the positions of the reference arguments.

◆ pcaIsEnabledForThisReference()

virtual bool PLMD::ReferenceConfiguration::pcaIsEnabledForThisReference ( )
inlinevirtualinherited

◆ projectArgDisplacementOnVector()

double PLMD::ReferenceArguments::projectArgDisplacementOnVector ( const std::vector< double > &  eigv,
const std::vector< Value *> &  vals,
const std::vector< double > &  arg,
ReferenceValuePack mypack 
) const

Project the displacement of the arguments on a vector.

◆ projectDisplacementOnVector()

double PLMD::ReferenceConfiguration::projectDisplacementOnVector ( const Direction mydir,
const std::vector< Value *> &  vals,
const std::vector< double > &  arg,
ReferenceValuePack mypack 
) const
inherited

◆ read()

virtual void PLMD::ReferenceConfiguration::read ( const PDB )
pure virtualinherited

◆ readArgumentsFromPDB()

void PLMD::ReferenceArguments::readArgumentsFromPDB ( const PDB pdb)
protected

Read in the atoms from the pdb file.

◆ setReferenceArguments() [1/2]

void PLMD::ReferenceArguments::setReferenceArguments ( )
protected

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

◆ setReferenceArguments() [2/2]

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

Set the positions of the refernce arguments.

◆ setupPCAStorage()

virtual void PLMD::ReferenceConfiguration::setupPCAStorage ( ReferenceValuePack mypack)
inlinevirtualinherited

Friends And Related Function Documentation

◆ Direction

friend class Direction
friend

◆ ReferenceConfiguration

friend class ReferenceConfiguration
friend

Member Data Documentation

◆ arg_der_index

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

The indices for setting derivatives.

◆ arg_names

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

The names of the arguments.

◆ hasmetric

bool PLMD::ReferenceArguments::hasmetric
protected

Are we calculating a Malanobius distance.

◆ hasweights

bool PLMD::ReferenceArguments::hasweights
protected

Are we reading weights from input.

◆ metric

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

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

◆ reference_args

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

The values of the colvars in the reference configuration.

◆ sqrtweight

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

◆ trig_metric

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

◆ weights

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

The weights for normed euclidean distance.


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