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,164 @@
|
|
|
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 GroupXI
|
|
23
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Cu(Element, PeriodIV, GroupXI):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def atomic_number(self):
|
|
31
|
+
return 29
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def isotopes_distribution(self):
|
|
35
|
+
return {63: 0.6917, 64: 0., 65: 0.3083, 67: 0.}
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def isotopes_masses(self):
|
|
39
|
+
return {63: 62.929601, 64: 63.929764, 65: 64.927794, 67: 66.927730}
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def _common_valences(self):
|
|
43
|
+
return 0, 1, 2
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def _valences_exceptions(self):
|
|
47
|
+
return ((1, False, 0, ()), (2, False, 0, ()),
|
|
48
|
+
(-1, False, 0, ((1, 'Cl'), (1, 'Cl'))), # [CuCl2]-
|
|
49
|
+
(-3, False, 0, ((1, 'S'), (1, 'S')))) # [CuS2]3-
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def atomic_radius(self):
|
|
53
|
+
return 1.45
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def mdl_isotope(self):
|
|
57
|
+
return 64
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class Ag(Element, PeriodV, GroupXI):
|
|
61
|
+
__slots__ = ()
|
|
62
|
+
|
|
63
|
+
@property
|
|
64
|
+
def atomic_number(self):
|
|
65
|
+
return 47
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def isotopes_distribution(self):
|
|
69
|
+
return {107: 0.51839, 109: 0.48161, 110: 0., 111: 0.}
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def isotopes_masses(self):
|
|
73
|
+
return {107: 106.905093, 109: 108.904756, 110: 109.906107, 111: 110.905291}
|
|
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
|
+
(-1, False, 0, ((1, 'Cl'), (1, 'Cl'))), # [AgCl2]-
|
|
83
|
+
(-1, False, 0, ((1, 'O'), (1, 'O'))), # [Ag(OH)2]-
|
|
84
|
+
(-1, False, 0, ((1, 'S'), (1, 'S'))), # [AgS2]-
|
|
85
|
+
(0, False, 0, ((1, 'F'), (1, 'F')))) # AgF2
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def atomic_radius(self):
|
|
89
|
+
return 1.65
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def mdl_isotope(self):
|
|
93
|
+
return 108
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class Au(Element, PeriodVI, GroupXI):
|
|
97
|
+
__slots__ = ()
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def atomic_number(self):
|
|
101
|
+
return 79
|
|
102
|
+
|
|
103
|
+
@property
|
|
104
|
+
def isotopes_distribution(self):
|
|
105
|
+
return {195: 0., 197: 1.0, 198: 0.}
|
|
106
|
+
|
|
107
|
+
@property
|
|
108
|
+
def isotopes_masses(self):
|
|
109
|
+
return {195: 194.965035, 197: 196.966552, 198: 197.968244}
|
|
110
|
+
|
|
111
|
+
@property
|
|
112
|
+
def _common_valences(self):
|
|
113
|
+
return 0,
|
|
114
|
+
|
|
115
|
+
@property
|
|
116
|
+
def _valences_exceptions(self):
|
|
117
|
+
return ((1, False, 0, ()), (3, False, 0, ()),
|
|
118
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
119
|
+
(0, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'O'))),
|
|
120
|
+
(0, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
121
|
+
(-1, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))))
|
|
122
|
+
|
|
123
|
+
@property
|
|
124
|
+
def atomic_radius(self):
|
|
125
|
+
return 1.74
|
|
126
|
+
|
|
127
|
+
@property
|
|
128
|
+
def mdl_isotope(self):
|
|
129
|
+
return 197
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class Rg(Element, PeriodVII, GroupXI):
|
|
133
|
+
__slots__ = ()
|
|
134
|
+
|
|
135
|
+
@property
|
|
136
|
+
def atomic_number(self):
|
|
137
|
+
return 111
|
|
138
|
+
|
|
139
|
+
@property
|
|
140
|
+
def isotopes_distribution(self):
|
|
141
|
+
return {282: 1.0}
|
|
142
|
+
|
|
143
|
+
@property
|
|
144
|
+
def isotopes_masses(self):
|
|
145
|
+
return {282: 282.169127}
|
|
146
|
+
|
|
147
|
+
@property
|
|
148
|
+
def _common_valences(self):
|
|
149
|
+
return 0,
|
|
150
|
+
|
|
151
|
+
@property
|
|
152
|
+
def _valences_exceptions(self):
|
|
153
|
+
return ()
|
|
154
|
+
|
|
155
|
+
@property
|
|
156
|
+
def atomic_radius(self):
|
|
157
|
+
return 1.74 # unknown, taken radius of previous element in group
|
|
158
|
+
|
|
159
|
+
@property
|
|
160
|
+
def mdl_isotope(self):
|
|
161
|
+
return 281
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
__all__ = ['Cu', 'Ag', 'Au', 'Rg']
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2019-2024 Ramil Nugmanov <nougmanoff@protonmail.com>
|
|
4
|
+
# Copyright 2019 Dayana Bashirova <dayana.bashirova@yandex.ru>
|
|
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 GroupXII
|
|
22
|
+
from .base.periods import PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Zn(Element, PeriodIV, GroupXII):
|
|
26
|
+
__slots__ = ()
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def atomic_number(self):
|
|
30
|
+
return 30
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def isotopes_distribution(self):
|
|
34
|
+
return {62: 0., 64: 0.4863, 66: 0.279, 67: 0.041, 68: 0.1875, 69: 0., 70: 0.0062}
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def isotopes_masses(self):
|
|
38
|
+
return {62: 61.934330, 64: 63.929147, 66: 65.926037, 67: 66.927131, 68: 67.924848, 69: 68.926550, 70: 69.925325}
|
|
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, ()), (1, False, 0, ((1, 'C'),)),
|
|
47
|
+
(-2, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'), (1, 'O')))) # Zn[(OH)4]2-
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def atomic_radius(self):
|
|
51
|
+
return 1.42
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def mdl_isotope(self):
|
|
55
|
+
return 65
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class Cd(Element, PeriodV, GroupXII):
|
|
59
|
+
__slots__ = ()
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def atomic_number(self):
|
|
63
|
+
return 48
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def isotopes_distribution(self):
|
|
67
|
+
return {106: 0.0125, 108: 0.0089, 110: 0.1249, 111: 0.128, 112: 0.2413, 113: 0.1222, 114: 0.2873, 116: 0.0749}
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def isotopes_masses(self):
|
|
71
|
+
return {106: 105.906458, 108: 107.904183, 110: 109.903006, 111: 110.904182, 112: 111.902757, 113: 112.904401,
|
|
72
|
+
114: 113.903358, 116: 115.904755}
|
|
73
|
+
|
|
74
|
+
@property
|
|
75
|
+
def _common_valences(self):
|
|
76
|
+
return 0, 2
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def _valences_exceptions(self):
|
|
80
|
+
return ((2, False, 0, ()),
|
|
81
|
+
(-2, False, 0, ((1, 'O'), (1, 'O'), (1, 'O'), (1, 'O')))) # Cd[(OH)4]2-
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def atomic_radius(self):
|
|
85
|
+
return 1.61
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def mdl_isotope(self):
|
|
89
|
+
return 112
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class Hg(Element, PeriodVI, GroupXII):
|
|
93
|
+
__slots__ = ()
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def atomic_number(self):
|
|
97
|
+
return 80
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def isotopes_distribution(self):
|
|
101
|
+
return {196: 0.0015, 197: 0., 198: 0.0997, 199: 0.1687, 200: 0.231, 201: 0.1318, 202: 0.2986, 203: 0.,
|
|
102
|
+
204: 0.0687}
|
|
103
|
+
|
|
104
|
+
@property
|
|
105
|
+
def isotopes_masses(self):
|
|
106
|
+
return {196: 195.965815, 197: 196.967213, 198: 197.966752, 199: 198.968262, 200: 199.968309, 201: 200.970285,
|
|
107
|
+
202: 201.970626, 203: 202.972873, 204: 203.973476}
|
|
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.71
|
|
120
|
+
|
|
121
|
+
@property
|
|
122
|
+
def mdl_isotope(self):
|
|
123
|
+
return 201
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
class Cn(Element, PeriodVII, GroupXII):
|
|
127
|
+
__slots__ = ()
|
|
128
|
+
|
|
129
|
+
@property
|
|
130
|
+
def atomic_number(self):
|
|
131
|
+
return 112
|
|
132
|
+
|
|
133
|
+
@property
|
|
134
|
+
def isotopes_distribution(self):
|
|
135
|
+
return {285: 1.0}
|
|
136
|
+
|
|
137
|
+
@property
|
|
138
|
+
def isotopes_masses(self):
|
|
139
|
+
return {285: 285.177444}
|
|
140
|
+
|
|
141
|
+
@property
|
|
142
|
+
def _common_valences(self):
|
|
143
|
+
return 0,
|
|
144
|
+
|
|
145
|
+
@property
|
|
146
|
+
def _valences_exceptions(self):
|
|
147
|
+
return ()
|
|
148
|
+
|
|
149
|
+
@property
|
|
150
|
+
def atomic_radius(self):
|
|
151
|
+
return 1.71 # unknown, taken radius of previous element in group
|
|
152
|
+
|
|
153
|
+
@property
|
|
154
|
+
def mdl_isotope(self):
|
|
155
|
+
return 285
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
__all__ = ['Zn', 'Cd', 'Hg', 'Cn']
|
|
@@ -0,0 +1,239 @@
|
|
|
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.nasyrova@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 GroupXIII
|
|
23
|
+
from .base.periods import PeriodII, PeriodIII, PeriodIV, PeriodV, PeriodVI, PeriodVII
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class B(Element, PeriodII, GroupXIII):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def atomic_number(self):
|
|
31
|
+
return 5
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def isotopes_distribution(self):
|
|
35
|
+
return {10: 0.199, 11: 0.801}
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def isotopes_masses(self):
|
|
39
|
+
return {10: 10.012937, 11: 11.009305}
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def _common_valences(self):
|
|
43
|
+
return 3,
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def _valences_exceptions(self):
|
|
47
|
+
return ((-1, False, 4, ()), (0, False, 0, ()),
|
|
48
|
+
(0, True, 2, ())) # radical OGB-dataset
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def atomic_radius(self):
|
|
52
|
+
return .87
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def mdl_isotope(self):
|
|
56
|
+
return 11
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def is_forming_single_bonds(self):
|
|
60
|
+
return True
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def is_forming_double_bonds(self):
|
|
64
|
+
return True
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class Al(Element, PeriodIII, GroupXIII):
|
|
68
|
+
__slots__ = ()
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def atomic_number(self):
|
|
72
|
+
return 13
|
|
73
|
+
|
|
74
|
+
@property
|
|
75
|
+
def isotopes_distribution(self):
|
|
76
|
+
return {27: 1.0}
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def isotopes_masses(self):
|
|
80
|
+
return {27: 26.981538}
|
|
81
|
+
|
|
82
|
+
@property
|
|
83
|
+
def _common_valences(self):
|
|
84
|
+
return 0,
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def _valences_exceptions(self):
|
|
88
|
+
return ((3, False, 0, ()),
|
|
89
|
+
(2, False, 1, ()), (1, False, 2, ()), (0, False, 3, ()), (-1, False, 4, ()), # accept [AlHx]
|
|
90
|
+
(-3, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))))
|
|
91
|
+
|
|
92
|
+
@property
|
|
93
|
+
def atomic_radius(self):
|
|
94
|
+
return 1.18
|
|
95
|
+
|
|
96
|
+
@property
|
|
97
|
+
def mdl_isotope(self):
|
|
98
|
+
return 27
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class Ga(Element, PeriodIV, GroupXIII):
|
|
102
|
+
__slots__ = ()
|
|
103
|
+
|
|
104
|
+
@property
|
|
105
|
+
def atomic_number(self):
|
|
106
|
+
return 31
|
|
107
|
+
|
|
108
|
+
@property
|
|
109
|
+
def isotopes_distribution(self):
|
|
110
|
+
return {67: 0., 68: 0., 69: 0.60108, 71: 0.39892}
|
|
111
|
+
|
|
112
|
+
@property
|
|
113
|
+
def isotopes_masses(self):
|
|
114
|
+
return {67: 66.928202, 68: 67.927980, 69: 68.925581, 71: 70.924705}
|
|
115
|
+
|
|
116
|
+
@property
|
|
117
|
+
def _common_valences(self):
|
|
118
|
+
return 0, 3
|
|
119
|
+
|
|
120
|
+
@property
|
|
121
|
+
def _valences_exceptions(self):
|
|
122
|
+
return ((3, False, 0, ()),
|
|
123
|
+
(0, False, 0, ((1, 'Cl'),)), (0, False, 0, ((1, 'Br'),)), (0, False, 0, ((1, 'I'),)),
|
|
124
|
+
(-1, False, 0, ((1, 'H'), (1, 'H'), (1, 'H'), (1, 'H'))),
|
|
125
|
+
(-1, False, 0, ((1, 'F'), (1, 'F'), (1, 'F'), (1, 'F'))),
|
|
126
|
+
(-1, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
127
|
+
(-1, False, 0, ((1, 'Br'), (1, 'Br'), (1, 'Br'), (1, 'Br'))),
|
|
128
|
+
(-1, False, 0, ((1, 'I'), (1, 'I'), (1, 'I'), (1, 'I'))))
|
|
129
|
+
|
|
130
|
+
@property
|
|
131
|
+
def atomic_radius(self):
|
|
132
|
+
return 1.36
|
|
133
|
+
|
|
134
|
+
@property
|
|
135
|
+
def mdl_isotope(self):
|
|
136
|
+
return 70
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class In(Element, PeriodV, GroupXIII):
|
|
140
|
+
__slots__ = ()
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
def atomic_number(self):
|
|
144
|
+
return 49
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def isotopes_distribution(self):
|
|
148
|
+
return {111: 0., 113: 0.0429, 115: 0.9571}
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def isotopes_masses(self):
|
|
152
|
+
return {111: 110.905103, 113: 112.904061, 115: 114.903878}
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def _common_valences(self):
|
|
156
|
+
return 0, 3
|
|
157
|
+
|
|
158
|
+
@property
|
|
159
|
+
def _valences_exceptions(self):
|
|
160
|
+
return ((3, False, 0, ()),
|
|
161
|
+
(0, False, 0, ((1, 'Cl'),)), (0, False, 0, ((1, 'Br'),)), (0, False, 0, ((1, 'I'),)),
|
|
162
|
+
(0, False, 0, ((1, 'O'),)))
|
|
163
|
+
|
|
164
|
+
@property
|
|
165
|
+
def atomic_radius(self):
|
|
166
|
+
return 1.56
|
|
167
|
+
|
|
168
|
+
@property
|
|
169
|
+
def mdl_isotope(self):
|
|
170
|
+
return 115
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class Tl(Element, PeriodVI, GroupXIII):
|
|
174
|
+
__slots__ = ()
|
|
175
|
+
|
|
176
|
+
@property
|
|
177
|
+
def atomic_number(self):
|
|
178
|
+
return 81
|
|
179
|
+
|
|
180
|
+
@property
|
|
181
|
+
def isotopes_distribution(self):
|
|
182
|
+
return {203: 0.29524, 205: 0.70476}
|
|
183
|
+
|
|
184
|
+
@property
|
|
185
|
+
def isotopes_masses(self):
|
|
186
|
+
return {203: 202.972329, 205: 204.974412}
|
|
187
|
+
|
|
188
|
+
@property
|
|
189
|
+
def _common_valences(self):
|
|
190
|
+
return 0, 1
|
|
191
|
+
|
|
192
|
+
@property
|
|
193
|
+
def _valences_exceptions(self):
|
|
194
|
+
return ((1, False, 0, ()), (3, False, 0, ()),
|
|
195
|
+
(-3, False, 0, ((1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'), (1, 'Cl'))),
|
|
196
|
+
(1, False, 0, ((1, 'C'), (1, 'C'))))
|
|
197
|
+
|
|
198
|
+
@property
|
|
199
|
+
def atomic_radius(self):
|
|
200
|
+
return 1.56
|
|
201
|
+
|
|
202
|
+
@property
|
|
203
|
+
def mdl_isotope(self):
|
|
204
|
+
return 204
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
class Nh(Element, PeriodVII, GroupXIII):
|
|
208
|
+
__slots__ = ()
|
|
209
|
+
|
|
210
|
+
@property
|
|
211
|
+
def atomic_number(self):
|
|
212
|
+
return 113
|
|
213
|
+
|
|
214
|
+
@property
|
|
215
|
+
def isotopes_distribution(self):
|
|
216
|
+
return {286: 1.0}
|
|
217
|
+
|
|
218
|
+
@property
|
|
219
|
+
def isotopes_masses(self):
|
|
220
|
+
return {286: 286.182555}
|
|
221
|
+
|
|
222
|
+
@property
|
|
223
|
+
def _common_valences(self):
|
|
224
|
+
return 0,
|
|
225
|
+
|
|
226
|
+
@property
|
|
227
|
+
def _valences_exceptions(self):
|
|
228
|
+
return ()
|
|
229
|
+
|
|
230
|
+
@property
|
|
231
|
+
def atomic_radius(self):
|
|
232
|
+
return 1.56 # unknown, taken radius of previous element in group
|
|
233
|
+
|
|
234
|
+
@property
|
|
235
|
+
def mdl_isotope(self):
|
|
236
|
+
return 278
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
__all__ = ['B', 'Al', 'Ga', 'In', 'Tl', 'Nh']
|