Chemical Data Processing Library C++ API - Version 1.4.0
MMFF94DefaultStretchBendParameterTable.hpp
Go to the documentation of this file.
1 /*
2  * MMFF94DefaultStretchBendParameterTable.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_FORCEFIELD_MMFF94DEFAULTSTRETCHBENDPARAMETERTABLE_HPP
30 #define CDPL_FORCEFIELD_MMFF94DEFAULTSTRETCHBENDPARAMETERTABLE_HPP
31 
32 #include <cstddef>
33 #include <cstdint>
34 #include <iosfwd>
35 #include <unordered_map>
36 #include <memory>
37 #include <functional>
38 
39 #include <boost/iterator/transform_iterator.hpp>
40 
42 
43 
44 namespace CDPL
45 {
46 
47  namespace ForceField
48  {
49 
59  {
60 
61  public:
62  class Entry;
63 
64  private:
65  typedef std::unordered_map<std::uint32_t, Entry> DataStorage;
66 
67  public:
71  typedef std::shared_ptr<MMFF94DefaultStretchBendParameterTable> SharedPointer;
72 
77  {
78 
79  public:
83  Entry();
84 
93  Entry(unsigned int term_atom1_pte_row, unsigned int ctr_atom_pte_row,
94  unsigned int term_atom2_pte_row, double ijk_force_const, double kji_force_const);
95 
100  unsigned int getTerminalAtom1PTERow() const;
101 
106  unsigned int getCenterAtomPTERow() const;
107 
112  unsigned int getTerminalAtom2PTERow() const;
113 
118  double getIJKForceConstant() const;
119 
124  double getKJIForceConstant() const;
125 
130  operator bool() const;
131 
132  private:
133  unsigned int termAtom1PTERow;
134  unsigned int ctrAtomPTERow;
135  unsigned int termAtom2PTERow;
136  double ijkForceConst;
137  double kjiForceConst;
138  bool initialized;
139  };
140 
144  typedef boost::transform_iterator<std::function<const Entry&(const DataStorage::value_type&)>,
145  DataStorage::const_iterator>
147 
151  typedef boost::transform_iterator<std::function<Entry&(DataStorage::value_type&)>,
152  DataStorage::iterator>
154 
159 
168  void addEntry(unsigned int term_atom1_pte_row, unsigned int ctr_atom_pte_row,
169  unsigned int term_atom2_pte_row, double ijk_force_const, double kji_force_const);
170 
178  const Entry& getEntry(unsigned int term_atom1_pte_row, unsigned int ctr_atom_pte_row,
179  unsigned int term_atom2_pte_row) const;
180 
185  std::size_t getNumEntries() const;
186 
190  void clear();
191 
199  bool removeEntry(unsigned int term_atom1_pte_row, unsigned int ctr_atom_pte_row,
200  unsigned int term_atom2_pte_row);
201 
208 
214 
220 
226 
232 
238 
244 
250 
256 
261  void load(std::istream& is);
262 
266  void loadDefaults();
267 
272  static void set(const SharedPointer& table);
273 
278  static const SharedPointer& get();
279 
280  private:
281  static SharedPointer defaultTable;
282  DataStorage entries;
283  };
284  } // namespace ForceField
285 } // namespace CDPL
286 
287 #endif // CDPL_FORCEFIELD_MMFF94DEFAULTSTRETCHBENDPARAMETERTABLE_HPP
Definition of the preprocessor macro CDPL_FORCEFIELD_API.
#define CDPL_FORCEFIELD_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Data structure for the storage of values associated with a single table entry.
Definition: MMFF94DefaultStretchBendParameterTable.hpp:77
double getKJIForceConstant() const
Returns the KJI stretch-bend force constant.
Entry(unsigned int term_atom1_pte_row, unsigned int ctr_atom_pte_row, unsigned int term_atom2_pte_row, double ijk_force_const, double kji_force_const)
Constructs an Entry instance storing the given query and parameter values.
unsigned int getTerminalAtom2PTERow() const
Returns the PTE row of the second terminal atom.
unsigned int getTerminalAtom1PTERow() const
Returns the PTE row of the first terminal atom.
unsigned int getCenterAtomPTERow() const
Returns the PTE row of the center atom.
Entry()
Constructs an empty (uninitialized) Entry instance.
double getIJKForceConstant() const
Returns the IJK stretch-bend force constant.
Data structure for the storage and lookup of MMFF94 stretch-bend interaction fallback parameters.
Definition: MMFF94DefaultStretchBendParameterTable.hpp:59
std::size_t getNumEntries() const
Returns the number of entries in the table.
ConstEntryIterator end() const
Returns a constant iterator pointing one past the last entry (alias of getEntriesEnd()).
static void set(const SharedPointer &table)
Replaces the process-wide default table by table.
const Entry & getEntry(unsigned int term_atom1_pte_row, unsigned int ctr_atom_pte_row, unsigned int term_atom2_pte_row) const
Returns a reference to the entry matching the specified query values.
void loadDefaults()
Loads the built-in default MMFF94 stretch-bend fallback parameter entries.
EntryIterator begin()
Returns a mutable iterator pointing to the beginning of the entry list (alias of getEntriesBegin()).
void clear()
Removes all entries from the table.
void load(std::istream &is)
Loads table entries from the input stream is.
void addEntry(unsigned int term_atom1_pte_row, unsigned int ctr_atom_pte_row, unsigned int term_atom2_pte_row, double ijk_force_const, double kji_force_const)
Adds a new (or overwrites an existing) entry for the given query and parameter values.
MMFF94DefaultStretchBendParameterTable()
Constructs an empty MMFF94DefaultStretchBendParameterTable instance.
std::shared_ptr< MMFF94DefaultStretchBendParameterTable > SharedPointer
A reference-counted smart pointer [SHPTR] for dynamically allocated MMFF94DefaultStretchBendParameter...
Definition: MMFF94DefaultStretchBendParameterTable.hpp:71
ConstEntryIterator getEntriesEnd() const
Returns a constant iterator pointing one past the last entry.
ConstEntryIterator begin() const
Returns a constant iterator pointing to the beginning of the entry list (alias of getEntriesBegin()).
static const SharedPointer & get()
Returns the process-wide default table (lazily initialized on first call).
EntryIterator end()
Returns a mutable iterator pointing one past the last entry (alias of getEntriesEnd()).
bool removeEntry(unsigned int term_atom1_pte_row, unsigned int ctr_atom_pte_row, unsigned int term_atom2_pte_row)
Removes the entry matching the specified query values.
EntryIterator getEntriesEnd()
Returns a mutable iterator pointing one past the last entry.
EntryIterator removeEntry(const EntryIterator &it)
Removes the entry pointed to by the iterator it.
EntryIterator getEntriesBegin()
Returns a mutable iterator pointing to the beginning of the entry list.
ConstEntryIterator getEntriesBegin() const
Returns a constant iterator pointing to the beginning of the entry list.
boost::transform_iterator< std::function< const Entry &(const DataStorage::value_type &)>, DataStorage::const_iterator > ConstEntryIterator
A constant iterator over the entries of the table.
Definition: MMFF94DefaultStretchBendParameterTable.hpp:146
boost::transform_iterator< std::function< Entry &(DataStorage::value_type &)>, DataStorage::iterator > EntryIterator
A mutable iterator over the entries of the table.
Definition: MMFF94DefaultStretchBendParameterTable.hpp:153
The namespace of the Chemical Data Processing Library.