class SpacegroupTest(unittest.TestCase): def setUp(self): p = Poscar.from_file(os.path.join(PymatgenTest.TEST_FILES_DIR, "POSCAR")) self.structure = p.structure self.sg1 = SpacegroupAnalyzer(self.structure, 0.001).get_space_group_operations() def test_are_symmetrically_equivalent(self): sites1 = [self.structure[i] for i in [0, 1]] sites2 = [self.structure[i] for i in [2, 3]] self.assertTrue(self.sg1.are_symmetrically_equivalent(sites1, sites2, 1e-3)) sites1 = [self.structure[i] for i in [0, 1]] sites2 = [self.structure[i] for i in [0, 2]] self.assertFalse(self.sg1.are_symmetrically_equivalent(sites1, sites2, 1e-3))
class SpacegroupTest(unittest.TestCase): def setUp(self): p = Poscar.from_file(os.path.join(test_dir, 'POSCAR')) self.structure = p.structure self.sg1 = SpacegroupAnalyzer(self.structure, 0.001).get_spacegroup() def test_are_symmetrically_equivalent(self): sites1 = [self.structure[i] for i in [0, 1]] sites2 = [self.structure[i] for i in [2, 3]] self.assertTrue( self.sg1.are_symmetrically_equivalent(sites1, sites2, 1e-3)) sites1 = [self.structure[i] for i in [0, 1]] sites2 = [self.structure[i] for i in [0, 2]] self.assertFalse( self.sg1.are_symmetrically_equivalent(sites1, sites2, 1e-3))
class SpacegroupTest(unittest.TestCase): def setUp(self): p = Poscar.from_file(os.path.join(test_dir, 'POSCAR')) self.structure = p.structure self.sg1 = SpacegroupAnalyzer(self.structure, 0.001).get_spacegroup() def test_are_symmetrically_equivalent(self): sites1 = [self.structure[i] for i in [0, 1]] sites2 = [self.structure[i] for i in [2, 3]] self.assertTrue(self.sg1.are_symmetrically_equivalent(sites1, sites2, 1e-3)) sites1 = [self.structure[i] for i in [0, 1]] sites2 = [self.structure[i] for i in [0, 2]] self.assertFalse(self.sg1.are_symmetrically_equivalent(sites1, sites2, 1e-3))
def find_noneq_cations(self, symm_prec=1e-3): """ Find a list of the site indices of all non-equivalent cations. Returns: (list): List of site indices """ symmops = SpacegroupAnalyzer( self, symprec=symm_prec).get_space_group_operations() cation_indices = [ index for index in range(len(self.sites)) if self.sites[index].species_string not in Cathode.standard_anions ] # Start with adding the first cation inequiv_cations = [cation_indices[0], ] for index in cation_indices[1:]: s1 = [self.sites[index], ] # Check if the site is equivalent with one of the sites in the # inequivalent list. inequivalent = True for inequive_index in inequiv_cations: s2 = [self.sites[inequive_index], ] if symmops.are_symmetrically_equivalent( s1, s2, symm_prec=symm_prec): inequivalent = False if inequivalent: inequiv_cations.append(index) return inequiv_cations