def symm_data(self): """Returns the band data folded back to the first BZ and applies symmetry operations. Returns an index array to reduce memory usage.""" pg = PointGroup(self.run.spacegroup.point_group) # apply symmetry operations from point group return self.apply_symmetry(self.data, pg.symmetry_ops)
def test_is_sub_super_group(self): pgmmm = PointGroup("mmm") pgmm2 = PointGroup("mm2") pg222 = PointGroup("222") pg4 = PointGroup("4") self.assertTrue(pgmmm.is_supergroup(pgmm2)) self.assertTrue(pgmm2.is_subgroup(pgmmm)) self.assertTrue(pgmmm.is_supergroup(pg222)) self.assertFalse(pgmmm.is_supergroup(pg4)) pgm3m = PointGroup("m-3m") pg6mmm = PointGroup("6/mmm") pg3m = PointGroup("-3m") # TODO: Fix the test below. #self.assertTrue(pg3m.is_subgroup(pgm3m)) self.assertTrue(pg3m.is_subgroup(pg6mmm)) self.assertFalse(pgm3m.is_supergroup(pg6mmm))
def test_is_sub_super_group(self): with warnings.catch_warnings() as w: warnings.simplefilter("ignore") pgmmm = PointGroup("mmm") pgmm2 = PointGroup("mm2") pg222 = PointGroup("222") pg4 = PointGroup("4") self.assertTrue(pgmmm.is_supergroup(pgmm2)) self.assertTrue(pgmm2.is_subgroup(pgmmm)) self.assertTrue(pgmmm.is_supergroup(pg222)) self.assertFalse(pgmmm.is_supergroup(pg4)) pgm3m = PointGroup("m-3m") pg6mmm = PointGroup("6/mmm") pg3m = PointGroup("-3m") # TODO: Fix the test below. # self.assertTrue(pg3m.is_subgroup(pgm3m)) self.assertTrue(pg3m.is_subgroup(pg6mmm)) self.assertFalse(pgm3m.is_supergroup(pg6mmm))
def sg_pg_compare(mpid='mp-989535'): stru = m.get_structure_by_material_id(mpid) spa = SpacegroupAnalyzer(stru) pg_name = spa.get_symmetry_dataset()['pointgroup'] pg_ops = PointGroup(pg_name).symmetry_ops sp_ops = [] sp_mats = [] pg_mats = [] for op in pg_ops: rotation = op.rotation_matrix pg_mats.append(jsanitize(rotation)) for op in spa.get_symmetry_operations(): rotation = op.rotation_matrix sp_mats.append(jsanitize(rotation)) sp_ops.append(SymmOp.from_rotation_and_translation( rotation, (0, 0, 0))) sp_ops = set(sp_ops) #pg_mats.sort();sp_mats.sort() return pg_mats, sp_mats
def test_get_orbit(self): pg = PointGroup("mmm") self.assertEqual(len(pg.get_orbit([0.1, 0.1, 0.1])), 8) self.assertEqual(len(pg.get_orbit([0, 0, 0.1])), 2) self.assertEqual(len(pg.get_orbit([1.2, 1.2, 1])), 8)
def test_order(self): order = {"mmm": 8, "432": 24, "-6m2": 12} for k, v in order.items(): pg = PointGroup(k) self.assertEqual(order[k], len(pg.symmetry_ops))
def test_is_sub_super_group(self): pgmmm = PointGroup("mmm") pgmm2 = PointGroup("mm2") pg222 = PointGroup("222") pg4 = PointGroup("4") self.assertTrue(pgmmm.is_supergroup(pgmm2)) self.assertTrue(pgmm2.is_subgroup(pgmmm)) self.assertTrue(pgmmm.is_supergroup(pg222)) self.assertFalse(pgmmm.is_supergroup(pg4)) pgm3m = PointGroup("m-3m") pg6mmm = PointGroup("6/mmm") pg3m = PointGroup("-3m") # TODO: Fix the test below. # self.assertTrue(pg3m.is_subgroup(pgm3m)) self.assertTrue(pg3m.is_subgroup(pg6mmm)) self.assertFalse(pgm3m.is_supergroup(pg6mmm))