Spgrep is a Python package of on-the-fly generator of space-group irreducible representations.
- Github: https://github.com/spglib/spgrep
- Document: https://spglib.github.io/spgrep
- PyPI: https://pypi.org/project/spgrep
- Enumerate the following irreducible representations (irreps) of space groups from spglib's cell and kpoints:
- Linear irreps
- Physically irreps (irreps over real numbers)
- Projective irreps for spnior
- Projective irreducible co-representations for spinor
- Enumerate irreps of crystallographic point groups as well
- Find symmetry-adapted basis forming given irreps
- Minimal dependencies (numpy and spglib)
from spgrep import get_spacegroup_irreps
from spgrep.representation import get_character
# Rutile structure (https://materialsproject.org/materials/mp-2657/)
# P4_2/mnm (No. 136)
a = 4.603
c = 2.969
x_4f = 0.3046
lattice = [
[a, 0, 0],
[0, a, 0],
[0, 0, c],
]
positions = [
[0, 0, 0], # Ti(2a)
[0.5, 0.5, 0.5], # Ti(2a)
[x_4f, x_4f, 0], # O(4f)
[-x_4f, -x_4f, 0], # O(4f)
[-x_4f + 0.5, x_4f + 0.5, 0.5], # O(4f)
[x_4f + 0.5, -x_4f + 0.5, 0.5], # O(4f)
]
numbers = [0, 0, 1, 1, 1, 1]
kpoint = [0.5, 0, 0] # X point
irreps, rotations, translations, mapping_little_group = get_spacegroup_irreps(
lattice, positions, numbers, kpoint
)
# Symmetry operations by spglib
assert len(rotations) == 16
assert len(translations) == 16
# At X point, the little co-group is isomorphic to mmm (order=8)
assert len(mapping_little_group) == 8
print(mapping_little_group) # [ 0, 1, 4, 5, 8, 9, 12, 13]
# Two two-dimensional irreps
for irrep in irreps:
print(get_character(irrep))
# [2.+0.j 0.+0.j 0.+0.j 2.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]
# [2.+0.j 0.+0.j 0.+0.j -2.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]See example pages for more detailed use cases and API summary for summary of functionalities.
Spgrep works with Python3.8+ and can be installed via PyPI:
pip install spgrepor in local:
git clone git@github.com:spglib/spgrep.git
cd spgrep
pip install -e .See the change log for recent changes.
If you use spgrep in your research, please consider citing the following work:
@article{spgrep,
doi = {10.21105/joss.05269},
url = {https://doi.org/10.21105/joss.05269},
year = {2023},
publisher = {The Open Journal},
volume = {8},
number = {85},
pages = {5269},
author = {Shinohara, Kohei and Togo, Atsushi and Tanaka, Isao},
title = {spgrep: On-the-fly generator of space-group irreducible representations},
journal = {J. Open Source Softw.}
}
We welcome any contributions to improve functionalities. Please open issues or create pull requests. See the development page for preparing an environment.
Spgrep is released under a BSD 3-clause license.