From a945de4024f6a1347b15bf3b17f4f07486a6de04 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauld.mccarthy@gmail.com> Date: Wed, 15 Jul 2015 17:11:21 +0100 Subject: [PATCH] 1. Bugfix to TimeSeriesPanel - TimeSeries instances need to implement a __copy__ operator. 2. DisplayContext prints memory log messages. 3. Memory logging honours noisy-module list (it wasn't before). --- fsl/__init__.py | 5 +++-- fsl/fslview/displaycontext/displaycontext.py | 8 ++++++++ fsl/fslview/views/plotpanel.py | 4 ++++ fsl/fslview/views/timeseriespanel.py | 5 +++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/fsl/__init__.py b/fsl/__init__.py index 790be2942..1beef9641 100644 --- a/fsl/__init__.py +++ b/fsl/__init__.py @@ -263,8 +263,9 @@ def parseArgs(argv, allTools): if namespace.memory: class MemFilter(object): def filter(self, record): - if record.levelno == logging.MEMORY: return 1 - else: return 0 + if record.name in namespace.noisy: return 1 + elif record.levelno == logging.MEMORY: return 1 + else: return 0 log.setLevel(logging.MEMORY) log.handlers[0].addFilter(MemFilter()) diff --git a/fsl/fslview/displaycontext/displaycontext.py b/fsl/fslview/displaycontext/displaycontext.py index 0fab40e11..03e6aac7a 100644 --- a/fsl/fslview/displaycontext/displaycontext.py +++ b/fsl/fslview/displaycontext/displaycontext.py @@ -87,6 +87,14 @@ class DisplayContext(props.SyncableHasProperties): self.__name, self.__overlayListChanged) + + log.memory('{}.init ({})'.format(type(self).__name__, id(self))) + + + def __del__(self): + log.memory('{}.del ({})'.format(type(self).__name__, id(self))) + + def getDisplay(self, overlay, overlayType=None): """Returns the display property object (e.g. a :class:`.Display` diff --git a/fsl/fslview/views/plotpanel.py b/fsl/fslview/views/plotpanel.py index be4defaee..3aed21cde 100644 --- a/fsl/fslview/views/plotpanel.py +++ b/fsl/fslview/views/plotpanel.py @@ -48,6 +48,10 @@ class DataSeries(props.HasProperties): self.overlay = overlay + def __copy__(self): + return type(self)(self.overlay) + + def getData(self): raise NotImplementedError('The getData method must be ' 'implemented by subclasses') diff --git a/fsl/fslview/views/timeseriespanel.py b/fsl/fslview/views/timeseriespanel.py index 26c7d18d7..946b98a5f 100644 --- a/fsl/fslview/views/timeseriespanel.py +++ b/fsl/fslview/views/timeseriespanel.py @@ -41,6 +41,11 @@ class TimeSeries(plotpanel.DataSeries): self.coords = map(int, coords) self.data = overlay.data[coords[0], coords[1], coords[2], :] + + def __copy__(self): + + return type(self)(self.tsPanel, self.overlay, self.coords) + def update(self, coords): """This method is only intended for use on the 'current' time series, -- GitLab