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

#include <ReferenceAtoms.h>

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

Public Member Functions

 ReferenceAtoms (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...
 
void copyDerivatives (const ReferenceConfiguration *)
 Parse something from the pdb remarks Copy derivatives from one frame to this frame. More...
 
void displaceReferenceAtoms (const double &weight, const std::vector< Vector > &dir)
 Displace the positions of the reference atoms a bit. More...
 
void displaceReferenceConfiguration (const double &weight, Direction &dir)
 Move the reference configuration by an amount specified using a Direction. More...
 
virtual void extractAtomicDisplacement (const std::vector< Vector > &pos, std::vector< Vector > &direction) const
 Extract a displacement from a position in 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...
 
const std::vector< AtomNumber > & getAbsoluteIndexes () override
 Return all atom indexes. More...
 
const std::vector< double > & getAlign () const
 Get the vector of alignment weights. More...
 
virtual const std::vector< std::string > & getArgumentNames ()
 
virtual void getArgumentRequests (std::vector< std::string > &, bool disable_checks=false)
 Retrieve the arguments that are required for this guy. More...
 
unsigned getAtomIndex (const unsigned &) const
 This allows us to use a single pos array with RMSD objects using different atom indexes. More...
 
void getAtomRequests (std::vector< AtomNumber > &, bool disable_checks=false) override
 Get the atoms required (additional checks are required when we have multiple domains) More...
 
const std::vector< double > & getDisplace () const
 Get the vector of displacement weights. More...
 
std::string getName () const
 Return the name of this metric. More...
 
unsigned getNumberOfAtoms () const
 This returns how many atoms there should be. More...
 
virtual unsigned getNumberOfReferenceArguments () const
 
unsigned getNumberOfReferencePositions () const override
 This returns the number of reference atom positions. More...
 
virtual double getReferenceArgument (const unsigned &i) const
 Get one of the referene arguments. More...
 
virtual const std::vector< double > & getReferenceArguments () const
 
virtual const std::vector< double > & getReferenceMetric ()
 
const std::vector< Vector > & getReferencePositions () const override
 Get the reference positions. More...
 
virtual bool pcaIsEnabledForThisReference ()
 Stuff for pca. More...
 
virtual double projectAtomicDisplacementOnVector (const bool &normalized, const std::vector< Vector > &eigv, ReferenceValuePack &mypack) const
 Project the displacement 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...
 
virtual void setReferenceAtoms (const std::vector< Vector > &conf, const std::vector< double > &align_in, const std::vector< double > &displace_in)=0
 Set the positions of the reference atoms. 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...
 
Vector getReferencePosition (const unsigned &iatom) const
 Get the position of the ith atom. More...
 
bool parseAtomList (const std::string &, std::vector< unsigned > &)
 Read a list of atoms from the pdb input file. More...
 
void readAtomsFromPDB (const PDB &, const bool allowblocks=false)
 Read in the atoms from the pdb file. More...
 
void setAtomIndices (const std::vector< AtomNumber > &atomnumbers)
 Add atom indices to list. More...
 
void singleDomainRequests (std::vector< AtomNumber > &, bool disable_checks)
 Add derivatives to iatom th atom in list. More...
 

Private Attributes

std::vector< double > align
 The atoms to be used to align the instantaneous atomic positions to the reference configuration. More...
 
std::vector< unsigned > atom_der_index
 The indeces for setting derivatives. More...
 
bool checks_were_disabled
 This flag tells us if the user has disabled checking of the input in order to do fancy paths with weird inputs. More...
 
std::vector< double > displace
 The atoms to be used to calculate the distance the atoms have moved from the reference configuration. More...
 
std::vector< std::string > fake_arg_names
 
std::vector< AtomNumberfake_atom_numbers
 These are used to do fake things when we copy frames. More...
 
std::vector< double > fake_metric
 
std::vector< double > fake_refargs
 
std::vector< Vectorfake_refatoms
 These are use by the distance function above. More...
 
std::vector< AtomNumberindices
 The indices of the atoms in the pdb file. More...
 
std::vector< std::string > line
 A vector containing all the remarks from the pdb input. More...
 
std::string name
 The name of this particular config. More...
 
std::vector< Vectorreference_atoms
 The positions of the atoms in the reference configuration. More...
 

Friends

class Direction
 
class MultiDomainRMSD
 
class ReferenceConfiguration
 
class SingleDomainRMSD
 

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 atomic positions. This class and PLMD::ReferenceArguments mirror the functionalities in and PLMD::ActionAtomistic and PLMD::ActionWithArguments respectively but for distances.

Constructor & Destructor Documentation

◆ ReferenceAtoms()

PLMD::ReferenceAtoms::ReferenceAtoms ( 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::Direction, PLMD::MultiDomainRMSD, PLMD::ArgumentOnlyDistance, PLMD::SingleDomainRMSD, 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.

◆ copyDerivatives()

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

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

◆ displaceReferenceAtoms()

void PLMD::ReferenceAtoms::displaceReferenceAtoms ( const double &  weight,
const std::vector< Vector > &  dir 
)

Displace the positions of the reference atoms a bit.

◆ displaceReferenceConfiguration()

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

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

◆ error()

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

Crash with an error.

◆ extractAtomicDisplacement()

virtual void PLMD::ReferenceAtoms::extractAtomicDisplacement ( const std::vector< Vector > &  pos,
std::vector< Vector > &  direction 
) const
inlinevirtual

Extract a displacement from a position in space.

Reimplemented in PLMD::Direction, PLMD::MultiDomainRMSD, PLMD::OptimalRMSD, and PLMD::SimpleRMSD.

◆ 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::ReferenceAtoms::getAbsoluteIndexes ( )
inlineoverridevirtual

Return all atom indexes.

Reimplemented from PLMD::ReferenceConfiguration.

◆ getAlign()

const std::vector< double > & PLMD::ReferenceAtoms::getAlign ( ) const
inline

Get the vector of alignment weights.

◆ getArgumentNames()

const std::vector< std::string > & PLMD::ReferenceConfiguration::getArgumentNames ( )
inlinevirtualinherited

Reimplemented in PLMD::ReferenceArguments.

◆ getArgumentRequests()

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

Retrieve the arguments that are required for this guy.

Reimplemented in PLMD::ReferenceArguments.

◆ getAtomIndex()

unsigned PLMD::ReferenceAtoms::getAtomIndex ( const unsigned &  iatom) const
inline

This allows us to use a single pos array with RMSD objects using different atom indexes.

◆ getAtomRequests()

void PLMD::ReferenceAtoms::getAtomRequests ( std::vector< AtomNumber > &  numbers,
bool  disable_checks = false 
)
overridevirtual

Get the atoms required (additional checks are required when we have multiple domains)

Reimplemented from PLMD::ReferenceConfiguration.

◆ getDisplace()

const std::vector< double > & PLMD::ReferenceAtoms::getDisplace ( ) const
inline

Get the vector of displacement weights.

◆ getName()

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

Return the name of this metric.

◆ getNumberOfAtoms()

unsigned PLMD::ReferenceAtoms::getNumberOfAtoms ( ) const
inline

This returns how many atoms there should be.

◆ getNumberOfReferenceArguments()

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

Reimplemented in PLMD::ReferenceArguments.

◆ getNumberOfReferencePositions()

unsigned PLMD::ReferenceAtoms::getNumberOfReferencePositions ( ) const
inlineoverridevirtual

This returns the number of reference atom positions.

Reimplemented from PLMD::ReferenceConfiguration.

◆ getReferenceArgument()

virtual double PLMD::ReferenceConfiguration::getReferenceArgument ( const unsigned &  i) const
inlinevirtualinherited

Get one of the referene arguments.

Reimplemented in PLMD::ReferenceArguments.

◆ getReferenceArguments()

const std::vector< double > & PLMD::ReferenceConfiguration::getReferenceArguments ( ) const
inlinevirtualinherited

Reimplemented in PLMD::ReferenceArguments.

◆ getReferenceMetric()

const std::vector< double > & PLMD::ReferenceConfiguration::getReferenceMetric ( )
inlinevirtualinherited

Reimplemented in PLMD::ReferenceArguments.

◆ getReferencePosition()

Vector PLMD::ReferenceAtoms::getReferencePosition ( const unsigned &  iatom) const
inlineprotected

Get the position of the ith atom.

◆ getReferencePositions()

const std::vector< Vector > & PLMD::ReferenceAtoms::getReferencePositions ( ) const
inlineoverridevirtual

Get the reference positions.

Reimplemented from PLMD::ReferenceConfiguration.

◆ parseAtomList()

bool PLMD::ReferenceAtoms::parseAtomList ( const std::string &  ,
std::vector< unsigned > &   
)
protected

Read a list of atoms from the pdb input file.

◆ pcaIsEnabledForThisReference()

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

◆ projectAtomicDisplacementOnVector()

virtual double PLMD::ReferenceAtoms::projectAtomicDisplacementOnVector ( const bool &  normalized,
const std::vector< Vector > &  eigv,
ReferenceValuePack mypack 
) const
inlinevirtual

Project the displacement on a vector.

Reimplemented in PLMD::MultiDomainRMSD, PLMD::OptimalRMSD, and PLMD::SimpleRMSD.

◆ 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

◆ readAtomsFromPDB()

void PLMD::ReferenceAtoms::readAtomsFromPDB ( const PDB pdb,
const bool  allowblocks = false 
)
protected

Read in the atoms from the pdb file.

◆ setAtomIndices()

void PLMD::ReferenceAtoms::setAtomIndices ( const std::vector< AtomNumber > &  atomnumbers)
protected

Add atom indices to list.

◆ setReferenceAtoms()

virtual void PLMD::ReferenceAtoms::setReferenceAtoms ( const std::vector< Vector > &  conf,
const std::vector< double > &  align_in,
const std::vector< double > &  displace_in 
)
pure virtual

Set the positions of the reference atoms.

Implemented in PLMD::DRMSD, PLMD::MultiDomainRMSD, PLMD::Direction, and PLMD::SingleDomainRMSD.

◆ setupPCAStorage()

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

◆ singleDomainRequests()

void PLMD::ReferenceAtoms::singleDomainRequests ( std::vector< AtomNumber > &  numbers,
bool  disable_checks 
)
protected

Add derivatives to iatom th atom in list.

Get the atomic derivatives on the ith atom in the list Add derivatives to the viral This does the checks that are always required

Friends And Related Function Documentation

◆ Direction

friend class Direction
friend

◆ MultiDomainRMSD

friend class MultiDomainRMSD
friend

◆ ReferenceConfiguration

friend class ReferenceConfiguration
friend

◆ SingleDomainRMSD

friend class SingleDomainRMSD
friend

Member Data Documentation

◆ align

std::vector<double> PLMD::ReferenceAtoms::align
private

The atoms to be used to align the instantaneous atomic positions to the reference configuration.

◆ atom_der_index

std::vector<unsigned> PLMD::ReferenceAtoms::atom_der_index
private

The indeces for setting derivatives.

◆ checks_were_disabled

bool PLMD::ReferenceAtoms::checks_were_disabled
private

This flag tells us if the user has disabled checking of the input in order to do fancy paths with weird inputs.

◆ displace

std::vector<double> PLMD::ReferenceAtoms::displace
private

The atoms to be used to calculate the distance the atoms have moved from the reference configuration.

◆ fake_arg_names

std::vector<std::string> PLMD::ReferenceConfiguration::fake_arg_names
privateinherited

◆ fake_atom_numbers

std::vector<AtomNumber> PLMD::ReferenceConfiguration::fake_atom_numbers
privateinherited

These are used to do fake things when we copy frames.

◆ fake_metric

std::vector<double> PLMD::ReferenceConfiguration::fake_metric
privateinherited

◆ fake_refargs

std::vector<double> PLMD::ReferenceConfiguration::fake_refargs
privateinherited

◆ fake_refatoms

std::vector<Vector> PLMD::ReferenceConfiguration::fake_refatoms
privateinherited

These are use by the distance function above.

◆ indices

std::vector<AtomNumber> PLMD::ReferenceAtoms::indices
private

The indices of the atoms in the pdb file.

◆ line

std::vector<std::string> PLMD::ReferenceConfiguration::line
privateinherited

A vector containing all the remarks from the pdb input.

◆ name

std::string PLMD::ReferenceConfiguration::name
privateinherited

The name of this particular config.

◆ reference_atoms

std::vector<Vector> PLMD::ReferenceAtoms::reference_atoms
private

The positions of the atoms in the reference configuration.


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