1
2
3
4
5
6
7
8
9
10
11 from rdkit import Chem
12 import sys
13 from rdkit.Chem import Randomize
14
33
34
35 -def TestSupplier(suppl,stopAfter=-1,reportInterval=100,reportTo=sys.stderr,
36 nameProp='_Name'):
37 nDone = 0
38 nFailed = 0
39 while 1:
40 try:
41 mol = suppl.next()
42 except StopIteration:
43 break
44 except:
45 import traceback
46 traceback.print_exc()
47 nFailed += 1
48 reportTo.flush()
49 print >>reportTo,'Failure at mol %d'%nDone
50 else:
51 if mol:
52 ok = TestMolecule(mol)
53 else:
54 ok = -3
55 if ok<0:
56 nFailed += 1
57 reportTo.flush()
58 if ok==-3:
59 print >>reportTo,'Canonicalization',
60 print >>reportTo,'Failure at mol %d'%nDone,
61 if mol:
62 print >>reportTo,mol.GetProp(nameProp),
63 print >>reportTo,''
64
65
66 nDone += 1
67 if nDone==stopAfter:
68 break
69 if not nDone%reportInterval:
70 print 'Done %d molecules, %d failures'%(nDone,nFailed)
71 return nDone,nFailed
72 if __name__=='__main__':
73 suppl = Chem.SDMolSupplier(sys.argv[1],False)
74 if len(sys.argv)>2:
75 nameProp = sys.argv[2]
76 else:
77 nameProp = '_Name'
78
79 nDone,nFailed = TestSupplier(suppl,nameProp=nameProp)
80 print '%d failures in %d mols'%(nFailed,nDone)
81