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