Chemical Data Processing Library C++ API - Version 1.4.0
MoleculeRDFDescriptorCalculator.hpp
Go to the documentation of this file.
1 /*
2  * MoleculeRDFDescriptorCalculator.hpp
3  *
4  * This file is part of the Chemical Data Processing Toolkit
5  *
6  * Copyright (C) 2003 Thomas Seidel <thomas.seidel@univie.ac.at>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this library; see the file COPYING. If not, write to
20  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23 
29 #ifndef CDPL_DESCR_MOLECULERDFDESCRIPTORCALCULATOR_HPP
30 #define CDPL_DESCR_MOLECULERDFDESCRIPTORCALCULATOR_HPP
31 
32 #include <functional>
33 
34 #include "CDPL/Descr/APIPrefix.hpp"
36 #include "CDPL/Math/Vector.hpp"
37 
38 
39 namespace CDPL
40 {
41 
42  namespace Chem
43  {
44 
45  class Atom;
46  class AtomContainer;
47  } // namespace Chem
48 
49  namespace Descr
50  {
51 
71  {
72 
74 
75  public:
80 
86  typedef std::function<double(const Chem::Atom&, const Chem::Atom&, unsigned int)> AtomPairWeightFunction;
87 
92 
99 
106  void setSmoothingFactor(double factor);
107 
113  double getSmoothingFactor() const;
114 
120  void setScalingFactor(double factor);
121 
126  double getScalingFactor() const;
127 
133  void setStartRadius(double start_radius);
134 
139  double getStartRadius() const;
140 
146  void setRadiusIncrement(double radius_inc);
147 
152  double getRadiusIncrement() const;
153 
163  void setNumSteps(std::size_t num_steps);
164 
169  std::size_t getNumSteps() const;
170 
176 
182 
189 
195 
201  void calculate(const Chem::AtomContainer& cntnr, Math::DVector& descr);
202 
203  private:
204  RDFCodeCalculator rdfCalculator;
205  AtomPairWeightFunction weightFunc;
206  };
207  } // namespace Descr
208 } // namespace CDPL
209 
210 #endif // CDPL_DESCR_MOLECULERDFDESCRIPTORCALCULATOR_HPP
Definition of the preprocessor macro CDPL_DESCR_API.
#define CDPL_DESCR_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of class CDPL::Descr::RDFCodeCalculator.
Definition of vector data types.
Common interface for data structures that support a random access to stored Chem::Atom instances.
Definition: AtomContainer.hpp:55
Abstract base class representing a chemical atom and its bonded neighborhood.
Definition: Atom.hpp:57
Calculation of an RDF descriptor of a molecular graph partitioned by specific atom types.
Definition: MoleculeRDFDescriptorCalculator.hpp:71
RDFCodeCalculator::Entity3DCoordinatesFunction Atom3DCoordinatesFunction
Type of the function used to retrieve the 3D coordinates of an atom.
Definition: MoleculeRDFDescriptorCalculator.hpp:79
void setStartRadius(double start_radius)
Sets the starting value of the radius.
void setScalingFactor(double factor)
Allows to specify the scaling factor for the RDF code elements.
void setSmoothingFactor(double factor)
Allows to specify the smoothing factor used in the calculation of atom pair RDF contributions.
void setRadiusIncrement(double radius_inc)
Sets the radius step size between successive RDF code elements.
void enableDistanceToIntervalCenterRounding(bool enable)
Allows to specify whether atom pair distances should be rounded to the nearest radius interval center...
double getStartRadius() const
Returns the starting value of the radius.
MoleculeRDFDescriptorCalculator()
Constructs the MoleculeRDFDescriptorCalculator instance.
void setAtom3DCoordinatesFunction(const Atom3DCoordinatesFunction &func)
Allows to specify the atom coordinates function.
void calculate(const Chem::AtomContainer &cntnr, Math::DVector &descr)
Calculates the RDF descriptor of the atoms in cntnr.
double getRadiusIncrement() const
Returns the radius step size between successive RDF code elements.
bool distanceToIntervalsCenterRoundingEnabled() const
Tells whether atom pair distances get rounded to the nearest radius interval centers.
void setNumSteps(std::size_t num_steps)
Sets the number of desired radius incrementation steps.
double getSmoothingFactor() const
Returns the smoothing factor used in the calculation of atom pair RDF contributions.
std::size_t getNumSteps() const
Returns the number of performed radius incrementation steps.
void setAtomPairWeightFunction(const AtomPairWeightFunction &func)
Allows to specify a custom atom pair weight function.
MoleculeRDFDescriptorCalculator(const Chem::AtomContainer &cntnr, Math::DVector &descr)
Constructs the MoleculeRDFDescriptorCalculator instance and calculates the RDF descriptor of the atom...
double getScalingFactor() const
Returns the scaling factor applied to the RDF code elements.
std::function< double(const Chem::Atom &, const Chem::Atom &, unsigned int)> AtomPairWeightFunction
Type of the generic functor used to retrieve the weight of an atom pair.
Definition: MoleculeRDFDescriptorCalculator.hpp:86
std::function< const Math::Vector3D &(const EntityType &)> Entity3DCoordinatesFunction
Type of the generic functor class used to store a user-defined entity 3D coordinates function.
Definition: RDFCodeCalculator.hpp:82
The namespace of the Chemical Data Processing Library.