RDKit: PMI.h Source File

| RDKit Open-source cheminformatics and machine learning.

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

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 G. A. Arteca "Molecular Shape Descriptors"
42 Reviews in Computational Chemistry vol 9
43 http://dx.doi.org/10.1002/9780470125861.ch5
44
45 Definition (eq: A4):
46 sqrt(t_1 + t_2 + t_3) where t_i is the ith moment from the gyration matrix
47 */
48 double radiusOfGyration(const ROMol&, int confId = -1,
49 bool useAtomicMasses = true);
50 const std::string radiusOfGyrationVersion = "1.0.0";
51 /*!
52 Inertial shape factor
53 from Todeschini and Consoni "Descriptors from Molecular Geometry"
54 Handbook of Chemoinformatics
55 http://dx.doi.org/10.1002/9783527618279.ch37
56
57 Definition:
58 pm2 / (pm1*pm3)
59 */
60 double inertialShapeFactor(const ROMol&, int confId = -1,
61 bool useAtomicMasses = true);
62 const std::string inertialShapeFactorVersion = "1.0.0";
63 /*!
64 Molecular eccentricity
65 from G. A. Arteca "Molecular Shape Descriptors"
66 Reviews in Computational Chemistry vol 9
67 http://dx.doi.org/10.1002/9780470125861.ch5
68
69 Definition (eq 4):
70 sqrt(pm_3**2 -pm_1**2) / pm_3**2 where pm_i is the ith moment of inertia
71 */
72 double eccentricity(const ROMol&, int confId = -1, bool useAtomicMasses = true);
73 const std::string eccentricityVersion = "1.0.0";
74 /*!
75 molecular asphericity
76 from A. Baumgaertner, "Shapes of flexible vesicles"
77 J. Chem. Phys. 98:7496 (1993)
78 http://dx.doi.org/10.1063/1.464689
79
80 Definition (eq 11):
81 0.5 * ((t_3-t_2)**2 + (t_3-t_1)**2 + (t_2-t_1)**2)/(t_1+t_2+t_3)**2
82 where t_i is the ith moment from the gyration matrix
83
84 Some explanation of that definition: the text of the paper mentions axes
85 of inertia, but then the defintion of the radius of gyration in eq.9 clearly
86 uses the moments of the gyration matrix. The text under equation 11 has the
87 appropriate inequalities and limits for the moments of gyration, but the
88 description of the geometry provided corresponds to the moments of inertia.
89 The definition here corresponds to what Dragon generates and seem logical
90
91 */
92 double asphericity(const ROMol&, int confId = -1, bool useAtomicMasses = true);
93 const std::string asphericityVersion = "1.0.0";
94 /*!
95 Spherocity index
96 from Todeschini and Consoni "Descriptors from Molecular Geometry"
97 Handbook of Chemoinformatics
98 http://dx.doi.org/10.1002/9783527618279.ch37
99
100 Definition:
101 3 * t_1 / (t_1+t_2+t_3)
102 where the moments of the gyration matrix are calculated without weights
103 */
104 double spherocityIndex(const ROMol&, int confId = -1);
105 const std::string spherocityIndexVersion = "1.0.0";
106 }
107 }
108 #endif
109 #endif
RDKit
Std stuff.
Definition: Atom.h:29