def test_C1(self): mol1 = Geometry(self.chiral_ring, refresh_ranks=False) pg = PointGroup(mol1) self.assertEqual(pg.name, "C1") mol2 = Geometry(self.chiral_mol_1, refresh_ranks=False) pg = PointGroup(mol2) self.assertEqual(pg.name, "C1") mol3 = Geometry(self.chiral_mol_2, refresh_ranks=False) pg = PointGroup(mol3) self.assertEqual(pg.name, "C1") mol4 = Geometry(self.chiral_mol_3, refresh_ranks=False) pg = PointGroup(mol4) self.assertEqual(pg.name, "C1") mol5 = Geometry(self.chiral_mol_4, refresh_ranks=False) pg = PointGroup(mol5) self.assertEqual(pg.name, "C1")
def test_Td(self): mol = Geometry(self.adamantane, refresh_ranks=False) pg = PointGroup(mol) self.assertEqual(pg.name, "Td") mol = Geometry(self.methane, refresh_ranks=False) pg = PointGroup(mol) self.assertEqual(pg.name, "Td")
def test_C2v(self): mol = Geometry(self.h2o, refresh_ranks=False) pg = PointGroup(mol) self.assertEqual(pg.name, "C2v")
def test_D2d(self): mol = Geometry(self.c3h4, refresh_ranks=False) pg = PointGroup(mol) self.assertEqual(pg.name, "D2d")
def test_Ih(self): mol = Geometry(self.c60, refresh_ranks=False) pg = PointGroup(mol) self.assertEqual(pg.name, "Ih")
def test_S4(self): # test to see if interpolated geometry is correct mol = Geometry(self.Me_NO2_4, refresh_ranks=False) pg = PointGroup(mol) self.assertEqual(pg.name, "S4")
def test_Cs(self): # test to see if interpolated geometry is correct mol = Geometry(self.meoh, refresh_ranks=False) pg = PointGroup(mol) self.assertEqual(pg.name, "Cs")
def test_D6h(self): # test to see if interpolated geometry is correct mol = Geometry(self.benzene, refresh_ranks=False) pg = PointGroup(mol) self.assertEqual(pg.name, "D6h")
if args.input_format is not None: infile = FileReader((f, args.input_format, None), just_geom=True) else: infile = FileReader(f, just_geom=True) else: if args.input_format is not None: infile = FileReader(("from stdin", args.input_format[0], f), just_geom=True) else: if len(sys.argv) >= 1: infile = FileReader(("from stdin", "xyz", f), just_geom=True) geom = Geometry(infile) pg = PointGroup( geom, tolerance=args.tolerance, rotation_tolerance=args.rotation_tolerance, max_rotation=args.max_n, ) if args.print_bild: inv = "" mirror = "" prots = "" irots = "" for ele in sorted(pg.elements, reverse=True): if isinstance(ele, InversionCenter): inv += ".note %s\n" % repr(ele) inv += ".sphere %.5f %.5f %.5f 0.1\n" % tuple(pg.center) elif isinstance(ele, ProperRotation): prots += ".note %s\n" % repr(ele) prots += ".color red\n"
def pointGroup( session, selection, printElements=False, displayElements=True, tolerance=0.1, axisTolerance=0.5, maxRotation=6, ): for model in selection: rescol = ResidueCollection(model, refresh_ranks=False) pg = PointGroup( rescol, tolerance=tolerance, rotation_tolerance=np.deg2rad(axisTolerance), max_rotation=maxRotation, ) session.logger.info("%s: %s" % (model.name, pg.name)) if printElements: for ele in sorted(pg.elements, reverse=True): session.logger.info(repr(ele)) if displayElements: for ele in sorted(pg.elements, reverse=True): if isinstance(ele, InversionCenter): inv = ".note %s\n" % repr(ele) inv += ".sphere %.5f %.5f %.5f 0.1\n" % tuple( pg.center) stream = BytesIO(bytes(inv, "utf-8")) bild_obj, status = read_bild(session, stream, repr(ele)) session.models.add(bild_obj, parent=model) elif isinstance(ele, ProperRotation): prots = ".note %s\n" % repr(ele) prots += ".color red\n" prots += ".arrow %.5f %.5f %.5f " % tuple(pg.center) end = pg.center + ele.n * np.sqrt(ele.exp) * ele.axis prots += "%.5f %.5f %.5f 0.05\n" % tuple(end) stream = BytesIO(bytes(prots, "utf-8")) bild_obj, status = read_bild(session, stream, repr(ele)) session.models.add(bild_obj, parent=model) elif isinstance(ele, ImproperRotation): irots = ".note %s\n" % repr(ele) irots += ".color blue\n" irots += ".arrow %.5f %.5f %.5f " % tuple(pg.center) end = pg.center + np.sqrt(ele.n) * np.sqrt( ele.exp) * ele.axis irots += "%.5f %.5f %.5f 0.05\n" % tuple(end) irots += ".transparency 25\n" z = ele.axis x = perp_vector(z) y = np.cross(x, z) for angle in np.linspace(0, 2 * np.pi, num=250): pt2 = ele.n**0.9 * x * np.cos(angle) pt2 += ele.n**0.9 * y * np.sin(angle) pt2 += pg.center if angle > 0: irots += ".polygon %6.3f %6.3f %6.3f" % tuple( pt1) irots += " %6.3f %6.3f %6.3f" % tuple( pg.center) irots += " %6.3f %6.3f %6.3f" % tuple(pt2) irots += "\n" pt1 = pt2 stream = BytesIO(bytes(irots, "utf-8")) bild_obj, status = read_bild(session, stream, repr(ele)) session.models.add(bild_obj, parent=model) elif isinstance(ele, MirrorPlane): mirror = ".note %s\n" % repr(ele) mirror += ".color purple\n" mirror += ".transparency 25\n" z = ele.axis x = perp_vector(z) y = np.cross(x, z) for angle in np.linspace(0, 2 * np.pi, num=250): pt2 = 5 * x * np.cos(angle) pt2 += 5 * y * np.sin(angle) pt2 += pg.center if angle > 0: mirror += ".polygon %6.3f %6.3f %6.3f" % tuple( pt1) mirror += " %6.3f %6.3f %6.3f" % tuple( pg.center) mirror += " %6.3f %6.3f %6.3f" % tuple(pt2) mirror += "\n" pt1 = pt2 stream = BytesIO(bytes(mirror, "utf-8")) bild_obj, status = read_bild(session, stream, repr(ele)) session.models.add(bild_obj, parent=model)