예제 #1
0
    def test_SmilesOutput(self):
        smis = ['C1CCC1', 'C1CC1', 'C=O', 'CCN']
        mols = [Chem.MolFromSmiles(x) for x in smis]
        for i, mol in enumerate(mols, 100):
            mol.SetProp('ID', str(i))

        suppl1 = SupplyNode(contents=mols)
        suppl2 = SupplyNode(contents='abcd')

        sio = StringIO()
        node = SmilesOutput.OutputNode(idField='ID', dest=sio, delim=', ')
        node.AddParent(suppl1)
        node.AddParent(suppl2)
        list(node)
        self.assertEqual(
            sio.getvalue(), '100, C1CCC1, a\n101, C1CC1, b\n102, C=O, c\n103, CCN, d\n')
예제 #2
0
    def test_SmartsMolFilter(self):
        smis = ['C1CCC1', 'C1CCC1C=O', 'CCCC', 'CCC=O', 'CC(=O)C', 'CCN', 'NCCN', 'NCC=O']
        mols = [Chem.MolFromSmiles(x) for x in smis]
        suppl = SupplyNode(contents=mols)
        self.assertEqual(len(list(suppl)), 8)

        smas = ['C=O', 'CN']
        counts = [1, 2]
        filt = SmartsMolFilter.SmartsFilter(patterns=smas, counts=counts)
        filt.AddParent(suppl)
        self.assertEqual(len(list(filt)), 5)

        suppl.reset()
        filt.SetNegate(True)
        self.assertEqual(len(list(filt)), 3)

        smas = ['C=O', 'CN']
        filt = SmartsMolFilter.SmartsFilter(patterns=smas)
        filt.AddParent(suppl)
        self.assertEqual(len(list(filt)), 6)

        self.assertRaises(ValueError, SmartsMolFilter.SmartsFilter, patterns=smas,
                          counts=['notEnough', ])
        RDLogger.DisableLog('rdApp.error')
        self.assertRaises(ValueError, SmartsMolFilter.SmartsFilter, patterns=['BadSmarts'])
        RDLogger.EnableLog('rdApp.error')
예제 #3
0
    def test_SmilesDupeFilter(self):
        smis = ['C1CCC1', 'CCCC', 'CCCC', 'C1CCC1']
        mols = [Chem.MolFromSmiles(x) for x in smis]
        suppl = SupplyNode(contents=mols)
        self.assertEqual(len(list(suppl)), 4)

        dupFilter = SmilesDupeFilter.DupeFilter()
        dupFilter.AddParent(suppl)
        self.assertEqual(len(list(dupFilter)), 2)