コード例 #1
0
ファイル: test_symmetry.py プロジェクト: QChASM/AaronTools.py
    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")
コード例 #2
0
ファイル: test_symmetry.py プロジェクト: QChASM/AaronTools.py
    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")
コード例 #3
0
ファイル: test_symmetry.py プロジェクト: QChASM/AaronTools.py
    def test_C2v(self):
        mol = Geometry(self.h2o, refresh_ranks=False)
        pg = PointGroup(mol)

        self.assertEqual(pg.name, "C2v")
コード例 #4
0
ファイル: test_symmetry.py プロジェクト: QChASM/AaronTools.py
    def test_D2d(self):
        mol = Geometry(self.c3h4, refresh_ranks=False)
        pg = PointGroup(mol)

        self.assertEqual(pg.name, "D2d")
コード例 #5
0
ファイル: test_symmetry.py プロジェクト: QChASM/AaronTools.py
    def test_Ih(self):
        mol = Geometry(self.c60, refresh_ranks=False)
        pg = PointGroup(mol)

        self.assertEqual(pg.name, "Ih")
コード例 #6
0
ファイル: test_symmetry.py プロジェクト: QChASM/AaronTools.py
    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")
コード例 #7
0
ファイル: test_symmetry.py プロジェクト: QChASM/AaronTools.py
    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")
コード例 #8
0
ファイル: test_symmetry.py プロジェクト: QChASM/AaronTools.py
    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")
コード例 #9
0
ファイル: pointGroup.py プロジェクト: QChASM/AaronTools.py
        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"
コード例 #10
0
ファイル: point_group.py プロジェクト: QChASM/SEQCROW
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)