Small updates.
This commit is contained in:
parent
ae3aa7e4aa
commit
58886726d8
@ -61,7 +61,29 @@ class GeneOntology(networkx.XDiGraph):
|
||||
"""Returns the root node of the molecular_function tree"""
|
||||
return self.by_id['GO:0003674']
|
||||
|
||||
def _subsumer(self, t1, t2, heap):
|
||||
while heap != []:
|
||||
t = heap[0]
|
||||
heap = heap[1:]
|
||||
|
||||
p1 = networkx.shortest_path(self, t, t1)
|
||||
p2 = networkx.shortest_path(self, t, t2)
|
||||
if p1 and p2:
|
||||
return t
|
||||
|
||||
heap += self.in_neighbors(t)
|
||||
return None
|
||||
|
||||
def subsumer(self, t1, t2):
|
||||
if t1 == t2:
|
||||
return t1
|
||||
if networkx.shortest_path(self, t1, t2):
|
||||
return t1
|
||||
elif networkx.shortest_path(self, t2, t1):
|
||||
return t2
|
||||
return self._subsumer(t1, t2, self.in_neighbors(t1))
|
||||
|
||||
def old_subsumer(self, t1, t2):
|
||||
if t1 == t2:
|
||||
return t1
|
||||
|
||||
@ -83,6 +105,8 @@ class GeneOntology(networkx.XDiGraph):
|
||||
return t
|
||||
|
||||
print "GeneOntology.subsumer: should not reach this point"
|
||||
print "path is now: %s" % path
|
||||
print "ids are: %s " % [x['id'] for x in path]
|
||||
|
||||
def _split_obo_line(line):
|
||||
"""Splits a line from an obo file in its three constituent parts.
|
||||
|
@ -277,8 +277,11 @@ class SelectGoTermsFunction(workflow.Function):
|
||||
workflow.Function.__init__(self, 'go-select', 'Select GO Terms')
|
||||
self.wf = wf
|
||||
|
||||
def run(self):
|
||||
self.wf.project.set_selection('go-terms', set(['GO:0007582', 'GO:0008150', 'GO:0051704', 'GO:0044419']))
|
||||
def run(self, ds):
|
||||
terms = [x['id'] for x in networkx.paths.bfs(go, go.get_bp())]
|
||||
|
||||
self.wf.project.set_selection('go-terms', set(terms[:100]))
|
||||
# self.wf.project.set_selection('go-terms', set(['GO:0007582', 'GO:0008150', 'GO:0051704', 'GO:0044419']))
|
||||
|
||||
|
||||
class GoDistanceFunction(workflow.Function):
|
||||
@ -296,8 +299,12 @@ class GoDistanceFunction(workflow.Function):
|
||||
term1 = go.by_id[t1]
|
||||
term2 = go.by_id[t2]
|
||||
subsumer = go.subsumer(term1, term2)
|
||||
print "%s - %s - %s" % (t1, subsumer['id'], t2)
|
||||
m[i, j] = ic[t1] + ic[t2] - 2.0 * ic[subsumer['id']]
|
||||
|
||||
if subsumer == None:
|
||||
m[i, j] = 1000
|
||||
else:
|
||||
# print "%s - %s - %s" % (t1, subsumer['id'], t2)
|
||||
m[i, j] = ic[t1] + ic[t2] - 2.0 * ic[subsumer['id']]
|
||||
ds = dataset.Dataset(m, (('go-terms', ids), ('_go-terms', ids)), 'Resnik')
|
||||
return ds
|
||||
|
||||
|
Reference in New Issue
Block a user