structuretoolkit 0.0.45__tar.gz → 0.0.46__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.
Files changed (36) hide show
  1. structuretoolkit-0.0.46/PKG-INFO +167 -0
  2. structuretoolkit-0.0.46/README.md +87 -0
  3. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/pyproject.toml +12 -9
  4. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/_version.py +2 -2
  5. structuretoolkit-0.0.45/PKG-INFO +0 -149
  6. structuretoolkit-0.0.45/README.md +0 -70
  7. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/.gitignore +0 -0
  8. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/LICENSE +0 -0
  9. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/__init__.py +0 -0
  10. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/__init__.py +0 -0
  11. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/distance.py +0 -0
  12. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/dscribe.py +0 -0
  13. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/neighbors.py +0 -0
  14. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/phonopy.py +0 -0
  15. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/pyscal.py +0 -0
  16. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/snap.py +0 -0
  17. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/spatial.py +0 -0
  18. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/strain.py +0 -0
  19. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/analyse/symmetry.py +0 -0
  20. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/__init__.py +0 -0
  21. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/aimsgb.py +0 -0
  22. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/compound.py +0 -0
  23. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/geometry.py +0 -0
  24. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/materialsproject.py +0 -0
  25. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/mesh.py +0 -0
  26. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/sqs/__init__.py +0 -0
  27. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/sqs/_interface.py +0 -0
  28. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/sqs/_types.py +0 -0
  29. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/build/surface.py +0 -0
  30. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/common/__init__.py +0 -0
  31. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/common/error.py +0 -0
  32. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/common/helper.py +0 -0
  33. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/common/phonopy.py +0 -0
  34. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/common/pymatgen.py +0 -0
  35. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/common/pyscal.py +0 -0
  36. {structuretoolkit-0.0.45 → structuretoolkit-0.0.46}/src/structuretoolkit/visualize.py +0 -0
