예제 #1
0
 def _spgr(self) -> gemmi.SpaceGroup:
     if self.symmops:
         symm_ops = self.symmops
     else:
         symm_ops = self.symmops_from_spgr
     return gemmi.find_spacegroup_by_ops(
         gemmi.GroupOps([gemmi.Op(o) for o in symm_ops]))
예제 #2
0
 def compare_hall_symops_with_sgtbx(self, hall, existing_group=True):
     cctbx_sg = sgtbx.space_group(hall)
     cctbx_triplets = set(m.as_xyz() for m in cctbx_sg.all_ops(mod=1))
     gemmi_gops = gemmi.symops_from_hall(hall)
     self.assertEqual(len(gemmi_gops.sym_ops), cctbx_sg.order_p())
     self.assertEqual(len(gemmi_gops.cen_ops), cctbx_sg.n_ltr())
     self.assertEqual(len(gemmi_gops), cctbx_sg.order_z())
     self.assertEqual(gemmi_gops.is_centric(), cctbx_sg.is_centric())
     ctr = gemmi_gops.find_centering()
     self.assertEqual(ctr, cctbx_sg.conventional_centring_type_symbol())
     gemmi_triplets = set(m.triplet() for m in gemmi_gops)
     self.assertEqual(cctbx_triplets, gemmi_triplets)
     gemmi_sg = gemmi.find_spacegroup_by_ops(gemmi_gops)
     if existing_group:
         self.assertEqual(gemmi_sg.point_group_hm(),
                          cctbx_sg.point_group_type())
         self.assertEqual(gemmi_sg.crystal_system_str(),
                          cctbx_sg.crystal_system().lower())
         self.assertEqual(gemmi_sg.is_sohncke(), cctbx_sg.is_chiral())
         self.assertEqual(gemmi_sg.is_enantiomorphic(),
                          cctbx_sg.type().is_enantiomorphic())
         self.assertEqual(gemmi_sg.is_symmorphic(),
                          cctbx_sg.type().is_symmorphic())
         self.assertEqual(gemmi_sg.centring_type(), ctr)
     else:
         self.assertIsNone(gemmi_sg)
예제 #3
0
 def test_groupops(self):
     gops = gemmi.GroupOps([gemmi.Op(t) for t in ['x, y, z',
                                                  'x, -y, z+1/2',
                                                  'x+1/2, y+1/2, z',
                                                  'x+1/2, -y+1/2, z+1/2']])
     self.assertEqual(gops.find_centering(), 'C')
     self.assertEqual(len(gops), 4)
     self.assertEqual(gemmi.find_spacegroup_by_ops(gops).hm, 'C 1 c 1')
예제 #4
0
 def test_operations(self):
     gops = gemmi.symops_from_hall('-P 2a 2ac (z,x,y)')
     self.assertEqual(set(gemmi.SpaceGroup('Pbaa').operations()), set(gops))
     self.assertEqual(gemmi.find_spacegroup_by_ops(gops).hm, 'P b a a')