29 #ifndef CDPL_SHAPE_FASTGAUSSIANSHAPEOVERLAPFUNCTION_HPP
30 #define CDPL_SHAPE_FASTGAUSSIANSHAPEOVERLAPFUNCTION_HPP
44 class GaussianProductList;
64 static constexpr
double DEF_RADIUS_SCALING_FACTOR = 1.4;
69 typedef std::shared_ptr<FastGaussianShapeOverlapFunction>
SharedPointer;
225 bool checkShapeFuncsNotNull()
const;
227 double calcOverlap(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
229 double calcOverlapExact(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
231 double calcOverlapFastExp(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
233 double calcOverlapProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
235 double calcOverlapFastExpProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
238 double calcOverlap(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
240 double calcOverlapExact(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
242 double calcOverlapFastExp(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
244 double calcOverlapProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
246 double calcOverlapFastExpProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
249 double calcOverlapGradient(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
251 double calcOverlapGradientExact(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
253 double calcOverlapGradientFastExp(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
255 double calcOverlapGradientProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
257 double calcOverlapGradientFastExpProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
266 double radScalingFact;
Definition of class CDPL::Shape::GaussianShapeOverlapFunction.
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.
Shape::GaussianShapeOverlapFunction implementation that uses two approximation techniques to trade so...
Definition: FastGaussianShapeOverlapFunction.hpp:58
void setRadiusScalingFactor(double factor)
Sets the scaling factor applied to Van der Waals radii during the proximity check.
void proximityOptimization(bool enable)
Enables or disables the proximity check pruning of Gaussian product pair contributions.
const ColorFilterFunction & getColorFilterFunction() const
Returns the currently configured color-filter function.
void setShapeFunction(const GaussianShapeFunction &func, bool is_ref)
Specifies the reference or aligned shape function used by the overlap evaluation.
FastGaussianShapeOverlapFunction & operator=(const FastGaussianShapeOverlapFunction &func)
Copy assignment operator.
double calcOverlap(const Math::Vector3DArray &coords) const
Calculates the shape-only overlap with the aligned shape element positions taken from coords.
double calcOverlap() const
Calculates the shape-only overlap of the reference and aligned shape functions.
void fastExpFunction(bool enable)
Enables or disables the use of a fast approximation for the exponential function.
~FastGaussianShapeOverlapFunction()
Destructor.
bool proximityOptimization() const
Tells whether the proximity check pruning is enabled.
void setColorFilterFunction(const ColorFilterFunction &func)
Specifies the function used to filter color features by type.
const ColorMatchFunction & getColorMatchFunction() const
Returns the currently configured color-match function.
const GaussianShapeFunction * getShapeFunction(bool ref) const
Returns the reference or aligned shape function.
double calcOverlapGradient(const Math::Vector3DArray &coords, Math::Vector3DArray &grad) const
Calculates the shape overlap with the aligned shape element positions taken from coords and returns t...
FastGaussianShapeOverlapFunction(const GaussianShapeFunction &ref_shape_func, const GaussianShapeFunction &ovl_shape_func)
Constructs the FastGaussianShapeOverlapFunction instance with the given reference and aligned shape f...
double calcSelfOverlap(bool ref) const
Calculates the shape-only self-overlap of the reference or aligned shape function.
void setColorMatchFunction(const ColorMatchFunction &func)
Specifies the function used to decide whether two color features match.
double getRadiusScalingFactor() const
Returns the currently configured radius scaling factor.
bool fastExpFunction() const
Tells whether the fast exponential approximation is enabled.
double calcColorOverlap() const
Calculates the color overlap of the reference and aligned shape functions.
double calcColorOverlap(const Math::Vector3DArray &coords) const
Calculates the color overlap with the aligned shape element positions taken from coords.
std::shared_ptr< FastGaussianShapeOverlapFunction > SharedPointer
A reference-counted smart pointer [SHPTR] for dynamically allocated FastGaussianShapeOverlapFunction ...
Definition: FastGaussianShapeOverlapFunction.hpp:69
FastGaussianShapeOverlapFunction(const FastGaussianShapeOverlapFunction &func)
Constructs a copy of the FastGaussianShapeOverlapFunction instance func.
double calcColorSelfOverlap(bool ref) const
Calculates the color self-overlap of the reference or aligned shape function.
FastGaussianShapeOverlapFunction()
Constructs the FastGaussianShapeOverlapFunction instance without associated shape functions.
Function representation of a Gaussian shape, used to evaluate the shape's density,...
Definition: GaussianShapeFunction.hpp:61
Abstract base class for functions evaluating the overlap between two Gaussian shape functions.
Definition: GaussianShapeOverlapFunction.hpp:56
std::function< bool(std::size_t)> ColorFilterFunction
Type of the function used to filter color (pharmacophore) features by type.
Definition: GaussianShapeOverlapFunction.hpp:67
std::function< bool(std::size_t, std::size_t)> ColorMatchFunction
Type of the function used to decide whether two color features match.
Definition: GaussianShapeOverlapFunction.hpp:72
VectorArray< Vector3D > Vector3DArray
Array storing vectors of type Math::Vector3D.
Definition: VectorArray.hpp:87
The namespace of the Chemical Data Processing Library.