29 #ifndef CDPL_SHAPE_PRINCIPALAXESALIGNMENTSTARTGENERATOR_HPP
30 #define CDPL_SHAPE_PRINCIPALAXESALIGNMENTSTARTGENERATOR_HPP
34 #include <boost/random/mersenne_twister.hpp>
62 static constexpr
double DEF_SYMMETRY_THRESHOLD = 0.15;
65 static constexpr std::size_t DEF_NUM_RANDOM_STARTS = 4;
68 static constexpr
double DEF_MAX_RANDOM_TRANSLATION = 2.0;
253 void generateForElementCenters(
const GaussianShapeFunction& func,
unsigned int axes_swap_flags,
bool ref_shape);
254 void generate(
const Math::Vector3D& ctr_trans,
unsigned int axes_swap_flags);
256 template <
typename QE>
259 typedef std::vector<QuaternionTransformation> StartTransformList;
260 typedef boost::random::mt11213b RandomEngine;
264 bool nonColCtrStarts;
266 bool genForAlgdShape;
268 bool genForLargerShape;
269 StartTransformList startTransforms;
272 double maxRandomTrans;
273 std::size_t numRandomStarts;
274 unsigned int refAxesSwapFlags;
275 std::size_t numSubTransforms;
276 RandomEngine randomEngine;
Definition of class CDPL::Shape::GaussianShapeAlignmentStartGenerator.
Definition of various quaternion expression types and operations.
Definition of the preprocessor macro CDPL_SHAPE_API.
#define CDPL_SHAPE_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of vector data types.
Fixed-size vector of dimension N backed by a C-array (no dynamic allocation).
Definition: Vector.hpp:1876
CRTP base class for all quaternion expression types.
Definition: Expression.hpp:142
Abstract base class for generators of starting transformations used to seed Gaussian-shape overlap op...
Definition: GaussianShapeAlignmentStartGenerator.hpp:57
Function representation of a Gaussian shape, used to evaluate the shape's density,...
Definition: GaussianShapeFunction.hpp:61
Generator that produces alignment starting transformations by aligning the principal axes of the alig...
Definition: PrincipalAxesAlignmentStartGenerator.hpp:58
bool genForReferenceShapeCenters() const
Tells whether element-/color-center starts are generated for centers of the reference shape.
bool genForAlignedShapeCenters() const
Tells whether element-/color-center starts are generated for centers of the aligned shape.
void setRandomSeed(unsigned int seed)
Sets the seed used by the random number generator that produces the random starts.
double getSymmetryThreshold()
Returns the currently configured symmetry threshold.
void setNumRandomStarts(std::size_t num_starts)
Sets the number of random starting transformations.
void setSymmetryThreshold(double thresh)
Sets the relative threshold for treating two principal moments as equal.
bool genNonColorCenterStarts() const
Tells whether starting transformations at non-color (shape) element centers are generated.
bool generate(const GaussianShapeFunction &func, unsigned int sym_class)
Generates the starting transformations for the alignment of func against the previously configured re...
const QuaternionTransformation & getStartTransform(std::size_t idx) const
Returns the starting transformation at index idx.
void genNonColorCenterStarts(bool generate)
Enables or disables the generation of starting transformations at non-color (shape) element centers.
std::size_t getNumStartSubTransforms() const
Returns the number of sub-transformations applied per generated starting transformation (e....
void genForAlignedShapeCenters(bool generate)
Specifies whether element-/color-center starts shall be generated for centers of the aligned shape.
bool genColorCenterStarts() const
Tells whether starting transformations at color (pharmacophore) feature centers are generated.
void genForLargerShapeCenters(bool generate)
Specifies whether element-/color-center starts shall be generated for centers of the shape with more ...
void genForReferenceShapeCenters(bool generate)
Specifies whether element-/color-center starts shall be generated for centers of the reference shape.
PrincipalAxesAlignmentStartGenerator()
Constructs the PrincipalAxesAlignmentStartGenerator instance.
std::size_t getNumStartTransforms() const
Returns the total number of starting transformations produced by the last generate() call.
unsigned int setupReference(GaussianShapeFunction &func, Math::Matrix4D &xform) const
Prepares the reference shape function for use by the start generator.
bool genForLargerShapeCenters() const
Tells whether element-/color-center starts are generated for centers of the shape with more elements ...
void genRandomStarts(bool generate)
Enables or disables the generation of random starting transformations.
std::size_t getNumRandomStarts() const
Returns the currently configured number of random starts.
void setReference(const GaussianShapeFunction &func, unsigned int sym_class)
Specifies the reference shape function and its symmetry class.
bool genRandomStarts() const
Tells whether random starting transformations are generated.
double getMaxRandomTranslation() const
Returns the currently configured maximum random translation.
void genColorCenterStarts(bool generate)
Enables or disables the generation of starting transformations at color (pharmacophore) feature cente...
void setMaxRandomTranslation(double max_trans)
Sets the maximum random translation magnitude applied to random starts.
bool genShapeCenterStarts() const
Tells whether a starting transformation at the shape centroid is generated.
void genShapeCenterStarts(bool generate)
Enables or disables the generation of a starting transformation at the shape centroid.
unsigned int setupAligned(GaussianShapeFunction &func, Math::Matrix4D &xform) const
Prepares the aligned shape function for use by the start generator.
CVector< double, 3 > Vector3D
Bounded 3 element vector holding floating point values of type double.
Definition: Vector.hpp:2937
The namespace of the Chemical Data Processing Library.