From 2d43d9e26a8dc398864d7e0a3e04d6a8d40b3a05 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauld.mccarthy@gmail.com> Date: Wed, 28 Oct 2015 12:03:58 +0000 Subject: [PATCH] TimeSeriesListPanel updated to work with refactored TimeSeriesPanel. Some work to go. --- fsl/fsleyes/controls/timeserieslistpanel.py | 80 ++++++++++++--------- fsl/fsleyes/plotting/__init__.py | 18 +++++ 2 files changed, 66 insertions(+), 32 deletions(-) diff --git a/fsl/fsleyes/controls/timeserieslistpanel.py b/fsl/fsleyes/controls/timeserieslistpanel.py index 234a3eb0a..86f406b41 100644 --- a/fsl/fsleyes/controls/timeserieslistpanel.py +++ b/fsl/fsleyes/controls/timeserieslistpanel.py @@ -10,17 +10,15 @@ """ -import copy - import wx import numpy as np -import props -import pwidgets.elistbox as elistbox -import fsl.fsleyes.panel as fslpanel -import fsl.fsleyes.tooltips as fsltooltips -import fsl.data.strings as strings -import fsl.fsleyes.colourmaps as fslcm +import props +import pwidgets.elistbox as elistbox +import fsl.fsleyes.panel as fslpanel +import fsl.fsleyes.tooltips as fsltooltips +import fsl.fsleyes.plotting as plotting +import fsl.data.strings as strings class TimeSeriesListPanel(fslpanel.FSLEyesPanel): @@ -152,37 +150,48 @@ class TimeSeriesListPanel(fslpanel.FSLEyesPanel): :class:`.TimeSeriesPanel` (see the :class:`.TimeSeriesPanel` class documentation). """ + + overlay = self._displayCtx.getSelectedOverlay() - import fsl.fsleyes.views.timeseriespanel as tsp + if overlay is None: + return - ts = self.__tsPanel.getCurrent() + ts = self.__tsPanel.getTimeSeries(overlay) if ts is None: return - ts = copy.copy(ts) + if isinstance(ts, plotting.FEATTimeSeries): + toAdd = list(ts.getModelTimeSeries()) + else: + toAdd = [ts] - ts.alpha = 1 - ts.lineWidth = 2 - ts.lineStyle = '-' - ts.colour = fslcm.randomColour() - ts.label = self.__makeLabel(ts) + copies = [] - self.__tsPanel.dataSeries.append(ts) + for ts in toAdd: - if isinstance(ts, tsp.FEATTimeSeries): - - modelTs = ts.getModelTimeSeries() - modelTs.remove(ts) + copy = plotting.DataSeries(ts.overlay) - for mts in modelTs: + copy.alpha = ts.alpha + copy.lineWidth = ts.lineWidth + copy.lineStyle = ts.lineStyle + copy.colour = ts.colour + copy.label = ts.label - mts.alpha = 1 - mts.lineWidth = 2 - mts.lineStyle = '-' - mts.label = mts.makeLabel() + copy.setData(*ts.getData()) - self.__tsPanel.dataSeries.extend(modelTs) + # This is hacky, and is here in order to + # make the __onLIstSelect method work. + if isinstance(ts, plotting.MelodicTimeSeries): + copy.tsLoc = 'volume' + copy.coord = ts.getComponent() + else: + copy.tsLoc = 'location' + copy.coord = ts.getVoxel() + + copies.append(copy) + + self.__tsPanel.dataSeries.extend(copies) def __onListEdit(self, ev): @@ -201,14 +210,21 @@ class TimeSeriesListPanel(fslpanel.FSLEyesPanel): the corresponding :class:`.TimeSeries` instance. """ - overlay = ev.data.overlay - coords = ev.data.coords + ts = ev.data + overlay = ts.overlay opts = self._displayCtx.getOpts(overlay) - vox = np.array(coords) - disp = opts.transformCoords([vox], 'voxel', 'display')[0] + + # See hacky things in __onListAdd + if ts.tsLoc == 'volume': + opts.volume = ts.coord + + elif ts.tsLoc == 'location': + voxLoc = np.array(ts.coord) + disLoc = opts.transformCoords([voxLoc], 'voxel', 'display')[0] + + self._displayCtx.location = disLoc self._displayCtx.selectedOverlay = self._overlayList.index(overlay) - self._displayCtx.location = disp def __onListRemove(self, ev): diff --git a/fsl/fsleyes/plotting/__init__.py b/fsl/fsleyes/plotting/__init__.py index e69de29bb..202ec69c2 100644 --- a/fsl/fsleyes/plotting/__init__.py +++ b/fsl/fsleyes/plotting/__init__.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# +# __init__.py - +# +# Author: Paul McCarthy <pauldmccarthy@gmail.com> +# + +import dataseries +import timeseries + +DataSeries = dataseries.DataSeries +TimeSeries = timeseries.TimeSeries +FEATTimeSeries = timeseries.FEATTimeSeries +FEATPartialFitTimeSeries = timeseries.FEATPartialFitTimeSeries +FEATEVTimeSeries = timeseries.FEATEVTimeSeries +FEATResidualTimeSeries = timeseries.FEATResidualTimeSeries +FEATModelFitTimeSeries = timeseries.FEATModelFitTimeSeries +MelodicTimeSeries = timeseries.MelodicTimeSeries -- GitLab