CrystOD 0.3.6__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 (81) hide show
  1. crystod-0.3.6/CrystOD.egg-info/PKG-INFO +191 -0
  2. crystod-0.3.6/CrystOD.egg-info/SOURCES.txt +79 -0
  3. crystod-0.3.6/CrystOD.egg-info/dependency_links.txt +1 -0
  4. crystod-0.3.6/CrystOD.egg-info/entry_points.txt +8 -0
  5. crystod-0.3.6/CrystOD.egg-info/requires.txt +18 -0
  6. crystod-0.3.6/CrystOD.egg-info/top_level.txt +1 -0
  7. crystod-0.3.6/LICENSE +30 -0
  8. crystod-0.3.6/PKG-INFO +191 -0
  9. crystod-0.3.6/README.md +151 -0
  10. crystod-0.3.6/crystod/CIR_data.txt.gz +0 -0
  11. crystod-0.3.6/crystod/__init__.py +98 -0
  12. crystod-0.3.6/crystod/__main__.py +5 -0
  13. crystod-0.3.6/crystod/_api.py +69 -0
  14. crystod-0.3.6/crystod/atomic_levels.py +134 -0
  15. crystod-0.3.6/crystod/band_pyscf.py +446 -0
  16. crystod-0.3.6/crystod/basis_function.py +1105 -0
  17. crystod-0.3.6/crystod/brillouin_zone.py +436 -0
  18. crystod-0.3.6/crystod/bz.py +32 -0
  19. crystod-0.3.6/crystod/bz_supercell.py +259 -0
  20. crystod-0.3.6/crystod/cli/__init__.py +21 -0
  21. crystod-0.3.6/crystod/cli/bz.py +192 -0
  22. crystod-0.3.6/crystod/cli/common.py +87 -0
  23. crystod-0.3.6/crystod/cli/group.py +566 -0
  24. crystod-0.3.6/crystod/cli/mag.py +128 -0
  25. crystod-0.3.6/crystod/cli/main.py +971 -0
  26. crystod-0.3.6/crystod/cli/md.py +202 -0
  27. crystod-0.3.6/crystod/cli/mol.py +290 -0
  28. crystod-0.3.6/crystod/cli/phonon.py +499 -0
  29. crystod-0.3.6/crystod/coset.py +252 -0
  30. crystod-0.3.6/crystod/crystal_orbital_diagram.py +1704 -0
  31. crystod-0.3.6/crystod/crystal_orbital_pyscf.py +2166 -0
  32. crystod-0.3.6/crystod/crystal_orbital_spgrep.py +1123 -0
  33. crystod-0.3.6/crystod/decompose_irrep.py +124 -0
  34. crystod-0.3.6/crystod/direct_product.py +180 -0
  35. crystod-0.3.6/crystod/dirpro_line_names.py +199 -0
  36. crystod-0.3.6/crystod/dos_pyscf.py +334 -0
  37. crystod-0.3.6/crystod/generate_basis_function.py +135 -0
  38. crystod-0.3.6/crystod/group.py +69 -0
  39. crystod-0.3.6/crystod/irreptables_compat.py +183 -0
  40. crystod-0.3.6/crystod/isoir.py +823 -0
  41. crystod-0.3.6/crystod/isotropy_subgroup.py +1237 -0
  42. crystod-0.3.6/crystod/ligand_field.py +136 -0
  43. crystod-0.3.6/crystod/mag.py +24 -0
  44. crystod-0.3.6/crystod/md.py +25 -0
  45. crystod-0.3.6/crystod/md_summary.py +111 -0
  46. crystod-0.3.6/crystod/mo_diagram.py +2067 -0
  47. crystod-0.3.6/crystod/mo_diagram_fragment.py +702 -0
  48. crystod-0.3.6/crystod/mo_diagram_pyscf.py +1111 -0
  49. crystod-0.3.6/crystod/modulation.py +1516 -0
  50. crystod-0.3.6/crystod/mol.py +40 -0
  51. crystod-0.3.6/crystod/molecular_salc.py +642 -0
  52. crystod-0.3.6/crystod/multiplet.py +562 -0
  53. crystod-0.3.6/crystod/multiplet_energy.py +1017 -0
  54. crystod-0.3.6/crystod/multiplet_visualize.py +709 -0
  55. crystod-0.3.6/crystod/operations.py +310 -0
  56. crystod-0.3.6/crystod/orbital_hybridization_spgrep.py +786 -0
  57. crystod-0.3.6/crystod/phonon.py +54 -0
  58. crystod-0.3.6/crystod/phonon_fatband.py +400 -0
  59. crystod-0.3.6/crystod/phonon_irreps.py +418 -0
  60. crystod-0.3.6/crystod/phonon_lt.py +209 -0
  61. crystod-0.3.6/crystod/phonon_subgroups.py +868 -0
  62. crystod-0.3.6/crystod/phonon_vector.py +1045 -0
  63. crystod-0.3.6/crystod/point_charge_field.py +319 -0
  64. crystod-0.3.6/crystod/poscar2cif.py +389 -0
  65. crystod-0.3.6/crystod/runtime_compat.py +161 -0
  66. crystod-0.3.6/crystod/salc.py +41 -0
  67. crystod-0.3.6/crystod/show_kpoints.py +105 -0
  68. crystod-0.3.6/crystod/spacegroup_product.py +882 -0
  69. crystod-0.3.6/crystod/spglib_compat.py +28 -0
  70. crystod-0.3.6/crystod/spin_basis.py +751 -0
  71. crystod-0.3.6/crystod/star_of_k.py +198 -0
  72. crystod-0.3.6/crystod/symmetry_mode.py +1067 -0
  73. crystod-0.3.6/crystod/vesta_element_rgb.json +127 -0
  74. crystod-0.3.6/crystod/vibration_modes.py +645 -0
  75. crystod-0.3.6/crystod/vibration_viewer.py +147 -0
  76. crystod-0.3.6/crystod/visualize_basis.py +1439 -0
  77. crystod-0.3.6/crystod/visualize_eht.py +447 -0
  78. crystod-0.3.6/crystod/visualize_pyscf.py +507 -0
  79. crystod-0.3.6/crystod/xdatcar_adp.py +537 -0
  80. crystod-0.3.6/pyproject.toml +79 -0
  81. crystod-0.3.6/setup.cfg +4 -0
