1
2
3
4
5
6
7 import Chem
8 from Numeric import *
9 from rdfragcatalog import *
10 import sys
11 import sets
12
15
16
22
24 inFile = open(fileName,'r')
25 nRead = 0
26 res = []
27 for line in inFile.xreadlines():
28 nRead += 1
29 splitL = [x.strip() for x in line.split(delim)]
30 if nRead != 1 and len(splitL):
31 bit = BitGainsInfo()
32 bit.id = int(splitL[0])
33 col = 1
34 if haveDescriptions:
35 bit.description = splitL[col]
36 col += 1
37 bit.gain = float(splitL[col])
38 col += 1
39 nPerClass = []
40 for entry in splitL[col:]:
41 nPerClass.append(int(entry))
42 bit.nPerClass = nPerClass
43 res.append(bit)
44 if len(res)==nToDo:
45 break
46 return res
47
49 adjs = {}
50 levels = {}
51 bitIds = [bit.id for bit in bits]
52 for bitId in bitIds:
53 entry = catalog.GetBitEntryId(bitId)
54 tmp = []
55 order = catalog.GetEntryOrder(entry)
56 s = levels.get(order,sets.Set())
57 s.add(bitId)
58 levels[order] = s
59 for down in catalog.GetEntryDownIds(entry):
60 id = catalog.GetEntryBitId(down)
61 if not limitInclusion or id in bitIds:
62 tmp.append(id)
63 order = catalog.GetEntryOrder(down)
64 s = levels.get(order,sets.Set())
65 s.add(id)
66 levels[order] = s
67 adjs[bitId] = tmp
68 if orderLevels:
69
70
71 for order in levels.keys():
72 ids = levels[order]
73 counts = [len(adjs[id]) for id in ids]
74 countOrder = argsort(counts)
75 l = [ids[x] for x in countOrder]
76 l.reverse()
77 levels[order] = l
78 return adjs,levels
79
81 res = []
82 if isinstance(bit,BitGainsInfo):
83 bitId = bit.id
84 else:
85 bitId = bit
86 for i,mol in enumerate(mols):
87 fp = fps[i]
88 if fp[bitId]:
89 res.append(mol)
90 return res
91
92 xl = None
118