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.
- chython/__init__.py +31 -0
- chython/_functions.py +69 -0
- chython/algorithms/__init__.py +18 -0
- chython/algorithms/_isomorphism.cp312-win_amd64.pyd +0 -0
- chython/algorithms/_isomorphism.pyx +189 -0
- chython/algorithms/aromatics/__init__.py +27 -0
- chython/algorithms/aromatics/_rules.py +124 -0
- chython/algorithms/aromatics/kekule.py +530 -0
- chython/algorithms/aromatics/test/__init__.py +18 -0
- chython/algorithms/aromatics/test/test_kekule.py +160 -0
- chython/algorithms/aromatics/test/test_thiele.py +263 -0
- chython/algorithms/aromatics/thiele.py +226 -0
- chython/algorithms/calculate2d/__init__.py +23 -0
- chython/algorithms/calculate2d/clean2d.js +1 -0
- chython/algorithms/calculate2d/molecule.py +149 -0
- chython/algorithms/calculate2d/reaction.py +80 -0
- chython/algorithms/depict.py +523 -0
- chython/algorithms/fingerprints/__init__.py +48 -0
- chython/algorithms/fingerprints/linear.py +208 -0
- chython/algorithms/fingerprints/morgan.py +137 -0
- chython/algorithms/fingerprints/test/__init__.py +18 -0
- chython/algorithms/fingerprints/test/test_linear.py +127 -0
- chython/algorithms/fingerprints/test/test_morgan.py +79 -0
- chython/algorithms/isomorphism.py +667 -0
- chython/algorithms/mapping/__init__.py +28 -0
- chython/algorithms/mapping/_groups.py +94 -0
- chython/algorithms/mapping/_reactions.py +72 -0
- chython/algorithms/mapping/attention.py +216 -0
- chython/algorithms/mapping/fixmapper.py +84 -0
- chython/algorithms/mapping/groups.py +137 -0
- chython/algorithms/mcs.py +202 -0
- chython/algorithms/morgan.py +82 -0
- chython/algorithms/rings.py +551 -0
- chython/algorithms/smiles.py +556 -0
- chython/algorithms/standardize/__init__.py +30 -0
- chython/algorithms/standardize/_charged.py +115 -0
- chython/algorithms/standardize/_groups.py +926 -0
- chython/algorithms/standardize/_metal_organics.py +189 -0
- chython/algorithms/standardize/_reagents.py +44 -0
- chython/algorithms/standardize/_salts.py +68 -0
- chython/algorithms/standardize/molecule.py +479 -0
- chython/algorithms/standardize/reaction.py +429 -0
- chython/algorithms/standardize/resonance.py +196 -0
- chython/algorithms/standardize/salts.py +128 -0
- chython/algorithms/standardize/saturation.py +378 -0
- chython/algorithms/standardize/test/__init__.py +18 -0
- chython/algorithms/standardize/test/test_groups.py +118 -0
- chython/algorithms/stereo.py +1222 -0
- chython/algorithms/tautomers/__init__.py +171 -0
- chython/algorithms/tautomers/_acid.py +59 -0
- chython/algorithms/tautomers/_base.py +116 -0
- chython/algorithms/tautomers/_keto_enol.py +107 -0
- chython/algorithms/tautomers/acid_base.py +214 -0
- chython/algorithms/tautomers/heteroarenes.py +108 -0
- chython/algorithms/tautomers/keto_enol.py +148 -0
- chython/algorithms/tautomers/test/__init__.py +18 -0
- chython/algorithms/tautomers/test/test_tautomers.py +80 -0
- chython/algorithms/test/__init__.py +18 -0
- chython/algorithms/test/test_isomorphism.py +58 -0
- chython/algorithms/test/test_smiles.py +76 -0
- chython/algorithms/x3dom.py +355 -0
- chython/containers/__init__.py +43 -0
- chython/containers/_pack_v2.cp312-win_amd64.pyd +0 -0
- chython/containers/_pack_v2.pyx +271 -0
- chython/containers/_unpack_v0v2.cp312-win_amd64.pyd +0 -0
- chython/containers/_unpack_v0v2.pyx +300 -0
- chython/containers/bonds.py +255 -0
- chython/containers/cgr.py +115 -0
- chython/containers/graph.py +200 -0
- chython/containers/molecule.py +695 -0
- chython/containers/query.py +66 -0
- chython/containers/reaction.py +324 -0
- chython/exceptions.py +114 -0
- chython/files/MRVrw.py +523 -0
- chython/files/PDBrw.py +257 -0
- chython/files/RDFrw.py +298 -0
- chython/files/SDFrw.py +221 -0
- chython/files/__init__.py +29 -0
- chython/files/_convert.py +207 -0
- chython/files/_mapping.py +117 -0
- chython/files/_xyz.cp312-win_amd64.pyd +0 -0
- chython/files/_xyz.pyx +74 -0
- chython/files/daylight/__init__.py +24 -0
- chython/files/daylight/parser.py +157 -0
- chython/files/daylight/smarts.py +107 -0
- chython/files/daylight/smiles.py +245 -0
- chython/files/daylight/test/__init__.py +18 -0
- chython/files/daylight/test/test_daylight_smarts.py +289 -0
- chython/files/daylight/test/test_daylight_smiles.py +101 -0
- chython/files/daylight/test/test_parser.py +118 -0
- chython/files/daylight/test/test_tokenize.py +77 -0
- chython/files/daylight/tokenize.py +376 -0
- chython/files/libinchi/__init__.py +22 -0
- chython/files/libinchi/libinchi.dll +0 -0
- chython/files/libinchi/wrapper.py +555 -0
- chython/files/mdl/__init__.py +25 -0
- chython/files/mdl/emol.py +209 -0
- chython/files/mdl/erxn.py +67 -0
- chython/files/mdl/mol.py +144 -0
- chython/files/mdl/read.py +225 -0
- chython/files/mdl/rxn.py +67 -0
- chython/files/mdl/stereo.py +63 -0
- chython/files/mdl/write.py +165 -0
- chython/files/xyz.py +78 -0
- chython/periodictable/__init__.py +69 -0
- chython/periodictable/base/__init__.py +25 -0
- chython/periodictable/base/dynamic.py +149 -0
- chython/periodictable/base/element.py +452 -0
- chython/periodictable/base/groups.py +90 -0
- chython/periodictable/base/periods.py +46 -0
- chython/periodictable/base/query.py +473 -0
- chython/periodictable/base/vector.py +119 -0
- chython/periodictable/groupI.py +252 -0
- chython/periodictable/groupII.py +223 -0
- chython/periodictable/groupIII.py +1154 -0
- chython/periodictable/groupIV.py +210 -0
- chython/periodictable/groupIX.py +196 -0
- chython/periodictable/groupV.py +192 -0
- chython/periodictable/groupVI.py +183 -0
- chython/periodictable/groupVII.py +162 -0
- chython/periodictable/groupVIII.py +161 -0
- chython/periodictable/groupX.py +166 -0
- chython/periodictable/groupXI.py +164 -0
- chython/periodictable/groupXII.py +158 -0
- chython/periodictable/groupXIII.py +239 -0
- chython/periodictable/groupXIV.py +262 -0
- chython/periodictable/groupXV.py +276 -0
- chython/periodictable/groupXVI.py +457 -0
- chython/periodictable/groupXVII.py +324 -0
- chython/periodictable/groupXVIII.py +260 -0
- chython/reactor/__init__.py +24 -0
- chython/reactor/base.py +212 -0
- chython/reactor/deprotection.py +565 -0
- chython/reactor/groups.py +128 -0
- chython/reactor/reactions/__init__.py +157 -0
- chython/reactor/reactions/_amidation.py +58 -0
- chython/reactor/reactions/_amine_isocyanate.py +52 -0
- chython/reactor/reactions/_buchwald_hartwig.py +50 -0
- chython/reactor/reactions/_esterification.py +49 -0
- chython/reactor/reactions/_macmillan.py +43 -0
- chython/reactor/reactions/_reductive_amination.py +50 -0
- chython/reactor/reactions/_sonogashira.py +49 -0
- chython/reactor/reactions/_sulfonamidation.py +52 -0
- chython/reactor/reactions/_suzuki_miyaura.py +88 -0
- chython/reactor/reactions/ufe.py +99 -0
- chython/reactor/reactor.py +170 -0
- chython/reactor/retro/__init__.py +77 -0
- chython/reactor/retro/_amidation.py +39 -0
- chython/reactor/retro/_aryl_amination.py +32 -0
- chython/reactor/retro/_mitsunobu.py +49 -0
- chython/reactor/retro/_sonogashira.py +49 -0
- chython/reactor/retro/_suzuki_miyaura.py +54 -0
- chython/reactor/scaffold.py +122 -0
- chython/reactor/test/__init__.py +18 -0
- chython/reactor/test/test_deprotection.py +57 -0
- chython/reactor/test/test_reactor.py +40 -0
- chython/reactor/test/test_scaffold.py +57 -0
- chython/reactor/test/test_transformer.py +40 -0
- chython/reactor/transformer.py +62 -0
- chython/utils/__init__.py +57 -0
- chython/utils/free_wilson.py +114 -0
- chython/utils/grid.py +130 -0
- chython/utils/rdkit.py +165 -0
- chython/utils/retro.py +139 -0
- chython/utils/svg.py +57 -0
- chython/utils/test/__init__.py +18 -0
- chython/utils/test/test_rdkit.py +71 -0
- chython-2.4.dist-info/LICENSE +165 -0
- chython-2.4.dist-info/METADATA +101 -0
- chython-2.4.dist-info/RECORD +171 -0
- chython-2.4.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,210 @@
|
|
|
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 GroupIV
|
|
22
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Ti(Element, PeriodIV, GroupIV):
|
|
26
|
+
__slots__ = ()
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def atomic_number(self):
|
|
30
|
+
return 22
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def isotopes_distribution(self):
|
|
34
|
+
return {46: 0.0825, 47: 0.0744, 48: 0.7372, 49: 0.0541, 50: 0.0518}
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def isotopes_masses(self):
|
|
38
|
+
return {46: 45.95263, 47: 46.951764, 48: 47.947947, 49: 48.947871, 50: 49.944792}
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def _common_valences(self):
|
|
42
|
+
return 0, 4
|
|
43
|
+
|
|
44
|
+
@property
|
|
45
|
+
def _valences_exceptions(self):
|
|
46
|
+
return ((4, False, 0, ()), # [Ti(CN)6]2- or SCN or OCN or ONC
|
|
47
|
+
(2, False, 0, ((2, 'O'),)), # [TiO(CN)4]2-
|
|
48
|
+
(2, False, 0, ((1, 'O'), (1, 'O'))),
|
|
49
|
+
|
|
50
|
+
(-2, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))), # [TiF6]2-
|
|
51
|
+
(-2, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))), # [TiCl6]2-
|
|
52
|
+
(-2, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'))), # [TiBr6]2-
|
|
53
|
+
(-2, False, 0, ((1, 'I'), (1, 'I'), (1, 'I'), (1, 'I'), (1, 'I'), (1, 'I'))), # [TiI6]2-
|
|
54
|
+
|
|
55
|
+
(-2, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))),
|
|
56
|
+
(-2, False, 0, ((2, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))),
|
|
57
|
+
(-2, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'), (1, 'O'))),
|
|
58
|
+
(-2, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'))), # [TiO3]2-
|
|
59
|
+
(-2, False, 0, ((2, 'O'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))), # [TiOF4]2-
|
|
60
|
+
|
|
61
|
+
(0, False, 0, ((1, 'F'), (1, 'F'))),
|
|
62
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'))),
|
|
63
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'))),
|
|
64
|
+
(0, False, 0, ((1, 'I'), (1, 'I'))),
|
|
65
|
+
(0, False, 0, ((1, 'H'), (1, 'H'))),
|
|
66
|
+
(0, False, 0, ((1, 'O'), (1, 'O'))),
|
|
67
|
+
(0, False, 0, ((2, 'O'),)),
|
|
68
|
+
|
|
69
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'))),
|
|
70
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
71
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
72
|
+
(0, False, 0, ((1, 'I'), (1, 'I'), (1, 'I'))),
|
|
73
|
+
(0, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'))),
|
|
74
|
+
(0, False, 0, ((2, 'O'), (1, 'O'))),
|
|
75
|
+
(0, False, 0, ((1, 'N'), (1, 'N'), (1, 'N'))), # TiN
|
|
76
|
+
(0, False, 0, ((2, 'N'), (1, 'N'))),
|
|
77
|
+
(0, False, 0, ((3, 'N'),)))
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def atomic_radius(self):
|
|
81
|
+
return 1.76
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def mdl_isotope(self):
|
|
85
|
+
return 48
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class Zr(Element, PeriodV, GroupIV):
|
|
89
|
+
__slots__ = ()
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def atomic_number(self):
|
|
93
|
+
return 40
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def isotopes_distribution(self):
|
|
97
|
+
return {89: 0., 90: 0.5145, 91: 0.1122, 92: 0.1715, 94: 0.1738, 96: 0.028}
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def isotopes_masses(self):
|
|
101
|
+
return {89: 88.908890, 90: 89.904704, 91: 90.905645, 92: 91.905040, 94: 93.906316, 96: 95.908276}
|
|
102
|
+
|
|
103
|
+
@property
|
|
104
|
+
def _common_valences(self):
|
|
105
|
+
return 0, 4
|
|
106
|
+
|
|
107
|
+
@property
|
|
108
|
+
def _valences_exceptions(self):
|
|
109
|
+
return ((0, False, 0, ((1, 'F'), (1, 'F'))),
|
|
110
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'))),
|
|
111
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'))),
|
|
112
|
+
(0, False, 0, ((1, 'I'), (1, 'I'))),
|
|
113
|
+
(0, False, 0, ((1, 'H'), (1, 'H'))),
|
|
114
|
+
(0, False, 0, ((1, 'H'), (1, 'Cl'))),
|
|
115
|
+
(0, False, 0, ((1, 'H'), (1, 'Br'))),
|
|
116
|
+
(0, False, 0, ((1, 'H'), (1, 'I'))),
|
|
117
|
+
(0, False, 0, ((1, 'C'), (1, 'C'))), # ZrCp2(CH3)2
|
|
118
|
+
|
|
119
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'))),
|
|
120
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
121
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
122
|
+
(0, False, 0, ((1, 'I'), (1, 'I'), (1, 'I'))),
|
|
123
|
+
|
|
124
|
+
(0, False, 0, ((1, 'N'), (1, 'N'), (1, 'N'))), # ZrN
|
|
125
|
+
(0, False, 0, ((2, 'N'), (1, 'N'))),
|
|
126
|
+
(0, False, 0, ((3, 'N'),)),
|
|
127
|
+
(0, False, 0, ((1, 'N'), (1, 'N'))), # Zr2N3
|
|
128
|
+
(0, False, 0, ((2, 'N'),)))
|
|
129
|
+
|
|
130
|
+
@property
|
|
131
|
+
def atomic_radius(self):
|
|
132
|
+
return 2.06
|
|
133
|
+
|
|
134
|
+
@property
|
|
135
|
+
def mdl_isotope(self):
|
|
136
|
+
return 91
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class Hf(Element, PeriodVI, GroupIV):
|
|
140
|
+
__slots__ = ()
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
def atomic_number(self):
|
|
144
|
+
return 72
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def isotopes_distribution(self):
|
|
148
|
+
return {174: 0.0016, 176: 0.0526, 177: 0.186, 178: 0.2728, 179: 0.1362, 180: 0.3508}
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def isotopes_masses(self):
|
|
152
|
+
return {174: 173.94004, 176: 175.941402, 177: 176.94322, 178: 177.943698, 179: 178.945815, 180: 179.946549}
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def _common_valences(self):
|
|
156
|
+
return 0, 4
|
|
157
|
+
|
|
158
|
+
@property
|
|
159
|
+
def _valences_exceptions(self):
|
|
160
|
+
return ((0, False, 0, ((1, 'Cl'),)),
|
|
161
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'))),
|
|
162
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
163
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
164
|
+
(0, False, 0, ((1, 'I'), (1, 'I'), (1, 'I'))),
|
|
165
|
+
(0, False, 0, ((1, 'N'), (1, 'N'), (1, 'N'))), # HfN
|
|
166
|
+
(0, False, 0, ((2, 'N'), (1, 'N'))),
|
|
167
|
+
(0, False, 0, ((3, 'N'),)))
|
|
168
|
+
|
|
169
|
+
@property
|
|
170
|
+
def atomic_radius(self):
|
|
171
|
+
return 2.08
|
|
172
|
+
|
|
173
|
+
@property
|
|
174
|
+
def mdl_isotope(self):
|
|
175
|
+
return 178
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
class Rf(Element, PeriodVII, GroupIV):
|
|
179
|
+
__slots__ = ()
|
|
180
|
+
|
|
181
|
+
@property
|
|
182
|
+
def atomic_number(self):
|
|
183
|
+
return 104
|
|
184
|
+
|
|
185
|
+
@property
|
|
186
|
+
def isotopes_distribution(self):
|
|
187
|
+
return {267: 1.0}
|
|
188
|
+
|
|
189
|
+
@property
|
|
190
|
+
def isotopes_masses(self):
|
|
191
|
+
return {267: 267.12153}
|
|
192
|
+
|
|
193
|
+
@property
|
|
194
|
+
def _common_valences(self):
|
|
195
|
+
return 0, 4
|
|
196
|
+
|
|
197
|
+
@property
|
|
198
|
+
def _valences_exceptions(self):
|
|
199
|
+
return (4, False, 0, ()),
|
|
200
|
+
|
|
201
|
+
@property
|
|
202
|
+
def atomic_radius(self):
|
|
203
|
+
return 2.08 # unknown, taken radius of previous element in group
|
|
204
|
+
|
|
205
|
+
@property
|
|
206
|
+
def mdl_isotope(self):
|
|
207
|
+
return 261
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
__all__ = ['Ti', 'Zr', 'Hf', 'Rf']
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2019-2024 Ramil Nugmanov <nougmanoff@protonmail.com>
|
|
4
|
+
# Copyright 2019 Tagir Akhmetshin <tagirshin@gmail.com>
|
|
5
|
+
# Copyright 2019 Tansu Nasyrova <tansu.nasurova@gmail.com>
|
|
6
|
+
# This file is part of chython.
|
|
7
|
+
#
|
|
8
|
+
# chython is free software; you can redistribute it and/or modify
|
|
9
|
+
# it under the terms of the GNU Lesser General Public License as published by
|
|
10
|
+
# the Free Software Foundation; either version 3 of the License, or
|
|
11
|
+
# (at your option) any later version.
|
|
12
|
+
#
|
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU Lesser General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU Lesser General Public License
|
|
19
|
+
# along with this program; if not, see <https://www.gnu.org/licenses/>.
|
|
20
|
+
#
|
|
21
|
+
from .base import Element
|
|
22
|
+
from .base.groups import GroupIX
|
|
23
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Co(Element, PeriodIV, GroupIX):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def atomic_number(self):
|
|
31
|
+
return 27
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def isotopes_distribution(self):
|
|
35
|
+
return {55: 0., 57: 0., 58: 0., 59: 1.0, 60: 0.}
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def isotopes_masses(self):
|
|
39
|
+
return {55: 54.941999, 57: 56.936291, 58: 57.935753, 59: 58.933200, 60: 59.933817}
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def _common_valences(self):
|
|
43
|
+
return 0, 2, 3
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def _valences_exceptions(self):
|
|
47
|
+
return ((2, False, 0, ()),
|
|
48
|
+
(3, False, 0, ()),
|
|
49
|
+
(0, False, 0, ((1, 'H'),)), # HCo(CO)n
|
|
50
|
+
(2, False, 0, ((1, 'N'),)), # B12
|
|
51
|
+
|
|
52
|
+
(-3, False, 0, ((2, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))), # [CoO4]3-
|
|
53
|
+
(-2, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))), # [CoF6]2-
|
|
54
|
+
|
|
55
|
+
(-1, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'))), # [CoF3]-
|
|
56
|
+
(-1, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
57
|
+
(-1, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'))), # [Co(OH)3]-
|
|
58
|
+
|
|
59
|
+
(-2, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))), # [CoF4]2-
|
|
60
|
+
(-2, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
61
|
+
(-2, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
62
|
+
(-2, False, 0, ((1, 'I'), (1, 'I'), (1, 'I'), (1, 'I'))),
|
|
63
|
+
(-2, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))), # [Co(OH)4]2-
|
|
64
|
+
|
|
65
|
+
(-3, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))), # [CoCl5]3-
|
|
66
|
+
|
|
67
|
+
(-3, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))), # [Co(OH)6]3-
|
|
68
|
+
(-4, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O')))) # [Co(OH)6]4-
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def atomic_radius(self):
|
|
72
|
+
return 1.52
|
|
73
|
+
|
|
74
|
+
@property
|
|
75
|
+
def mdl_isotope(self):
|
|
76
|
+
return 59
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class Rh(Element, PeriodV, GroupIX):
|
|
80
|
+
__slots__ = ()
|
|
81
|
+
|
|
82
|
+
@property
|
|
83
|
+
def atomic_number(self):
|
|
84
|
+
return 45
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def isotopes_distribution(self):
|
|
88
|
+
return {103: 1.0, 105: 0.}
|
|
89
|
+
|
|
90
|
+
@property
|
|
91
|
+
def isotopes_masses(self):
|
|
92
|
+
return {103: 102.905504, 105: 104.905694}
|
|
93
|
+
|
|
94
|
+
@property
|
|
95
|
+
def _common_valences(self):
|
|
96
|
+
return 0, 3, 4
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def _valences_exceptions(self):
|
|
100
|
+
return ((0, False, 0, ((2, 'O'),)), # RhO
|
|
101
|
+
(0, False, 0, ((1, 'O'), (1, 'O'))), # Rh(OH)2
|
|
102
|
+
(0, False, 0, ((2, 'S'),)),
|
|
103
|
+
(0, False, 0, ((1, 'S'), (1, 'S'))),
|
|
104
|
+
(-1, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'))), # [RhBr4]-
|
|
105
|
+
(-3, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))), # [RhCl6]3-
|
|
106
|
+
(-3, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))), # [Rh(NO2)6]3-
|
|
107
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
108
|
+
(0, False, 0, ((1, 'H'),)), # HRh(CO)4, HRh(CO)[P(Ph)3]3
|
|
109
|
+
(0, False, 0, ((1, 'Cl'),))) # Rh2Cl2
|
|
110
|
+
|
|
111
|
+
@property
|
|
112
|
+
def atomic_radius(self):
|
|
113
|
+
return 1.73
|
|
114
|
+
|
|
115
|
+
@property
|
|
116
|
+
def mdl_isotope(self):
|
|
117
|
+
return 103
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class Ir(Element, PeriodVI, GroupIX):
|
|
121
|
+
__slots__ = ()
|
|
122
|
+
|
|
123
|
+
@property
|
|
124
|
+
def atomic_number(self):
|
|
125
|
+
return 77
|
|
126
|
+
|
|
127
|
+
@property
|
|
128
|
+
def isotopes_distribution(self):
|
|
129
|
+
return {191: 0.373, 192: 0., 193: 0.627}
|
|
130
|
+
|
|
131
|
+
@property
|
|
132
|
+
def isotopes_masses(self):
|
|
133
|
+
return {191: 190.960591, 192: 191.962605, 193: 192.962924}
|
|
134
|
+
|
|
135
|
+
@property
|
|
136
|
+
def _common_valences(self):
|
|
137
|
+
return 0, 3, 4
|
|
138
|
+
|
|
139
|
+
@property
|
|
140
|
+
def _valences_exceptions(self):
|
|
141
|
+
return ((0, False, 0, ((1, 'O'),)),
|
|
142
|
+
(0, False, 0, ((1, 'F'),)),
|
|
143
|
+
(0, False, 0, ((1, 'Cl'),)),
|
|
144
|
+
(0, False, 0, ((1, 'Br'),)),
|
|
145
|
+
(0, False, 0, ((1, 'I'),)),
|
|
146
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'))),
|
|
147
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'))),
|
|
148
|
+
(0, False, 0, ((1, 'I'), (1, 'I'))),
|
|
149
|
+
(0, False, 0, ((1, 'S'), (1, 'S'))),
|
|
150
|
+
(0, False, 0, ((2, 'S'),)),
|
|
151
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
152
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
153
|
+
(-3, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))))
|
|
154
|
+
|
|
155
|
+
@property
|
|
156
|
+
def atomic_radius(self):
|
|
157
|
+
return 1.8
|
|
158
|
+
|
|
159
|
+
@property
|
|
160
|
+
def mdl_isotope(self):
|
|
161
|
+
return 192
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
class Mt(Element, PeriodVII, GroupIX):
|
|
165
|
+
__slots__ = ()
|
|
166
|
+
|
|
167
|
+
@property
|
|
168
|
+
def atomic_number(self):
|
|
169
|
+
return 109
|
|
170
|
+
|
|
171
|
+
@property
|
|
172
|
+
def isotopes_distribution(self):
|
|
173
|
+
return {278: 1.0}
|
|
174
|
+
|
|
175
|
+
@property
|
|
176
|
+
def isotopes_masses(self):
|
|
177
|
+
return {278: 278.15481}
|
|
178
|
+
|
|
179
|
+
@property
|
|
180
|
+
def _common_valences(self):
|
|
181
|
+
return 0,
|
|
182
|
+
|
|
183
|
+
@property
|
|
184
|
+
def _valences_exceptions(self):
|
|
185
|
+
return ()
|
|
186
|
+
|
|
187
|
+
@property
|
|
188
|
+
def atomic_radius(self):
|
|
189
|
+
return 1.8 # unknown, taken radius of previous element in group
|
|
190
|
+
|
|
191
|
+
@property
|
|
192
|
+
def mdl_isotope(self):
|
|
193
|
+
return 278
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
__all__ = ['Co', 'Rh', 'Ir', 'Mt']
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2019-2024 Ramil Nugmanov <nougmanoff@protonmail.com>
|
|
4
|
+
# Copyright 2019 Alexander Nikanshin <17071996sasha@gmail.com>
|
|
5
|
+
# Copyright 2019 Tagir Akhmetshin <tagirshin@gmail.com>
|
|
6
|
+
# This file is part of chython.
|
|
7
|
+
#
|
|
8
|
+
# chython is free software; you can redistribute it and/or modify
|
|
9
|
+
# it under the terms of the GNU Lesser General Public License as published by
|
|
10
|
+
# the Free Software Foundation; either version 3 of the License, or
|
|
11
|
+
# (at your option) any later version.
|
|
12
|
+
#
|
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
# GNU Lesser General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU Lesser General Public License
|
|
19
|
+
# along with this program; if not, see <https://www.gnu.org/licenses/>.
|
|
20
|
+
#
|
|
21
|
+
from .base import Element
|
|
22
|
+
from .base.groups import GroupV
|
|
23
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class V(Element, PeriodIV, GroupV):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def atomic_number(self):
|
|
31
|
+
return 23
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def isotopes_distribution(self):
|
|
35
|
+
return {50: 0.0025, 51: 0.9975}
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def isotopes_masses(self):
|
|
39
|
+
return {50: 49.947163, 51: 50.943964}
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def _common_valences(self):
|
|
43
|
+
return 0, 2
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def _valences_exceptions(self):
|
|
47
|
+
return ((2, False, 0, ()), (3, False, 0, ()), (2, False, 0, ((2, 'O'),)),
|
|
48
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'))),
|
|
49
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
50
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
51
|
+
(0, False, 0, ((2, 'O'), (1, 'O'))),
|
|
52
|
+
(0, False, 0, ((2, 'O'), (1, 'Cl'))),
|
|
53
|
+
|
|
54
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
55
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
56
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
57
|
+
(0, False, 0, ((2, 'O'), (2, 'O'))),
|
|
58
|
+
(0, False, 0, ((2, 'O'), (1, 'Cl'), (1, 'Cl'))),
|
|
59
|
+
|
|
60
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
61
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'))),
|
|
62
|
+
(0, False, 0, ((2, 'S'), (2, 'S'), (1, 'S'))),
|
|
63
|
+
(0, False, 0, ((2, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))),
|
|
64
|
+
(0, False, 0, ((2, 'O'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
65
|
+
(0, False, 0, ((2, 'O'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))))
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def atomic_radius(self):
|
|
69
|
+
return 1.71
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def mdl_isotope(self):
|
|
73
|
+
return 51
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class Nb(Element, PeriodV, GroupV):
|
|
77
|
+
__slots__ = ()
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def atomic_number(self):
|
|
81
|
+
return 41
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def isotopes_distribution(self):
|
|
85
|
+
return {93: 1.0}
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def isotopes_masses(self):
|
|
89
|
+
return {93: 92.906378}
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def _common_valences(self):
|
|
93
|
+
return 0,
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def _valences_exceptions(self):
|
|
97
|
+
return ((0, False, 0, ((2, 'O'),)),
|
|
98
|
+
(0, False, 0, ((2, 'O'), (1, 'O'))),
|
|
99
|
+
(0, False, 0, ((3, 'N'),)),
|
|
100
|
+
|
|
101
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
102
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
103
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
104
|
+
(0, False, 0, ((2, 'O'), (2, 'O'))),
|
|
105
|
+
(0, False, 0, ((2, 'S'), (2, 'S'))),
|
|
106
|
+
|
|
107
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
108
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
109
|
+
(0, False, 0, ((2, 'O'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
110
|
+
(0, False, 0, ((2, 'O'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
111
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'))),
|
|
112
|
+
(0, False, 0, ((2, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))))
|
|
113
|
+
|
|
114
|
+
@property
|
|
115
|
+
def atomic_radius(self):
|
|
116
|
+
return 1.98
|
|
117
|
+
|
|
118
|
+
@property
|
|
119
|
+
def mdl_isotope(self):
|
|
120
|
+
return 93
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class Ta(Element, PeriodVI, GroupV):
|
|
124
|
+
__slots__ = ()
|
|
125
|
+
|
|
126
|
+
@property
|
|
127
|
+
def atomic_number(self):
|
|
128
|
+
return 73
|
|
129
|
+
|
|
130
|
+
@property
|
|
131
|
+
def isotopes_distribution(self):
|
|
132
|
+
return {180: 0.00012, 181: 0.99988}
|
|
133
|
+
|
|
134
|
+
@property
|
|
135
|
+
def isotopes_masses(self):
|
|
136
|
+
return {180: 179.947466, 181: 180.947996}
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def _common_valences(self):
|
|
140
|
+
return 0,
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
def _valences_exceptions(self):
|
|
144
|
+
return ((0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
145
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
146
|
+
(0, False, 0, ((2, 'O'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
147
|
+
(0, False, 0, ((2, 'O'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
148
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'))),
|
|
149
|
+
(0, False, 0, ((2, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))))
|
|
150
|
+
|
|
151
|
+
@property
|
|
152
|
+
def atomic_radius(self):
|
|
153
|
+
return 2.0
|
|
154
|
+
|
|
155
|
+
@property
|
|
156
|
+
def mdl_isotope(self):
|
|
157
|
+
return 181
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class Db(Element, PeriodVII, GroupV):
|
|
161
|
+
__slots__ = ()
|
|
162
|
+
|
|
163
|
+
@property
|
|
164
|
+
def atomic_number(self):
|
|
165
|
+
return 105
|
|
166
|
+
|
|
167
|
+
@property
|
|
168
|
+
def isotopes_distribution(self):
|
|
169
|
+
return {268: 1.0}
|
|
170
|
+
|
|
171
|
+
@property
|
|
172
|
+
def isotopes_masses(self):
|
|
173
|
+
return {268: 268.125676}
|
|
174
|
+
|
|
175
|
+
@property
|
|
176
|
+
def _common_valences(self):
|
|
177
|
+
return 0,
|
|
178
|
+
|
|
179
|
+
@property
|
|
180
|
+
def _valences_exceptions(self):
|
|
181
|
+
return ()
|
|
182
|
+
|
|
183
|
+
@property
|
|
184
|
+
def atomic_radius(self):
|
|
185
|
+
return 2.0 # unknown, taken radius of previous element in group
|
|
186
|
+
|
|
187
|
+
@property
|
|
188
|
+
def mdl_isotope(self):
|
|
189
|
+
return 270
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
__all__ = ['V', 'Nb', 'Ta', 'Db']
|