@@ -0,0 +1,191 @@
1
+ Metadata-Version: 2.4
2
+ Name: CrystOD
3
+ Version: 0.3.6
4
+ Summary: Symmetry analysis toolkit for crystal orbital diagrams (SALC), space-group irreps, phonon irreps and modulations.
5
+ Author: Yasuhide Mochizuki, Hiroki Koiso
6
+ Maintainer-email: Yasuhide Mochizuki <mochizuki@rs.tus.ac.jp>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://mochizuki-tus.github.io/CrystOD/
9
+ Project-URL: Documentation, https://mochizuki-tus.github.io/CrystOD/
10
+ Project-URL: Repository, https://github.com/ahntaeyoung1212/CrystOD
11
+ Project-URL: Issues, https://github.com/ahntaeyoung1212/CrystOD/issues
12
+ Keywords: crystallography,space group,irreducible representation,phonon,SALC,crystal orbital,symmetry
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Scientific/Engineering :: Chemistry
17
+ Classifier: Topic :: Scientific/Engineering :: Physics
18
+ Classifier: Operating System :: OS Independent
19
+ Requires-Python: >=3.9
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: phonopy
23
+ Requires-Dist: spglib
24
+ Requires-Dist: spgrep
25
+ Requires-Dist: ase
26
+ Requires-Dist: numpy
27
+ Requires-Dist: scipy
28
+ Requires-Dist: sympy
29
+ Requires-Dist: pandas
30
+ Requires-Dist: matplotlib
31
+ Requires-Dist: seekpath
32
+ Requires-Dist: pymatgen
33
+ Requires-Dist: pyscf
34
+ Provides-Extra: doc
35
+ Requires-Dist: sphinx; extra == "doc"
36
+ Requires-Dist: myst-parser; extra == "doc"
37
+ Requires-Dist: sphinx-book-theme; extra == "doc"
38
+ Requires-Dist: sphinx-copybutton; extra == "doc"
39
+ Dynamic: license-file
40
+
41
+ # CrystOD
42
+
43
+ **Cryst**al **O**rbital **D**iagram — a Python package and command-line toolset for the
44
+ symmetry analysis of crystals and molecules: crystal-orbital and SALC irreducible
45
+ representations, space-group irrep direct products, isotropy subgroups, phonon irreps,
46
+ symmetry-adapted phonon modulations, molecular point groups and MO diagrams.
47
+
48
+ **Documentation: <https://mochizuki-tus.github.io/CrystOD/>**
49
+
50
+ Every irrep label follows one convention throughout — the ISO-IR (ISOTROPY, Miller–Love)
51
+ tables, which ship inside the package — at the special k points and equally on symmetry
52
+ lines, planes and general points.
53
+
54
+ ## The seven commands
55
+
56
+ | command | what it gives you |
57
+ |---|---|
58
+ | `crystod` | crystal-orbital / SALC irreps from atomic orbitals, orbital hybridization, crystal-orbital diagrams (extended Hückel or PySCF), band structure, DOS, 3D SALC viewers |
59
+ | `crystod-group` | direct products of point- and space-group irreps, reducible-representation decomposition, ligand-field splitting, polynomial basis functions, coset decompositions, isotropy subgroups, multi-electron terms, POSCAR ↔ CIF, symmetry-mode (AMPLIMODES-style) analysis |
60
+ | `crystod-bz` | interactive 3D Brillouin zones, automatic or manual k-paths, supercell (folded) BZs, special k points of any space group |
61
+ | `crystod-phonon` | phonon irrep labeling, element-projected fatbands, longitudinal/transverse bands, eigenvector VESTA export, symmetry-adapted modulations, symmetry-only vibration bases, isotropy subgroups of imaginary modes |
62
+ | `crystod-mag` | symmetry-adapted spin bases (cluster multipoles / SAMM) with ready-to-paste VASP `MAGMOM` or Quantum ESPRESSO input |
63
+ | `crystod-md` | atomic displacement parameters (ADPs) and time-averaged cells from an MD trajectory |
64
+ | `crystod-mol` | molecular point groups, molecular SALCs, and MO diagrams from symmetry + overlap (or PySCF) |
65
+
66
+ Several of these are offline counterparts of the Bilbao Crystallographic Server and
67
+ ISOTROPY tools (DIRPRO, ISOSUBGROUP, AMPLIMODES) and were cross-validated against them;
68
+ see the documentation for the validation details.
69
+
70
+ ## Installation
71
+
72
+ ```bash
73
+ pip install crystod
74
+ ```
75
+
76
+ Requires Python 3.9 or later. The main dependencies (`phonopy`, `spglib`, `spgrep`,
77
+ `ase`, `seekpath`, `pymatgen`, `pyscf`, `numpy`, `scipy`, `sympy`, `pandas`,
78
+ `matplotlib`) are installed automatically.
79
+
80
+ To also get the worked examples and the test suite, clone the repository instead:
81
+
82
+ ```bash
83
+ conda create -n crystod python=3.11 && conda activate crystod
84
+ ```
85
+
86
+ ```bash
87
+ git clone https://github.com/ahntaeyoung1212/CrystOD.git && cd CrystOD && pip install -e .
88
+ ```
89
+
90
+ ## Quick start
91
+
92
+ Irreps of the Sc 3d crystal orbitals of ScF₃ at every special k point:
93
+
94
+ ```bash
95
+ crystod -c 221_PPOSCAR_ScF3 --element Sc --orbital d
96
+ ```
97
+
98
+ Which space groups can the imaginary phonons of cubic SrTiO₃ condense into — and the
99
+ distorted structures themselves:
100
+
101
+ ```bash
102
+ crystod-phonon --subgroup -c 221_PPOSCAR_SrTiO3 --dim "4 4 4" --qpoint R --modulate
103
+ ```
104
+
105
+ Freeze a chosen mode combination into a structure (a unit cell plus `FORCE_SETS` is all
106
+ you need):
107
+
108
+ ```bash
109
+ crystod-phonon --modulation -c 221_PPOSCAR_ScF3 --qpoint 0.5 0.5 0.5 --mode 1 2 3 --amplitude 0.3
110
+ ```
111
+
112
+ Which subgroup a distortion of a given irrep and order-parameter direction leaves behind:
113
+
114
+ ```bash
115
+ crystod-group --parent Pm-3m --irrep R4+
116
+ ```
117
+
118
+ An MO diagram of a molecule from symmetry and overlap alone:
119
+
120
+ ```bash
121
+ crystod-mol --diagram --xyz XYZ_CH4.xyz
122
+ ```
123
+
124
+ Every command prints its own examples with `--help`, and the documentation shows the
125
+ output of each one.
126
+
127
+ ## Python API
128
+
129
+ Every analysis is also a Python function, grouped into one module per command, so a part
130
+ of CrystOD can be used inside another program:
131
+
132
+ ```python
133
+ import crystod
134
+
135
+ subgroups = crystod.group.isotropy_subgroups("Pm-3m", "R4+")
136
+ results = crystod.phonon.scan_imaginary_modes(phonon) # a live phonopy object
137
+ ```
138
+
139
+ `crystod.salc`, `crystod.group`, `crystod.phonon`, `crystod.bz`, `crystod.mag`,
140
+ `crystod.md`, `crystod.mol`. Attribute access is lazy, so `import crystod` plus all seven
141
+ domains costs ~0.09 s and pulls in nothing heavier than NumPy — phonopy, spgrep, PySCF
142
+ and matplotlib load only when a function that needs them is called.
143
+
144
+ ## Testing
145
+
146
+ ```bash
147
+ python testsuite.py
148
+ ```
149
+
150
+ Runs the full regression suite (35 sections) against the data in `example/`; a section
151
+ can be run alone with `python testsuite.py 27`.
152
+
153
+ ## Data sources and acknowledgements
154
+
155
+ - Irrep tables: **ISO-IR** dataset of the ISOTROPY Software Suite, shipped as
156
+ `crystod/CIR_data.txt.gz` — H. T. Stokes, B. J. Campbell and R. Cordes,
157
+ *Acta Cryst.* **A69**, 388–395 (2013), <https://iso.byu.edu>.
158
+ - Isotropy subgroups validated against **ISOSUBGROUP** — H. T. Stokes, S. van Orden and
159
+ B. J. Campbell, *J. Appl. Cryst.* **49**, 1849–1853 (2016).
160
+ - Symmetry-mode analysis validated against **AMPLIMODES** — D. Orobengoa, C. Capillas,
161
+ M. I. Aroyo and J. M. Perez-Mato, *J. Appl. Cryst.* **42**, 820–833 (2009).
162
+ - Built on phonopy, spglib, spgrep, ASE, seekpath, pymatgen and PySCF.
163
+
164
+ ## Contributors
165
+
166
+ - **Yasuhide Mochizuki** — Tokyo University of Science ([mochizuki@rs.tus.ac.jp](mailto:mochizuki@rs.tus.ac.jp))
167
+ - **Hiroki Koiso** — Institute of Science Tokyo
168
+
169
+ ## Citation
170
+
171
+ If you use CrystOD in your research, please cite:
172
+
173
+ > H. Koiso, S. Yoshida, T. Nagai, T. Isobe, A. Nakajima, and Y. Mochizuki,
174
+ > "Thermal expansion and phase stability of BF3 (B = Sc, Y, La, Al, Ga, In) from first
175
+ > principles", [Physical Review B **110**, 064104 (2024)](https://doi.org/10.1103/PhysRevB.110.064104).
176
+
177
+ ```bibtex
178
+ @article{CrystOD,
179
+ title = {Thermal expansion and phase stability of $B$F$_3$ ($B$ = Sc, Y, La, Al, Ga, In) from first principles},
180
+ author = {Koiso, Hiroki and Yoshida, Suguru and Nagai, Takayuki and Isobe, Toshihiro and Nakajima, Akira and Mochizuki, Yasuhide},
181
+ journal = {Phys. Rev. B},
182
+ volume = {110},
183
+ pages = {064104},
184
+ year = {2024},
185
+ doi = {10.1103/PhysRevB.110.064104},
186
+ }
187
+ ```
188
+
189
+ ## License
190
+
191
+ MIT License — see [LICENSE](LICENSE).
@@ -0,0 +1,79 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ CrystOD.egg-info/PKG-INFO
5
+ CrystOD.egg-info/SOURCES.txt
6
+ CrystOD.egg-info/dependency_links.txt
7
+ CrystOD.egg-info/entry_points.txt
8
+ CrystOD.egg-info/requires.txt
9
+ CrystOD.egg-info/top_level.txt
10
+ crystod/CIR_data.txt.gz
11
+ crystod/__init__.py
12
+ crystod/__main__.py
13
+ crystod/_api.py
14
+ crystod/atomic_levels.py
15
+ crystod/band_pyscf.py
16
+ crystod/basis_function.py
17
+ crystod/brillouin_zone.py
18
+ crystod/bz.py
19
+ crystod/bz_supercell.py
20
+ crystod/coset.py
21
+ crystod/crystal_orbital_diagram.py
22
+ crystod/crystal_orbital_pyscf.py
23
+ crystod/crystal_orbital_spgrep.py
24
+ crystod/decompose_irrep.py
25
+ crystod/direct_product.py
26
+ crystod/dirpro_line_names.py
27
+ crystod/dos_pyscf.py
28
+ crystod/generate_basis_function.py
29
+ crystod/group.py
30
+ crystod/irreptables_compat.py
31
+ crystod/isoir.py
32
+ crystod/isotropy_subgroup.py
33
+ crystod/ligand_field.py
34
+ crystod/mag.py
35
+ crystod/md.py
36
+ crystod/md_summary.py
37
+ crystod/mo_diagram.py
38
+ crystod/mo_diagram_fragment.py
39
+ crystod/mo_diagram_pyscf.py
40
+ crystod/modulation.py
41
+ crystod/mol.py
42
+ crystod/molecular_salc.py
43
+ crystod/multiplet.py
44
+ crystod/multiplet_energy.py
45
+ crystod/multiplet_visualize.py
46
+ crystod/operations.py
47
+ crystod/orbital_hybridization_spgrep.py
48
+ crystod/phonon.py
49
+ crystod/phonon_fatband.py
50
+ crystod/phonon_irreps.py
51
+ crystod/phonon_lt.py
52
+ crystod/phonon_subgroups.py
53
+ crystod/phonon_vector.py
54
+ crystod/point_charge_field.py
55
+ crystod/poscar2cif.py
56
+ crystod/runtime_compat.py
57
+ crystod/salc.py
58
+ crystod/show_kpoints.py
59
+ crystod/spacegroup_product.py
60
+ crystod/spglib_compat.py
61
+ crystod/spin_basis.py
62
+ crystod/star_of_k.py
63
+ crystod/symmetry_mode.py
64
+ crystod/vesta_element_rgb.json
65
+ crystod/vibration_modes.py
66
+ crystod/vibration_viewer.py
67
+ crystod/visualize_basis.py
68
+ crystod/visualize_eht.py
69
+ crystod/visualize_pyscf.py
70
+ crystod/xdatcar_adp.py
71
+ crystod/cli/__init__.py
72
+ crystod/cli/bz.py
73
+ crystod/cli/common.py
74
+ crystod/cli/group.py
75
+ crystod/cli/mag.py
76
+ crystod/cli/main.py
77
+ crystod/cli/md.py
78
+ crystod/cli/mol.py
79
+ crystod/cli/phonon.py
@@ -0,0 +1,8 @@
1
+ [console_scripts]
2
+ crystod = crystod.cli:main
3
+ crystod-bz = crystod.cli.bz:main
4
+ crystod-group = crystod.cli.group:main
5
+ crystod-mag = crystod.cli.mag:main
6
+ crystod-md = crystod.cli.md:main
7
+ crystod-mol = crystod.cli.mol:main
8
+ crystod-phonon = crystod.cli.phonon:main
@@ -0,0 +1,18 @@
1
+ phonopy
2
+ spglib
3
+ spgrep
4
+ ase
5
+ numpy
6
+ scipy
7
+ sympy
8
+ pandas
9
+ matplotlib
10
+ seekpath
11
+ pymatgen
12
+ pyscf
13
+
14
+ [doc]
15
+ sphinx
16
+ myst-parser
17
+ sphinx-book-theme
18
+ sphinx-copybutton
@@ -0,0 +1 @@
1
+ crystod
crystod-0.3.6/LICENSE ADDED
@@ -0,0 +1,30 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-2026 Yasuhide Mochizuki and Hiroki Koiso
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ----------------------------------------------------------------------
24
+
25
+ Bundled data: crystod/CIR_data.txt.gz contains the ISO-IR tables of the
26
+ ISOTROPY Software Suite (H. T. Stokes, B. J. Campbell and R. Cordes,
27
+ "Tabulated irreducible representations of the crystallographic space
28
+ groups", Acta Cryst. A69, 388-395 (2013); iso.byu.edu/irtables.php).
29
+ Please cite that work when the irreducible-representation tables are used
30
+ in published research.
crystod-0.3.6/PKG-INFO ADDED
@@ -0,0 +1,191 @@
1
+ Metadata-Version: 2.4
2
+ Name: CrystOD
3
+ Version: 0.3.6
4
+ Summary: Symmetry analysis toolkit for crystal orbital diagrams (SALC), space-group irreps, phonon irreps and modulations.
5
+ Author: Yasuhide Mochizuki, Hiroki Koiso
6
+ Maintainer-email: Yasuhide Mochizuki <mochizuki@rs.tus.ac.jp>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://mochizuki-tus.github.io/CrystOD/
9
+ Project-URL: Documentation, https://mochizuki-tus.github.io/CrystOD/
10
+ Project-URL: Repository, https://github.com/ahntaeyoung1212/CrystOD
11
+ Project-URL: Issues, https://github.com/ahntaeyoung1212/CrystOD/issues
12
+ Keywords: crystallography,space group,irreducible representation,phonon,SALC,crystal orbital,symmetry
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Scientific/Engineering :: Chemistry
17
+ Classifier: Topic :: Scientific/Engineering :: Physics
18
+ Classifier: Operating System :: OS Independent
19
+ Requires-Python: >=3.9
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: phonopy
23
+ Requires-Dist: spglib
24
+ Requires-Dist: spgrep
25
+ Requires-Dist: ase
26
+ Requires-Dist: numpy
27
+ Requires-Dist: scipy
28
+ Requires-Dist: sympy
29
+ Requires-Dist: pandas
30
+ Requires-Dist: matplotlib
31
+ Requires-Dist: seekpath
32
+ Requires-Dist: pymatgen
33
+ Requires-Dist: pyscf
34
+ Provides-Extra: doc
35
+ Requires-Dist: sphinx; extra == "doc"
36
+ Requires-Dist: myst-parser; extra == "doc"
37
+ Requires-Dist: sphinx-book-theme; extra == "doc"
38
+ Requires-Dist: sphinx-copybutton; extra == "doc"
39
+ Dynamic: license-file
40
+
41
+ # CrystOD
42
+
43
+ **Cryst**al **O**rbital **D**iagram — a Python package and command-line toolset for the
44
+ symmetry analysis of crystals and molecules: crystal-orbital and SALC irreducible
45
+ representations, space-group irrep direct products, isotropy subgroups, phonon irreps,
46
+ symmetry-adapted phonon modulations, molecular point groups and MO diagrams.
47
+
48
+ **Documentation: <https://mochizuki-tus.github.io/CrystOD/>**
49
+
50
+ Every irrep label follows one convention throughout — the ISO-IR (ISOTROPY, Miller–Love)
51
+ tables, which ship inside the package — at the special k points and equally on symmetry
52
+ lines, planes and general points.
53
+
54
+ ## The seven commands
55
+
56
+ | command | what it gives you |
57
+ |---|---|
58
+ | `crystod` | crystal-orbital / SALC irreps from atomic orbitals, orbital hybridization, crystal-orbital diagrams (extended Hückel or PySCF), band structure, DOS, 3D SALC viewers |
59
+ | `crystod-group` | direct products of point- and space-group irreps, reducible-representation decomposition, ligand-field splitting, polynomial basis functions, coset decompositions, isotropy subgroups, multi-electron terms, POSCAR ↔ CIF, symmetry-mode (AMPLIMODES-style) analysis |
60
+ | `crystod-bz` | interactive 3D Brillouin zones, automatic or manual k-paths, supercell (folded) BZs, special k points of any space group |
61
+ | `crystod-phonon` | phonon irrep labeling, element-projected fatbands, longitudinal/transverse bands, eigenvector VESTA export, symmetry-adapted modulations, symmetry-only vibration bases, isotropy subgroups of imaginary modes |
62
+ | `crystod-mag` | symmetry-adapted spin bases (cluster multipoles / SAMM) with ready-to-paste VASP `MAGMOM` or Quantum ESPRESSO input |
63
+ | `crystod-md` | atomic displacement parameters (ADPs) and time-averaged cells from an MD trajectory |
64
+ | `crystod-mol` | molecular point groups, molecular SALCs, and MO diagrams from symmetry + overlap (or PySCF) |
65
+
66
+ Several of these are offline counterparts of the Bilbao Crystallographic Server and
67
+ ISOTROPY tools (DIRPRO, ISOSUBGROUP, AMPLIMODES) and were cross-validated against them;
68
+ see the documentation for the validation details.
69
+
70
+ ## Installation
71
+
72
+ ```bash
73
+ pip install crystod
74
+ ```
75
+
76
+ Requires Python 3.9 or later. The main dependencies (`phonopy`, `spglib`, `spgrep`,
77
+ `ase`, `seekpath`, `pymatgen`, `pyscf`, `numpy`, `scipy`, `sympy`, `pandas`,
78
+ `matplotlib`) are installed automatically.
79
+
80
+ To also get the worked examples and the test suite, clone the repository instead:
81
+
82
+ ```bash
83
+ conda create -n crystod python=3.11 && conda activate crystod
84
+ ```
85
+
86
+ ```bash
87
+ git clone https://github.com/ahntaeyoung1212/CrystOD.git && cd CrystOD && pip install -e .
88
+ ```
89
+
90
+ ## Quick start
91
+
92
+ Irreps of the Sc 3d crystal orbitals of ScF₃ at every special k point:
93
+
94
+ ```bash
95
+ crystod -c 221_PPOSCAR_ScF3 --element Sc --orbital d
96
+ ```
97
+
98
+ Which space groups can the imaginary phonons of cubic SrTiO₃ condense into — and the
99
+ distorted structures themselves:
100
+
101
+ ```bash
102
+ crystod-phonon --subgroup -c 221_PPOSCAR_SrTiO3 --dim "4 4 4" --qpoint R --modulate
103
+ ```
104
+
105
+ Freeze a chosen mode combination into a structure (a unit cell plus `FORCE_SETS` is all
106
+ you need):
107
+
108
+ ```bash
109
+ crystod-phonon --modulation -c 221_PPOSCAR_ScF3 --qpoint 0.5 0.5 0.5 --mode 1 2 3 --amplitude 0.3
110
+ ```
111
+
112
+ Which subgroup a distortion of a given irrep and order-parameter direction leaves behind:
113
+
114
+ ```bash
115
+ crystod-group --parent Pm-3m --irrep R4+
116
+ ```
117
+
118
+ An MO diagram of a molecule from symmetry and overlap alone:
119
+
120
+ ```bash
121
+ crystod-mol --diagram --xyz XYZ_CH4.xyz
122
+ ```
123
+
124
+ Every command prints its own examples with `--help`, and the documentation shows the
125
+ output of each one.
126
+
127
+ ## Python API
128
+
129
+ Every analysis is also a Python function, grouped into one module per command, so a part
130
+ of CrystOD can be used inside another program:
131
+
132
+ ```python
133
+ import crystod
134
+
135
+ subgroups = crystod.group.isotropy_subgroups("Pm-3m", "R4+")
136
+ results = crystod.phonon.scan_imaginary_modes(phonon) # a live phonopy object
137
+ ```
138
+
139
+ `crystod.salc`, `crystod.group`, `crystod.phonon`, `crystod.bz`, `crystod.mag`,
140
+ `crystod.md`, `crystod.mol`. Attribute access is lazy, so `import crystod` plus all seven
141
+ domains costs ~0.09 s and pulls in nothing heavier than NumPy — phonopy, spgrep, PySCF
142
+ and matplotlib load only when a function that needs them is called.
143
+
144
+ ## Testing
145
+
146
+ ```bash
147
+ python testsuite.py
148
+ ```
149
+
150
+ Runs the full regression suite (35 sections) against the data in `example/`; a section
151
+ can be run alone with `python testsuite.py 27`.
152
+
153
+ ## Data sources and acknowledgements
154
+
155
+ - Irrep tables: **ISO-IR** dataset of the ISOTROPY Software Suite, shipped as
156
+ `crystod/CIR_data.txt.gz` — H. T. Stokes, B. J. Campbell and R. Cordes,
157
+ *Acta Cryst.* **A69**, 388–395 (2013), <https://iso.byu.edu>.
158
+ - Isotropy subgroups validated against **ISOSUBGROUP** — H. T. Stokes, S. van Orden and
159
+ B. J. Campbell, *J. Appl. Cryst.* **49**, 1849–1853 (2016).
160
+ - Symmetry-mode analysis validated against **AMPLIMODES** — D. Orobengoa, C. Capillas,
161
+ M. I. Aroyo and J. M. Perez-Mato, *J. Appl. Cryst.* **42**, 820–833 (2009).
162
+ - Built on phonopy, spglib, spgrep, ASE, seekpath, pymatgen and PySCF.
163
+
164
+ ## Contributors
165
+
166
+ - **Yasuhide Mochizuki** — Tokyo University of Science ([mochizuki@rs.tus.ac.jp](mailto:mochizuki@rs.tus.ac.jp))
167
+ - **Hiroki Koiso** — Institute of Science Tokyo
168
+
169
+ ## Citation
170
+
171
+ If you use CrystOD in your research, please cite:
172
+
173
+ > H. Koiso, S. Yoshida, T. Nagai, T. Isobe, A. Nakajima, and Y. Mochizuki,
174
+ > "Thermal expansion and phase stability of BF3 (B = Sc, Y, La, Al, Ga, In) from first
175
+ > principles", [Physical Review B **110**, 064104 (2024)](https://doi.org/10.1103/PhysRevB.110.064104).
176
+
177
+ ```bibtex
178
+ @article{CrystOD,
179
+ title = {Thermal expansion and phase stability of $B$F$_3$ ($B$ = Sc, Y, La, Al, Ga, In) from first principles},
180
+ author = {Koiso, Hiroki and Yoshida, Suguru and Nagai, Takayuki and Isobe, Toshihiro and Nakajima, Akira and Mochizuki, Yasuhide},
181
+ journal = {Phys. Rev. B},
182
+ volume = {110},
183
+ pages = {064104},
184
+ year = {2024},
185
+ doi = {10.1103/PhysRevB.110.064104},
186
+ }
187
+ ```
188
+
189
+ ## License
190
+
191
+ MIT License — see [LICENSE](LICENSE).
@@ -0,0 +1,151 @@
1
+ # CrystOD
2
+
3
+ **Cryst**al **O**rbital **D**iagram — a Python package and command-line toolset for the
4
+ symmetry analysis of crystals and molecules: crystal-orbital and SALC irreducible
5
+ representations, space-group irrep direct products, isotropy subgroups, phonon irreps,
6
+ symmetry-adapted phonon modulations, molecular point groups and MO diagrams.
7
+
8
+ **Documentation: <https://mochizuki-tus.github.io/CrystOD/>**
9
+
10
+ Every irrep label follows one convention throughout — the ISO-IR (ISOTROPY, Miller–Love)
11
+ tables, which ship inside the package — at the special k points and equally on symmetry
12
+ lines, planes and general points.
13
+
14
+ ## The seven commands
15
+
16
+ | command | what it gives you |
17
+ |---|---|
18
+ | `crystod` | crystal-orbital / SALC irreps from atomic orbitals, orbital hybridization, crystal-orbital diagrams (extended Hückel or PySCF), band structure, DOS, 3D SALC viewers |
19
+ | `crystod-group` | direct products of point- and space-group irreps, reducible-representation decomposition, ligand-field splitting, polynomial basis functions, coset decompositions, isotropy subgroups, multi-electron terms, POSCAR ↔ CIF, symmetry-mode (AMPLIMODES-style) analysis |
20
+ | `crystod-bz` | interactive 3D Brillouin zones, automatic or manual k-paths, supercell (folded) BZs, special k points of any space group |
21
+ | `crystod-phonon` | phonon irrep labeling, element-projected fatbands, longitudinal/transverse bands, eigenvector VESTA export, symmetry-adapted modulations, symmetry-only vibration bases, isotropy subgroups of imaginary modes |
22
+ | `crystod-mag` | symmetry-adapted spin bases (cluster multipoles / SAMM) with ready-to-paste VASP `MAGMOM` or Quantum ESPRESSO input |
23
+ | `crystod-md` | atomic displacement parameters (ADPs) and time-averaged cells from an MD trajectory |
24
+ | `crystod-mol` | molecular point groups, molecular SALCs, and MO diagrams from symmetry + overlap (or PySCF) |
25
+
26
+ Several of these are offline counterparts of the Bilbao Crystallographic Server and
27
+ ISOTROPY tools (DIRPRO, ISOSUBGROUP, AMPLIMODES) and were cross-validated against them;
28
+ see the documentation for the validation details.
29
+
30
+ ## Installation
31
+
32
+ ```bash
33
+ pip install crystod
34
+ ```
35
+
36
+ Requires Python 3.9 or later. The main dependencies (`phonopy`, `spglib`, `spgrep`,
37
+ `ase`, `seekpath`, `pymatgen`, `pyscf`, `numpy`, `scipy`, `sympy`, `pandas`,
38
+ `matplotlib`) are installed automatically.
39
+
40
+ To also get the worked examples and the test suite, clone the repository instead:
41
+
42
+ ```bash
43
+ conda create -n crystod python=3.11 && conda activate crystod
44
+ ```
45
+
46
+ ```bash
47
+ git clone https://github.com/ahntaeyoung1212/CrystOD.git && cd CrystOD && pip install -e .
48
+ ```
49
+
50
+ ## Quick start
51
+
52
+ Irreps of the Sc 3d crystal orbitals of ScF₃ at every special k point:
53
+
54
+ ```bash
55
+ crystod -c 221_PPOSCAR_ScF3 --element Sc --orbital d
56
+ ```
57
+
58
+ Which space groups can the imaginary phonons of cubic SrTiO₃ condense into — and the
59
+ distorted structures themselves:
60
+
61
+ ```bash
62
+ crystod-phonon --subgroup -c 221_PPOSCAR_SrTiO3 --dim "4 4 4" --qpoint R --modulate
63
+ ```
64
+
65
+ Freeze a chosen mode combination into a structure (a unit cell plus `FORCE_SETS` is all
66
+ you need):
67
+
68
+ ```bash
69
+ crystod-phonon --modulation -c 221_PPOSCAR_ScF3 --qpoint 0.5 0.5 0.5 --mode 1 2 3 --amplitude 0.3
70
+ ```
71
+
72
+ Which subgroup a distortion of a given irrep and order-parameter direction leaves behind:
73
+
74
+ ```bash
75
+ crystod-group --parent Pm-3m --irrep R4+
76
+ ```
77
+
78
+ An MO diagram of a molecule from symmetry and overlap alone:
79
+
80
+ ```bash
81
+ crystod-mol --diagram --xyz XYZ_CH4.xyz
82
+ ```
83
+
84
+ Every command prints its own examples with `--help`, and the documentation shows the
85
+ output of each one.
86
+
87
+ ## Python API
88
+
89
+ Every analysis is also a Python function, grouped into one module per command, so a part
90
+ of CrystOD can be used inside another program:
91
+
92
+ ```python
93
+ import crystod
94
+
95
+ subgroups = crystod.group.isotropy_subgroups("Pm-3m", "R4+")
96
+ results = crystod.phonon.scan_imaginary_modes(phonon) # a live phonopy object
97
+ ```
98
+
99
+ `crystod.salc`, `crystod.group`, `crystod.phonon`, `crystod.bz`, `crystod.mag`,
100
+ `crystod.md`, `crystod.mol`. Attribute access is lazy, so `import crystod` plus all seven
101
+ domains costs ~0.09 s and pulls in nothing heavier than NumPy — phonopy, spgrep, PySCF
102
+ and matplotlib load only when a function that needs them is called.
103
+
104
+ ## Testing
105
+
106
+ ```bash
107
+ python testsuite.py
108
+ ```
109
+
110
+ Runs the full regression suite (35 sections) against the data in `example/`; a section
111
+ can be run alone with `python testsuite.py 27`.
112
+
113
+ ## Data sources and acknowledgements
114
+
115
+ - Irrep tables: **ISO-IR** dataset of the ISOTROPY Software Suite, shipped as
116
+ `crystod/CIR_data.txt.gz` — H. T. Stokes, B. J. Campbell and R. Cordes,
117
+ *Acta Cryst.* **A69**, 388–395 (2013), <https://iso.byu.edu>.
118
+ - Isotropy subgroups validated against **ISOSUBGROUP** — H. T. Stokes, S. van Orden and
119
+ B. J. Campbell, *J. Appl. Cryst.* **49**, 1849–1853 (2016).
120
+ - Symmetry-mode analysis validated against **AMPLIMODES** — D. Orobengoa, C. Capillas,
121
+ M. I. Aroyo and J. M. Perez-Mato, *J. Appl. Cryst.* **42**, 820–833 (2009).
122
+ - Built on phonopy, spglib, spgrep, ASE, seekpath, pymatgen and PySCF.
123
+
124
+ ## Contributors
125
+
126
+ - **Yasuhide Mochizuki** — Tokyo University of Science ([mochizuki@rs.tus.ac.jp](mailto:mochizuki@rs.tus.ac.jp))
127
+ - **Hiroki Koiso** — Institute of Science Tokyo
128
+
129
+ ## Citation
130
+
131
+ If you use CrystOD in your research, please cite:
132
+
133
+ > H. Koiso, S. Yoshida, T. Nagai, T. Isobe, A. Nakajima, and Y. Mochizuki,
134
+ > "Thermal expansion and phase stability of BF3 (B = Sc, Y, La, Al, Ga, In) from first
135
+ > principles", [Physical Review B **110**, 064104 (2024)](https://doi.org/10.1103/PhysRevB.110.064104).
136
+
137
+ ```bibtex
138
+ @article{CrystOD,
139
+ title = {Thermal expansion and phase stability of $B$F$_3$ ($B$ = Sc, Y, La, Al, Ga, In) from first principles},
140
+ author = {Koiso, Hiroki and Yoshida, Suguru and Nagai, Takayuki and Isobe, Toshihiro and Nakajima, Akira and Mochizuki, Yasuhide},
141
+ journal = {Phys. Rev. B},
142
+ volume = {110},
143
+ pages = {064104},
144
+ year = {2024},
145
+ doi = {10.1103/PhysRevB.110.064104},
146
+ }
147
+ ```
148
+
149
+ ## License
150
+
151
+ MIT License — see [LICENSE](LICENSE).
Binary file