Skip to content

Commit

Permalink
Merge pull request #219 from pyiron/equivalent-atoms
Browse files Browse the repository at this point in the history
Fix equivalent atoms and add tests
jan-janssen authored Jul 18, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
2 parents d46f3bd + 3d6d312 commit 2f52d82
Showing 2 changed files with 34 additions and 1 deletion.
4 changes: 3 additions & 1 deletion structuretoolkit/analyse/phonopy.py
Original file line number Diff line number Diff line change
@@ -41,5 +41,7 @@ def get_equivalent_atoms(
positions = np.reshape(np.array(positions), (natom, 3))
cell = np.reshape(np.array(cell), (3, 3))
unitcell = PhonopyAtoms(symbols=types, cell=cell, scaled_positions=positions)
ops = spg.get_symmetry(unitcell, symprec=symprec, angle_tolerance=angle_tolerance)
ops = spg.get_symmetry(
cell=unitcell.totuple(), symprec=symprec, angle_tolerance=angle_tolerance
)
return ops["equivalent_atoms"]
31 changes: 31 additions & 0 deletions tests/test_analyse_phonopy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import unittest
from ase.build import bulk
import numpy as np
from structuretoolkit.analyse.phonopy import get_equivalent_atoms
from structuretoolkit.common.phonopy import atoms_to_phonopy, phonopy_to_atoms


try:
import spglib

spglib_not_available = False
except ImportError:
spglib_not_available = True


@unittest.skipIf(
spglib_not_available, "spglib is not installed, so the spglib tests are skipped."
)
class TestPhonopyAtoms(unittest.TestCase):
def test_get_equivalent_atoms(self):
equivalent_atoms = get_equivalent_atoms(
structure=bulk("Al", cubic=True), symprec=1e-5, angle_tolerance=-1.0
)
self.assertTrue(all(equivalent_atoms == [0, 0, 0, 0]))

def test_convert(self):
structure = bulk("Al", cubic=True)
structure_converted = phonopy_to_atoms(atoms_to_phonopy(structure))
self.assertTrue(np.all(structure.symbols == structure_converted.symbols))
self.assertTrue(np.all(structure.positions == structure_converted.positions))
self.assertTrue(np.all(structure.cell == structure_converted.cell))

0 comments on commit 2f52d82

Please sign in to comment.