chython 2.19__cp313-cp313-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 +35 -0
- chython/_functions.py +95 -0
- chython/_java.py +57 -0
- chython/algorithms/__init__.py +18 -0
- chython/algorithms/_isomorphism.cp313-win_amd64.pyd +0 -0
- chython/algorithms/_isomorphism.pyx +189 -0
- chython/algorithms/_rings.cp313-win_amd64.pyd +0 -0
- chython/algorithms/_rings.pyx +478 -0
- chython/algorithms/aromatics/__init__.py +27 -0
- chython/algorithms/aromatics/_rules.py +124 -0
- chython/algorithms/aromatics/kekule.py +532 -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 +222 -0
- chython/algorithms/calculate2d/__init__.py +23 -0
- chython/algorithms/calculate2d/clean2d.js +1 -0
- chython/algorithms/calculate2d/molecule.py +191 -0
- chython/algorithms/calculate2d/reaction.py +75 -0
- chython/algorithms/conformers.py +106 -0
- chython/algorithms/depict.py +596 -0
- chython/algorithms/fingerprints/__init__.py +43 -0
- chython/algorithms/fingerprints/linear.py +202 -0
- chython/algorithms/fingerprints/morgan.py +132 -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/groups/__init__.py +212 -0
- chython/algorithms/groups/_functional.py +290 -0
- chython/algorithms/groups/_oxidations.py +70 -0
- chython/algorithms/groups/_protective.py +964 -0
- chython/algorithms/groups/_reactions.py +809 -0
- chython/algorithms/groups/_reductions.py +88 -0
- chython/algorithms/groups/_transformations.py +278 -0
- chython/algorithms/groups/test/__init__.py +18 -0
- chython/algorithms/groups/test/test_deprotection.py +108 -0
- chython/algorithms/groups/test/test_reactions.py +377 -0
- chython/algorithms/isomorphism.py +664 -0
- chython/algorithms/mapping/__init__.py +188 -0
- chython/algorithms/mapping/_groups.py +94 -0
- chython/algorithms/mapping/_reactions.py +72 -0
- chython/algorithms/mapping/attention.py +266 -0
- chython/algorithms/mapping/reconstruct.py +346 -0
- chython/algorithms/mcs.py +201 -0
- chython/algorithms/morgan.py +77 -0
- chython/algorithms/rings.py +178 -0
- chython/algorithms/smiles.py +597 -0
- chython/algorithms/standardize/__init__.py +30 -0
- chython/algorithms/standardize/_groups.py +958 -0
- chython/algorithms/standardize/_isomers.py +330 -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 +475 -0
- chython/algorithms/standardize/reaction.py +384 -0
- chython/algorithms/standardize/resonance.py +191 -0
- chython/algorithms/standardize/salts.py +128 -0
- chython/algorithms/standardize/saturation.py +373 -0
- chython/algorithms/standardize/test/__init__.py +18 -0
- chython/algorithms/standardize/test/test_canonicalize.py +66 -0
- chython/algorithms/standardize/test/test_groups.py +146 -0
- chython/algorithms/standardize/test/test_isomers.py +198 -0
- chython/algorithms/stereo.py +1215 -0
- chython/algorithms/tautomers/__init__.py +167 -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 +208 -0
- chython/algorithms/tautomers/heteroarenes.py +103 -0
- chython/algorithms/tautomers/keto_enol.py +143 -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 +350 -0
- chython/containers/__init__.py +48 -0
- chython/containers/_pack_v2.cp313-win_amd64.pyd +0 -0
- chython/containers/_pack_v2.pyx +271 -0
- chython/containers/_unpack_v0v2.cp313-win_amd64.pyd +0 -0
- chython/containers/_unpack_v0v2.pyx +302 -0
- chython/containers/bonds.py +255 -0
- chython/containers/cgr.py +115 -0
- chython/containers/chimera.py +63 -0
- chython/containers/graph.py +199 -0
- chython/containers/molecule.py +817 -0
- chython/containers/query.py +71 -0
- chython/containers/rdkit.py +183 -0
- chython/containers/reaction.py +324 -0
- chython/containers/test/__init__.py +18 -0
- chython/containers/test/test_molecule.py +117 -0
- chython/containers/test/test_pack.py +60 -0
- chython/containers/test/test_rdkit.py +70 -0
- chython/containers/test/test_reaction.py +40 -0
- chython/exceptions.py +114 -0
- chython/files/MRVrw.py +532 -0
- chython/files/PDBrw.py +255 -0
- chython/files/RDFrw.py +309 -0
- chython/files/SDFrw.py +221 -0
- chython/files/__init__.py +30 -0
- chython/files/_convert.py +207 -0
- chython/files/_mapping.py +117 -0
- chython/files/_xyz.cp313-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 +260 -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 +554 -0
- chython/files/mdl/__init__.py +25 -0
- chython/files/mdl/emol.py +251 -0
- chython/files/mdl/erxn.py +67 -0
- chython/files/mdl/mol.py +186 -0
- chython/files/mdl/read.py +223 -0
- chython/files/mdl/rxn.py +67 -0
- chython/files/mdl/stereo.py +63 -0
- chython/files/mdl/write.py +201 -0
- chython/files/opsin.py +35 -0
- chython/files/test/__init__.py +0 -0
- chython/files/test/test_inchi.py +27 -0
- chython/files/test/test_mrv.py +47 -0
- chython/files/test/test_sdf_rdf.py +64 -0
- chython/files/test/test_xyz.py +20 -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 +451 -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/periodictable/test/__init__.py +0 -0
- chython/periodictable/test/test_element.py +100 -0
- chython/reactor/__init__.py +24 -0
- chython/reactor/base.py +222 -0
- chython/reactor/reactor.py +177 -0
- chython/reactor/test/__init__.py +18 -0
- chython/reactor/test/test_reactor.py +40 -0
- chython/reactor/test/test_transformer.py +78 -0
- chython/reactor/transformer.py +72 -0
- chython/utils/__init__.py +50 -0
- chython/utils/free_wilson.py +114 -0
- chython/utils/grid.py +130 -0
- chython/utils/retro.py +139 -0
- chython-2.19.dist-info/METADATA +105 -0
- chython-2.19.dist-info/RECORD +175 -0
- chython-2.19.dist-info/WHEEL +4 -0
- chython-2.19.dist-info/licenses/LICENSE +165 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2019-2026 Ramil Nugmanov <nougmanoff@protonmail.com>
|
|
4
|
+
# Copyright 2019 Tagir Akhmetshin <tagirshin@gmail.com>
|
|
5
|
+
# Copyright 2019 Dayana Bashirova <dayana.bashirova@yandex.ru>
|
|
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 GroupVI
|
|
23
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Cr(Element, PeriodIV, GroupVI):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def atomic_number(self):
|
|
31
|
+
return 24
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def isotopes_distribution(self):
|
|
35
|
+
return {50: 0.04345, 51: 0., 52: 0.83789, 53: 0.09501, 54: 0.02365}
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def isotopes_masses(self):
|
|
39
|
+
return {50: 49.946050, 51: 50.944767, 52: 51.940512, 53: 52.940654, 54: 53.938885}
|
|
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, ()), (3, False, 0, ()),
|
|
48
|
+
(0, False, 0, ((2, 'O'), (2, 'O'))), # CrO2
|
|
49
|
+
(0, False, 0, ((2, 'O'), (1, 'O'), (1, 'O'))),
|
|
50
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))), # CrF4
|
|
51
|
+
(0, False, 0, ((1, 'C'), (1, 'C'), (1, 'C'), (1, 'C'))), # CrC4
|
|
52
|
+
|
|
53
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'))),
|
|
54
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'), (1, 'O'))),
|
|
55
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'), (1, 'Cl'))),
|
|
56
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'Cl'), (1, 'Cl'))))
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def atomic_radius(self):
|
|
60
|
+
return 1.66
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def mdl_isotope(self):
|
|
64
|
+
return 52
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class Mo(Element, PeriodV, GroupVI):
|
|
68
|
+
__slots__ = ()
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def atomic_number(self):
|
|
72
|
+
return 42
|
|
73
|
+
|
|
74
|
+
@property
|
|
75
|
+
def isotopes_distribution(self):
|
|
76
|
+
return {92: 0.1484, 94: 0.0925, 95: 0.1592, 96: 0.1668, 97: 0.0955, 98: 0.2413, 99: 0., 100: 0.0963}
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def isotopes_masses(self):
|
|
80
|
+
return {92: 91.906810, 94: 93.905088, 95: 94.905841, 96: 95.904679, 97: 96.906021, 98: 97.905408, 99: 98.907712,
|
|
81
|
+
100: 99.907477}
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def _common_valences(self):
|
|
85
|
+
return 0,
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def _valences_exceptions(self):
|
|
89
|
+
return ((0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
90
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
91
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
92
|
+
(0, False, 0, ((2, 'O'), (2, 'O'))),
|
|
93
|
+
(0, False, 0, ((2, 'S'), (2, 'S'))),
|
|
94
|
+
|
|
95
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
96
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
97
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
98
|
+
|
|
99
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'))),
|
|
100
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'), (1, 'O'))),
|
|
101
|
+
|
|
102
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
103
|
+
(0, False, 0, ((2, 'O'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))))
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def atomic_radius(self):
|
|
107
|
+
return 1.90
|
|
108
|
+
|
|
109
|
+
@property
|
|
110
|
+
def mdl_isotope(self):
|
|
111
|
+
return 96
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class W(Element, PeriodVI, GroupVI):
|
|
115
|
+
__slots__ = ()
|
|
116
|
+
|
|
117
|
+
@property
|
|
118
|
+
def atomic_number(self):
|
|
119
|
+
return 74
|
|
120
|
+
|
|
121
|
+
@property
|
|
122
|
+
def isotopes_distribution(self):
|
|
123
|
+
return {180: 0.0012, 182: 0.265, 183: 0.1431, 184: 0.3064, 186: 0.2843}
|
|
124
|
+
|
|
125
|
+
@property
|
|
126
|
+
def isotopes_masses(self):
|
|
127
|
+
return {180: 179.946706, 182: 181.948206, 183: 182.950224, 184: 183.950933, 186: 185.954362}
|
|
128
|
+
|
|
129
|
+
@property
|
|
130
|
+
def _common_valences(self):
|
|
131
|
+
return 0,
|
|
132
|
+
|
|
133
|
+
@property
|
|
134
|
+
def _valences_exceptions(self):
|
|
135
|
+
return ((0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'))),
|
|
136
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'), (1, 'O'))),
|
|
137
|
+
|
|
138
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
139
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
140
|
+
(0, False, 0, ((2, 'O'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))))
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
def atomic_radius(self):
|
|
144
|
+
return 1.93
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def mdl_isotope(self):
|
|
148
|
+
return 184
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
class Sg(Element, PeriodVII, GroupVI):
|
|
152
|
+
__slots__ = ()
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def atomic_number(self):
|
|
156
|
+
return 106
|
|
157
|
+
|
|
158
|
+
@property
|
|
159
|
+
def isotopes_distribution(self):
|
|
160
|
+
return {269: 1.0}
|
|
161
|
+
|
|
162
|
+
@property
|
|
163
|
+
def isotopes_masses(self):
|
|
164
|
+
return {269: 269.128634}
|
|
165
|
+
|
|
166
|
+
@property
|
|
167
|
+
def _common_valences(self):
|
|
168
|
+
return 0,
|
|
169
|
+
|
|
170
|
+
@property
|
|
171
|
+
def _valences_exceptions(self):
|
|
172
|
+
return ()
|
|
173
|
+
|
|
174
|
+
@property
|
|
175
|
+
def atomic_radius(self):
|
|
176
|
+
return 1.93 # unknown, taken radius of previous element in group
|
|
177
|
+
|
|
178
|
+
@property
|
|
179
|
+
def mdl_isotope(self):
|
|
180
|
+
return 269
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
__all__ = ['Cr', 'Mo', 'W', 'Sg']
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2019-2026 Ramil Nugmanov <nougmanoff@protonmail.com>
|
|
4
|
+
# Copyright 2019 Tagir Akhmetshin <tagirshin@gmail.com>
|
|
5
|
+
# Copyright 2019 Alexander Nikanshin <17071996sasha@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 GroupVII
|
|
23
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Mn(Element, PeriodIV, GroupVII):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def atomic_number(self):
|
|
31
|
+
return 25
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def isotopes_distribution(self):
|
|
35
|
+
return {52: 0., 55: 1.0}
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def isotopes_masses(self):
|
|
39
|
+
return {52: 51.945566, 55: 54.938050}
|
|
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, ()),
|
|
48
|
+
(0, False, 0, ((2, 'O'), (2, 'O'))),
|
|
49
|
+
(0, False, 0, ((2, 'O'),)), # MnO
|
|
50
|
+
(0, False, 0, ((2, 'O'), (1, 'O'))), # Mn2O3
|
|
51
|
+
(0, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'))),
|
|
52
|
+
(0, False, 0, ((2, 'O'), (2, 'O'))), # MnO2
|
|
53
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'), (1, 'O'))), # [MnO4]2-
|
|
54
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'), (1, 'O')))) # [MnO4]-
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def atomic_radius(self):
|
|
58
|
+
return 1.61
|
|
59
|
+
|
|
60
|
+
@property
|
|
61
|
+
def mdl_isotope(self):
|
|
62
|
+
return 55
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class Tc(Element, PeriodV, GroupVII):
|
|
66
|
+
__slots__ = ()
|
|
67
|
+
|
|
68
|
+
@property
|
|
69
|
+
def atomic_number(self):
|
|
70
|
+
return 43
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def isotopes_distribution(self):
|
|
74
|
+
return {98: 0., 99: 1.0}
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def isotopes_masses(self):
|
|
78
|
+
return {98: 97.907216, 99: 98.906255}
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def _common_valences(self):
|
|
82
|
+
return 0,
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def _valences_exceptions(self):
|
|
86
|
+
return ((0, False, 0, ((2, 'O'), (2, 'O'))), # TcO2
|
|
87
|
+
(0, False, 0, ((2, 'S'), (2, 'S')))) # TcS2
|
|
88
|
+
|
|
89
|
+
@property
|
|
90
|
+
def atomic_radius(self):
|
|
91
|
+
return 1.83
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def mdl_isotope(self):
|
|
95
|
+
return 98
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class Re(Element, PeriodVI, GroupVII):
|
|
99
|
+
__slots__ = ()
|
|
100
|
+
|
|
101
|
+
@property
|
|
102
|
+
def atomic_number(self):
|
|
103
|
+
return 75
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def isotopes_distribution(self):
|
|
107
|
+
return {185: 0.374, 186: 0., 187: 0.626, 188: 0.}
|
|
108
|
+
|
|
109
|
+
@property
|
|
110
|
+
def isotopes_masses(self):
|
|
111
|
+
return {185: 184.952956, 186: 185.954986, 187: 186.955751, 188: 187.958114}
|
|
112
|
+
|
|
113
|
+
@property
|
|
114
|
+
def _common_valences(self):
|
|
115
|
+
return 0,
|
|
116
|
+
|
|
117
|
+
@property
|
|
118
|
+
def _valences_exceptions(self):
|
|
119
|
+
return ()
|
|
120
|
+
|
|
121
|
+
@property
|
|
122
|
+
def atomic_radius(self):
|
|
123
|
+
return 1.88
|
|
124
|
+
|
|
125
|
+
@property
|
|
126
|
+
def mdl_isotope(self):
|
|
127
|
+
return 186
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
class Bh(Element, PeriodVII, GroupVII):
|
|
131
|
+
__slots__ = ()
|
|
132
|
+
|
|
133
|
+
@property
|
|
134
|
+
def atomic_number(self):
|
|
135
|
+
return 107
|
|
136
|
+
|
|
137
|
+
@property
|
|
138
|
+
def isotopes_distribution(self):
|
|
139
|
+
return {270: 1.0}
|
|
140
|
+
|
|
141
|
+
@property
|
|
142
|
+
def isotopes_masses(self):
|
|
143
|
+
return {270: 270.133363}
|
|
144
|
+
|
|
145
|
+
@property
|
|
146
|
+
def _common_valences(self):
|
|
147
|
+
return 0,
|
|
148
|
+
|
|
149
|
+
@property
|
|
150
|
+
def _valences_exceptions(self):
|
|
151
|
+
return ()
|
|
152
|
+
|
|
153
|
+
@property
|
|
154
|
+
def atomic_radius(self):
|
|
155
|
+
return 1.88 # unknown, taken radius of previous element in group
|
|
156
|
+
|
|
157
|
+
@property
|
|
158
|
+
def mdl_isotope(self):
|
|
159
|
+
return 270
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
__all__ = ['Mn', 'Tc', 'Re', 'Bh']
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2019-2026 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 GroupVIII
|
|
22
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Fe(Element, PeriodIV, GroupVIII):
|
|
26
|
+
__slots__ = ()
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def atomic_number(self):
|
|
30
|
+
return 26
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def isotopes_distribution(self):
|
|
34
|
+
return {54: 0.05845, 55: 0., 56: 0.91754, 57: 0.02119, 58: 0.00282, 59: 0.}
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def isotopes_masses(self):
|
|
38
|
+
return {54: 53.939615, 55: 54.938293, 56: 55.934942, 57: 56.935399, 58: 57.933281, 59: 58.934876}
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def _common_valences(self):
|
|
42
|
+
return 0, 2, 3
|
|
43
|
+
|
|
44
|
+
@property
|
|
45
|
+
def _valences_exceptions(self):
|
|
46
|
+
return (2, False, 0, ()), (3, False, 0, ())
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def atomic_radius(self):
|
|
50
|
+
return 1.56
|
|
51
|
+
|
|
52
|
+
@property
|
|
53
|
+
def mdl_isotope(self):
|
|
54
|
+
return 56
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class Ru(Element, PeriodV, GroupVIII):
|
|
58
|
+
__slots__ = ()
|
|
59
|
+
|
|
60
|
+
@property
|
|
61
|
+
def atomic_number(self):
|
|
62
|
+
return 44
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def isotopes_distribution(self):
|
|
66
|
+
return {96: 0.0554, 98: 0.0187, 99: 0.1276, 100: 0.126, 101: 0.1706, 102: 0.3155, 104: 0.1862, 106: 0.}
|
|
67
|
+
|
|
68
|
+
@property
|
|
69
|
+
def isotopes_masses(self):
|
|
70
|
+
return {96: 95.907598, 98: 97.905287, 99: 98.905939, 100: 99.90422, 101: 100.905582, 102: 101.904349,
|
|
71
|
+
104: 103.90543, 106: 105.907329}
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def _common_valences(self):
|
|
75
|
+
return 0,
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def _valences_exceptions(self):
|
|
79
|
+
return ((0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'), (2, 'O'))), # RuO4
|
|
80
|
+
(0, False, 0, ((1, 'O'), (2, 'O'), (2, 'O'), (2, 'O'))), # [RuO4]-
|
|
81
|
+
(0, False, 0, ((2, 'C'), (1, 'Cl'), (1, 'Cl'))), # Grubbs
|
|
82
|
+
(0, False, 0, ((2, 'C'), (1, 'C'), (1, 'Cl'), (1, 'Cl')))) # Hoveyda–Grubbs
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def atomic_radius(self):
|
|
86
|
+
return 1.78
|
|
87
|
+
|
|
88
|
+
@property
|
|
89
|
+
def mdl_isotope(self):
|
|
90
|
+
return 101
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class Os(Element, PeriodVI, GroupVIII):
|
|
94
|
+
__slots__ = ()
|
|
95
|
+
|
|
96
|
+
@property
|
|
97
|
+
def atomic_number(self):
|
|
98
|
+
return 76
|
|
99
|
+
|
|
100
|
+
@property
|
|
101
|
+
def isotopes_distribution(self):
|
|
102
|
+
return {184: 0.0002, 186: 0.0159, 187: 0.0196, 188: 0.1324, 189: 0.1615, 190: 0.2626, 191: 0., 192: 0.4078}
|
|
103
|
+
|
|
104
|
+
@property
|
|
105
|
+
def isotopes_masses(self):
|
|
106
|
+
return {184: 183.952491, 186: 185.953838, 187: 186.955748, 188: 187.955836, 189: 188.958145, 190: 189.958445,
|
|
107
|
+
191: 190.960930, 192: 191.961479}
|
|
108
|
+
|
|
109
|
+
@property
|
|
110
|
+
def _common_valences(self):
|
|
111
|
+
return 0,
|
|
112
|
+
|
|
113
|
+
@property
|
|
114
|
+
def _valences_exceptions(self):
|
|
115
|
+
return ((0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'), (2, 'O'))),
|
|
116
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'), (1, 'O'), (1, 'O'))),
|
|
117
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'))),
|
|
118
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (1, 'O'), (1, 'O'))))
|
|
119
|
+
|
|
120
|
+
@property
|
|
121
|
+
def atomic_radius(self):
|
|
122
|
+
return 1.85
|
|
123
|
+
|
|
124
|
+
@property
|
|
125
|
+
def mdl_isotope(self):
|
|
126
|
+
return 190
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class Hs(Element, PeriodVII, GroupVIII):
|
|
130
|
+
__slots__ = ()
|
|
131
|
+
|
|
132
|
+
@property
|
|
133
|
+
def atomic_number(self):
|
|
134
|
+
return 108
|
|
135
|
+
|
|
136
|
+
@property
|
|
137
|
+
def isotopes_distribution(self):
|
|
138
|
+
return {240: 1.0}
|
|
139
|
+
|
|
140
|
+
@property
|
|
141
|
+
def isotopes_masses(self):
|
|
142
|
+
return {270: 270.134293}
|
|
143
|
+
|
|
144
|
+
@property
|
|
145
|
+
def _common_valences(self):
|
|
146
|
+
return 0,
|
|
147
|
+
|
|
148
|
+
@property
|
|
149
|
+
def _valences_exceptions(self):
|
|
150
|
+
return ()
|
|
151
|
+
|
|
152
|
+
@property
|
|
153
|
+
def atomic_radius(self):
|
|
154
|
+
return 1.85 # unknown, taken radius of previous element in group
|
|
155
|
+
|
|
156
|
+
@property
|
|
157
|
+
def mdl_isotope(self):
|
|
158
|
+
return 270
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
__all__ = ['Fe', 'Ru', 'Os', 'Hs']
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2019-2026 Ramil Nugmanov <nougmanoff@protonmail.com>
|
|
4
|
+
# Copyright 2019 Tagir Akhmetshin <tagirshin@gmail.com>
|
|
5
|
+
# Copyright 2019 Dayana Bashirova <dayana.bashirova@yandex.ru>
|
|
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 GroupX
|
|
23
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Ni(Element, PeriodIV, GroupX):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def atomic_number(self):
|
|
31
|
+
return 28
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def isotopes_distribution(self):
|
|
35
|
+
return {58: 0.680769, 60: 0.262231, 61: 0.011399, 62: 0.036345, 63: 0., 64: 0.009256}
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def isotopes_masses(self):
|
|
39
|
+
return {58: 57.935348, 60: 59.930791, 61: 60.931060, 62: 61.928349, 63: 62.929669, 64: 63.927970}
|
|
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, ()),
|
|
48
|
+
(1, False, 0, ((1, 'C'),)),
|
|
49
|
+
(0, False, 0, ((2, 'O'), (1, 'O')))) # Ni2O3
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def atomic_radius(self):
|
|
53
|
+
return 1.49
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def mdl_isotope(self):
|
|
57
|
+
return 59
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class Pd(Element, PeriodV, GroupX):
|
|
61
|
+
__slots__ = ()
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def atomic_number(self):
|
|
65
|
+
return 46
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def isotopes_distribution(self):
|
|
69
|
+
return {102: 0.0102, 103: 0., 104: 0.1114, 105: 0.2233, 106: 0.2733, 108: 0.2646, 109: 0., 110: 0.1172}
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def isotopes_masses(self):
|
|
73
|
+
return {102: 101.905608, 103: 102.906087, 104: 103.904035, 105: 104.905084, 106: 105.903483, 108: 107.903894,
|
|
74
|
+
109: 108.905950, 110: 109.905152}
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def _common_valences(self):
|
|
78
|
+
return 0, 2
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def _valences_exceptions(self):
|
|
82
|
+
return ((2, False, 0, ()),
|
|
83
|
+
(1, False, 0, ((1, 'C'),)),
|
|
84
|
+
(-2, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'), (1, 'O'))), # [Pd(OH)4]2-
|
|
85
|
+
(-2, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))), # [PdF4]2-
|
|
86
|
+
(-2, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl')))) # [PdCl4]2-
|
|
87
|
+
|
|
88
|
+
@property
|
|
89
|
+
def atomic_radius(self):
|
|
90
|
+
return 1.69
|
|
91
|
+
|
|
92
|
+
@property
|
|
93
|
+
def mdl_isotope(self):
|
|
94
|
+
return 106
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class Pt(Element, PeriodVI, GroupX):
|
|
98
|
+
__slots__ = ()
|
|
99
|
+
|
|
100
|
+
@property
|
|
101
|
+
def atomic_number(self):
|
|
102
|
+
return 78
|
|
103
|
+
|
|
104
|
+
@property
|
|
105
|
+
def isotopes_distribution(self):
|
|
106
|
+
return {190: 0.00014, 192: 0.00782, 194: 0.32967, 195: 0.33832, 196: 0.25242, 198: 0.07163}
|
|
107
|
+
|
|
108
|
+
@property
|
|
109
|
+
def isotopes_masses(self):
|
|
110
|
+
return {190: 189.95993, 192: 191.961035, 194: 193.962664, 195: 194.964774, 196: 195.964935, 198: 197.967876}
|
|
111
|
+
|
|
112
|
+
@property
|
|
113
|
+
def _common_valences(self):
|
|
114
|
+
return 0, 2
|
|
115
|
+
|
|
116
|
+
@property
|
|
117
|
+
def _valences_exceptions(self):
|
|
118
|
+
return ((2, False, 0, ()),
|
|
119
|
+
(0, False, 0, ((1, 'N'), (1, 'N'), (1, 'Cl'), (1, 'Cl'))),
|
|
120
|
+
(0, False, 0, ((1, 'N'), (1, 'N'), (1, 'O'), (1, 'O'))),
|
|
121
|
+
(0, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))), # PtF6
|
|
122
|
+
(0, False, 0, ((2, 'O'), (2, 'O'), (2, 'O'))), # PtO3
|
|
123
|
+
(0, False, 0, ((2, 'O'), (2, 'O'))))
|
|
124
|
+
|
|
125
|
+
@property
|
|
126
|
+
def atomic_radius(self):
|
|
127
|
+
return 1.77
|
|
128
|
+
|
|
129
|
+
@property
|
|
130
|
+
def mdl_isotope(self):
|
|
131
|
+
return 195
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class Ds(Element, PeriodVII, GroupX):
|
|
135
|
+
__slots__ = ()
|
|
136
|
+
|
|
137
|
+
@property
|
|
138
|
+
def atomic_number(self):
|
|
139
|
+
return 110
|
|
140
|
+
|
|
141
|
+
@property
|
|
142
|
+
def isotopes_distribution(self):
|
|
143
|
+
return {281: 1.0}
|
|
144
|
+
|
|
145
|
+
@property
|
|
146
|
+
def isotopes_masses(self):
|
|
147
|
+
return {281: 281.164516}
|
|
148
|
+
|
|
149
|
+
@property
|
|
150
|
+
def _common_valences(self):
|
|
151
|
+
return 0,
|
|
152
|
+
|
|
153
|
+
@property
|
|
154
|
+
def _valences_exceptions(self):
|
|
155
|
+
return ()
|
|
156
|
+
|
|
157
|
+
@property
|
|
158
|
+
def atomic_radius(self):
|
|
159
|
+
return 1.77 # unknown, taken radius of previous element in group
|
|
160
|
+
|
|
161
|
+
@property
|
|
162
|
+
def mdl_isotope(self):
|
|
163
|
+
return 281
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
__all__ = ['Ni', 'Pd', 'Pt', 'Ds']
|