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)