Ejemplo n.º 1
0
    def testAddImplicitBenzene(self):
        """
        Test the Group.addImplicitBenzene method
        """

        #tests it can make a benzene molecule
        adjlist1 = """
1  *1 Cb u0 {2,B}
2  *2 Cb u0 {1,B}
            """
        #tests it can make a bi-phenyl
        adjlist2 = """
1  *1 Cb u0 {2,S}
2  *2 Cb u0 {1,S}
            """
        #tests it can make a napthalene
        adjlist3 = """
1  *1 Cbf u0
            """

        #Test handling of Cbf2 atoms
        adjlist4 = """
1  *1 Cbf u0 p2 c0 {2,B}
2  *2 Cbf u0 p0 c0 {1,B} {3,B}
3  *3 Cbf u0 p0 c0 {2,B}
    """

        #test handling of heteroatoms and wildcards
        adjlist5 = """
1 *1 Cbf u0 {2,B} {3,B} {4,B}
2    R!H u0 {1,B}
3    R!H u0 {1,B}
4    R!H u0 {1,B}
    """
        adjlist6 = """
1  *1 Cbf u0 p2 c0 {2,B}
2  *2 Cb u0 p0 c0 {1,B} {3,B}
3  *3 Cb u0 p0 c0 {2,B} {4,S}
4  *4 O u0 p0 c0 {3,S}
    """

        adjlist7 = """
1 *1 Cb u0 {4,B}
2 *2 Cb u0 {3,B}
3 *3 Cb u0 {4,B} {2,B}
4 *4 Cb u0 {1,B} {3,B}
"""

        benzene = """
1 C u0 {2,B} {6,B}
2 C u0 {1,B} {3,B}
3 C u0 {2,B} {4,B}
4 C u0 {3,B} {5,B}
5 C u0 {4,B} {6,B}
6 C u0 {5,B} {1,B}
        """

        biphenyl = """
1  C u0 {2,B} {6,B} {7,S}
2  C u0 {1,B} {3,B}
3  C u0 {2,B} {4,B}
4  C u0 {3,B} {5,B}
5  C u0 {4,B} {6,B}
6  C u0 {5,B} {1,B}
7  C u0 {8,B} {12,B} {1,S}
8  C u0 {7,B} {9,B}
9  C u0 {8,B} {10,B}
10 C u0 {9,B} {11,B}
11 C u0 {10,B} {12,B}
12  C u0 {11,B} {7,B}
        """

        naphthalene = """
1  C u0 {2,B} {10,B}
2  C u0 {1,B} {3,B}
3  C u0 {2,B} {4,B}
4  C u0 {3,B} {5,B} {9,B}
5  C u0 {4,B} {6,B}
6  C u0 {5,B} {7,B}
7  C u0 {6,B} {8,B}
8  C u0 {7,B} {9,B}
9  C u0 {4,B} {8,B} {10,B}
10 C u0 {1,B} {9,B}
        """

        phenanthrene = """
1  Cbf u0 p2 c0 {2,B} {7,B} {11,B}
2  Cbf u0 p0 c0 {1,B} {3,B} {5,B}
3  Cbf u0 p0 c0 {2,B} {4,B} {6,B}
4  C   u0 {3,B} {8,B} {14,B}
5  C   u0 {2,B} {9,B}
6  C   u0 {3,B} {12,B}
7  C   u0 {1,B} {8,B}
8  C   u0 {4,B} {7,B}
9  C   u0 {5,B} {10,B}
10 C   u0 {9,B} {11,B}
11 C   u0 {1,B} {10,B}
12 C   u0 {6,B} {13,B}
13 C   u0 {12,B} {14,B}
14 C   u0 {4,B} {13,B}
    """

        answer5 = """
1  *1 Cbf u0 {2,B} {3,B} {4,B}
2     R!H u0 {1,B} {5,B}
3     R!H u0 {1,B} {7,B} {10,B}
4     R!H u0 {1,B} {8,B}
5     Cb  u0 {2,B} {6,B}
6     Cb  u0 {5,B} {7,B}
7     Cb  u0 {3,B} {6,B}
8     Cb  u0 {4,B} {9,B}
9     Cb  u0 {8,B} {10,B}
10    Cb  u0 {3,B} {9,B}
"""
        answer6 = """
1  *1 Cbf u0 p2 c0 {2,B} {5,B} {8,B}
2  *2 Cb  u0 p0 c0 {1,B} {3,B} {11,B}
3  *3 Cb  u0 p0 c0 {2,B} {4,S} {7,B}
4  *4 O   u0 p0 c0 {3,S}
5     Cb  u0 {1,B} {6,B}
6     Cb  u0 {5,B} {7,B}
7     Cb  u0 {3,B} {6,B}
8     Cb  u0 {1,B} {9,B}
9     Cb  u0 {8,B} {10,B}
10    Cb  u0 {9,B} {11,B}
11    Cb  u0 {2,B} {10,B}
"""

        group1 = Group().fromAdjacencyList(adjlist1)
        group2 = Group().fromAdjacencyList(adjlist2)
        group3 = Group().fromAdjacencyList(adjlist3)
        group4 = Group().fromAdjacencyList(adjlist4)
        group5 = Group().fromAdjacencyList(adjlist5)
        group6 = Group().fromAdjacencyList(adjlist6)
        group7 = Group().fromAdjacencyList(adjlist7)

        benzeneGroup = Group().fromAdjacencyList(benzene)
        biphenylGroup = Group().fromAdjacencyList(biphenyl)
        naphthaleneGroup = Group().fromAdjacencyList(naphthalene)
        phenanthreneGroup = Group().fromAdjacencyList(phenanthrene)
        answer5 = Group().fromAdjacencyList(answer5)
        answer6 = Group().fromAdjacencyList(answer6)

        group1 = group1.addImplicitBenzene()
        self.assertTrue(benzeneGroup.isIsomorphic(group1))
        group2 = group2.addImplicitBenzene()
        self.assertTrue(biphenylGroup.isIsomorphic(group2))
        group3 = group3.addImplicitBenzene()
        self.assertTrue(naphthaleneGroup.isIsomorphic(group3))
        group4 = group4.addImplicitBenzene()
        self.assertTrue(phenanthreneGroup.isIsomorphic(group4))
        group5 = group5.addImplicitBenzene()
        self.assertTrue(answer5.isIsomorphic(group5))
        group6 = group6.addImplicitBenzene()
        self.assertTrue(answer6.isIsomorphic(group6))
        group7 = group7.addImplicitBenzene()
        self.assertTrue(benzeneGroup.isIsomorphic(group7))
