RDKit
Open-source cheminformatics and machine learning.
PMI.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2016 Greg Landrum
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 
11 #ifndef PMI_H_SEPT2016
12 #define PMI_H_SEPT2016
13 
14 #ifdef RDK_BUILD_DESCRIPTORS3D
15 namespace RDKit {
16  class ROMol;
17  namespace Descriptors {
18  //! Normalized principal moments ratio 1 (=I1/I3)
19  //! from Sauer and Schwarz JCIM 43:987-1003 (2003)
20  //! https://dx.doi.org/10.1021/ci025599w
21  double NPR1(const ROMol&, int confId=-1, bool useAtomicMasses=true);
22  const std::string NPR1Version = "1.0.0";
23  //! Normalized principal moments ratio 2 (=I2/I3)
24  //! from Sauer and Schwarz JCIM 43:987-1003 (2003)
25  //! https://dx.doi.org/10.1021/ci025599w
26  double NPR2(const ROMol&, int confId=-1, bool useAtomicMasses=true);
27  const std::string NPR2Version = "1.0.0";
28 
29  //! First (smallest) principal moment of inertia
30  double PMI1(const ROMol&, int confId=-1, bool useAtomicMasses=true);
31  const std::string PMI1Version = "1.0.0";
32  //! second principal moment of inertia
33  double PMI2(const ROMol&, int confId=-1, bool useAtomicMasses=true);
34  const std::string PMI2Version = "1.0.0";
35  //! Third (largest) principal moment of inertia
36  double PMI3(const ROMol&, int confId=-1, bool useAtomicMasses=true);
37  const std::string PMI3Version = "1.0.0";
38 
39  /*!
40  Radius of gyration
41  from Todeschini and Consoni "Descriptors from Molecular Geometry"
42  Handbook of Chemoinformatics
43  http://dx.doi.org/10.1002/9783527618279.ch37
44 
45  Definition:
46  for planar molecules: sqrt( sqrt(pm3*pm2)/MW )
47  for nonplanar molecules: sqrt( 2*pi*pow(pm3*pm2*pm1,1/3)/MW )
48  */
49  double radiusOfGyration(const ROMol&,int confId=-1,
50  bool useAtomicMasses=true);
51  const std::string radiusOfGyrationVersion = "1.0.0";
52  /*!
53  Inertial shape factor
54  from Todeschini and Consoni "Descriptors from Molecular Geometry"
55  Handbook of Chemoinformatics
56  http://dx.doi.org/10.1002/9783527618279.ch37
57 
58  Definition:
59  pm2 / (pm1*pm3)
60  */
61  double inertialShapeFactor(const ROMol&,int confId=-1,
62  bool useAtomicMasses=true);
63  const std::string inertialShapeFactorVersion = "1.0.0";
64  /*!
65  Molecular eccentricity
66  from Todeschini and Consoni "Descriptors from Molecular Geometry"
67  Handbook of Chemoinformatics
68  http://dx.doi.org/10.1002/9783527618279.ch37
69 
70  Definition:
71  sqrt(pm3**2 -pm1**2) / pm3**2
72  */
73  double eccentricity(const ROMol&,int confId=-1,
74  bool useAtomicMasses=true);
75  const std::string eccentricityVersion = "1.0.0";
76  /*!
77  molecular asphericity
78  from Todeschini and Consoni "Descriptors from Molecular Geometry"
79  Handbook of Chemoinformatics
80  http://dx.doi.org/10.1002/9783527618279.ch37
81 
82  Definition:
83  0.5 * ((pm3-pm2)**2 + (pm3-pm1)**2 + (pm2-pm1)**2)/(pm1**2+pm2**2+pm3**2)
84  */
85  double asphericity(const ROMol&,int confId=-1,
86  bool useAtomicMasses=true);
87  const std::string asphericityVersion = "1.0.0";
88  /*!
89  Spherocity index
90  from Todeschini and Consoni "Descriptors from Molecular Geometry"
91  Handbook of Chemoinformatics
92  http://dx.doi.org/10.1002/9783527618279.ch37
93 
94  Definition:
95  3 * pm1 / (pm1+pm2+pm3) where the moments are calculated without weights
96  */
97  double spherocityIndex(const ROMol&,int confId=-1);
98  const std::string spherocityIndexVersion = "1.0.0";
99  }
100 }
101 #endif
102 #endif
Includes a bunch of functionality for handling Atom and Bond queries.
Definition: Atom.h:29