RDKit
Open-source cheminformatics and machine learning.
GasteigerParams.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2003-2015 Rational Discovery LLC
3 //
4 // @@ All Rights Reserved @@
5 // This file is part of the RDKit.
6 // The contents are covered by the terms of the BSD license
7 // which is included in the file license.txt, found at the root
8 // of the RDKit source tree.
9 //
10 #include <RDGeneral/export.h>
11 #ifndef _RD_GASTEIGERPARAMS_H
12 #define _RD_GASTEIGERPARAMS_H
13 
14 #include <RDGeneral/types.h>
15 #include <RDGeneral/Exceptions.h>
16 #include <string>
17 #include <map>
18 
19 namespace RDKit {
20 extern std::string paramData;
21 extern std::string additionalParamData;
22 
23 // this is a constant used during the iteration procedure for the hydrogen atoms
24 // for the remaining atoms it is computed on the fly
25 const double IONXH = 20.02;
26 
27 const double DAMP_SCALE = 0.5;
28 const double DAMP = 0.5;
29 
31  /* \brief Container for all the partial charge paramters
32  *
33  * It is filled by the paramData string defined in GasteigerParams.cpp
34  * The main data member is a STL map that take a pair<std::string,
35  *std::string>
36  * of element name and mode (hybridization or bonding mode) and return a
37  *vector
38  * of three parameters, used int eh ierative partial charges euqlization
39  *procedure
40  */
41 
42  public:
43  static const GasteigerParams *getParams(const std::string &paramData = "");
44 
45  ~GasteigerParams() { d_paramMap.clear(); }
46 
47  DOUBLE_VECT getParams(std::string elem, std::string mode,
48  bool throwOnFailure = false) const {
49  std::pair<std::string, std::string> query(elem, mode);
50  std::map<std::pair<std::string, std::string>, DOUBLE_VECT>::const_iterator
51  iter;
52  iter = d_paramMap.find(query);
53  if (iter != d_paramMap.end()) {
54  return iter->second;
55  } else {
56  if (throwOnFailure) {
57  std::string message =
58  "ERROR: No Gasteiger Partial Charge parameters for Element: ";
59  message += elem;
60  message += " Mode: ";
61  message += mode;
62  throw ValueErrorException(message);
63  } else {
64  iter =
65  d_paramMap.find(std::make_pair(std::string("X"), std::string("*")));
66  if (iter != d_paramMap.end()) {
67  return iter->second;
68  } else {
69  std::string message =
70  "ERROR: Default Gasteiger Partial Charge parameters are missing";
71  throw ValueErrorException(message);
72  }
73  }
74  }
75  }
76 
77  GasteigerParams(std::string paramData = "");
78 
79  private:
80  std::map<std::pair<std::string, std::string>, DOUBLE_VECT> d_paramMap;
81 
82  static class GasteigerParams *ds_instance;
83 };
84 }; // namespace RDKit
85 
86 #endif
types.h
RDKit::GasteigerParams::getParams
DOUBLE_VECT getParams(std::string elem, std::string mode, bool throwOnFailure=false) const
Definition: GasteigerParams.h:47
RDKit::DOUBLE_VECT
std::vector< double > DOUBLE_VECT
Definition: types.h:279
RDKit::GasteigerParams
Definition: GasteigerParams.h:30
RDKIT_PARTIALCHARGES_EXPORT
#define RDKIT_PARTIALCHARGES_EXPORT
Definition: export.h:476
RDKit::IONXH
const double IONXH
Definition: GasteigerParams.h:25
RDKit::DAMP_SCALE
const double DAMP_SCALE
Definition: GasteigerParams.h:27
ValueErrorException
Class to allow us to throw a ValueError from C++ and have it make it back to Python.
Definition: Exceptions.h:33
RDKit::paramData
std::string paramData
RDKit::GasteigerParams::~GasteigerParams
~GasteigerParams()
Definition: GasteigerParams.h:45
RDKit::additionalParamData
std::string additionalParamData
RDKit
Std stuff.
Definition: Atom.h:30
RDKit::DAMP
const double DAMP
Definition: GasteigerParams.h:28
Exceptions.h
export.h