Abstract base class for calculating the distance from a reference configuration. More...
#include <ReferenceConfiguration.h>
Public Member Functions | |
ReferenceConfiguration (const ReferenceConfigurationOptions &ro) | |
Clear the derivatives. More... | |
virtual | ~ReferenceConfiguration () |
Destructor. More... | |
std::string | getName () const |
Return the name of this metric. More... | |
virtual unsigned | getNumberOfReferencePositions () const |
virtual unsigned | getNumberOfReferenceArguments () const |
virtual void | getAtomRequests (std::vector< AtomNumber > &, bool disable_checks=false) |
Retrieve the atoms that are required for this guy. More... | |
virtual void | getArgumentRequests (std::vector< std::string > &, bool disable_checks=false) |
Retrieve the arguments 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 double | getReferenceArgument (const unsigned &i) const |
Get one of the referene arguments. More... | |
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< double > & | getReferenceArguments () const |
virtual const std::vector< double > & | getReferenceMetric () |
virtual const std::vector< AtomNumber > & | getAbsoluteIndexes () |
These are overwritten in ReferenceArguments and ReferenceAtoms to make frame copying work. More... | |
virtual const std::vector< std::string > & | getArgumentNames () |
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 bool | pcaIsEnabledForThisReference () |
Stuff for pca. More... | |
double | projectDisplacementOnVector (const Direction &mydir, const std::vector< Value *> &vals, const std::vector< double > &arg, ReferenceValuePack &mypack) const |
virtual void | setupPCAStorage (ReferenceValuePack &mypack) |
Stuff to setup pca. More... | |
void | displaceReferenceConfiguration (const double &weight, Direction &dir) |
Move the reference configuration by an ammount specified using a Direction. More... | |
Protected Member Functions | |
void | error (const std::string &msg) |
Derivatives wrt to the arguments. More... | |
Private Attributes | |
std::string | name |
The name of this particular config. More... | |
double | weight |
A weight assigned to this particular frame. More... | |
std::vector< std::string > | line |
A vector containing all the remarks from the pdb input. More... | |
std::vector< AtomNumber > | fake_atom_numbers |
This is used to store the values of arguments. More... | |
std::vector< std::string > | fake_arg_names |
std::vector< Vector > | fake_refatoms |
These are use by the distance function above. More... | |
std::vector< double > | fake_refargs |
std::vector< double > | fake_metric |
Friends | |
class | SingleDomainRMSD |
double | distance (const Pbc &pbc, const std::vector< Value *> &vals, ReferenceConfiguration *, ReferenceConfiguration *, const bool &squared) |
Abstract base class for calculating the distance from a reference configuration.
A reference configuration can either have a particular set of atoms in a particular given configuration or it can be that a particular set of colvars have a particular set of values. It could also be a combination of both. To allow all the posible permutations and in order make it easy to add new ways of calculating the distance we have implemented this using polymorphism and multiple inheritance. The following provides information on how to implement a new method for calculating the distance between a pair of configurations
|
explicit |
Clear the derivatives.
|
virtual |
Destructor.
|
pure virtual |
Calculate the distance from the reference configuration.
Implemented in PLMD::MultiDomainRMSD, PLMD::ArgumentOnlyDistance, PLMD::SingleDomainRMSD, 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 |
Calculate the distance from the reference configuration.
void PLMD::ReferenceConfiguration::checkRead | ( | ) |
Check that all the remarks in the pdb have been read in.
void PLMD::ReferenceConfiguration::copyDerivatives | ( | const ReferenceConfiguration * | ) |
Copy derivatives from one frame to this frame.
void PLMD::ReferenceConfiguration::displaceReferenceConfiguration | ( | const double & | weight, |
Direction & | dir | ||
) |
Move the reference configuration by an ammount specified using a Direction.
|
protected |
Derivatives wrt to the arguments.
The virial contribution has to be stored Derivatives wrt to the atoms Crash with an error
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 |
Extract a Direction giving you the displacement from some position.
|
inlinevirtual |
These are overwritten in ReferenceArguments and ReferenceAtoms to make frame copying work.
Reimplemented in PLMD::ReferenceAtoms.
|
inlinevirtual |
Reimplemented in PLMD::ReferenceArguments.
|
inlinevirtual |
Retrieve the arguments that are required for this guy.
Reimplemented in PLMD::ReferenceArguments.
|
inlinevirtual |
Retrieve the atoms that are required for this guy.
Reimplemented in PLMD::ReferenceAtoms.
std::string PLMD::ReferenceConfiguration::getName | ( | ) | const |
Return the name of this metric.
|
inlinevirtual |
Reimplemented in PLMD::ReferenceArguments.
|
inlinevirtual |
Reimplemented in PLMD::ReferenceAtoms.
|
inlinevirtual |
Get one of the referene arguments.
Reimplemented in PLMD::ReferenceArguments.
|
inlinevirtual |
Reimplemented in PLMD::ReferenceArguments.
|
inlinevirtual |
Reimplemented in PLMD::ReferenceArguments.
|
inlinevirtual |
These are overwritten in ReferenceArguments and ReferenceAtoms but are required here to make PLMD::distance work.
Reimplemented in PLMD::ReferenceAtoms.
|
inline |
Return the weight for this frame.
bool PLMD::ReferenceConfiguration::parse | ( | const std::string & | key, |
T & | t, | ||
bool | ignore_missing = false |
||
) |
void PLMD::ReferenceConfiguration::parseFlag | ( | const std::string & | key, |
bool & | t | ||
) |
Parse a flag.
bool PLMD::ReferenceConfiguration::parseVector | ( | const std::string & | key, |
std::vector< T > & | t, | ||
bool | ignore_missing = false |
||
) |
Parse vector from the pdb remarks.
|
inlinevirtual |
Stuff for pca.
Reimplemented in PLMD::MultiDomainRMSD, PLMD::ArgumentOnlyDistance, PLMD::OptimalRMSD, and PLMD::SimpleRMSD.
void PLMD::ReferenceConfiguration::print | ( | OFile & | ofile, |
const double & | time, | ||
const double & | weight, | ||
const double & | lunits, | ||
const double & | old_norm | ||
) |
Print a pdb file containing the reference configuration.
void PLMD::ReferenceConfiguration::print | ( | OFile & | ofile, |
const std::string & | fmt, | ||
const double & | lunits | ||
) |
double PLMD::ReferenceConfiguration::projectDisplacementOnVector | ( | const Direction & | mydir, |
const std::vector< Value *> & | vals, | ||
const std::vector< double > & | arg, | ||
ReferenceValuePack & | mypack | ||
) | const |
|
pure virtual |
Do all local business for setting the configuration.
Implemented in PLMD::DRMSD, PLMD::MultiDomainRMSD, PLMD::ArgumentOnlyDistance, PLMD::Direction, PLMD::OptimalRMSD, PLMD::FakeFrame, PLMD::IntermolecularDRMSD, PLMD::IntramolecularDRMSD, PLMD::SimpleRMSD, and PLMD::DotProductDistance.
|
virtual |
Set the final number of arguments.
Set the final number of atoms Set the reference configuration using a PDB
void PLMD::ReferenceConfiguration::setNamesAndAtomNumbers | ( | const std::vector< AtomNumber > & | numbers, |
const std::vector< std::string > & | arg | ||
) |
Set the atom numbers and the argument names.
void PLMD::ReferenceConfiguration::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 )
|
inlinevirtual |
Stuff to setup pca.
Reimplemented in PLMD::MultiDomainRMSD, PLMD::ArgumentOnlyDistance, PLMD::OptimalRMSD, and PLMD::SimpleRMSD.
|
inline |
Set the weight for this frame.
|
friend |
|
friend |
|
private |
|
private |
This is used to store the values of arguments.
These are used to do fake things when we copy frames
|
private |
|
private |
|
private |
These are use by the distance function above.
|
private |
A vector containing all the remarks from the pdb input.
|
private |
The name of this particular config.
|
private |
A weight assigned to this particular frame.
Hosted by GitHub | 1.8.14 |