Пример #1
0
 def testSymmetryNumber(self):
     """Overall symmetry number"""
     test_set = [('CC', 18), # ethane
                 ('C=C=[C]C(C)(C)[C]=C=C', 'Who knows?'),
                 ('C(=CC(c1ccccc1)C([CH]CCCCCC)C=Cc1ccccc1)[CH]CCCCCC', 1),
                 ('[OH]', 1),#hydroxyl radical
                 ('O=O', 2),#molecular oxygen
                 ('[C]#[C]', 2),#C2
                 ('[H][H]', 2),#H2
                 ('C#C', 2),#acetylene
                 ('C#CC#C', 2),#1,3-butadiyne
                 ('C', 12),#methane
                 ('C=O', 2),#formaldehyde
                 ('[CH3]', 6),#methyl radical
                 ('O', 2),#water
                 ('C=C',4),#ethylene
                 ('C1=C=C=1', '6?')#cyclic, cumulenic C3 species
                 ]
     fail_message = ''
     for smile,should_be in test_set:
         molecule = Molecule().fromSMILES(smile)
         molecule.makeHydrogensExplicit()
         symmetryNumber = molecule.calculateSymmetryNumber()
         if symmetryNumber!=should_be:
             fail_message+="Got total symmetry number of %s for %s (expected %s)\n"%(symmetryNumber,smile,should_be)
     self.assertEqual(fail_message,'',fail_message)