29 #ifndef CDPL_SHAPE_FASTGAUSSIANSHAPEOVERLAPFUNCTION_HPP
30 #define CDPL_SHAPE_FASTGAUSSIANSHAPEOVERLAPFUNCTION_HPP
44 class GaussianProductList;
62 static constexpr
double DEF_RADIUS_SCALING_FACTOR = 1.4;
65 typedef std::shared_ptr<FastGaussianShapeOverlapFunction>
SharedPointer;
221 bool checkShapeFuncsNotNull()
const;
223 double calcOverlap(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
225 double calcOverlapExact(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
227 double calcOverlapFastExp(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
229 double calcOverlapProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
231 double calcOverlapFastExpProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
234 double calcOverlap(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
236 double calcOverlapExact(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
238 double calcOverlapFastExp(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
240 double calcOverlapProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
242 double calcOverlapFastExpProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
245 double calcOverlapGradient(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
247 double calcOverlapGradientExact(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
249 double calcOverlapGradientFastExp(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
251 double calcOverlapGradientProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
253 double calcOverlapGradientFastExpProxCheck(
const GaussianProductList* ref_prod_list,
const GaussianProductList* ovl_prod_list,
262 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:65
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:63
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:66
VectorArray< Vector3D > Vector3DArray
Array storing vectors of type Math::Vector3D.
Definition: VectorArray.hpp:85
The namespace of the Chemical Data Processing Library.