def testBasics(self): self.assertTrue(self.m1 is not None) sgs = Chem.GetMolSubstanceGroups(self.m1) self.assertEqual(len(sgs), 2) self.assertTrue(sgs[0].HasProp("TYPE")) self.assertTrue(sgs[1].HasProp("TYPE")) self.assertEqual(sgs[0].GetProp("TYPE"), "DAT") self.assertEqual(sgs[1].GetProp("TYPE"), "DAT") self.assertTrue(sgs[0].HasProp("FIELDNAME")) self.assertEqual(sgs[0].GetProp("FIELDNAME"), "pH") self.assertEqual( sorted(sgs[0].GetPropNames()), ['DATAFIELDS', 'FIELDDISP', 'FIELDNAME', 'ID', 'TYPE', 'index']) dd = sgs[0].GetPropsAsDict() self.assertTrue("TYPE" in dd) self.assertEqual(dd["TYPE"], "DAT") self.assertTrue("FIELDNAME" in dd) self.assertEqual(dd["FIELDNAME"], "pH") sgs[0].ClearProp("FIELDNAME") self.assertFalse(sgs[0].HasProp("FIELDNAME")) # The property doesn't exist anymore, but this should not fail sgs[0].ClearProp("FIELDNAME") self.assertFalse(sgs[0].HasProp("FIELDNAME")) Chem.ClearMolSubstanceGroups(self.m1) self.assertEqual(len(Chem.GetMolSubstanceGroups(self.m1)), 0)
def testCopying(self): mol = Chem.MolFromMolBlock(''' Mrv2014 07312005252D 0 0 0 0 0 999 V3000 M V30 BEGIN CTAB M V30 COUNTS 7 6 3 0 0 M V30 BEGIN ATOM M V30 1 * -12.75 11.5 0 0 M V30 2 O -11.4163 12.27 0 0 M V30 3 C -10.0826 11.5 0 0 M V30 4 C -8.749 12.27 0 0 M V30 5 O -10.0826 9.96 0 0 M V30 6 N -7.4153 11.5 0 0 M V30 7 C -6.0816 12.27 0 0 M V30 END ATOM M V30 BEGIN BOND M V30 1 1 1 2 M V30 2 1 2 3 M V30 3 1 3 4 M V30 4 2 3 5 M V30 5 1 4 6 M V30 6 1 6 7 M V30 END BOND M V30 BEGIN SGROUP M V30 1 SRU 0 ATOMS=(3 2 3 5) XBONDS=(2 1 3) BRKXYZ=(9 -9.9955 12.6173 0 - M V30 -9.0715 11.0169 0 0 0 0) BRKXYZ=(9 -11.5035 11.1527 0 -12.4275 12.7531 - M V30 0 0 0 0) CONNECT=HT LABEL=n M V30 2 DAT 0 ATOMS=(1 6) FIELDNAME=foo_data - M V30 FIELDDISP=" -7.4153 11.5000 DAU ALL 0 0" - M V30 MRV_FIELDDISP=0 FIELDDATA=bar M V30 3 DAT 0 ATOMS=(1 7) FIELDNAME=bar_data - M V30 FIELDDISP=" -6.0816 12.2700 DAU ALL 0 0" - M V30 MRV_FIELDDISP=0 FIELDDATA=baz M V30 END SGROUP M V30 END CTAB M END''') self.assertEqual(len(Chem.GetMolSubstanceGroups(mol)), 3) mol2 = Chem.Mol(mol) Chem.ClearMolSubstanceGroups(mol2) self.assertEqual(len(Chem.GetMolSubstanceGroups(mol2)), 0) sgs = Chem.GetMolSubstanceGroups(mol) Chem.AddMolSubstanceGroup(mol2, sgs[0]) Chem.AddMolSubstanceGroup(mol2, sgs[2]) self.assertEqual(len(Chem.GetMolSubstanceGroups(mol2)), 2) molb = Chem.MolToV3KMolBlock(mol2) self.assertEqual(molb.find("foo_data"), -1) self.assertGreater( molb.find("M V30 2 DAT 0 ATOMS=(1 7) FIELDNAME=bar_data"), 0) # we can also use this to copy SGroups: sgs2 = Chem.GetMolSubstanceGroups(mol2) newsg = Chem.AddMolSubstanceGroup(mol2, sgs[1]) newsg.SetProp("FIELDNAME", "blah_data") molb = Chem.MolToV3KMolBlock(mol2) print(molb) self.assertGreater( molb.find("M V30 3 DAT 0 ATOMS=(1 6) FIELDNAME=blah_data"), 0)
def testBasics3000(self): self.assertTrue(self.m2 is not None) sgs = Chem.GetMolSubstanceGroups(self.m2) self.assertEqual(len(sgs), 2) self.assertTrue(sgs[0].HasProp("TYPE")) self.assertTrue(sgs[1].HasProp("TYPE")) self.assertEqual(sgs[0].GetProp("TYPE"), "DAT") self.assertEqual(sgs[1].GetProp("TYPE"), "DAT") self.assertTrue(sgs[0].HasProp("FIELDNAME")) self.assertEqual(sgs[0].GetProp("FIELDNAME"), "pH") self.assertEqual( sorted(sgs[0].GetPropNames()), ['DATAFIELDS', 'FIELDDISP', 'FIELDNAME', 'TYPE', 'index']) dd = sgs[0].GetPropsAsDict() self.assertTrue("TYPE" in dd) self.assertEqual(dd["TYPE"], "DAT") self.assertTrue("FIELDNAME" in dd) self.assertEqual(dd["FIELDNAME"], "pH") Chem.ClearMolSubstanceGroups(self.m2) self.assertEqual(len(Chem.GetMolSubstanceGroups(self.m2)), 0)
def remove_sgroups_from_mol(m): """ removes all Sgroups """ Chem.ClearMolSubstanceGroups(m) return m