From 218ad4c5df4108df1c56a60abade7d19af52f60b Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauld.mccarthy@gmail.com>
Date: Sat, 4 Jun 2016 17:10:54 +0100
Subject: [PATCH] Other fsl.data modules updated to new Image API where needed.

---
 fsl/data/atlases.py         | 6 +++---
 fsl/data/featimage.py       | 6 +++---
 fsl/data/image.py           | 7 ++++---
 fsl/data/imagewrapper.py    | 4 ++--
 fsl/data/melodicanalysis.py | 4 +---
 fsl/data/melodicimage.py    | 4 +++-
 fsl/data/tensorimage.py     | 4 +++-
 7 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/fsl/data/atlases.py b/fsl/data/atlases.py
index b4148551c..ecb5f0af5 100644
--- a/fsl/data/atlases.py
+++ b/fsl/data/atlases.py
@@ -296,7 +296,7 @@ class AtlasDescription(object):
             imagefile        = op.join(ATLAS_DIR, '.' + imagefile)
             summaryimagefile = op.join(ATLAS_DIR, '.' + summaryimagefile)
 
-            i = fslimage.Image(imagefile, loadData=False)
+            i = fslimage.Image(imagefile, loadData=False, calcRange=False)
 
             self.images       .append(imagefile)
             self.summaryImages.append(summaryimagefile)
@@ -425,7 +425,7 @@ class LabelAtlas(Atlas):
            voxelLoc[2] >= self.shape[2]:
             return np.nan        
         
-        val = self.data[voxelLoc[0], voxelLoc[1], voxelLoc[2]]
+        val = self[voxelLoc[0], voxelLoc[1], voxelLoc[2]]
 
         if self.desc.atlasType == 'label':
             return val
@@ -473,7 +473,7 @@ class ProbabilisticAtlas(Atlas):
            voxelLoc[2] >= self.shape[2]:
             return []
         
-        return self.data[voxelLoc[0], voxelLoc[1], voxelLoc[2], :]
+        return self[voxelLoc[0], voxelLoc[1], voxelLoc[2], :]
 
 
 
diff --git a/fsl/data/featimage.py b/fsl/data/featimage.py
index 40cffe7e0..2f650c8b6 100644
--- a/fsl/data/featimage.py
+++ b/fsl/data/featimage.py
@@ -313,12 +313,12 @@ class FEATImage(fslimage.Image):
             raise ValueError('Contrast is wrong length')
         
         X        = self.__design.getDesign(xyz)
-        data     = self.data[x, y, z, :]
+        data     = self[x, y, z, :]
         modelfit = np.zeros(len(data))
 
         for i in range(numEVs):
 
-            pe        = self.getPE(i).data[x, y, z]
+            pe        = self.getPE(i)[x, y, z]
             modelfit += X[:, i] * pe * contrast[i]
 
         return modelfit + data.mean()
@@ -332,7 +332,7 @@ class FEATImage(fslimage.Image):
         """
 
         x, y, z   = xyz
-        residuals = self.getResiduals().data[x, y, z, :]
+        residuals = self.getResiduals()[x, y, z, :]
         modelfit  = self.fit(contrast, xyz, fullmodel)
 
         return residuals + modelfit
diff --git a/fsl/data/image.py b/fsl/data/image.py
index 8bdde463f..8847799e1 100644
--- a/fsl/data/image.py
+++ b/fsl/data/image.py
@@ -374,9 +374,10 @@ class Image(Nifti1, notifier.Notifier):
                         :meth:`loadData` method. 
 
         :arg calcRange: If ``True`` (the default), the image range is
-                        calculated immediately (vi a call to :meth:`calcRange`).
-                        Otherwise, the image range is incrementally updated as
-                        more data is read from memory or disk.
+                        calculated immediately (vi a call to
+                        :meth:`calcRange`). Otherwise, the image range is
+                        incrementally updated as more data is read from memory
+                        or disk.
         """
 
         import nibabel as nib
diff --git a/fsl/data/imagewrapper.py b/fsl/data/imagewrapper.py
index a666b51cc..962a50898 100644
--- a/fsl/data/imagewrapper.py
+++ b/fsl/data/imagewrapper.py
@@ -194,8 +194,8 @@ class ImageWrapper(notifier.Notifier):
                       self.__range[1],
                       self.__sliceCoverage))
 
-        dmin = np.nanmin(data)
-        dmax = np.nanmax(data)
+        dmin = float(np.nanmin(data))
+        dmax = float(np.nanmax(data))
 
         if oldmin is None: oldmin = dmin
         if oldmax is None: oldmax = dmax
diff --git a/fsl/data/melodicanalysis.py b/fsl/data/melodicanalysis.py
index 29a75aeb1..9de847d43 100644
--- a/fsl/data/melodicanalysis.py
+++ b/fsl/data/melodicanalysis.py
@@ -33,8 +33,6 @@ import logging
 import os.path as op
 import numpy   as np
 
-import props
-
 import fsl.utils.path        as fslpath
 import fsl.data.image        as fslimage
 import fsl.data.featanalysis as featanalysis
@@ -159,7 +157,7 @@ def getNumComponents(meldir):
     contained in the given directrory.
     """
 
-    icImg = fslimage.Image(getICFile(meldir), loadData=False)
+    icImg = fslimage.Image(getICFile(meldir), loadData=False, calcRange=False)
     return icImg.shape[3]
 
 
diff --git a/fsl/data/melodicimage.py b/fsl/data/melodicimage.py
index 9f5729a71..85f7f4611 100644
--- a/fsl/data/melodicimage.py
+++ b/fsl/data/melodicimage.py
@@ -79,7 +79,9 @@ class MelodicImage(fslimage.Image):
         dataFile = self.getDataFile()
 
         if dataFile is not None: 
-            dataImage = fslimage.Image(dataFile, loadData=False)
+            dataImage = fslimage.Image(dataFile,
+                                       loadData=False,
+                                       calcRange=False)
             if dataImage.is4DImage():
                 self.tr = dataImage.pixdim[3]
 
diff --git a/fsl/data/tensorimage.py b/fsl/data/tensorimage.py
index 86ae221cb..2587cc189 100644
--- a/fsl/data/tensorimage.py
+++ b/fsl/data/tensorimage.py
@@ -125,7 +125,9 @@ class TensorImage(fslimage.Nifti1):
         else:
             paths = path
 
-        fslimage.Nifti1.__init__(self, paths['l1'], loadData=False)
+        fslimage.Nifti1.__init__(self, paths['l1'],
+                                 loadData=False,
+                                 calcRange=False)
 
         self.__v1 = fslimage.Image(paths['v1'])
         self.__v2 = fslimage.Image(paths['v2'])
-- 
GitLab