chython 2.4__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. chython/__init__.py +31 -0
  2. chython/_functions.py +69 -0
  3. chython/algorithms/__init__.py +18 -0
  4. chython/algorithms/_isomorphism.cp312-win_amd64.pyd +0 -0
  5. chython/algorithms/_isomorphism.pyx +189 -0
  6. chython/algorithms/aromatics/__init__.py +27 -0
  7. chython/algorithms/aromatics/_rules.py +124 -0
  8. chython/algorithms/aromatics/kekule.py +530 -0
  9. chython/algorithms/aromatics/test/__init__.py +18 -0
  10. chython/algorithms/aromatics/test/test_kekule.py +160 -0
  11. chython/algorithms/aromatics/test/test_thiele.py +263 -0
  12. chython/algorithms/aromatics/thiele.py +226 -0
  13. chython/algorithms/calculate2d/__init__.py +23 -0
  14. chython/algorithms/calculate2d/clean2d.js +1 -0
  15. chython/algorithms/calculate2d/molecule.py +149 -0
  16. chython/algorithms/calculate2d/reaction.py +80 -0
  17. chython/algorithms/depict.py +523 -0
  18. chython/algorithms/fingerprints/__init__.py +48 -0
  19. chython/algorithms/fingerprints/linear.py +208 -0
  20. chython/algorithms/fingerprints/morgan.py +137 -0
  21. chython/algorithms/fingerprints/test/__init__.py +18 -0
  22. chython/algorithms/fingerprints/test/test_linear.py +127 -0
  23. chython/algorithms/fingerprints/test/test_morgan.py +79 -0
  24. chython/algorithms/isomorphism.py +667 -0
  25. chython/algorithms/mapping/__init__.py +28 -0
  26. chython/algorithms/mapping/_groups.py +94 -0
  27. chython/algorithms/mapping/_reactions.py +72 -0
  28. chython/algorithms/mapping/attention.py +216 -0
  29. chython/algorithms/mapping/fixmapper.py +84 -0
  30. chython/algorithms/mapping/groups.py +137 -0
  31. chython/algorithms/mcs.py +202 -0
  32. chython/algorithms/morgan.py +82 -0
  33. chython/algorithms/rings.py +551 -0
  34. chython/algorithms/smiles.py +556 -0
  35. chython/algorithms/standardize/__init__.py +30 -0
  36. chython/algorithms/standardize/_charged.py +115 -0
  37. chython/algorithms/standardize/_groups.py +926 -0
  38. chython/algorithms/standardize/_metal_organics.py +189 -0
  39. chython/algorithms/standardize/_reagents.py +44 -0
  40. chython/algorithms/standardize/_salts.py +68 -0
  41. chython/algorithms/standardize/molecule.py +479 -0
  42. chython/algorithms/standardize/reaction.py +429 -0
  43. chython/algorithms/standardize/resonance.py +196 -0
  44. chython/algorithms/standardize/salts.py +128 -0
  45. chython/algorithms/standardize/saturation.py +378 -0
  46. chython/algorithms/standardize/test/__init__.py +18 -0
  47. chython/algorithms/standardize/test/test_groups.py +118 -0
  48. chython/algorithms/stereo.py +1222 -0
  49. chython/algorithms/tautomers/__init__.py +171 -0
  50. chython/algorithms/tautomers/_acid.py +59 -0
  51. chython/algorithms/tautomers/_base.py +116 -0
  52. chython/algorithms/tautomers/_keto_enol.py +107 -0
  53. chython/algorithms/tautomers/acid_base.py +214 -0
  54. chython/algorithms/tautomers/heteroarenes.py +108 -0
  55. chython/algorithms/tautomers/keto_enol.py +148 -0
  56. chython/algorithms/tautomers/test/__init__.py +18 -0
  57. chython/algorithms/tautomers/test/test_tautomers.py +80 -0
  58. chython/algorithms/test/__init__.py +18 -0
  59. chython/algorithms/test/test_isomorphism.py +58 -0
  60. chython/algorithms/test/test_smiles.py +76 -0
  61. chython/algorithms/x3dom.py +355 -0
  62. chython/containers/__init__.py +43 -0
  63. chython/containers/_pack_v2.cp312-win_amd64.pyd +0 -0
  64. chython/containers/_pack_v2.pyx +271 -0
  65. chython/containers/_unpack_v0v2.cp312-win_amd64.pyd +0 -0
  66. chython/containers/_unpack_v0v2.pyx +300 -0
  67. chython/containers/bonds.py +255 -0
  68. chython/containers/cgr.py +115 -0
  69. chython/containers/graph.py +200 -0
  70. chython/containers/molecule.py +695 -0
  71. chython/containers/query.py +66 -0
  72. chython/containers/reaction.py +324 -0
  73. chython/exceptions.py +114 -0
  74. chython/files/MRVrw.py +523 -0
  75. chython/files/PDBrw.py +257 -0
  76. chython/files/RDFrw.py +298 -0
  77. chython/files/SDFrw.py +221 -0
  78. chython/files/__init__.py +29 -0
  79. chython/files/_convert.py +207 -0
  80. chython/files/_mapping.py +117 -0
  81. chython/files/_xyz.cp312-win_amd64.pyd +0 -0
  82. chython/files/_xyz.pyx +74 -0
  83. chython/files/daylight/__init__.py +24 -0
  84. chython/files/daylight/parser.py +157 -0
  85. chython/files/daylight/smarts.py +107 -0
  86. chython/files/daylight/smiles.py +245 -0
  87. chython/files/daylight/test/__init__.py +18 -0
  88. chython/files/daylight/test/test_daylight_smarts.py +289 -0
  89. chython/files/daylight/test/test_daylight_smiles.py +101 -0
  90. chython/files/daylight/test/test_parser.py +118 -0
  91. chython/files/daylight/test/test_tokenize.py +77 -0
  92. chython/files/daylight/tokenize.py +376 -0
  93. chython/files/libinchi/__init__.py +22 -0
  94. chython/files/libinchi/libinchi.dll +0 -0
  95. chython/files/libinchi/wrapper.py +555 -0
  96. chython/files/mdl/__init__.py +25 -0
  97. chython/files/mdl/emol.py +209 -0
  98. chython/files/mdl/erxn.py +67 -0
  99. chython/files/mdl/mol.py +144 -0
  100. chython/files/mdl/read.py +225 -0
  101. chython/files/mdl/rxn.py +67 -0
  102. chython/files/mdl/stereo.py +63 -0
  103. chython/files/mdl/write.py +165 -0
  104. chython/files/xyz.py +78 -0
  105. chython/periodictable/__init__.py +69 -0
  106. chython/periodictable/base/__init__.py +25 -0
  107. chython/periodictable/base/dynamic.py +149 -0
  108. chython/periodictable/base/element.py +452 -0
  109. chython/periodictable/base/groups.py +90 -0
  110. chython/periodictable/base/periods.py +46 -0
  111. chython/periodictable/base/query.py +473 -0
  112. chython/periodictable/base/vector.py +119 -0
  113. chython/periodictable/groupI.py +252 -0
  114. chython/periodictable/groupII.py +223 -0
  115. chython/periodictable/groupIII.py +1154 -0
  116. chython/periodictable/groupIV.py +210 -0
  117. chython/periodictable/groupIX.py +196 -0
  118. chython/periodictable/groupV.py +192 -0
  119. chython/periodictable/groupVI.py +183 -0
  120. chython/periodictable/groupVII.py +162 -0
  121. chython/periodictable/groupVIII.py +161 -0
  122. chython/periodictable/groupX.py +166 -0
  123. chython/periodictable/groupXI.py +164 -0
  124. chython/periodictable/groupXII.py +158 -0
  125. chython/periodictable/groupXIII.py +239 -0
  126. chython/periodictable/groupXIV.py +262 -0
  127. chython/periodictable/groupXV.py +276 -0
  128. chython/periodictable/groupXVI.py +457 -0
  129. chython/periodictable/groupXVII.py +324 -0
  130. chython/periodictable/groupXVIII.py +260 -0
  131. chython/reactor/__init__.py +24 -0
  132. chython/reactor/base.py +212 -0
  133. chython/reactor/deprotection.py +565 -0
  134. chython/reactor/groups.py +128 -0
  135. chython/reactor/reactions/__init__.py +157 -0
  136. chython/reactor/reactions/_amidation.py +58 -0
  137. chython/reactor/reactions/_amine_isocyanate.py +52 -0
  138. chython/reactor/reactions/_buchwald_hartwig.py +50 -0
  139. chython/reactor/reactions/_esterification.py +49 -0
  140. chython/reactor/reactions/_macmillan.py +43 -0
  141. chython/reactor/reactions/_reductive_amination.py +50 -0
  142. chython/reactor/reactions/_sonogashira.py +49 -0
  143. chython/reactor/reactions/_sulfonamidation.py +52 -0
  144. chython/reactor/reactions/_suzuki_miyaura.py +88 -0
  145. chython/reactor/reactions/ufe.py +99 -0
  146. chython/reactor/reactor.py +170 -0
  147. chython/reactor/retro/__init__.py +77 -0
  148. chython/reactor/retro/_amidation.py +39 -0
  149. chython/reactor/retro/_aryl_amination.py +32 -0
  150. chython/reactor/retro/_mitsunobu.py +49 -0
  151. chython/reactor/retro/_sonogashira.py +49 -0
  152. chython/reactor/retro/_suzuki_miyaura.py +54 -0
  153. chython/reactor/scaffold.py +122 -0
  154. chython/reactor/test/__init__.py +18 -0
  155. chython/reactor/test/test_deprotection.py +57 -0
  156. chython/reactor/test/test_reactor.py +40 -0
  157. chython/reactor/test/test_scaffold.py +57 -0
  158. chython/reactor/test/test_transformer.py +40 -0
  159. chython/reactor/transformer.py +62 -0
  160. chython/utils/__init__.py +57 -0
  161. chython/utils/free_wilson.py +114 -0
  162. chython/utils/grid.py +130 -0
  163. chython/utils/rdkit.py +165 -0
  164. chython/utils/retro.py +139 -0
  165. chython/utils/svg.py +57 -0
  166. chython/utils/test/__init__.py +18 -0
  167. chython/utils/test/test_rdkit.py +71 -0
  168. chython-2.4.dist-info/LICENSE +165 -0
  169. chython-2.4.dist-info/METADATA +101 -0
  170. chython-2.4.dist-info/RECORD +171 -0
  171. chython-2.4.dist-info/WHEEL +4 -0
