Fixed selection in DAG-plot to work both with and without IC set.

This commit is contained in:
Einar Ryeng 2007-08-02 11:20:30 +00:00
parent b334e94b15
commit 94f4b276b9

View File

@ -633,17 +633,17 @@ class DagPlot(plots.Plot):
def _add_ic_spin_buttons(self):
"""Adds spin buttons to the toolbar for selecting minimum and maximum
threshold values on information content."""
sb_min = gtk.SpinButton()
sb_min = gtk.SpinButton(digits=2)
sb_min.set_range(0, 100)
sb_min.set_value(1)
sb_min.set_increments(1, 3)
sb_min.set_value(0)
sb_min.set_increments(.1, 1.)
sb_min.connect('value-changed', self._on_ic_value_changed)
self._ic_sb_min = sb_min
sb_max = gtk.SpinButton()
sb_max = gtk.SpinButton(digits=2)
sb_max.set_range(0, 100)
sb_max.set_value(1)
sb_max.set_increments(1, 3)
sb_max.set_increments(.1, 1.)
sb_max.connect('value-changed', self._on_ic_value_changed)
self._ic_sb_max = sb_max
@ -694,7 +694,7 @@ class DagPlot(plots.Plot):
icnodes = ic.existing_identifiers('go-terms', self.nodes)
icindices = ic.get_indices('go-terms', icnodes)
a = ravel(ic.asarray()[icindices])
ic_good = set(array(icnodes)[(a>ic_min) & (a<ic_max)])
ic_good = set(array(icnodes)[(a>=ic_min) & (a<=ic_max)])
sizes = zeros(len(self.nodes))
visible = set()
@ -728,7 +728,10 @@ class DagPlot(plots.Plot):
assert y1<=y2
index = nonzero((xdata>x1) & (xdata<x2) & (ydata>y1) & (ydata<y2))[0]
ids = self.visible.intersection([self.nodes[i] for i in index])
if getattr(main.workflow, 'current_ic', None) != None:
ids = self.visible.intersection([self.nodes[i] for i in index])
else:
ids = set([self.nodes[i] for i in index])
ids = self.update_selection(ids, key)
self.selection_listener(self.current_dim, ids)
@ -798,11 +801,15 @@ class DagPlot(plots.Plot):
map_vec = zeros(len(self.nodes))
for i, n in enumerate(self.nodes):
map_vec[i] = d.get(n, -1)
map_vec[i] = d.get(n, vec_min)
# update facecolors
self.node_collection.set_array(map_vec)
self.node_collection.set_clim(vec_min, vec_max)
self.node_collection.update_scalarmappable() #sets facecolors from array
self.canvas.draw()
self._ic_sb_min.set_range(0, vec_max)
self._ic_sb_min.set_value(vec_min)
self._ic_sb_max.set_range(0, vec_max)
self._ic_sb_max.set_value(vec_max)
self.canvas.draw()