Added log transform, support for multi selections in navigator-scatter, removed get_project-nonsense
This commit is contained in:
parent
a94c3ed1cc
commit
6996aab2fa
|
@ -97,10 +97,10 @@ class NavigatorView (gtk.TreeView):
|
||||||
|
|
||||||
if objs and isinstance(objs[0], dataset.Dataset):
|
if objs and isinstance(objs[0], dataset.Dataset):
|
||||||
logger.debug('Selecting dataset')
|
logger.debug('Selecting dataset')
|
||||||
main.project.set_current_data(objs)
|
main.project.current_data = objs
|
||||||
else:
|
else:
|
||||||
logger.debug('Deselecting dataset')
|
logger.debug('Deselecting dataset')
|
||||||
main.project.set_current_data([])
|
main.project.current_data = []
|
||||||
|
|
||||||
def on_row_changed(self, treestore, pos, iter):
|
def on_row_changed(self, treestore, pos, iter):
|
||||||
"""Set correct focus and colours when rows have changed."""
|
"""Set correct focus and colours when rows have changed."""
|
||||||
|
@ -217,6 +217,11 @@ class NavigatorMenu(gtk.Menu):
|
||||||
self.trans_menu.append(self.trans_stdc_item)
|
self.trans_menu.append(self.trans_stdc_item)
|
||||||
self.trans_stdc_item.show()
|
self.trans_stdc_item.show()
|
||||||
|
|
||||||
|
self.trans_log_item = gtk.MenuItem('Log')
|
||||||
|
self.trans_log_item.connect('activate', self.on_log, navigator)
|
||||||
|
self.trans_menu.append(self.trans_log_item)
|
||||||
|
self.trans_log_item.show()
|
||||||
|
|
||||||
self.trans_item = gtk.MenuItem("Transformation")
|
self.trans_item = gtk.MenuItem("Transformation")
|
||||||
self.append(self.trans_item)
|
self.append(self.trans_item)
|
||||||
self.trans_item.set_submenu(self.trans_menu)
|
self.trans_item.set_submenu(self.trans_menu)
|
||||||
|
@ -339,14 +344,26 @@ class NavigatorMenu(gtk.Menu):
|
||||||
|
|
||||||
def on_plot_scatter(self, item, navigator):
|
def on_plot_scatter(self, item, navigator):
|
||||||
project = main.project
|
project = main.project
|
||||||
ds = self.dataset
|
datasets = main.project.current_data
|
||||||
dims = ds.get_dim_name()
|
ds_major = datasets[0]
|
||||||
ids = ds.get_identifiers(dims[1])
|
dims_major = ds_major.get_dim_name()
|
||||||
plot = plots.ScatterPlot(ds, ds,
|
ids_major = ds_major.get_identifiers(dims_major[1])
|
||||||
dims[0], dims[1],
|
if len(datasets)>1:
|
||||||
ids[0], ids[1],
|
# If there is more than one active dataset -> try to use the two first
|
||||||
name='Scatter (%s)' % ds.get_name())
|
ds_minor = datasets[1]
|
||||||
plot.add_axes_spin_buttons(len(ids), 0, 1)
|
dims_minor = ds_minor.get_dim_name()
|
||||||
|
if dims_minor != dims_major or ds_minor.shape[0] != ds_major.shape[0]:
|
||||||
|
# the selected datasets are not matched -> use initial selected
|
||||||
|
ds_minor = ds_major
|
||||||
|
else:
|
||||||
|
#Only one dataset selected
|
||||||
|
ds_minor = ds_major
|
||||||
|
|
||||||
|
plot = plots.ScatterPlot(ds_major, ds_minor,
|
||||||
|
dims_major[0], dims_major[1],
|
||||||
|
ids_major[0], ids_major[1],
|
||||||
|
name='Scatter (%s)' % ds_major.get_name())
|
||||||
|
plot.add_axes_spin_buttons(len(ids_major), 0, 1)
|
||||||
icon = fluents.icon_factory.get("line_plot")
|
icon = fluents.icon_factory.get("line_plot")
|
||||||
project.data_tree_insert(self.tree_iter, 'Scatter', plot, None, "black", icon)
|
project.data_tree_insert(self.tree_iter, 'Scatter', plot, None, "black", icon)
|
||||||
plot.set_selection_listener(project.set_selection)
|
plot.set_selection_listener(project.set_selection)
|
||||||
|
@ -372,16 +389,32 @@ class NavigatorMenu(gtk.Menu):
|
||||||
def on_standardise_rows(self, item, navigator):
|
def on_standardise_rows(self, item, navigator):
|
||||||
project = main.project
|
project = main.project
|
||||||
ds = self.dataset.copy()
|
ds = self.dataset.copy()
|
||||||
|
ds._name = self.dataset._name + ".rsc"
|
||||||
axis = 1
|
axis = 1
|
||||||
ds._array = ds._array/scipy.expand_dims(ds._array.std(axis), axis)
|
ds._array = ds._array/scipy.expand_dims(ds._array.std(axis), axis)
|
||||||
icon = fluents.icon_factory.get("dataset")
|
icon = fluents.icon_factory.get("dataset")
|
||||||
project.data_tree_insert(self.tree_iter, self.dataset.get_name()+".rsc", ds, None, "black", icon)
|
project.data_tree_insert(self.tree_iter, ds._name, ds, None, "black", icon)
|
||||||
|
|
||||||
def on_standardise_cols(self, item, navigator):
|
def on_standardise_cols(self, item, navigator):
|
||||||
project = main.project
|
project = main.project
|
||||||
ds = self.dataset.copy()
|
ds = self.dataset.copy()
|
||||||
|
ds._name = self.dataset._name + ".csc"
|
||||||
axis = 0
|
axis = 0
|
||||||
ds._array = ds._array/scipy.expand_dims(ds._array.std(axis), axis)
|
ds._array = ds._array/scipy.expand_dims(ds._array.std(axis), axis)
|
||||||
icon = fluents.icon_factory.get("dataset")
|
icon = fluents.icon_factory.get("dataset")
|
||||||
project.data_tree_insert(self.tree_iter, self.dataset.get_name()+".csc", ds, None, "black", icon)
|
project.data_tree_insert(self.tree_iter, ds._name, ds, None, "black", icon)
|
||||||
|
|
||||||
|
def on_log(self, item, navigator):
|
||||||
|
project = main.project
|
||||||
|
try:
|
||||||
|
if not scipy.all(self.dataset._array>0):
|
||||||
|
raise ValueError
|
||||||
|
except:
|
||||||
|
logger.log('warning', 'Datasets needs to be strictly positive for a log transform')
|
||||||
|
return
|
||||||
|
|
||||||
|
ds = self.dataset.copy()
|
||||||
|
ds._array = scipy.log(ds._array)
|
||||||
|
icon = fluents.icon_factory.get("dataset")
|
||||||
|
ds._name = self.dataset.get_name()+".log"
|
||||||
|
project.data_tree_insert(self.tree_iter, ds._name, ds, None, "black", icon)
|
||||||
|
|
Reference in New Issue