@@ -0,0 +1,252 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright 2019-2024 Ramil Nugmanov <nougmanoff@protonmail.com>
4
+ # This file is part of chython.
5
+ #
6
+ # chython is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU Lesser General Public License as published by
8
+ # the Free Software Foundation; either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU Lesser General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public License
17
+ # along with this program; if not, see <https://www.gnu.org/licenses/>.
18
+ #
19
+ from .base import Element
20
+ from .base.groups import GroupI
21
+ from .base.periods import *
22
+
23
+
24
+ class H(Element, PeriodI, GroupI):
25
+ __slots__ = ()
26
+
27
+ @property
28
+ def atomic_number(self):
29
+ return 1
30
+
31
+ @property
32
+ def isotopes_distribution(self):
33
+ return {1: 0.999885, 2: 0.000115, 3: 0.}
34
+
35
+ @property
36
+ def isotopes_masses(self):
37
+ return {1: 1.007825, 2: 2.014102, 3: 3.016049}
38
+
39
+ @property
40
+ def _common_valences(self):
41
+ return 1,
42
+
43
+ @property
44
+ def _valences_exceptions(self):
45
+ return (1, False, 0, ()), (0, True, 0, ()), (-1, False, 0, ())
46
+
47
+ @property
48
+ def atomic_radius(self):
49
+ return 0.53
50
+
51
+ @property
52
+ def mdl_isotope(self):
53
+ return 1
54
+
55
+ @property
56
+ def is_forming_single_bonds(self):
57
+ return True
58
+
59
+
60
+ class Li(Element, PeriodII, GroupI):
61
+ __slots__ = ()
62
+
63
+ @property
64
+ def atomic_number(self):
65
+ return 3
66
+
67
+ @property
68
+ def isotopes_distribution(self):
69
+ return {6: 0.0759, 7: 0.9241}
70
+
71
+ @property
72
+ def isotopes_masses(self):
73
+ return {6: 6.015122, 7: 7.016004}
74
+
75
+ @property
76
+ def _common_valences(self):
77
+ return 0, 1
78
+
79
+ @property
80
+ def _valences_exceptions(self):
81
+ return (1, False, 0, ()),
82
+
83
+ @property
84
+ def atomic_radius(self):
85
+ return 167
86
+
87
+ @property
88
+ def mdl_isotope(self):
89
+ return 7
90
+
91
+
92
+ class Na(Element, PeriodIII, GroupI):
93
+ __slots__ = ()
94
+
95
+ @property
96
+ def atomic_number(self):
97
+ return 11
98
+
99
+ @property
100
+ def isotopes_distribution(self):
101
+ return {22: 0., 23: 1.0}
102
+
103
+ @property
104
+ def isotopes_masses(self):
105
+ return {22: 21.994437, 23: 22.98977}
106
+
107
+ @property
108
+ def _common_valences(self):
109
+ return 0, 1
110
+
111
+ @property
112
+ def _valences_exceptions(self):
113
+ return (1, False, 0, ()),
114
+
115
+ @property
116
+ def atomic_radius(self):
117
+ return 1.9
118
+
119
+ @property
120
+ def mdl_isotope(self):
121
+ return 23
122
+
123
+
124
+ class K(Element, PeriodIV, GroupI):
125
+ __slots__ = ()
126
+
127
+ @property
128
+ def atomic_number(self):
129
+ return 19
130
+
131
+ @property
132
+ def isotopes_distribution(self):
133
+ return {39: 0.932581, 40: 0.000117, 41: 0.067302, 42: 0.}
134
+
135
+ @property
136
+ def isotopes_masses(self):
137
+ return {39: 38.963707, 40: 39.963999, 41: 40.961826, 42: 41.962402}
138
+
139
+ @property
140
+ def _common_valences(self):
141
+ return 0, 1
142
+
143
+ @property
144
+ def _valences_exceptions(self):
145
+ return (1, False, 0, ()),
146
+
147
+ @property
148
+ def atomic_radius(self):
149
+ return 2.43
150
+
151
+ @property
152
+ def mdl_isotope(self):
153
+ return 39
154
+
155
+
156
+ class Rb(Element, PeriodV, GroupI):
157
+ __slots__ = ()
158
+
159
+ @property
160
+ def atomic_number(self):
161
+ return 37
162
+
163
+ @property
164
+ def isotopes_distribution(self):
165
+ return {82: 0., 85: 0.7217, 87: 0.2783}
166
+
167
+ @property
168
+ def isotopes_masses(self):
169
+ return {82: 81.918209, 85: 84.911789, 87: 86.909183}
170
+
171
+ @property
172
+ def _common_valences(self):
173
+ return 0, 1
174
+
175
+ @property
176
+ def _valences_exceptions(self):
177
+ return (1, False, 0, ()),
178
+
179
+ @property
180
+ def atomic_radius(self):
181
+ return 2.65
182
+
183
+ @property
184
+ def mdl_isotope(self):
185
+ return 85
186
+
187
+
188
+ class Cs(Element, PeriodVI, GroupI):
189
+ __slots__ = ()
190
+
191
+ @property
192
+ def atomic_number(self):
193
+ return 55
194
+
195
+ @property
196
+ def isotopes_distribution(self):
197
+ return {131: 0., 133: 1.0}
198
+
199
+ @property
200
+ def isotopes_masses(self):
201
+ return {131: 130.905464, 133: 132.905447}
202
+
203
+ @property
204
+ def _common_valences(self):
205
+ return 0, 1
206
+
207
+ @property
208
+ def _valences_exceptions(self):
209
+ return (1, False, 0, ()),
210
+
211
+ @property
212
+ def atomic_radius(self):
213
+ return 2.98
214
+
215
+ @property
216
+ def mdl_isotope(self):
217
+ return 133
218
+
219
+
220
+ class Fr(Element, PeriodVII, GroupI):
221
+ __slots__ = ()
222
+
223
+ @property
224
+ def atomic_number(self):
225
+ return 87
226
+
227
+ @property
228
+ def isotopes_distribution(self):
229
+ return {223: 1.0}
230
+
231
+ @property
232
+ def isotopes_masses(self):
233
+ return {223: 223.019736}
234
+
235
+ @property
236
+ def _common_valences(self):
237
+ return 0, 1
238
+
239
+ @property
240
+ def _valences_exceptions(self):
241
+ return (1, False, 0, ()),
242
+
243
+ @property
244
+ def atomic_radius(self):
245
+ return 2.98 # unknown, taken radius of previous element in group
246
+
247
+ @property
248
+ def mdl_isotope(self):
249
+ return 223
250
+
251
+
252
+ __all__ = ['H', 'Li', 'Na', 'K', 'Rb', 'Cs', 'Fr']
@@ -0,0 +1,223 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright 2019-2024 Ramil Nugmanov <nougmanoff@protonmail.com>
4
+ # Copyright 2019 Tagir Akhmetshin <tagirshin@gmail.com>
5
+ # This file is part of chython.
6
+ #
7
+ # chython is free software; you can redistribute it and/or modify
8
+ # it under the terms of the GNU Lesser General Public License as published by
9
+ # the Free Software Foundation; either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License
18
+ # along with this program; if not, see <https://www.gnu.org/licenses/>.
19
+ #
20
+ from .base import Element
21
+ from .base.groups import GroupII
22
+ from .base.periods import PeriodII, PeriodIII, PeriodIV, PeriodV, PeriodVI, PeriodVII
23
+
24
+
25
+ class Be(Element, PeriodII, GroupII):
26
+ __slots__ = ()
27
+
28
+ @property
29
+ def atomic_number(self):
30
+ return 4
31
+
32
+ @property
33
+ def isotopes_distribution(self):
34
+ return {9: 1.0}
35
+
36
+ @property
37
+ def isotopes_masses(self):
38
+ return {9: 9.012182}
39
+
40
+ @property
41
+ def _common_valences(self):
42
+ return 0, 2
43
+
44
+ @property
45
+ def _valences_exceptions(self):
46
+ return (2, False, 0, ()),
47
+
48
+ @property
49
+ def atomic_radius(self):
50
+ return 1.12
51
+
52
+ @property
53
+ def mdl_isotope(self):
54
+ return 9
55
+
56
+
57
+ class Mg(Element, PeriodIII, GroupII):
58
+ __slots__ = ()
59
+
60
+ @property
61
+ def atomic_number(self):
62
+ return 12
63
+
64
+ @property
65
+ def isotopes_distribution(self):
66
+ return {24: 0.7899, 25: 0.1, 26: 0.1101}
67
+
68
+ @property
69
+ def isotopes_masses(self):
70
+ return {24: 23.985042, 25: 24.985837, 26: 25.982593}
71
+
72
+ @property
73
+ def _common_valences(self):
74
+ return 0, 2
75
+
76
+ @property
77
+ def _valences_exceptions(self):
78
+ return ((2, False, 0, ()),
79
+ (1, False, 0, ((1, 'C'),)),
80
+ (1, False, 0, ((1, 'O'),)),
81
+ (1, False, 0, ((1, 'Br'),)),
82
+ (1, False, 0, ((1, 'Cl'),)))
83
+
84
+ @property
85
+ def atomic_radius(self):
86
+ return 1.45
87
+
88
+ @property
89
+ def mdl_isotope(self):
90
+ return 24
91
+
92
+
93
+ class Ca(Element, PeriodIV, GroupII):
94
+ __slots__ = ()
95
+
96
+ @property
97
+ def atomic_number(self):
98
+ return 20
99
+
100
+ @property
101
+ def isotopes_distribution(self):
102
+ return {40: 0.96941, 42: 0.00647, 43: 0.00135, 44: 0.02086, 45: 0., 46: 4e-05, 47: 0., 48: 0.00187}
103
+
104
+ @property
105
+ def isotopes_masses(self):
106
+ return {40: 39.962591, 42: 41.958618, 43: 42.958767, 44: 43.955481, 45: 44.956186, 46: 45.953693, 47: 46.954541,
107
+ 48: 47.952534}
108
+
109
+ @property
110
+ def _common_valences(self):
111
+ return 0, 2
112
+
113
+ @property
114
+ def _valences_exceptions(self):
115
+ return (2, False, 0, ()),
116
+
117
+ @property
118
+ def atomic_radius(self):
119
+ return 1.94
120
+
121
+ @property
122
+ def mdl_isotope(self):
123
+ return 40
124
+
125
+
126
+ class Sr(Element, PeriodV, GroupII):
127
+ __slots__ = ()
128
+
129
+ @property
130
+ def atomic_number(self):
131
+ return 38
132
+
133
+ @property
134
+ def isotopes_distribution(self):
135
+ return {84: 0.0056, 85: 0., 86: 0.0986, 87: 0.07, 88: 0.8258, 89: 0.}
136
+
137
+ @property
138
+ def isotopes_masses(self):
139
+ return {84: 83.913425, 85: 84.912933, 86: 85.909262, 87: 86.908879, 88: 87.905614, 89: 88.907451}
140
+
141
+ @property
142
+ def _common_valences(self):
143
+ return 0, 2
144
+
145
+ @property
146
+ def _valences_exceptions(self):
147
+ return (2, False, 0, ()),
148
+
149
+ @property
150
+ def atomic_radius(self):
151
+ return 2.19
152
+
153
+ @property
154
+ def mdl_isotope(self):
155
+ return 88
156
+
157
+
158
+ class Ba(Element, PeriodVI, GroupII):
159
+ __slots__ = ()
160
+
161
+ @property
162
+ def atomic_number(self):
163
+ return 56
164
+
165
+ @property
166
+ def isotopes_distribution(self):
167
+ return {130: 0.00106, 132: 0.00101, 134: 0.02417, 135: 0.06592, 136: 0.07854, 137: 0.11232, 138: 0.71698}
168
+
169
+ @property
170
+ def isotopes_masses(self):
171
+ return {130: 129.90631, 132: 131.905056, 134: 133.904503, 135: 134.905683, 136: 135.90457, 137: 136.905821,
172
+ 138: 137.905241}
173
+
174
+ @property
175
+ def _common_valences(self):
176
+ return 0, 2
177
+
178
+ @property
179
+ def _valences_exceptions(self):
180
+ return (2, False, 0, ()),
181
+
182
+ @property
183
+ def atomic_radius(self):
184
+ return 2.53
185
+
186
+ @property
187
+ def mdl_isotope(self):
188
+ return 137
189
+
190
+
191
+ class Ra(Element, PeriodVII, GroupII):
192
+ __slots__ = ()
193
+
194
+ @property
195
+ def atomic_number(self):
196
+ return 88
197
+
198
+ @property
199
+ def isotopes_distribution(self):
200
+ return {223: 0., 226: 1.0, 228: 0., 233: 0.}
201
+
202
+ @property
203
+ def isotopes_masses(self):
204
+ return {223: 223.018502, 226: 226.025410, 228: 228.031070, 233: 233.048065}
205
+
206
+ @property
207
+ def _common_valences(self):
208
+ return 0, 2
209
+
210
+ @property
211
+ def _valences_exceptions(self):
212
+ return (2, False, 0, ()),
213
+
214
+ @property
215
+ def atomic_radius(self):
216
+ return 2.53 # unknown, taken radius of previous element in group
217
+
218
+ @property
219
+ def mdl_isotope(self):
220
+ return 226
221
+
222
+
223
+ __all__ = ['Be', 'Mg', 'Ca', 'Sr', 'Ba', 'Ra']