File QuaternionFit.h¶
- Copyright
This code is licensed under the 3-clause BSD license.
Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.
See LICENSE.txt for details.
-
namespace
Scine
This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.
This header contains alias definitions defining which classes to use for the different degrees of derivatives.
-
namespace
Utils
-
class
QuaternionFit
- #include <QuaternionFit.h>
Compares two sets of positions and calculates translation and rotation to go from one to the other.
References:
https://arxiv.org/pdf/physics/0506177.pdf (arXiv:physics/0506177v3)
Public Functions
-
template<typename
DerivedA
, typenameDerivedB
>QuaternionFit
(const Eigen::DenseBase<DerivedA> &refMat, const Eigen::DenseBase<DerivedB> &fitMat, const Eigen::VectorXd &weights, bool improperRotationIsAllowed = false) Construct a new Quaternion Fit object.
- Parameters
refMat
: The positions of the reference data.fitMat
: The positions of the data to be fitted.weights
: The individual weights for each point in the set of data.improperRotationIsAllowed
: If true allows the algorithm to invert the geometry to generate a better fit.
-
template<typename
DerivedA
, typenameDerivedB
>QuaternionFit
(const Eigen::DenseBase<DerivedA> &refMat, const Eigen::DenseBase<DerivedB> &fitMat, bool improperRotationIsAllowed = false) Construct a new Quaternion Fit object.
- Parameters
Rref
: The positions of the reference data.Rfit
: The positions of the data to be fitted.improperRotationIsAllowed
: If true allows the algorithm to invert the geometry to generate a better fit.
-
template<typename
DerivedA
, typenameDerivedB
>QuaternionFit
(const Eigen::DenseBase<DerivedA> &refMat, const Eigen::DenseBase<DerivedB> &fitMat, const ElementTypeCollection &elements, bool improperRotationIsAllowed = false) Construct a new Quaternion Fit object.
If this contructor is used, the element masses will be used as weights for the fit.
- Parameters
Rref
: The atom positions of the reference geometry.Rfit
: The atom positions of the geometry to be fitted.elements
: The elements for the given atoms coordinates, these will be used as weights.improperRotationIsAllowed
: If true allows the algorithm to invert the geometry to generate a better fit.
-
Eigen::Matrix3d
getRotationMatrix
() const Getter for the reverse of the applied rotation.
- Return
Eigen::Matrix3d The rotation from the reference structure to the second structure before fitting.
-
Eigen::Vector3d
getTransVector
() const Getter for the reverse of the applied translation.
- Return
Eigen::Vector3d The translation from the reference structure to the second structure before fitting.
-
Eigen::Matrix<double, Eigen::Dynamic, 3, Eigen::RowMajor>
getFittedData
() const Getter for the fitted data as Eigen3 object.
- Return
Eigen::Matrix3d The fitted data.
-
double
getRotRMSD
() const Getter for the RMSD not using any weights that might be stored.
- Return
double The RMSD.
-
double
getRMSD
() const Getter for the RMSD due to differences in rotation only.
- Return
double The RMSD.
-
double
getWeightedRMSD
(const Eigen::VectorXd &weights) const Getter for the RMSD using the given weights.
- Return
double The RMSD.
- Parameters
weights
: The individaul weights for each point in the set of data.
-
double
getWeightedRMSD
() const Getter for the RMSD using the internal weights given/implied in the constructor.
- Return
double The RMSD.
Private Functions
-
Eigen::VectorXd
makeWeightsVector
(const ElementTypeCollection &elements)¶
-
void
align
()¶
-
class
-
namespace