SMACT 3.0__tar.gz → 3.1.0__tar.gz
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.
- {smact-3.0/SMACT.egg-info → smact-3.1.0}/PKG-INFO +35 -31
- {smact-3.0 → smact-3.1.0}/README.md +1 -1
- {smact-3.0 → smact-3.1.0/SMACT.egg-info}/PKG-INFO +35 -31
- {smact-3.0 → smact-3.1.0}/SMACT.egg-info/SOURCES.txt +13 -3
- {smact-3.0 → smact-3.1.0}/SMACT.egg-info/requires.txt +28 -22
- {smact-3.0 → smact-3.1.0}/pyproject.toml +80 -36
- smact-3.1.0/smact/benchmarking/__init__.py +1 -0
- smact-3.1.0/smact/benchmarking/pymatgen_benchmark.py +40 -0
- smact-3.1.0/smact/benchmarking/smact_benchmark.py +33 -0
- smact-3.1.0/smact/benchmarking/utilities.py +45 -0
- smact-3.1.0/smact/data/species_rep/ion_embedding_M3GNet-MP-2023.11.1-oxi-Eform_cosine_similarity.json +66051 -0
- smact-3.1.0/smact/data/species_rep/ion_embedding_M3GNet-MP-2023.11.1-oxi-band_gap_cosine_similarity.json +65538 -0
- {smact-3.0 → smact-3.1.0}/smact/data_loader.py +11 -11
- {smact-3.0 → smact-3.1.0}/smact/dopant_prediction/doper.py +64 -121
- smact-3.1.0/smact/metallicity.py +157 -0
- {smact-3.0 → smact-3.1.0}/smact/oxidation_states.py +1 -1
- {smact-3.0 → smact-3.1.0}/smact/screening.py +69 -79
- {smact-3.0 → smact-3.1.0}/smact/structure_prediction/structure.py +1 -1
- {smact-3.0 → smact-3.1.0}/smact/tests/test_core.py +114 -13
- {smact-3.0 → smact-3.1.0}/smact/tests/test_doper.py +10 -0
- smact-3.1.0/smact/tests/test_metallicity.py +172 -0
- {smact-3.0 → smact-3.1.0}/smact/tests/test_structure.py +19 -2
- {smact-3.0 → smact-3.1.0}/smact/tests/test_utils.py +134 -31
- smact-3.1.0/smact/utils/crystal_space/__init__.py +1 -0
- smact-3.1.0/smact/utils/crystal_space/download_compounds_with_mp_api.py +96 -0
- smact-3.1.0/smact/utils/crystal_space/generate_composition_with_smact.py +144 -0
- smact-3.1.0/smact/utils/crystal_space/plot_embedding.py +159 -0
- {smact-3.0 → smact-3.1.0}/smact/utils/oxidation.py +70 -20
- smact-3.0/SMACT.egg-info/not-zip-safe +0 -1
- smact-3.0/setup.py +0 -80
- {smact-3.0 → smact-3.1.0}/LICENSE +0 -0
- {smact-3.0 → smact-3.1.0}/MANIFEST.in +0 -0
- {smact-3.0 → smact-3.1.0}/SMACT.egg-info/dependency_links.txt +0 -0
- {smact-3.0 → smact-3.1.0}/SMACT.egg-info/top_level.txt +0 -0
- {smact-3.0 → smact-3.1.0}/setup.cfg +0 -0
- {smact-3.0 → smact-3.1.0}/smact/__init__.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/builder.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/Covalent_radii.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/SSE.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/SSE_2015.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/SSE_Pauling.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/element_data.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/element_valence_modified.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/hhi.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/ionic_radii.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/magpie.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/ordered_periodic.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_state_probability_table.json +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states_SP.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states_icsd.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states_icsd24_common.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states_icsd24_counts.json +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states_icsd24_filtered.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states_icsd24_raw.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states_pmg.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/oxidation_states_wiki.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/shannon_radii.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/shannon_radii_ML_extended.csv +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/solid_properties.txt +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/solid_properties.xlsx +0 -0
- {smact-3.0 → smact-3.1.0}/smact/data/species_rep/skipspecies_20221028_319ion_dim200_cosine_similarity.json +0 -0
- {smact-3.0 → smact-3.1.0}/smact/distorter.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/dopant_prediction/__init__.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/lattice.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/lattice_parameters.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/mainpage.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/properties.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/structure_prediction/__init__.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/structure_prediction/database.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/structure_prediction/mutation.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/structure_prediction/prediction.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/structure_prediction/probability_models.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/structure_prediction/utilities.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/tests/__init__.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/utils/__init__.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/utils/band_gap_simple.py +0 -0
- {smact-3.0 → smact-3.1.0}/smact/utils/composition.py +0 -0
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: SMACT
|
|
3
|
-
Version: 3.0
|
|
3
|
+
Version: 3.1.0
|
|
4
4
|
Summary: Semiconducting Materials by Analogy and Chemical Theory
|
|
5
|
-
Home-page: https://github.com/WMD-group/SMACT
|
|
6
|
-
Author: The SMACT Developers
|
|
7
5
|
Author-email: The SMACT Developers <a.walsh@imperial.ac.uk>
|
|
8
|
-
Maintainer: Anthony O. Onwuli
|
|
9
6
|
Maintainer-email: "Anthony O. Onwuli" <anthony.onwuli16@imperial.ac.uk>
|
|
10
|
-
License: MIT
|
|
7
|
+
License-Expression: MIT
|
|
11
8
|
Project-URL: Homepage, https://github.com/WMD-group/SMACT
|
|
12
9
|
Project-URL: Documentation, https://smact.readthedocs.io/en/latest/
|
|
13
10
|
Project-URL: Repository, https://github.com/WMD-group/SMACT
|
|
@@ -16,24 +13,25 @@ Project-URL: Pypi, https://pypi.org/project/SMACT/
|
|
|
16
13
|
Keywords: python,machine-learning,computational-chemistry,materials-science,materials-informatics,materials-screening,materials-design,materials
|
|
17
14
|
Classifier: Development Status :: 5 - Production/Stable
|
|
18
15
|
Classifier: Intended Audience :: Science/Research
|
|
19
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
20
16
|
Classifier: Operating System :: OS Independent
|
|
21
17
|
Classifier: Programming Language :: Python :: 3
|
|
22
18
|
Classifier: Programming Language :: Python :: 3.10
|
|
23
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
24
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
22
|
Classifier: Topic :: Scientific/Engineering
|
|
26
23
|
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
27
|
-
Requires-Python:
|
|
24
|
+
Requires-Python: <3.14,>=3.10
|
|
28
25
|
Description-Content-Type: text/markdown
|
|
29
26
|
License-File: LICENSE
|
|
30
27
|
Requires-Dist: ase
|
|
31
28
|
Requires-Dist: numpy<3
|
|
29
|
+
Requires-Dist: pandarallel[optional]>=1.6.5
|
|
32
30
|
Requires-Dist: pandas
|
|
33
31
|
Requires-Dist: pathos
|
|
34
32
|
Requires-Dist: pymatgen>=2024.2.20
|
|
35
33
|
Requires-Dist: scipy
|
|
36
|
-
Requires-Dist: spglib
|
|
34
|
+
Requires-Dist: spglib>=2.6.0
|
|
37
35
|
Requires-Dist: typing-extensions
|
|
38
36
|
Provides-Extra: dev
|
|
39
37
|
Requires-Dist: pytest; extra == "dev"
|
|
@@ -50,46 +48,52 @@ Requires-Dist: readthedocs-sphinx-search==0.3.2; extra == "docs"
|
|
|
50
48
|
Requires-Dist: sphinx-book-theme==1.1.3; extra == "docs"
|
|
51
49
|
Requires-Dist: myst-nb==1.1.2; extra == "docs"
|
|
52
50
|
Provides-Extra: mp
|
|
53
|
-
Requires-Dist: mp-api; extra == "mp"
|
|
51
|
+
Requires-Dist: mp-api>=0.45.3; extra == "mp"
|
|
54
52
|
Provides-Extra: crystal-space
|
|
55
|
-
Requires-Dist: mp
|
|
56
|
-
Requires-Dist: ElementEmbeddings; extra == "crystal-space"
|
|
57
|
-
Requires-Dist: umap-learn==0.5.
|
|
58
|
-
Requires-Dist: kaleido; extra == "crystal-space"
|
|
59
|
-
Requires-Dist: pydantic<2.10.0; extra == "crystal-space"
|
|
53
|
+
Requires-Dist: smact[mp]; extra == "crystal-space"
|
|
54
|
+
Requires-Dist: ElementEmbeddings>=0.4; extra == "crystal-space"
|
|
55
|
+
Requires-Dist: umap-learn==0.5.7; extra == "crystal-space"
|
|
56
|
+
Requires-Dist: kaleido>=0.2.1; extra == "crystal-space"
|
|
60
57
|
Provides-Extra: featurisers
|
|
61
58
|
Requires-Dist: matminer; extra == "featurisers"
|
|
62
59
|
Requires-Dist: ElementEmbeddings; extra == "featurisers"
|
|
63
60
|
Provides-Extra: visualisation
|
|
64
|
-
Requires-Dist: seaborn; extra == "visualisation"
|
|
65
|
-
Requires-Dist: pymatviz; extra == "visualisation"
|
|
66
|
-
Requires-Dist: dash; extra == "visualisation"
|
|
61
|
+
Requires-Dist: seaborn>=0.13.2; extra == "visualisation"
|
|
62
|
+
Requires-Dist: pymatviz>=0.15; extra == "visualisation"
|
|
63
|
+
Requires-Dist: dash>=2.18.2; extra == "visualisation"
|
|
64
|
+
Provides-Extra: ml
|
|
65
|
+
Requires-Dist: xgboost; extra == "ml"
|
|
66
|
+
Requires-Dist: shap; extra == "ml"
|
|
67
|
+
Requires-Dist: smact[featurisers]; extra == "ml"
|
|
67
68
|
Provides-Extra: optional
|
|
68
69
|
Requires-Dist: pydantic>=2.9.2; extra == "optional"
|
|
69
|
-
Requires-Dist: mp
|
|
70
|
-
Requires-Dist:
|
|
71
|
-
Requires-Dist: seaborn>=0.13.2; extra == "optional"
|
|
70
|
+
Requires-Dist: smact[mp]; extra == "optional"
|
|
71
|
+
Requires-Dist: smact[visualisation]; extra == "optional"
|
|
72
72
|
Requires-Dist: pymatgen>=2024.2.20; extra == "optional"
|
|
73
73
|
Requires-Dist: matminer>=0.9.2; extra == "optional"
|
|
74
|
-
Requires-Dist: umap-learn>=0.5.3; extra == "optional"
|
|
75
74
|
Requires-Dist: kaleido>=0.2.1; extra == "optional"
|
|
76
75
|
Requires-Dist: ase>=3.22.0; extra == "optional"
|
|
77
|
-
Requires-Dist:
|
|
76
|
+
Requires-Dist: llvmlite>=0.40; extra == "optional"
|
|
78
77
|
Requires-Dist: ElementEmbeddings>=0.4; extra == "optional"
|
|
79
78
|
Requires-Dist: dash>=2.18.2; extra == "optional"
|
|
79
|
+
Requires-Dist: smact[ml]; extra == "optional"
|
|
80
|
+
Requires-Dist: pandarallel>=1.6.5; extra == "optional"
|
|
81
|
+
Requires-Dist: matplotlib-venn[shapely]>=1.1.2; extra == "optional"
|
|
80
82
|
Provides-Extra: strict
|
|
81
83
|
Requires-Dist: pydantic==2.9.2; extra == "strict"
|
|
82
|
-
Requires-Dist: mp-api==0.
|
|
83
|
-
Requires-Dist: pymatviz==0.
|
|
84
|
+
Requires-Dist: mp-api==0.45.3; extra == "strict"
|
|
85
|
+
Requires-Dist: pymatviz==0.15.1; extra == "strict"
|
|
86
|
+
Requires-Dist: mp-api==0.45.3; extra == "strict"
|
|
84
87
|
Requires-Dist: seaborn==0.13.2; extra == "strict"
|
|
85
|
-
Requires-Dist: pymatgen==
|
|
86
|
-
Requires-Dist: matminer==0.9.
|
|
87
|
-
Requires-Dist: umap-learn==0.5.
|
|
88
|
+
Requires-Dist: pymatgen==2025.3.10; extra == "strict"
|
|
89
|
+
Requires-Dist: matminer==0.9.3; extra == "strict"
|
|
90
|
+
Requires-Dist: umap-learn==0.5.7; extra == "strict"
|
|
88
91
|
Requires-Dist: kaleido==0.2.1; extra == "strict"
|
|
89
|
-
Requires-Dist: ase==3.
|
|
92
|
+
Requires-Dist: ase==3.24.0; extra == "strict"
|
|
90
93
|
Requires-Dist: numpy; extra == "strict"
|
|
91
94
|
Requires-Dist: ElementEmbeddings==0.6.1; extra == "strict"
|
|
92
|
-
Requires-Dist: dash==
|
|
95
|
+
Requires-Dist: dash==3.0.2; extra == "strict"
|
|
96
|
+
Dynamic: license-file
|
|
93
97
|
|
|
94
98
|
[](https://doi.org/10.21105/joss.01361)
|
|
95
99
|
[](https://doi.org/10.5281/zenodo.5553202)
|
|
@@ -174,7 +178,7 @@ Use cases are available in our [examples](https://smact.readthedocs.io/en/latest
|
|
|
174
178
|
|
|
175
179
|
## Requirements
|
|
176
180
|
|
|
177
|
-
The main language is Python 3 and has been tested using Python 3.10
|
|
181
|
+
The main language is Python 3 and has been tested using Python 3.10 - 3.13 (Windows is not officially supported for Python 3.13 as of yet).
|
|
178
182
|
Basic requirements are Numpy and Scipy.
|
|
179
183
|
The [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase) (ASE), [spglib](http://atztogo.github.io/spglib), and [pymatgen](https://pymatgen.org) are also required for many components.
|
|
180
184
|
|
|
@@ -81,7 +81,7 @@ Use cases are available in our [examples](https://smact.readthedocs.io/en/latest
|
|
|
81
81
|
|
|
82
82
|
## Requirements
|
|
83
83
|
|
|
84
|
-
The main language is Python 3 and has been tested using Python 3.10
|
|
84
|
+
The main language is Python 3 and has been tested using Python 3.10 - 3.13 (Windows is not officially supported for Python 3.13 as of yet).
|
|
85
85
|
Basic requirements are Numpy and Scipy.
|
|
86
86
|
The [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase) (ASE), [spglib](http://atztogo.github.io/spglib), and [pymatgen](https://pymatgen.org) are also required for many components.
|
|
87
87
|
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: SMACT
|
|
3
|
-
Version: 3.0
|
|
3
|
+
Version: 3.1.0
|
|
4
4
|
Summary: Semiconducting Materials by Analogy and Chemical Theory
|
|
5
|
-
Home-page: https://github.com/WMD-group/SMACT
|
|
6
|
-
Author: The SMACT Developers
|
|
7
5
|
Author-email: The SMACT Developers <a.walsh@imperial.ac.uk>
|
|
8
|
-
Maintainer: Anthony O. Onwuli
|
|
9
6
|
Maintainer-email: "Anthony O. Onwuli" <anthony.onwuli16@imperial.ac.uk>
|
|
10
|
-
License: MIT
|
|
7
|
+
License-Expression: MIT
|
|
11
8
|
Project-URL: Homepage, https://github.com/WMD-group/SMACT
|
|
12
9
|
Project-URL: Documentation, https://smact.readthedocs.io/en/latest/
|
|
13
10
|
Project-URL: Repository, https://github.com/WMD-group/SMACT
|
|
@@ -16,24 +13,25 @@ Project-URL: Pypi, https://pypi.org/project/SMACT/
|
|
|
16
13
|
Keywords: python,machine-learning,computational-chemistry,materials-science,materials-informatics,materials-screening,materials-design,materials
|
|
17
14
|
Classifier: Development Status :: 5 - Production/Stable
|
|
18
15
|
Classifier: Intended Audience :: Science/Research
|
|
19
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
20
16
|
Classifier: Operating System :: OS Independent
|
|
21
17
|
Classifier: Programming Language :: Python :: 3
|
|
22
18
|
Classifier: Programming Language :: Python :: 3.10
|
|
23
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
24
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
22
|
Classifier: Topic :: Scientific/Engineering
|
|
26
23
|
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
27
|
-
Requires-Python:
|
|
24
|
+
Requires-Python: <3.14,>=3.10
|
|
28
25
|
Description-Content-Type: text/markdown
|
|
29
26
|
License-File: LICENSE
|
|
30
27
|
Requires-Dist: ase
|
|
31
28
|
Requires-Dist: numpy<3
|
|
29
|
+
Requires-Dist: pandarallel[optional]>=1.6.5
|
|
32
30
|
Requires-Dist: pandas
|
|
33
31
|
Requires-Dist: pathos
|
|
34
32
|
Requires-Dist: pymatgen>=2024.2.20
|
|
35
33
|
Requires-Dist: scipy
|
|
36
|
-
Requires-Dist: spglib
|
|
34
|
+
Requires-Dist: spglib>=2.6.0
|
|
37
35
|
Requires-Dist: typing-extensions
|
|
38
36
|
Provides-Extra: dev
|
|
39
37
|
Requires-Dist: pytest; extra == "dev"
|
|
@@ -50,46 +48,52 @@ Requires-Dist: readthedocs-sphinx-search==0.3.2; extra == "docs"
|
|
|
50
48
|
Requires-Dist: sphinx-book-theme==1.1.3; extra == "docs"
|
|
51
49
|
Requires-Dist: myst-nb==1.1.2; extra == "docs"
|
|
52
50
|
Provides-Extra: mp
|
|
53
|
-
Requires-Dist: mp-api; extra == "mp"
|
|
51
|
+
Requires-Dist: mp-api>=0.45.3; extra == "mp"
|
|
54
52
|
Provides-Extra: crystal-space
|
|
55
|
-
Requires-Dist: mp
|
|
56
|
-
Requires-Dist: ElementEmbeddings; extra == "crystal-space"
|
|
57
|
-
Requires-Dist: umap-learn==0.5.
|
|
58
|
-
Requires-Dist: kaleido; extra == "crystal-space"
|
|
59
|
-
Requires-Dist: pydantic<2.10.0; extra == "crystal-space"
|
|
53
|
+
Requires-Dist: smact[mp]; extra == "crystal-space"
|
|
54
|
+
Requires-Dist: ElementEmbeddings>=0.4; extra == "crystal-space"
|
|
55
|
+
Requires-Dist: umap-learn==0.5.7; extra == "crystal-space"
|
|
56
|
+
Requires-Dist: kaleido>=0.2.1; extra == "crystal-space"
|
|
60
57
|
Provides-Extra: featurisers
|
|
61
58
|
Requires-Dist: matminer; extra == "featurisers"
|
|
62
59
|
Requires-Dist: ElementEmbeddings; extra == "featurisers"
|
|
63
60
|
Provides-Extra: visualisation
|
|
64
|
-
Requires-Dist: seaborn; extra == "visualisation"
|
|
65
|
-
Requires-Dist: pymatviz; extra == "visualisation"
|
|
66
|
-
Requires-Dist: dash; extra == "visualisation"
|
|
61
|
+
Requires-Dist: seaborn>=0.13.2; extra == "visualisation"
|
|
62
|
+
Requires-Dist: pymatviz>=0.15; extra == "visualisation"
|
|
63
|
+
Requires-Dist: dash>=2.18.2; extra == "visualisation"
|
|
64
|
+
Provides-Extra: ml
|
|
65
|
+
Requires-Dist: xgboost; extra == "ml"
|
|
66
|
+
Requires-Dist: shap; extra == "ml"
|
|
67
|
+
Requires-Dist: smact[featurisers]; extra == "ml"
|
|
67
68
|
Provides-Extra: optional
|
|
68
69
|
Requires-Dist: pydantic>=2.9.2; extra == "optional"
|
|
69
|
-
Requires-Dist: mp
|
|
70
|
-
Requires-Dist:
|
|
71
|
-
Requires-Dist: seaborn>=0.13.2; extra == "optional"
|
|
70
|
+
Requires-Dist: smact[mp]; extra == "optional"
|
|
71
|
+
Requires-Dist: smact[visualisation]; extra == "optional"
|
|
72
72
|
Requires-Dist: pymatgen>=2024.2.20; extra == "optional"
|
|
73
73
|
Requires-Dist: matminer>=0.9.2; extra == "optional"
|
|
74
|
-
Requires-Dist: umap-learn>=0.5.3; extra == "optional"
|
|
75
74
|
Requires-Dist: kaleido>=0.2.1; extra == "optional"
|
|
76
75
|
Requires-Dist: ase>=3.22.0; extra == "optional"
|
|
77
|
-
Requires-Dist:
|
|
76
|
+
Requires-Dist: llvmlite>=0.40; extra == "optional"
|
|
78
77
|
Requires-Dist: ElementEmbeddings>=0.4; extra == "optional"
|
|
79
78
|
Requires-Dist: dash>=2.18.2; extra == "optional"
|
|
79
|
+
Requires-Dist: smact[ml]; extra == "optional"
|
|
80
|
+
Requires-Dist: pandarallel>=1.6.5; extra == "optional"
|
|
81
|
+
Requires-Dist: matplotlib-venn[shapely]>=1.1.2; extra == "optional"
|
|
80
82
|
Provides-Extra: strict
|
|
81
83
|
Requires-Dist: pydantic==2.9.2; extra == "strict"
|
|
82
|
-
Requires-Dist: mp-api==0.
|
|
83
|
-
Requires-Dist: pymatviz==0.
|
|
84
|
+
Requires-Dist: mp-api==0.45.3; extra == "strict"
|
|
85
|
+
Requires-Dist: pymatviz==0.15.1; extra == "strict"
|
|
86
|
+
Requires-Dist: mp-api==0.45.3; extra == "strict"
|
|
84
87
|
Requires-Dist: seaborn==0.13.2; extra == "strict"
|
|
85
|
-
Requires-Dist: pymatgen==
|
|
86
|
-
Requires-Dist: matminer==0.9.
|
|
87
|
-
Requires-Dist: umap-learn==0.5.
|
|
88
|
+
Requires-Dist: pymatgen==2025.3.10; extra == "strict"
|
|
89
|
+
Requires-Dist: matminer==0.9.3; extra == "strict"
|
|
90
|
+
Requires-Dist: umap-learn==0.5.7; extra == "strict"
|
|
88
91
|
Requires-Dist: kaleido==0.2.1; extra == "strict"
|
|
89
|
-
Requires-Dist: ase==3.
|
|
92
|
+
Requires-Dist: ase==3.24.0; extra == "strict"
|
|
90
93
|
Requires-Dist: numpy; extra == "strict"
|
|
91
94
|
Requires-Dist: ElementEmbeddings==0.6.1; extra == "strict"
|
|
92
|
-
Requires-Dist: dash==
|
|
95
|
+
Requires-Dist: dash==3.0.2; extra == "strict"
|
|
96
|
+
Dynamic: license-file
|
|
93
97
|
|
|
94
98
|
[](https://doi.org/10.21105/joss.01361)
|
|
95
99
|
[](https://doi.org/10.5281/zenodo.5553202)
|
|
@@ -174,7 +178,7 @@ Use cases are available in our [examples](https://smact.readthedocs.io/en/latest
|
|
|
174
178
|
|
|
175
179
|
## Requirements
|
|
176
180
|
|
|
177
|
-
The main language is Python 3 and has been tested using Python 3.10
|
|
181
|
+
The main language is Python 3 and has been tested using Python 3.10 - 3.13 (Windows is not officially supported for Python 3.13 as of yet).
|
|
178
182
|
Basic requirements are Numpy and Scipy.
|
|
179
183
|
The [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase) (ASE), [spglib](http://atztogo.github.io/spglib), and [pymatgen](https://pymatgen.org) are also required for many components.
|
|
180
184
|
|
|
@@ -2,11 +2,9 @@ LICENSE
|
|
|
2
2
|
MANIFEST.in
|
|
3
3
|
README.md
|
|
4
4
|
pyproject.toml
|
|
5
|
-
setup.py
|
|
6
5
|
SMACT.egg-info/PKG-INFO
|
|
7
6
|
SMACT.egg-info/SOURCES.txt
|
|
8
7
|
SMACT.egg-info/dependency_links.txt
|
|
9
|
-
SMACT.egg-info/not-zip-safe
|
|
10
8
|
SMACT.egg-info/requires.txt
|
|
11
9
|
SMACT.egg-info/top_level.txt
|
|
12
10
|
smact/__init__.py
|
|
@@ -16,9 +14,14 @@ smact/distorter.py
|
|
|
16
14
|
smact/lattice.py
|
|
17
15
|
smact/lattice_parameters.py
|
|
18
16
|
smact/mainpage.py
|
|
17
|
+
smact/metallicity.py
|
|
19
18
|
smact/oxidation_states.py
|
|
20
19
|
smact/properties.py
|
|
21
20
|
smact/screening.py
|
|
21
|
+
smact/benchmarking/__init__.py
|
|
22
|
+
smact/benchmarking/pymatgen_benchmark.py
|
|
23
|
+
smact/benchmarking/smact_benchmark.py
|
|
24
|
+
smact/benchmarking/utilities.py
|
|
22
25
|
smact/data/Covalent_radii.csv
|
|
23
26
|
smact/data/SSE.csv
|
|
24
27
|
smact/data/SSE_2015.csv
|
|
@@ -43,6 +46,8 @@ smact/data/shannon_radii.csv
|
|
|
43
46
|
smact/data/shannon_radii_ML_extended.csv
|
|
44
47
|
smact/data/solid_properties.txt
|
|
45
48
|
smact/data/solid_properties.xlsx
|
|
49
|
+
smact/data/species_rep/ion_embedding_M3GNet-MP-2023.11.1-oxi-Eform_cosine_similarity.json
|
|
50
|
+
smact/data/species_rep/ion_embedding_M3GNet-MP-2023.11.1-oxi-band_gap_cosine_similarity.json
|
|
46
51
|
smact/data/species_rep/skipspecies_20221028_319ion_dim200_cosine_similarity.json
|
|
47
52
|
smact/dopant_prediction/__init__.py
|
|
48
53
|
smact/dopant_prediction/doper.py
|
|
@@ -56,9 +61,14 @@ smact/structure_prediction/utilities.py
|
|
|
56
61
|
smact/tests/__init__.py
|
|
57
62
|
smact/tests/test_core.py
|
|
58
63
|
smact/tests/test_doper.py
|
|
64
|
+
smact/tests/test_metallicity.py
|
|
59
65
|
smact/tests/test_structure.py
|
|
60
66
|
smact/tests/test_utils.py
|
|
61
67
|
smact/utils/__init__.py
|
|
62
68
|
smact/utils/band_gap_simple.py
|
|
63
69
|
smact/utils/composition.py
|
|
64
|
-
smact/utils/oxidation.py
|
|
70
|
+
smact/utils/oxidation.py
|
|
71
|
+
smact/utils/crystal_space/__init__.py
|
|
72
|
+
smact/utils/crystal_space/download_compounds_with_mp_api.py
|
|
73
|
+
smact/utils/crystal_space/generate_composition_with_smact.py
|
|
74
|
+
smact/utils/crystal_space/plot_embedding.py
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
ase
|
|
2
2
|
numpy<3
|
|
3
|
+
pandarallel[optional]>=1.6.5
|
|
3
4
|
pandas
|
|
4
5
|
pathos
|
|
5
6
|
pymatgen>=2024.2.20
|
|
6
7
|
scipy
|
|
7
|
-
spglib
|
|
8
|
+
spglib>=2.6.0
|
|
8
9
|
typing-extensions
|
|
9
10
|
|
|
10
11
|
[crystal_space]
|
|
11
|
-
mp
|
|
12
|
-
ElementEmbeddings
|
|
13
|
-
umap-learn==0.5.
|
|
14
|
-
kaleido
|
|
15
|
-
pydantic<2.10.0
|
|
12
|
+
smact[mp]
|
|
13
|
+
ElementEmbeddings>=0.4
|
|
14
|
+
umap-learn==0.5.7
|
|
15
|
+
kaleido>=0.2.1
|
|
16
16
|
|
|
17
17
|
[dev]
|
|
18
18
|
pytest
|
|
@@ -34,38 +34,44 @@ myst-nb==1.1.2
|
|
|
34
34
|
matminer
|
|
35
35
|
ElementEmbeddings
|
|
36
36
|
|
|
37
|
+
[ml]
|
|
38
|
+
xgboost
|
|
39
|
+
shap
|
|
40
|
+
smact[featurisers]
|
|
41
|
+
|
|
37
42
|
[mp]
|
|
38
|
-
mp-api
|
|
43
|
+
mp-api>=0.45.3
|
|
39
44
|
|
|
40
45
|
[optional]
|
|
41
46
|
pydantic>=2.9.2
|
|
42
|
-
mp
|
|
43
|
-
|
|
44
|
-
seaborn>=0.13.2
|
|
47
|
+
smact[mp]
|
|
48
|
+
smact[visualisation]
|
|
45
49
|
pymatgen>=2024.2.20
|
|
46
50
|
matminer>=0.9.2
|
|
47
|
-
umap-learn>=0.5.3
|
|
48
51
|
kaleido>=0.2.1
|
|
49
52
|
ase>=3.22.0
|
|
50
|
-
|
|
53
|
+
llvmlite>=0.40
|
|
51
54
|
ElementEmbeddings>=0.4
|
|
52
55
|
dash>=2.18.2
|
|
56
|
+
smact[ml]
|
|
57
|
+
pandarallel>=1.6.5
|
|
58
|
+
matplotlib-venn[shapely]>=1.1.2
|
|
53
59
|
|
|
54
60
|
[strict]
|
|
55
61
|
pydantic==2.9.2
|
|
56
|
-
mp-api==0.
|
|
57
|
-
pymatviz==0.
|
|
62
|
+
mp-api==0.45.3
|
|
63
|
+
pymatviz==0.15.1
|
|
58
64
|
seaborn==0.13.2
|
|
59
|
-
pymatgen==
|
|
60
|
-
matminer==0.9.
|
|
61
|
-
umap-learn==0.5.
|
|
65
|
+
pymatgen==2025.3.10
|
|
66
|
+
matminer==0.9.3
|
|
67
|
+
umap-learn==0.5.7
|
|
62
68
|
kaleido==0.2.1
|
|
63
|
-
ase==3.
|
|
69
|
+
ase==3.24.0
|
|
64
70
|
numpy
|
|
65
71
|
ElementEmbeddings==0.6.1
|
|
66
|
-
dash==
|
|
72
|
+
dash==3.0.2
|
|
67
73
|
|
|
68
74
|
[visualisation]
|
|
69
|
-
seaborn
|
|
70
|
-
pymatviz
|
|
71
|
-
dash
|
|
75
|
+
seaborn>=0.13.2
|
|
76
|
+
pymatviz>=0.15
|
|
77
|
+
dash>=2.18.2
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
# Minimum requirements for the build system to execute.
|
|
3
|
-
requires = ["setuptools>=
|
|
3
|
+
requires = ["setuptools>=77.0.0",
|
|
4
|
+
"oldest-supported-numpy"] # PEP 508 specifications.
|
|
4
5
|
build-backend = "setuptools.build_meta"
|
|
5
6
|
|
|
6
7
|
[project]
|
|
7
8
|
name = "SMACT"
|
|
8
|
-
version = "3.0"
|
|
9
|
+
version = "3.1.0"
|
|
9
10
|
description = "Semiconducting Materials by Analogy and Chemical Theory"
|
|
10
11
|
readme = "README.md"
|
|
11
12
|
authors = [
|
|
@@ -17,16 +18,16 @@ maintainers = [
|
|
|
17
18
|
classifiers = [
|
|
18
19
|
"Development Status :: 5 - Production/Stable",
|
|
19
20
|
"Intended Audience :: Science/Research",
|
|
20
|
-
"License :: OSI Approved :: MIT License",
|
|
21
21
|
"Operating System :: OS Independent",
|
|
22
22
|
"Programming Language :: Python :: 3",
|
|
23
23
|
"Programming Language :: Python :: 3.10",
|
|
24
24
|
"Programming Language :: Python :: 3.11",
|
|
25
25
|
"Programming Language :: Python :: 3.12",
|
|
26
|
+
"Programming Language :: Python :: 3.13",
|
|
26
27
|
"Topic :: Scientific/Engineering",
|
|
27
28
|
"Topic :: Scientific/Engineering :: Chemistry",
|
|
28
29
|
]
|
|
29
|
-
requires-python = ">=3.10"
|
|
30
|
+
requires-python = ">=3.10,<3.14"
|
|
30
31
|
keywords = [
|
|
31
32
|
"python",
|
|
32
33
|
"machine-learning",
|
|
@@ -40,14 +41,16 @@ keywords = [
|
|
|
40
41
|
dependencies = [
|
|
41
42
|
"ase",
|
|
42
43
|
"numpy<3",
|
|
44
|
+
"pandarallel[optional]>=1.6.5",
|
|
43
45
|
"pandas",
|
|
44
46
|
"pathos",
|
|
45
47
|
"pymatgen>=2024.2.20",
|
|
46
48
|
"scipy",
|
|
47
|
-
"spglib",
|
|
49
|
+
"spglib>=2.6.0",
|
|
48
50
|
"typing-extensions",
|
|
49
51
|
]
|
|
50
|
-
license =
|
|
52
|
+
license = "MIT"
|
|
53
|
+
license-files = ["LICENSE"]
|
|
51
54
|
|
|
52
55
|
[project.urls]
|
|
53
56
|
Homepage = "https://github.com/WMD-group/SMACT"
|
|
@@ -73,58 +76,65 @@ docs = [
|
|
|
73
76
|
"sphinx-book-theme==1.1.3",
|
|
74
77
|
"myst-nb==1.1.2"
|
|
75
78
|
]
|
|
76
|
-
mp = ["mp-api"]
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"kaleido",
|
|
82
|
-
"pydantic<2.10.0"]
|
|
83
|
-
|
|
79
|
+
mp = ["mp-api>=0.45.3"]
|
|
80
|
+
crystal_space = ["smact[mp]",
|
|
81
|
+
"ElementEmbeddings>=0.4",
|
|
82
|
+
"umap-learn==0.5.7",
|
|
83
|
+
"kaleido>=0.2.1",]
|
|
84
84
|
featurisers = [
|
|
85
85
|
"matminer",
|
|
86
86
|
"ElementEmbeddings",
|
|
87
87
|
]
|
|
88
|
-
|
|
89
88
|
visualisation = [
|
|
90
|
-
"seaborn",
|
|
91
|
-
"pymatviz",
|
|
92
|
-
"dash",
|
|
89
|
+
"seaborn>=0.13.2",
|
|
90
|
+
"pymatviz>=0.15",
|
|
91
|
+
"dash>=2.18.2",
|
|
93
92
|
]
|
|
94
|
-
|
|
93
|
+
ml = ["xgboost","shap","smact[featurisers]"]
|
|
95
94
|
optional = [
|
|
96
95
|
"pydantic>=2.9.2",
|
|
97
|
-
"mp
|
|
98
|
-
"
|
|
99
|
-
"seaborn>=0.13.2",
|
|
96
|
+
"smact[mp]",
|
|
97
|
+
"smact[visualisation]",
|
|
100
98
|
"pymatgen>=2024.2.20",
|
|
101
99
|
"matminer>=0.9.2",
|
|
102
|
-
"umap-learn>=0.5.3",
|
|
103
100
|
"kaleido>=0.2.1",
|
|
104
101
|
"ase>=3.22.0",
|
|
105
|
-
"
|
|
102
|
+
"llvmlite>=0.40",
|
|
106
103
|
"ElementEmbeddings>=0.4",
|
|
107
104
|
"dash>=2.18.2",
|
|
108
|
-
|
|
105
|
+
"smact[ml]",
|
|
106
|
+
"pandarallel>=1.6.5",
|
|
107
|
+
"matplotlib-venn[shapely]>=1.1.2",
|
|
109
108
|
]
|
|
110
109
|
strict = [
|
|
111
110
|
"pydantic==2.9.2",
|
|
112
|
-
"mp-api==0.
|
|
113
|
-
"pymatviz==0.
|
|
111
|
+
"mp-api==0.45.3",
|
|
112
|
+
"pymatviz==0.15.1",
|
|
113
|
+
"mp-api==0.45.3",
|
|
114
114
|
"seaborn==0.13.2",
|
|
115
|
-
"pymatgen==
|
|
116
|
-
"matminer==0.9.
|
|
117
|
-
"umap-learn==0.5.
|
|
115
|
+
"pymatgen==2025.3.10",
|
|
116
|
+
"matminer==0.9.3",
|
|
117
|
+
"umap-learn==0.5.7",
|
|
118
118
|
"kaleido==0.2.1",
|
|
119
|
-
"ase==3.
|
|
119
|
+
"ase==3.24.0",
|
|
120
120
|
"numpy",
|
|
121
121
|
"ElementEmbeddings==0.6.1",
|
|
122
|
-
"dash==
|
|
122
|
+
"dash==3.0.2",
|
|
123
123
|
]
|
|
124
124
|
|
|
125
|
-
[tool.
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
[tool.setuptools]
|
|
126
|
+
include-package-data = true
|
|
127
|
+
|
|
128
|
+
[tool.setuptools.packages.find]
|
|
129
|
+
where = ["."]
|
|
130
|
+
include = ["smact","smact.*"]
|
|
131
|
+
|
|
132
|
+
[tool.setuptools.package-data]
|
|
133
|
+
"smact" = ["data/*.txt", "data/*.csv", "data/*.data", "data/*.xlsx", "data/*.json", "data/species_rep/*.json"]
|
|
134
|
+
|
|
135
|
+
[tool.pytest.ini_options]
|
|
136
|
+
minversion = 6.0
|
|
137
|
+
testpaths = ["smact/tests"]
|
|
128
138
|
|
|
129
139
|
[tool.ruff]
|
|
130
140
|
target-version = "py310"
|
|
@@ -214,7 +224,7 @@ reportPossiblyUnboundVariable = true
|
|
|
214
224
|
reportUnboundVariable = true
|
|
215
225
|
|
|
216
226
|
[tool.codespell]
|
|
217
|
-
skip = "*.csv,*/site/*,*/docs/_build/*,paper.md,*dev_docs/*,paper.bib,*.txt,*examples/Structure_Prediction/Li-Garnets_SP-Pym-new.ipynb"
|
|
227
|
+
skip = "*.csv,*/site/*,*/docs/_build/*,docs/tutorials/data/*,paper.md,*dev_docs/*,paper.bib,*.txt,*examples/Structure_Prediction/Li-Garnets_SP-Pym-new.ipynb"
|
|
218
228
|
check-filenames = true
|
|
219
229
|
ignore-regex = "[A-Za-z0-9+/]{100,}"
|
|
220
230
|
|
|
@@ -320,3 +330,37 @@ ignore-words-list = [
|
|
|
320
330
|
"assertIn",
|
|
321
331
|
"Mater",
|
|
322
332
|
]
|
|
333
|
+
[tool.coverage.report]
|
|
334
|
+
exclude_also = [
|
|
335
|
+
'def __repr__',
|
|
336
|
+
'if self.debug:',
|
|
337
|
+
'if settings.DEBUG',
|
|
338
|
+
'raise AssertionError',
|
|
339
|
+
'raise NotImplementedError',
|
|
340
|
+
'if 0:',
|
|
341
|
+
'if __name__ == .__main__.:',
|
|
342
|
+
'if TYPE_CHECKING:',
|
|
343
|
+
'class .*\bProtocol\):',
|
|
344
|
+
'@(abc\.)?abstractmethod',
|
|
345
|
+
]
|
|
346
|
+
|
|
347
|
+
[dependency-groups]
|
|
348
|
+
dev = [
|
|
349
|
+
"jupyter>=1.1.1",
|
|
350
|
+
"jupyter-client>=8.6.3",
|
|
351
|
+
"notebook>=7.3.3",
|
|
352
|
+
"blacken-docs>=1.19.1",
|
|
353
|
+
"codespell>=2.4.1",
|
|
354
|
+
"ipykernel>=6.29.5",
|
|
355
|
+
"myst-nb==1.1.2",
|
|
356
|
+
"nbstripout>=0.8.1",
|
|
357
|
+
"pre-commit>=4.2.0",
|
|
358
|
+
"pyright>=1.1.398",
|
|
359
|
+
"pytest>=8.3.5",
|
|
360
|
+
"pytest-cov>=6.1.0",
|
|
361
|
+
"readthedocs-sphinx-search==0.3.2",
|
|
362
|
+
"ruff>=0.11.2",
|
|
363
|
+
"sphinx==8.1.3",
|
|
364
|
+
"sphinx-book-theme==1.1.3",
|
|
365
|
+
"sphinx-rtd-theme==3.0.2",
|
|
366
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""SMACT benchmarking."""
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Benchmarking functions for pymatgen."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from itertools import combinations_with_replacement as cwr
|
|
6
|
+
|
|
7
|
+
from pymatgen.analysis.structure_prediction.substitution_probability import (
|
|
8
|
+
SubstitutionProbability,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
from .utilities import timeit
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ProbabilityBenchmarker:
|
|
15
|
+
"""Benchmarking tests for pymatgen SubstitutionProbability."""
|
|
16
|
+
|
|
17
|
+
@timeit
|
|
18
|
+
def run_tests(self):
|
|
19
|
+
"""Run all tests."""
|
|
20
|
+
self.__sp_setup()
|
|
21
|
+
self.__pair_corr()
|
|
22
|
+
|
|
23
|
+
@timeit
|
|
24
|
+
def __sp_setup(self):
|
|
25
|
+
"""Set up SubstitutionProbability."""
|
|
26
|
+
self.sp = SubstitutionProbability()
|
|
27
|
+
|
|
28
|
+
@timeit
|
|
29
|
+
def __pair_corr(self):
|
|
30
|
+
"""Get pair correlation."""
|
|
31
|
+
pairs = cwr(self.sp.species, 2)
|
|
32
|
+
|
|
33
|
+
for s1, s2 in pairs:
|
|
34
|
+
self.sp.pair_corr(s1, s2)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@timeit(delim=True, n=100)
|
|
38
|
+
def probability_test_run():
|
|
39
|
+
"""Run all tests."""
|
|
40
|
+
ProbabilityBenchmarker().run_tests()
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""SMACT benchmarking."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from smact.structure_prediction.mutation import CationMutator
|
|
6
|
+
|
|
7
|
+
from .utilities import timeit
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class MutatorBenchmarker:
|
|
11
|
+
"""Benchmarking tests for CationMutator."""
|
|
12
|
+
|
|
13
|
+
@timeit
|
|
14
|
+
def run_tests(self):
|
|
15
|
+
"""Initialize Mutator and perform tests."""
|
|
16
|
+
self.__cm_setup()
|
|
17
|
+
self.__pair_corr()
|
|
18
|
+
|
|
19
|
+
@timeit
|
|
20
|
+
def __cm_setup(self) -> CationMutator:
|
|
21
|
+
"""Create a CationMutator."""
|
|
22
|
+
self.cm = CationMutator.from_json()
|
|
23
|
+
|
|
24
|
+
@timeit
|
|
25
|
+
def __pair_corr(self):
|
|
26
|
+
"""Get pair correlations."""
|
|
27
|
+
self.cm.complete_pair_corrs()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@timeit(delim=True, n=100)
|
|
31
|
+
def mutator_test_run():
|
|
32
|
+
"""Run benchmark tests for CationMutator."""
|
|
33
|
+
MutatorBenchmarker().run_tests()
|