Workflow updates
This commit is contained in:
parent
1ad8b1a4f1
commit
b313cf29bc
|
@ -445,21 +445,23 @@ class SubgraphQuery(workflow.Function):
|
||||||
|
|
||||||
# 2.) Pairwise goodness in loading space
|
# 2.) Pairwise goodness in loading space
|
||||||
indices = self._pairsim(Dw)
|
indices = self._pairsim(Dw)
|
||||||
print indices
|
|
||||||
print indices.shape
|
|
||||||
|
|
||||||
idents1 = Dw.get_identifiers(self._dim, indices[:,0])
|
idents1 = Dw.get_identifiers(self._dim, indices[:,0])
|
||||||
idents2 = Dw.get_identifiers(self._dim, indices[:,1])
|
idents2 = Dw.get_identifiers(self._dim, indices[:,1])
|
||||||
idents = zip(idents1, idents2)
|
idents = zip(idents1, idents2)
|
||||||
|
|
||||||
# 3.) Identify close subgraphs
|
# 3.) Identify close subgraphs
|
||||||
|
G = DA.asnetworkx()
|
||||||
|
for edge in G.edges():
|
||||||
|
if edge not in idents:
|
||||||
|
G.delete_edge(edge)
|
||||||
|
S = nx.connected_component_subgraphs(G)
|
||||||
|
print map(len, S)
|
||||||
# 4.) Rank subgraphs
|
# 4.) Rank subgraphs
|
||||||
|
|
||||||
main.project.set_selection('gene_ids', idents1)
|
main.project.set_selection('gene_ids', idents1)
|
||||||
#main.project.set_sele
|
#main.project.set_sele
|
||||||
logger.log("notice", "Gene ids updated")
|
logger.log("notice", "Gene ids updated")
|
||||||
#plt = GraphQueryScatterPlot(SS, Dw)
|
plt = GraphQueryScatterPlot(S, Dw)
|
||||||
#return [plt]
|
#return [plt]
|
||||||
|
|
||||||
def _pairsim(self, Dw, ptype='cosine',cut_rat=.2):
|
def _pairsim(self, Dw, ptype='cosine',cut_rat=.2):
|
||||||
|
@ -505,38 +507,75 @@ class SubgraphQuery(workflow.Function):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class GraphQueryScatterPlot(plots.ScatterPlot):
|
class GraphQueryScatterPlot(plots.ScatterPlot):
|
||||||
def __init__(self, S, Dw, *args, **kw):
|
def __init__(self, subgraphs, Dw, *args, **kw):
|
||||||
self.S = S
|
self._subgraphs = subgraphs
|
||||||
self.Dw = Dw
|
self._nx_nodes = []
|
||||||
|
self._nx_edges = []
|
||||||
|
self._init_scatter(Dw)
|
||||||
|
self.overlay_subgraphs()
|
||||||
|
|
||||||
|
def _init_scatter(self, Dw):
|
||||||
|
self._Dw = Dw
|
||||||
id_dim, sel_dim = Dw.get_dim_name()
|
id_dim, sel_dim = Dw.get_dim_name()
|
||||||
self._dim = id_dim
|
self._dim = id_dim
|
||||||
id_1, = Dw.get_identifiers(sel_dim, [0])
|
id_1, = Dw.get_identifiers(sel_dim, [0])
|
||||||
id_2, = Dw.get_identifiers(sel_dim, [1])
|
id_2, = Dw.get_identifiers(sel_dim, [1])
|
||||||
print id_1
|
plots.ScatterPlot.__init__(self, Dw, Dw, id_dim, sel_dim, id_1, id_2, c='g', s=50,name="Hypo", alpha=.5)
|
||||||
print id_2
|
|
||||||
|
|
||||||
plots.ScatterPlot.__init__(self, Dw, Dw, id_dim, sel_dim, id_1, id_2, c='g', s=50,name="Kegg test", alpha=.5)
|
|
||||||
self.overlay_subgraphs()
|
|
||||||
|
|
||||||
def overlay_subgraphs(self):
|
def overlay_subgraphs(self):
|
||||||
for subgraph in self.S:
|
all_nodes = self._Dw.get_identifiers(self._dim, sorted=True)
|
||||||
|
for subgraph in self._subgraphs:
|
||||||
|
# get xy positions from
|
||||||
nodes = subgraph.nodes()
|
nodes = subgraph.nodes()
|
||||||
print self._dim
|
for i, node in enumerate(all_nodes):
|
||||||
|
pos[node] = (self.xaxis_data[i], self.yaxis_data[i])
|
||||||
sub_dw = self.Dw.subdata(self._dim, nodes)
|
nn = nx.draw_networkx_nodes(subgraph, pos, node_size=200, ax=self.axes, zorder=10)
|
||||||
nodes = sub_dw.get_identifiers(self._dim, sorted=True)
|
ee = nx.draw_networkx_edges(subgraph, pos, ax=self.axes, zorder=9)
|
||||||
xy = sub_dw.asarray()[:,:2]
|
self._nx_nodes.append(nn)
|
||||||
pos = {}
|
self._nx_edges.append(ee)
|
||||||
for i, node in enumerate(nodes):
|
|
||||||
pos[node] = xy[i]
|
def _delete_networks(self):
|
||||||
nx.draw_networkx_nodes(subgraph, pos, node_size=200, ax=self.axes, zorder=3)
|
if len(self._nx_nodes) > 0:
|
||||||
nx.draw_networkx_edges(subgraph, pos, ax=self.axes, zorder=3)
|
for n in self._nx_nodes:
|
||||||
|
self._nx_nodes.remove(n)
|
||||||
|
self.axes.collections.remove(n)
|
||||||
|
if len(self._nx_edges) > 0:
|
||||||
|
for e in self._nx_edges:
|
||||||
|
self._nx_edges.remove(e)
|
||||||
|
self.axes.collections.remove(e)
|
||||||
|
|
||||||
def on_update(self, selection, graph):
|
def set_ordinate(self, sb):
|
||||||
g = nx.subgraph(graph, selection)
|
self._delete_networks()
|
||||||
S = nx.connected_components_subgraphs(g)
|
self.overlay_subgraphs()
|
||||||
|
plots.ScatterPlot.set_ordinate(self, sb)
|
||||||
def _subgraph_score(self, subgraph):
|
|
||||||
|
def set_absicca(self, sb):
|
||||||
|
self._delete_networks()
|
||||||
|
self.overlay_subgraphs()
|
||||||
|
plots.ScatterPlot.set_absicca(self, sb)
|
||||||
|
|
||||||
|
|
||||||
|
class CAsinglesel(workflow.Function):
|
||||||
|
""" Modified non-symmetric correpsondence analysis.
|
||||||
|
|
||||||
|
Setup multiple selections:
|
||||||
|
|
||||||
|
Input : - a subset(s) along a dimension (selection) of `interesting` identifiers.
|
||||||
|
- Predefined subsets (categories) along the same dimension.
|
||||||
|
|
||||||
|
1.) The cooccurence matrix of interesting identifers and categories is made.
|
||||||
|
2.) The variables are scaled to represent the relative frequencies.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
def run(X, Ckegg):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CASingleSelDouble(workflow.Function):
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
|
||||||
|
def run(X, Ckegg):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
Reference in New Issue