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