diff --git a/fsl/fsleyes/plotting/powerspectrumseries.py b/fsl/fsleyes/plotting/powerspectrumseries.py index d01e3b77f37fe233fcb751e76d649aecf2382e13..8fcbe2fd08c96f9ac5e211c84dcb75dcae415cdb 100644 --- a/fsl/fsleyes/plotting/powerspectrumseries.py +++ b/fsl/fsleyes/plotting/powerspectrumseries.py @@ -27,6 +27,8 @@ import props import dataseries +import fsl.data.melodicimage as fslmelimage + log = logging.getLogger(__name__) @@ -93,6 +95,18 @@ class VoxelPowerSpectrumSeries(PowerSpectrumSeries): by the :attr:`.DisplayContext.location` property. """ + + def __init__(self, *args, **kwargs): + """Create a ``VoxelPowerSpectrumSeries``. All arguments are passed + to the :meth:`PowerSpectrumSeries.__init__` method. A :exc:`ValueError` + is raised if the overlay is not a 4D :class:`.Image`. + """ + + PowerSpectrumSeries.__init__(self, *args, **kwargs) + + if not self.overlay.is4DImage(): + raise ValueError('Overlay is not a 4D image') + def makeLabel(self): """Creates and returns a label for use with this @@ -144,6 +158,10 @@ class MelodicPowerSpectrumSeries(PowerSpectrumSeries): through to the :meth:`PowerSpectrumSeries.__init__` method. """ PowerSpectrumSeries.__init__(self, *args, **kwargs) + + if not isinstance(self.overlay, fslmelimage.MelodicImage): + raise ValueError('Overlay is not a MelodicImage') + self.varNorm = False self.disableProperty('varNorm') diff --git a/fsl/fsleyes/views/powerspectrumpanel.py b/fsl/fsleyes/views/powerspectrumpanel.py index 2411236943fe20de6f38274ebbb64e83476ab203..76c901b3ecb63c5c872146ee2ffec2e4ddfd24e7 100644 --- a/fsl/fsleyes/views/powerspectrumpanel.py +++ b/fsl/fsleyes/views/powerspectrumpanel.py @@ -168,7 +168,8 @@ class PowerSpectrumPanel(plotpanel.OverlayPlotPanel): targets = [self._displayCtx.getOpts(overlay)] propNames = ['volume'] - elif isinstance(overlay, fslimage.Image): + elif isinstance(overlay, fslimage.Image) and \ + overlay.is4DImage(): ps = psseries.VoxelPowerSpectrumSeries(overlay, self._displayCtx)