spinspg#

testing License PyPI version PyPI - Downloads

spinspg is a Python package for detecting spin space group on top of spglib

Features#

  • Find spin symmetry operations from spin arrangements

Usage#

spinspg.get_spin_symmetry() returns spin symmetry operations of a given spin arrangement, analogous to Spglib’s get_magnetic_symmetry for magnetic symmetry operations. For comprehensive output details, refer to API documents.

import numpy as np
from spinspg import get_spin_symmetry

# Antiferromagnetic rutile structure
a = 4.87
c = 3.31
x_4f = 0.695169
lattice = np.diag([a, a, c])
positions = np.array([  # Fractional coordinates
    [0, 0, 0],  # Mn(2a)
    [0.5, 0.5, 0.5],  # Mn(2a)
    [x_4f, x_4f, 0],  # F(4f)
    [-x_4f, -x_4f, 0],  # F(4f)
    [-x_4f + 0.5, x_4f + 0.5, 0.5],  # F(4f)
    [x_4f + 0.5, -x_4f + 0.5, 0.5],  # F(4f)
])
numbers = np.array([0, 0, 1, 1, 1, 1])
magmoms = np.array([  # In Cartesian coordinates
    [0, 0, 2.5],
    [0, 0, -2.5],
    [0, 0, 0],
    [0, 0, 0],
    [0, 0, 0],
    [0, 0, 0],
])

# Find spin symmetry operations
sog, rotations, translations, spin_rotations = get_spin_symmetry(lattice, positions, numbers, magmoms)

print(f"Spin-only group: {sog}")  # COLLINEAR(axis=[0. 0. 1.])

# Some operations have nontrivial spin rotations
idx = 2
print(f"Rotation ({idx})\n{rotations[idx]}")
print(f"Translation ({idx})\n{translations[idx]}")
print(f"Spin rotation ({idx})\n{spin_rotations[idx]}")  # -> diag([1, 1, -1])

Installation#

pip install spinspg

How to cite spinspg#

If you use spinspg in your research, please cite both Spglib and the subsequent paper:

@article{spinspg,
    author = "Shinohara, Kohei and Togo, Atsushi and Watanabe, Hikaru and Nomoto, Takuya and Tanaka, Isao and Arita, Ryotaro",
    title = "{Algorithm for spin symmetry operation search}",
    journal = "Acta Cryst. A",
    year = "2024",
    volume = "80",
    number = "1",
    pages = "94--103",
    month = "Jan",
    doi = {10.1107/S2053273323009257},
    url = {https://doi.org/10.1107/S2053273323009257},
}

Change log#

See the change log for recent changes.

License#

spinspg is released under a BSD 3-clause license.