Ejemplo n.º 2
0
    def testAddImplicitBenzene(self):
        """
        Test the Group.addImplicitBenzene method
        """

        #tests it can make a benzene molecule
        adjlist1 = """
1  *1 Cb u0 {2,B}
2  *2 Cb u0 {1,B}
            """
        #tests it can make a bi-phenyl
        adjlist2 = """
1  *1 Cb u0 {2,S}
2  *2 Cb u0 {1,S}
            """
        #tests it can make a napthalene
        adjlist3 = """
1  *1 Cbf u0
            """

        #Test handling of Cbf2 atoms
        adjlist4 = """
1  *1 Cbf u0 p2 c0 {2,B}
2  *2 Cbf u0 p0 c0 {1,B} {3,B}
3  *3 Cbf u0 p0 c0 {2,B}
    """

        #test handling of heteroatoms and wildcards
        adjlist5 = """
1 *1 Cbf u0 {2,B} {3,B} {4,B}
2    R!H u0 {1,B}
3    R!H u0 {1,B}
4    R!H u0 {1,B}
    """
        adjlist6 = """
1  *1 Cbf u0 p2 c0 {2,B}
2  *2 Cb u0 p0 c0 {1,B} {3,B}
3  *3 Cb u0 p0 c0 {2,B} {4,S}
4  *4 O u0 p0 c0 {3,S}
    """

        adjlist7="""
1 *1 Cb u0 {4,B}
2 *2 Cb u0 {3,B}
3 *3 Cb u0 {4,B} {2,B}
4 *4 Cb u0 {1,B} {3,B}
"""

        benzene ="""
1 C u0 {2,B} {6,B}
2 C u0 {1,B} {3,B}
3 C u0 {2,B} {4,B}
4 C u0 {3,B} {5,B}
5 C u0 {4,B} {6,B}
6 C u0 {5,B} {1,B}
        """

        biphenyl ="""
1  C u0 {2,B} {6,B} {7,S}
2  C u0 {1,B} {3,B}
3  C u0 {2,B} {4,B}
4  C u0 {3,B} {5,B}
5  C u0 {4,B} {6,B}
6  C u0 {5,B} {1,B}
7  C u0 {8,B} {12,B} {1,S}
8  C u0 {7,B} {9,B}
9  C u0 {8,B} {10,B}
10 C u0 {9,B} {11,B}
11 C u0 {10,B} {12,B}
12  C u0 {11,B} {7,B}
        """

        naphthalene ="""
1  C u0 {2,B} {10,B}
2  C u0 {1,B} {3,B}
3  C u0 {2,B} {4,B}
4  C u0 {3,B} {5,B} {9,B}
5  C u0 {4,B} {6,B}
6  C u0 {5,B} {7,B}
7  C u0 {6,B} {8,B}
8  C u0 {7,B} {9,B}
9  C u0 {4,B} {8,B} {10,B}
10 C u0 {1,B} {9,B}
        """

        phenanthrene = """
1  Cbf u0 p2 c0 {2,B} {7,B} {11,B}
2  Cbf u0 p0 c0 {1,B} {3,B} {5,B}
3  Cbf u0 p0 c0 {2,B} {4,B} {6,B}
4  C   u0 {3,B} {8,B} {14,B}
5  C   u0 {2,B} {9,B}
6  C   u0 {3,B} {12,B}
7  C   u0 {1,B} {8,B}
8  C   u0 {4,B} {7,B}
9  C   u0 {5,B} {10,B}
10 C   u0 {9,B} {11,B}
11 C   u0 {1,B} {10,B}
12 C   u0 {6,B} {13,B}
13 C   u0 {12,B} {14,B}
14 C   u0 {4,B} {13,B}
    """

        answer5 = """
1  *1 Cbf u0 {2,B} {3,B} {4,B}
2     R!H u0 {1,B} {5,B}
3     R!H u0 {1,B} {7,B} {10,B}
4     R!H u0 {1,B} {8,B}
5     Cb  u0 {2,B} {6,B}
6     Cb  u0 {5,B} {7,B}
7     Cb  u0 {3,B} {6,B}
8     Cb  u0 {4,B} {9,B}
9     Cb  u0 {8,B} {10,B}
10    Cb  u0 {3,B} {9,B}
"""
        answer6="""
1  *1 Cbf u0 p2 c0 {2,B} {5,B} {8,B}
2  *2 Cb  u0 p0 c0 {1,B} {3,B} {11,B}
3  *3 Cb  u0 p0 c0 {2,B} {4,S} {7,B}
4  *4 O   u0 p0 c0 {3,S}
5     Cb  u0 {1,B} {6,B}
6     Cb  u0 {5,B} {7,B}
7     Cb  u0 {3,B} {6,B}
8     Cb  u0 {1,B} {9,B}
9     Cb  u0 {8,B} {10,B}
10    Cb  u0 {9,B} {11,B}
11    Cb  u0 {2,B} {10,B}
"""

        group1 = Group().fromAdjacencyList(adjlist1)
        group2 = Group().fromAdjacencyList(adjlist2)
        group3 = Group().fromAdjacencyList(adjlist3)
        group4 = Group().fromAdjacencyList(adjlist4)
        group5 = Group().fromAdjacencyList(adjlist5)
        group6 = Group().fromAdjacencyList(adjlist6)
        group7 = Group().fromAdjacencyList(adjlist7)

        benzeneGroup = Group().fromAdjacencyList(benzene)
        biphenylGroup = Group().fromAdjacencyList(biphenyl)
        naphthaleneGroup = Group().fromAdjacencyList(naphthalene)
        phenanthreneGroup = Group().fromAdjacencyList(phenanthrene)
        answer5 = Group().fromAdjacencyList(answer5)
        answer6 = Group().fromAdjacencyList(answer6)

        group1 = group1.addImplicitBenzene()
        self.assertTrue(benzeneGroup.isIsomorphic(group1))
        group2 = group2.addImplicitBenzene()
        self.assertTrue(biphenylGroup.isIsomorphic(group2))
        group3 = group3.addImplicitBenzene()
        self.assertTrue(naphthaleneGroup.isIsomorphic(group3))
        group4 = group4.addImplicitBenzene()
        self.assertTrue(phenanthreneGroup.isIsomorphic(group4))
        group5 = group5.addImplicitBenzene()
        self.assertTrue(answer5.isIsomorphic(group5))
        group6 = group6.addImplicitBenzene()
        self.assertTrue(answer6.isIsomorphic(group6))
        group7 = group7.addImplicitBenzene()
        self.assertTrue(benzeneGroup.isIsomorphic(group7))