RDKit: PMI.h Source File

| RDKit Open-source cheminformatics and machine learning.

Loading...
Searching...
No Matches
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#include <RDGeneral/export.h>
12#ifndef PMI_H_SEPT2016
13#define PMI_H_SEPT2016
14
15#ifdef RDK_BUILD_DESCRIPTORS3D
16namespace RDKit {
17class ROMol;
18namespace Descriptors {
19//! Normalized principal moments ratio 1 (=I1/I3)
20//! from Sauer and Schwarz JCIM 43:987-1003 (2003)
21//! https://doi.org/10.1021/ci025599w
22 RDKIT_DESCRIPTORS_EXPORT double NPR1(const ROMol &, int confId = -1,
23 bool useAtomicMasses = true,
24 bool force = false);
25const std::string NPR1Version = "1.0.0";
26//! Normalized principal moments ratio 2 (=I2/I3)
27//! from Sauer and Schwarz JCIM 43:987-1003 (2003)
28//! https://doi.org/10.1021/ci025599w
29 RDKIT_DESCRIPTORS_EXPORT double NPR2(const ROMol &, int confId = -1,
30 bool useAtomicMasses = true,
31 bool force = false);
32const std::string NPR2Version = "1.0.0";
33
34//! First (smallest) principal moment of inertia
35 RDKIT_DESCRIPTORS_EXPORT double PMI1(const ROMol &, int confId = -1,
36 bool useAtomicMasses = true,
37 bool force = false);
38const std::string PMI1Version = "1.0.0";
39//! second principal moment of inertia
40 RDKIT_DESCRIPTORS_EXPORT double PMI2(const ROMol &, int confId = -1,
41 bool useAtomicMasses = true,
42 bool force = false);
43const std::string PMI2Version = "1.0.0";
44//! Third (largest) principal moment of inertia
45 RDKIT_DESCRIPTORS_EXPORT double PMI3(const ROMol &, int confId = -1,
46 bool useAtomicMasses = true,
47 bool force = false);
48const std::string PMI3Version = "1.0.0";
49
50/*!
51 Radius of gyration
52 from G. A. Arteca "Molecular Shape Descriptors"
53 Reviews in Computational Chemistry vol 9
54 https://doi.org/10.1002/9780470125861.ch5
55
56 Definition (eq: A4):
57 sqrt(t_1 + t_2 + t_3) where t_i is the ith moment from the gyration matrix
58*/
59 RDKIT_DESCRIPTORS_EXPORT double radiusOfGyration(const ROMol &, int confId = -1,
60 bool useAtomicMasses = true,
61 bool force = false);
62const std::string radiusOfGyrationVersion = "1.0.0";
63/*!
64 Inertial shape factor
65 from Todeschini and Consoni "Descriptors from Molecular Geometry"
66 Handbook of Chemoinformatics
67 https://doi.org/10.1002/9783527618279.ch37
68
69 Definition:
70 pm2 / (pm1*pm3)
71*/
72 RDKIT_DESCRIPTORS_EXPORT double inertialShapeFactor(const ROMol &,
73 int confId = -1,
74 bool useAtomicMasses = true,
75 bool force = false);
76const std::string inertialShapeFactorVersion = "1.0.0";
77/*!
78 Molecular eccentricity
79 from G. A. Arteca "Molecular Shape Descriptors"
80 Reviews in Computational Chemistry vol 9
81 https://doi.org/10.1002/9780470125861.ch5
82
83 Definition (eq 4):
84 sqrt(pm_3**2 -pm_1**2) / pm_3**2 where pm_i is the ith moment of inertia
85*/
86 RDKIT_DESCRIPTORS_EXPORT double eccentricity(const ROMol &, int confId = -1,
87 bool useAtomicMasses = true,
88 bool force = false);
89const std::string eccentricityVersion = "1.0.0";
90/*!
91 molecular asphericity
92 from A. Baumgaertner, "Shapes of flexible vesicles"
93 J. Chem. Phys. 98:7496 (1993)
94 https://doi.org/10.1063/1.464689
95
96 Definition (eq 11):
97 0.5 * ((t_3-t_2)**2 + (t_3-t_1)**2 + (t_2-t_1)**2)/(t_1+t_2+t_3)**2
98 where t_i is the ith moment from the gyration matrix
99
100 Some explanation of that definition: the text of the paper mentions axes
101 of inertia, but then the definition of the radius of gyration in eq.9 clearly
102 uses the moments of the gyration matrix. The text under equation 11 has the
103 appropriate inequalities and limits for the moments of gyration, but the
104 description of the geometry provided corresponds to the moments of inertia.
105 The definition here corresponds to what Dragon generates and seem logical
106
107*/
108 RDKIT_DESCRIPTORS_EXPORT double asphericity(const ROMol &, int confId = -1,
109 bool useAtomicMasses = true,
110 bool force = false);
111const std::string asphericityVersion = "1.0.0";
112/*!
113 Spherocity index
114 from Todeschini and Consoni "Descriptors from Molecular Geometry"
115 Handbook of Chemoinformatics
116 https://doi.org/10.1002/9783527618279.ch37
117
118 Definition:
119 3 * t_1 / (t_1+t_2+t_3)
120 where the moments of the gyration matrix are calculated without weights
121*/
122 RDKIT_DESCRIPTORS_EXPORT double spherocityIndex(const ROMol &, int confId = -1,
123 bool force = false);
124const std::string spherocityIndexVersion = "1.0.0";
125} // namespace Descriptors
126} // namespace RDKit
127#endif
128#endif
RDKit::ROMol
Definition ROMol.h:199
export.h
RDKIT_DESCRIPTORS_EXPORT
#define RDKIT_DESCRIPTORS_EXPORT
Definition export.h:113
RDKit::Descriptors
Definition AtomFeat.h:30
RDKit
Std stuff.
Definition Abbreviations.h:19