Пример #1
0
    def testAxisSymmetryNumber(self):
        """Axis symmetry number"""
        test_set = [('C=C=C', 2), # ethane
                    ('C=C=C=C', 2),
                    ('C=C=C=[CH]', 2), # =C-H is straight
                    ('C=C=[C]', 2),
                    ('CC=C=[C]', 1),
                    ('C=C=CC(CC)', 1),
                    ('CC(C)=C=C(CC)CC', 2),
                    ('C=C=C(C(C(C(C=C=C)=C=C)=C=C)=C=C)', 2),
                    ('C=C=[C]C(C)(C)[C]=C=C', 1),
                    ('C=C=C=O', 2),
                    ('CC=C=C=O', 1),
                    ('C=C=C=N', 1), # =N-H is bent
                    ('C=C=C=[N]', 2)
                    ]
        # http://cactus.nci.nih.gov/chemical/structure/C=C=C(C(C(C(C=C=C)=C=C)=C=C)=C=C)/image
        fail_message = ''

        for smile,should_be in test_set:
            molecule = Molecule().fromSMILES(smile)
            molecule.makeHydrogensExplicit()
            symmetryNumber = molecule.calculateAxisSymmetryNumber()
            if symmetryNumber!=should_be:
                fail_message+="Got axis symmetry number of %s for %s (expected %s)\n"%(symmetryNumber,smile,should_be)
        self.assertEqual(fail_message,'',fail_message)