@@ -0,0 +1,167 @@
1
+ Metadata-Version: 2.5
2
+ Name: structuretoolkit
3
+ Version: 0.0.46
4
+ Summary: build, analyse and visualise atomistic structures for materials science
5
+ Project-URL: Homepage, https://github.com/pyiron/structuretoolkit
6
+ Project-URL: Documentation, https://github.com/pyiron/structuretoolkit
7
+ Project-URL: Repository, https://github.com/pyiron/structuretoolkit
8
+ Author-email: Jan Janssen <janssen@mpie.de>
9
+ License: BSD 3-Clause License
10
+
11
+ Copyright (c) 2018, Max-Planck-Institut für Eisenforschung GmbH - Computational Materials Design (CM) Department
12
+ All rights reserved.
13
+
14
+ Redistribution and use in source and binary forms, with or without
15
+ modification, are permitted provided that the following conditions are met:
16
+
17
+ * Redistributions of source code must retain the above copyright notice, this
18
+ list of conditions and the following disclaimer.
19
+
20
+ * Redistributions in binary form must reproduce the above copyright notice,
21
+ this list of conditions and the following disclaimer in the documentation
22
+ and/or other materials provided with the distribution.
23
+
24
+ * Neither the name of the copyright holder nor the names of its
25
+ contributors may be used to endorse or promote products derived from
26
+ this software without specific prior written permission.
27
+
28
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+ License-File: LICENSE
39
+ Keywords: pyiron
40
+ Classifier: Development Status :: 5 - Production/Stable
41
+ Classifier: Intended Audience :: Science/Research
42
+ Classifier: License :: OSI Approved :: BSD License
43
+ Classifier: Operating System :: OS Independent
44
+ Classifier: Programming Language :: Python :: 3.11
45
+ Classifier: Programming Language :: Python :: 3.12
46
+ Classifier: Programming Language :: Python :: 3.13
47
+ Classifier: Programming Language :: Python :: 3.14
48
+ Classifier: Topic :: Scientific/Engineering :: Physics
49
+ Requires-Python: <3.15,>=3.10
50
+ Requires-Dist: ase<=3.29.0,>=3.24.0
51
+ Requires-Dist: numpy<=2.5.3,>=1.23.5
52
+ Requires-Dist: scipy<=1.18.0,>=1.15.0
53
+ Provides-Extra: clusters
54
+ Requires-Dist: scikit-learn==1.8.0; extra == 'clusters'
55
+ Provides-Extra: dscribe
56
+ Requires-Dist: dscribe==2.1.2; extra == 'dscribe'
57
+ Provides-Extra: grainboundary
58
+ Requires-Dist: aimsgb<=1.1.1,>=1.0.2; extra == 'grainboundary'
59
+ Requires-Dist: pymatgen<=2026.5.4,>=2026.3.23; extra == 'grainboundary'
60
+ Provides-Extra: matplotlib
61
+ Requires-Dist: matplotlib==3.11.1; extra == 'matplotlib'
62
+ Provides-Extra: mp-api
63
+ Requires-Dist: mp-api==0.45.15; extra == 'mp-api'
64
+ Requires-Dist: pymatgen<=2026.5.4,>=2026.3.23; extra == 'mp-api'
65
+ Provides-Extra: nglview
66
+ Requires-Dist: nglview<=4.0.1,>=2.7.7; extra == 'nglview'
67
+ Provides-Extra: phonopy
68
+ Requires-Dist: phonopy<=4.4.0,>=2.21.2; extra == 'phonopy'
69
+ Requires-Dist: spglib==2.7.0; extra == 'phonopy'
70
+ Provides-Extra: plotly
71
+ Requires-Dist: plotly<=7.0.0,>=6.0.0; extra == 'plotly'
72
+ Provides-Extra: pyscal
73
+ Requires-Dist: pyscal3<=3.3.2,>=3.2.5; extra == 'pyscal'
74
+ Provides-Extra: surface
75
+ Requires-Dist: pymatgen<=2026.5.4,>=2026.3.23; extra == 'surface'
76
+ Requires-Dist: spglib==2.7.0; extra == 'surface'
77
+ Provides-Extra: symmetry
78
+ Requires-Dist: spglib==2.7.0; extra == 'symmetry'
79
+ Description-Content-Type: text/markdown
80
+
81
+ # structuretoolkit
82
+
83
+ [![Pipeline](https://github.com/pyiron/structuretoolkit/actions/workflows/pipeline.yml/badge.svg)](https://github.com/pyiron/structuretoolkit/actions/workflows/pipeline.yml)
84
+ [![codecov](https://codecov.io/gh/pyiron/structuretoolkit/graph/badge.svg?token=B6I4OACKND)](https://codecov.io/gh/pyiron/structuretoolkit)
85
+ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/pyiron/structuretoolkit/HEAD)
86
+
87
+ `structuretoolkit` extends the [`ase.atoms.Atoms`](https://wiki.fysik.dtu.dk/ase/ase/atoms.html) class from the
88
+ [Atomic Simulation Environment (ASE)](https://wiki.fysik.dtu.dk/ase/) with a large collection of additional
89
+ functions for **building**, **analysing** and **visualising** atomistic structures in materials science. It does
90
+ not introduce a structure class of its own &ndash; every function takes an `ase.atoms.Atoms` object as input and,
91
+ where applicable, returns one again, so `structuretoolkit` combines freely with the rest of the ASE ecosystem
92
+ (`ase.build`, ASE calculators, ASE I/O, ...). `structuretoolkit` also powers the structure-analysis backend of
93
+ [`pyiron_atomistics`](https://github.com/pyiron/pyiron_atomistics), where the same functions are available as
94
+ methods directly on the structure object.
95
+
96
+ ## Example
97
+
98
+ ```python
99
+ import structuretoolkit as stk
100
+ from ase.build import bulk
101
+
102
+ structure = bulk("Al", cubic=True)
103
+ stk.analyse.get_adaptive_cna_descriptors(structure)
104
+ stk.plot3d(structure)
105
+ ```
106
+
107
+ ## Features
108
+ ### Analysis
109
+ * `stk.analyse.get_neighbors()` - find the nearest neighbors of every atom, by count or cutoff radius, periodic-boundary-aware
110
+ * `stk.analyse.get_neighborhood()` - find the nearest neighbors of an arbitrary point in space, e.g. an interstitial site
111
+ * `stk.analyse.get_equivalent_atoms()` - label atoms that map onto each other under the structure's symmetry operations
112
+ * `stk.analyse.get_steinhardt_parameters()` - compute rotationally invariant Steinhardt bond-orientational order parameters
113
+ * `stk.analyse.get_centro_symmetry_descriptors()` - compute the centrosymmetry parameter, large for atoms near a defect
114
+ * `stk.analyse.get_diamond_structure_descriptors()` - identify cubic/hexagonal diamond local environments
115
+ * `stk.analyse.get_adaptive_cna_descriptors()` - classify local crystal structure (fcc/hcp/bcc/icosahedral/other) via common neighbor analysis
116
+ * `stk.analyse.get_voronoi_volumes()` - compute the Voronoi cell volume of every atom
117
+ * `stk.analyse.find_solids()` - count how many atoms are "solid" vs. "liquid"-like, e.g. for melting-point calculations
118
+ * `stk.analyse.get_mean_positions()` - average atomic positions across periodic boundary conditions
119
+ * `stk.analyse.get_average_of_unique_labels()` - average values that share the same (possibly repeated) integer label
120
+ * `stk.analyse.get_interstitials()` - locate interstitial sites of a given coordination number (e.g. tetrahedral, octahedral)
121
+ * `stk.analyse.get_layers()` - group atoms into layers along the cell directions or arbitrary planes
122
+ * `stk.analyse.get_voronoi_vertices()` - compute the Voronoi vertices of the (periodic) structure
123
+ * `stk.analyse.get_voronoi_neighbors()` - find pairs of atoms sharing a Voronoi facet
124
+ * `stk.analyse.get_delaunay_neighbors()` - find pairs of atoms sharing a Delaunay tetrahedron
125
+ * `stk.analyse.get_cluster_positions()` - cluster nearby positions together via DBSCAN
126
+ * `stk.analyse.get_strain()` - compute the per-atom Lagrangian strain tensor relative to a reference structure
127
+
128
+ ### Build
129
+ * `stk.build.get_grainboundary_info()` - list the geometrically possible grain boundaries (by CSL sigma value) for a rotation axis
130
+ * `stk.build.grainboundary()` - build a bicrystal grain-boundary structure for a chosen sigma value and plane
131
+ * `stk.build.high_index_surface()` - build a stepped/kinked high-index surface slab
132
+ * `stk.build.get_high_index_surface_info()` - derive the Miller index for a given terrace/step/kink orientation
133
+ * `stk.build.sqs_structures()` - generate special quasirandom structures (SQS) for disordered alloys
134
+ * `stk.build.B2()` - build a cubic AB B2 (CsCl-type) intermetallic structure
135
+ * `stk.build.C14()` - build a hexagonal AB2 C14 Laves phase structure
136
+ * `stk.build.C15()` - build a cubic AB2 C15 Laves phase structure
137
+ * `stk.build.C36()` - build a hexagonal AB2 C36 Laves phase structure
138
+ * `stk.build.D03()` - build a cubic AB3 D03 structure
139
+
140
+ ### Visualize
141
+ * `stk.visualize.plot3d()` - render an `Atoms` object in 3d, via NGLView or plotly
142
+
143
+ ### Common
144
+ * `stk.common.ase_to_pymatgen()` - convert an `ase.atoms.Atoms` object to a `pymatgen.core.Structure`
145
+ * `stk.common.pymatgen_to_ase()` - convert a `pymatgen.core.Structure` back to an `ase.atoms.Atoms` object
146
+ * `stk.common.pymatgen_read_from_file()` - read a structure file directly into an `ase.atoms.Atoms` object via pymatgen
147
+ * `stk.common.ase_to_pyscal()` - convert an `ase.atoms.Atoms` object to a `pyscal3.core.System`
148
+ * `stk.common.apply_strain()` - apply a homogeneous strain to a structure's cell, and its atoms
149
+ * `stk.common.center_coordinates_in_unit_cell()` - wrap atomic coordinates back into the unit cell
150
+ * `stk.common.get_extended_positions()` - repeat atoms across the periodic boundary to include neighbor images
151
+ * `stk.common.get_vertical_length()` - get the height of the cell perpendicular to each face
152
+ * `stk.common.get_wrapped_coordinates()` - wrap arbitrary Cartesian coordinates into the periodic cell
153
+ * `stk.common.select_index()` - get the indices of atoms of a given chemical element
154
+
155
+ ## Documentation
156
+
157
+ * [structuretoolkit](https://structuretoolkit.readthedocs.io/en/latest/README.html)
158
+ * [Example](https://structuretoolkit.readthedocs.io/en/latest/README.html#example)
159
+ * [Features](https://structuretoolkit.readthedocs.io/en/latest/README.html#features)
160
+ * [Introduction](https://structuretoolkit.readthedocs.io/en/latest/introduction.html)
161
+ * [How the package is organised](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#how-the-package-is-organised)
162
+ * [Helpers and converters](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#structuretoolkit-common-helpers-and-converters)
163
+ * [Analysing existing structures](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#structuretoolkit-analyse-analysing-existing-structures)
164
+ * [Constructing new structures](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#structuretoolkit-build-constructing-new-structures)
165
+ * [Looking at structures](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#structuretoolkit-visualize-looking-at-structures)
166
+ * [Where to go from here](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#where-to-go-from-here)
167
+ * [Interface](https://structuretoolkit.readthedocs.io/en/latest/api.html)
@@ -0,0 +1,87 @@
1
+ # structuretoolkit
2
+
3
+ [![Pipeline](https://github.com/pyiron/structuretoolkit/actions/workflows/pipeline.yml/badge.svg)](https://github.com/pyiron/structuretoolkit/actions/workflows/pipeline.yml)
4
+ [![codecov](https://codecov.io/gh/pyiron/structuretoolkit/graph/badge.svg?token=B6I4OACKND)](https://codecov.io/gh/pyiron/structuretoolkit)
5
+ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/pyiron/structuretoolkit/HEAD)
6
+
7
+ `structuretoolkit` extends the [`ase.atoms.Atoms`](https://wiki.fysik.dtu.dk/ase/ase/atoms.html) class from the
8
+ [Atomic Simulation Environment (ASE)](https://wiki.fysik.dtu.dk/ase/) with a large collection of additional
9
+ functions for **building**, **analysing** and **visualising** atomistic structures in materials science. It does
10
+ not introduce a structure class of its own &ndash; every function takes an `ase.atoms.Atoms` object as input and,
11
+ where applicable, returns one again, so `structuretoolkit` combines freely with the rest of the ASE ecosystem
12
+ (`ase.build`, ASE calculators, ASE I/O, ...). `structuretoolkit` also powers the structure-analysis backend of
13
+ [`pyiron_atomistics`](https://github.com/pyiron/pyiron_atomistics), where the same functions are available as
14
+ methods directly on the structure object.
15
+
16
+ ## Example
17
+
18
+ ```python
19
+ import structuretoolkit as stk
20
+ from ase.build import bulk
21
+
22
+ structure = bulk("Al", cubic=True)
23
+ stk.analyse.get_adaptive_cna_descriptors(structure)
24
+ stk.plot3d(structure)
25
+ ```
26
+
27
+ ## Features
28
+ ### Analysis
29
+ * `stk.analyse.get_neighbors()` - find the nearest neighbors of every atom, by count or cutoff radius, periodic-boundary-aware
30
+ * `stk.analyse.get_neighborhood()` - find the nearest neighbors of an arbitrary point in space, e.g. an interstitial site
31
+ * `stk.analyse.get_equivalent_atoms()` - label atoms that map onto each other under the structure's symmetry operations
32
+ * `stk.analyse.get_steinhardt_parameters()` - compute rotationally invariant Steinhardt bond-orientational order parameters
33
+ * `stk.analyse.get_centro_symmetry_descriptors()` - compute the centrosymmetry parameter, large for atoms near a defect
34
+ * `stk.analyse.get_diamond_structure_descriptors()` - identify cubic/hexagonal diamond local environments
35
+ * `stk.analyse.get_adaptive_cna_descriptors()` - classify local crystal structure (fcc/hcp/bcc/icosahedral/other) via common neighbor analysis
36
+ * `stk.analyse.get_voronoi_volumes()` - compute the Voronoi cell volume of every atom
37
+ * `stk.analyse.find_solids()` - count how many atoms are "solid" vs. "liquid"-like, e.g. for melting-point calculations
38
+ * `stk.analyse.get_mean_positions()` - average atomic positions across periodic boundary conditions
39
+ * `stk.analyse.get_average_of_unique_labels()` - average values that share the same (possibly repeated) integer label
40
+ * `stk.analyse.get_interstitials()` - locate interstitial sites of a given coordination number (e.g. tetrahedral, octahedral)
41
+ * `stk.analyse.get_layers()` - group atoms into layers along the cell directions or arbitrary planes
42
+ * `stk.analyse.get_voronoi_vertices()` - compute the Voronoi vertices of the (periodic) structure
43
+ * `stk.analyse.get_voronoi_neighbors()` - find pairs of atoms sharing a Voronoi facet
44
+ * `stk.analyse.get_delaunay_neighbors()` - find pairs of atoms sharing a Delaunay tetrahedron
45
+ * `stk.analyse.get_cluster_positions()` - cluster nearby positions together via DBSCAN
46
+ * `stk.analyse.get_strain()` - compute the per-atom Lagrangian strain tensor relative to a reference structure
47
+
48
+ ### Build
49
+ * `stk.build.get_grainboundary_info()` - list the geometrically possible grain boundaries (by CSL sigma value) for a rotation axis
50
+ * `stk.build.grainboundary()` - build a bicrystal grain-boundary structure for a chosen sigma value and plane
51
+ * `stk.build.high_index_surface()` - build a stepped/kinked high-index surface slab
52
+ * `stk.build.get_high_index_surface_info()` - derive the Miller index for a given terrace/step/kink orientation
53
+ * `stk.build.sqs_structures()` - generate special quasirandom structures (SQS) for disordered alloys
54
+ * `stk.build.B2()` - build a cubic AB B2 (CsCl-type) intermetallic structure
55
+ * `stk.build.C14()` - build a hexagonal AB2 C14 Laves phase structure
56
+ * `stk.build.C15()` - build a cubic AB2 C15 Laves phase structure
57
+ * `stk.build.C36()` - build a hexagonal AB2 C36 Laves phase structure
58
+ * `stk.build.D03()` - build a cubic AB3 D03 structure
59
+
60
+ ### Visualize
61
+ * `stk.visualize.plot3d()` - render an `Atoms` object in 3d, via NGLView or plotly
62
+
63
+ ### Common
64
+ * `stk.common.ase_to_pymatgen()` - convert an `ase.atoms.Atoms` object to a `pymatgen.core.Structure`
65
+ * `stk.common.pymatgen_to_ase()` - convert a `pymatgen.core.Structure` back to an `ase.atoms.Atoms` object
66
+ * `stk.common.pymatgen_read_from_file()` - read a structure file directly into an `ase.atoms.Atoms` object via pymatgen
67
+ * `stk.common.ase_to_pyscal()` - convert an `ase.atoms.Atoms` object to a `pyscal3.core.System`
68
+ * `stk.common.apply_strain()` - apply a homogeneous strain to a structure's cell, and its atoms
69
+ * `stk.common.center_coordinates_in_unit_cell()` - wrap atomic coordinates back into the unit cell
70
+ * `stk.common.get_extended_positions()` - repeat atoms across the periodic boundary to include neighbor images
71
+ * `stk.common.get_vertical_length()` - get the height of the cell perpendicular to each face
72
+ * `stk.common.get_wrapped_coordinates()` - wrap arbitrary Cartesian coordinates into the periodic cell
73
+ * `stk.common.select_index()` - get the indices of atoms of a given chemical element
74
+
75
+ ## Documentation
76
+
77
+ * [structuretoolkit](https://structuretoolkit.readthedocs.io/en/latest/README.html)
78
+ * [Example](https://structuretoolkit.readthedocs.io/en/latest/README.html#example)
79
+ * [Features](https://structuretoolkit.readthedocs.io/en/latest/README.html#features)
80
+ * [Introduction](https://structuretoolkit.readthedocs.io/en/latest/introduction.html)
81
+ * [How the package is organised](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#how-the-package-is-organised)
82
+ * [Helpers and converters](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#structuretoolkit-common-helpers-and-converters)
83
+ * [Analysing existing structures](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#structuretoolkit-analyse-analysing-existing-structures)
84
+ * [Constructing new structures](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#structuretoolkit-build-constructing-new-structures)
85
+ * [Looking at structures](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#structuretoolkit-visualize-looking-at-structures)
86
+ * [Where to go from here](https://structuretoolkit.readthedocs.io/en/latest/introduction.html#where-to-go-from-here)
87
+ * [Interface](https://structuretoolkit.readthedocs.io/en/latest/api.html)
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["ase", "numpy", "scipy", "hatchling==1.30.1", "hatch-vcs==0.5.0"]
2
+ requires = ["ase", "numpy", "scipy", "hatchling==1.32.0", "hatch-vcs==0.5.0"]
3
3
  build-backend = "hatchling.build"
4
4
 
5
5
  [project]
@@ -21,11 +21,12 @@ classifiers = [
21
21
  "Programming Language :: Python :: 3.11",
22
22
  "Programming Language :: Python :: 3.12",
23
23
  "Programming Language :: Python :: 3.13",
24
+ "Programming Language :: Python :: 3.14",
24
25
  ]
25
26
  dependencies = [
26
27
  "ase>=3.24.0,<=3.29.0",
27
- "numpy>=1.23.5,<=2.4.6",
28
- "scipy>=1.15.0,<=1.17.1",
28
+ "numpy>=1.23.5,<=2.5.3",
29
+ "scipy>=1.15.0,<=1.18.0",
29
30
  ]
30
31
  dynamic = ["version"]
31
32
 
@@ -38,25 +39,25 @@ Repository = "https://github.com/pyiron/structuretoolkit"
38
39
  dscribe = ["dscribe==2.1.2"]
39
40
  grainboundary = [
40
41
  "aimsgb>=1.0.2,<=1.1.1",
41
- "pymatgen==2026.3.23",
42
+ "pymatgen>=2026.3.23,<=2026.5.4",
42
43
  ]
43
44
  pyscal = ["pyscal3>=3.2.5,<=3.3.2"]
44
45
  nglview = ["nglview>=2.7.7,<=4.0.1"]
45
- matplotlib = ["matplotlib==3.10.9"]
46
- plotly = ["plotly>=6.0.0,<=6.8.0"]
46
+ matplotlib = ["matplotlib==3.11.1"]
47
+ plotly = ["plotly>=6.0.0,<=7.0.0"]
47
48
  clusters = ["scikit-learn==1.8.0"]
48
49
  symmetry = ["spglib==2.7.0"]
49
50
  surface = [
50
51
  "spglib==2.7.0",
51
- "pymatgen==2026.3.23",
52
+ "pymatgen>=2026.3.23,<=2026.5.4",
52
53
  ]
53
54
  phonopy = [
54
- "phonopy>=2.21.2,<=4.0.1",
55
+ "phonopy>=2.21.2,<=4.4.0",
55
56
  "spglib==2.7.0",
56
57
  ]
57
58
  mp-api = [
58
59
  "mp-api==0.45.15",
59
- "pymatgen==2026.3.23",
60
+ "pymatgen>=2026.3.23,<=2026.5.4",
60
61
  ]
61
62
 
62
63
  [tool.ruff]
@@ -100,6 +101,8 @@ ignore = [
100
101
  "PLC0415",
101
102
  # Too many arguments in function definition
102
103
  "PLR0913",
104
+ # Too many not-keyword-only arguments,
105
+ "PLR0917",
103
106
  # Magic value used in comparison
104
107
  "PLR2004",
105
108
  # Too many branches
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.0.45'
22
- __version_tuple__ = version_tuple = (0, 0, 45)
21
+ __version__ = version = '0.0.46'
22
+ __version_tuple__ = version_tuple = (0, 0, 46)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,149 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: structuretoolkit
3
- Version: 0.0.45
4
- Summary: build, analyse and visualise atomistic structures for materials science
5
- Project-URL: Homepage, https://github.com/pyiron/structuretoolkit
6
- Project-URL: Documentation, https://github.com/pyiron/structuretoolkit
7
- Project-URL: Repository, https://github.com/pyiron/structuretoolkit
8
- Author-email: Jan Janssen <janssen@mpie.de>
9
- License: BSD 3-Clause License
10
-
11
- Copyright (c) 2018, Max-Planck-Institut für Eisenforschung GmbH - Computational Materials Design (CM) Department
12
- All rights reserved.
13
-
14
- Redistribution and use in source and binary forms, with or without
15
- modification, are permitted provided that the following conditions are met:
16
-
17
- * Redistributions of source code must retain the above copyright notice, this
18
- list of conditions and the following disclaimer.
19
-
20
- * Redistributions in binary form must reproduce the above copyright notice,
21
- this list of conditions and the following disclaimer in the documentation
22
- and/or other materials provided with the distribution.
23
-
24
- * Neither the name of the copyright holder nor the names of its
25
- contributors may be used to endorse or promote products derived from
26
- this software without specific prior written permission.
27
-
28
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
- License-File: LICENSE
39
- Keywords: pyiron
40
- Classifier: Development Status :: 5 - Production/Stable
41
- Classifier: Intended Audience :: Science/Research
42
- Classifier: License :: OSI Approved :: BSD License
43
- Classifier: Operating System :: OS Independent
44
- Classifier: Programming Language :: Python :: 3.11
45
- Classifier: Programming Language :: Python :: 3.12
46
- Classifier: Programming Language :: Python :: 3.13
47
- Classifier: Topic :: Scientific/Engineering :: Physics
48
- Requires-Python: <3.15,>=3.10
49
- Requires-Dist: ase<=3.29.0,>=3.24.0
50
- Requires-Dist: numpy<=2.4.6,>=1.23.5
51
- Requires-Dist: scipy<=1.17.1,>=1.15.0
52
- Provides-Extra: clusters
53
- Requires-Dist: scikit-learn==1.8.0; extra == 'clusters'
54
- Provides-Extra: dscribe
55
- Requires-Dist: dscribe==2.1.2; extra == 'dscribe'
56
- Provides-Extra: grainboundary
57
- Requires-Dist: aimsgb<=1.1.1,>=1.0.2; extra == 'grainboundary'
58
- Requires-Dist: pymatgen==2026.3.23; extra == 'grainboundary'
59
- Provides-Extra: matplotlib
60
- Requires-Dist: matplotlib==3.10.9; extra == 'matplotlib'
61
- Provides-Extra: mp-api
62
- Requires-Dist: mp-api==0.45.15; extra == 'mp-api'
63
- Requires-Dist: pymatgen==2026.3.23; extra == 'mp-api'
64
- Provides-Extra: nglview
65
- Requires-Dist: nglview<=4.0.1,>=2.7.7; extra == 'nglview'
66
- Provides-Extra: phonopy
67
- Requires-Dist: phonopy<=4.0.1,>=2.21.2; extra == 'phonopy'
68
- Requires-Dist: spglib==2.7.0; extra == 'phonopy'
69
- Provides-Extra: plotly
70
- Requires-Dist: plotly<=6.8.0,>=6.0.0; extra == 'plotly'
71
- Provides-Extra: pyscal
72
- Requires-Dist: pyscal3<=3.3.2,>=3.2.5; extra == 'pyscal'
73
- Provides-Extra: surface
74
- Requires-Dist: pymatgen==2026.3.23; extra == 'surface'
75
- Requires-Dist: spglib==2.7.0; extra == 'surface'
76
- Provides-Extra: symmetry
77
- Requires-Dist: spglib==2.7.0; extra == 'symmetry'
78
- Description-Content-Type: text/markdown
79
-
80
- # structuretoolkit
81
-
82
- [![Pipeline](https://github.com/pyiron/structuretoolkit/actions/workflows/pipeline.yml/badge.svg)](https://github.com/pyiron/structuretoolkit/actions/workflows/pipeline.yml)
83
- [![codecov](https://codecov.io/gh/pyiron/structuretoolkit/graph/badge.svg?token=B6I4OACKND)](https://codecov.io/gh/pyiron/structuretoolkit)
84
-
85
- Originally developed as part of the `pyiron_atomistics` module the `structuretoolkit` was release as standalone library
86
- for analysing, building and visualising atomistic structures. Internally it uses the `ase.atoms.Atoms` class to
87
- represent atomistic structures in python. The `structuretoolkit` is integrated inside `pyiron_atomistics`.
88
-
89
- ## Disclaimer
90
- The `structuretoolkit` is currently under development.
91
-
92
- ## Example
93
-
94
- ```python
95
- import structuretoolkit as stk
96
- from ase.build import bulk
97
-
98
- structure = bulk("Al", cubic=True)
99
- stk.analyse.get_adaptive_cna_descriptors(structure)
100
- stk.plot3d(structure)
101
- ```
102
-
103
- ## Features
104
- ### Analysis
105
- * `stk.analyse.get_neighbors()`
106
- * `stk.analyse.get_neighborhood()`
107
- * `stk.analyse.get_equivalent_atoms()`
108
- * `stk.analyse.get_steinhardt_parameters()`
109
- * `stk.analyse.get_centro_symmetry_descriptors()`
110
- * `stk.analyse.get_diamond_structure_descriptors()`
111
- * `stk.analyse.get_adaptive_cna_descriptors()`
112
- * `stk.analyse.get_voronoi_volumes()`
113
- * `stk.analyse.find_solids()`
114
- * `stk.analyse.get_mean_positions()`
115
- * `stk.analyse.get_average_of_unique_labels()`
116
- * `stk.analyse.get_interstitials()`
117
- * `stk.analyse.get_layers()`
118
- * `stk.analyse.get_voronoi_vertices()`
119
- * `stk.analyse.get_voronoi_neighbors()`
120
- * `stk.analyse.get_delaunay_neighbors()`
121
- * `stk.analyse.get_cluster_positions()`
122
- * `stk.analyse.get_strain()`
123
-
124
- ### Build
125
- * `stk.build.get_grainboundary_info()`
126
- * `stk.build.grainboundary()`
127
- * `stk.build.high_index_surface()`
128
- * `stk.build.get_high_index_surface_info()`
129
- * `stk.build.sqs_structures()`
130
- * `stk.build.B2()`
131
- * `stk.build.C14()`
132
- * `stk.build.C15()`
133
- * `stk.build.C36()`
134
- * `stk.build.D03()`
135
-
136
- ### Visualize
137
- * `stk.visualize.plot3d()`
138
-
139
- ### Common
140
- * `stk.common.ase_to_pymatgen()`
141
- * `stk.common.pymatgen_to_ase()`
142
- * `stk.common.pymatgen_read_from_file()`
143
- * `stk.common.ase_to_pyscal()`
144
- * `stk.common.apply_strain()`
145
- * `stk.common.center_coordinates_in_unit_cell()`
146
- * `stk.common.get_extended_positions()`
147
- * `stk.common.get_vertical_length()`
148
- * `stk.common.get_wrapped_coordinates()`
149
- * `stk.common.select_index()`
@@ -1,70 +0,0 @@
1
- # structuretoolkit
2
-
3
- [![Pipeline](https://github.com/pyiron/structuretoolkit/actions/workflows/pipeline.yml/badge.svg)](https://github.com/pyiron/structuretoolkit/actions/workflows/pipeline.yml)
4
- [![codecov](https://codecov.io/gh/pyiron/structuretoolkit/graph/badge.svg?token=B6I4OACKND)](https://codecov.io/gh/pyiron/structuretoolkit)
5
-
6
- Originally developed as part of the `pyiron_atomistics` module the `structuretoolkit` was release as standalone library
7
- for analysing, building and visualising atomistic structures. Internally it uses the `ase.atoms.Atoms` class to
8
- represent atomistic structures in python. The `structuretoolkit` is integrated inside `pyiron_atomistics`.
9
-
10
- ## Disclaimer
11
- The `structuretoolkit` is currently under development.
12
-
13
- ## Example
14
-
15
- ```python
16
- import structuretoolkit as stk
17
- from ase.build import bulk
18
-
19
- structure = bulk("Al", cubic=True)
20
- stk.analyse.get_adaptive_cna_descriptors(structure)
21
- stk.plot3d(structure)
22
- ```
23
-
24
- ## Features
25
- ### Analysis
26
- * `stk.analyse.get_neighbors()`
27
- * `stk.analyse.get_neighborhood()`
28
- * `stk.analyse.get_equivalent_atoms()`
29
- * `stk.analyse.get_steinhardt_parameters()`
30
- * `stk.analyse.get_centro_symmetry_descriptors()`
31
- * `stk.analyse.get_diamond_structure_descriptors()`
32
- * `stk.analyse.get_adaptive_cna_descriptors()`
33
- * `stk.analyse.get_voronoi_volumes()`
34
- * `stk.analyse.find_solids()`
35
- * `stk.analyse.get_mean_positions()`
36
- * `stk.analyse.get_average_of_unique_labels()`
37
- * `stk.analyse.get_interstitials()`
38
- * `stk.analyse.get_layers()`
39
- * `stk.analyse.get_voronoi_vertices()`
40
- * `stk.analyse.get_voronoi_neighbors()`
41
- * `stk.analyse.get_delaunay_neighbors()`
42
- * `stk.analyse.get_cluster_positions()`
43
- * `stk.analyse.get_strain()`
44
-
45
- ### Build
46
- * `stk.build.get_grainboundary_info()`
47
- * `stk.build.grainboundary()`
48
- * `stk.build.high_index_surface()`
49
- * `stk.build.get_high_index_surface_info()`
50
- * `stk.build.sqs_structures()`
51
- * `stk.build.B2()`
52
- * `stk.build.C14()`
53
- * `stk.build.C15()`
54
- * `stk.build.C36()`
55
- * `stk.build.D03()`
56
-
57
- ### Visualize
58
- * `stk.visualize.plot3d()`
59
-
60
- ### Common
61
- * `stk.common.ase_to_pymatgen()`
62
- * `stk.common.pymatgen_to_ase()`
63
- * `stk.common.pymatgen_read_from_file()`
64
- * `stk.common.ase_to_pyscal()`
65
- * `stk.common.apply_strain()`
66
- * `stk.common.center_coordinates_in_unit_cell()`
67
- * `stk.common.get_extended_positions()`
68
- * `stk.common.get_vertical_length()`
69
- * `stk.common.get_wrapped_coordinates()`
70
- * `stk.common.select_index()`