1
2
3
4
5
6 from rdkit import RDConfig
7 from rdkit import six
8 import sys,os
9 from rdkit import Chem
10 from rdkit.VLib.Filter import FilterNode
11
13 """ canonical-smiles based duplicate filter
14
15 Assumptions:
16
17 - inputs are molecules
18
19
20 Sample Usage:
21 >>> from rdkit.VLib.NodeLib.SDSupply import SDSupplyNode
22 >>> fileN = os.path.join(RDConfig.RDCodeDir,'VLib','NodeLib',\
23 'test_data','NCI_aids.10.sdf')
24 >>> suppl = SDSupplyNode(fileN)
25 >>> filt = DupeFilter()
26 >>> filt.AddParent(suppl)
27 >>> ms = [x for x in filt]
28 >>> len(ms)
29 10
30 >>> ms[0].GetProp("_Name")
31 '48'
32 >>> ms[1].GetProp("_Name")
33 '78'
34 >>> filt.reset()
35 >>> filt.next().GetProp("_Name")
36 '48'
37
38
39 """
43
47
49 smi = Chem.MolToSmiles(cmpd)
50 if smi not in self._smisSeen:
51 self._smisSeen.append(smi)
52 return 1
53 else:
54 return 0
55
56
57
58
59
61 import doctest,sys
62 return doctest.testmod(sys.modules["__main__"])
63
64 if __name__ == '__main__':
65 import sys
66 failed,tried = _test()
67 sys.exit(failed)
68