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)