diff --git a/fsl/fslview/displaycontext/volumeopts.py b/fsl/fslview/displaycontext/volumeopts.py index 30ea106a583bb0a32e4b7cba7c930411a8cc30e2..0046cb69bd9221c097f55c0ac44fe4ebe9a75df6 100644 --- a/fsl/fslview/displaycontext/volumeopts.py +++ b/fsl/fslview/displaycontext/volumeopts.py @@ -267,11 +267,15 @@ class VolumeOpts(ImageOpts): # on whether the image is 3D or 4D) if np.prod(overlay.shape) > 2 ** 30: sample = overlay.data[..., overlay.shape[-1] / 2] - self.dataMin = float(sample.min()) - self.dataMax = float(sample.max()) + self.dataMin = float(np.nanmin(sample)) + self.dataMax = float(np.nanmax(sample)) else: - self.dataMin = float(overlay.data.min()) - self.dataMax = float(overlay.data.max()) + self.dataMin = float(np.nanmin(overlay.data)) + self.dataMax = float(np.nanmax(overlay.data)) + + if np.any(np.isnan((self.dataMin, self.dataMax))): + self.dataMin = 0 + self.dataMax = 0 dRangeLen = abs(self.dataMax - self.dataMin) dMinDistance = dRangeLen / 10000.0 diff --git a/fsl/fslview/views/timeseriespanel.py b/fsl/fslview/views/timeseriespanel.py index e4092f3c909012ad6003ad363e73735b111544f7..f620f9067366deaa0030b82431676bf5e8717e5f 100644 --- a/fsl/fslview/views/timeseriespanel.py +++ b/fsl/fslview/views/timeseriespanel.py @@ -26,6 +26,7 @@ import fsl.data.featimage as fslfeatimage import fsl.data.image as fslimage import fsl.data.strings as strings import fsl.fslview.displaycontext as fsldisplay +import fsl.fslview.colourmaps as fslcmaps import fsl.fslview.controls as fslcontrols import fsl.utils.transform as transform @@ -463,6 +464,7 @@ class TimeSeriesPanel(plotpanel.PlotPanel): self.__currentOverlay = None self.__currentTs = None + self.__overlayColours = {} self.Layout() self.draw() @@ -620,9 +622,12 @@ class TimeSeriesPanel(plotpanel.PlotPanel): currOverlay = current.overlay if self.showAllCurrent: + overlays = [o for o in self._overlayList if o is not currOverlay] + # Remove overlays for which the + # current location is out of bounds locs = map(self.__getTimeSeriesLocation, overlays) locovl = filter(lambda (l, o): l is not None, zip(locs, overlays)) @@ -635,9 +640,18 @@ class TimeSeriesPanel(plotpanel.PlotPanel): extras.extend([ts for ts in tss if ts is not None]) for ts in tss: - ts.alpha = 0.5 + ts.alpha = 1 ts.lineWidth = 0.5 + # Use a random colour for each overlay, + # but use the same random colour each time + colour = self.__overlayColours.get( + ts.overlay, + fslcmaps.randomBrightColour()) + + ts.colour = colour + self.__overlayColours[ts.overlay] = colour + if isinstance(ts, FEATTimeSeries): extras.extend(ts.getModelTimeSeries())