From 87a5537fb16b6527a6dd3bbfa867faacca27b74d Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauld.mccarthy@gmail.com>
Date: Thu, 5 May 2016 12:11:42 +0100
Subject: [PATCH] getDesign method implemented, and untested.

---
 fsl/data/featdesign.py | 35 +++++++++++++++++++++++++----------
 1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/fsl/data/featdesign.py b/fsl/data/featdesign.py
index 0afc8750a..d6ebf2a32 100644
--- a/fsl/data/featdesign.py
+++ b/fsl/data/featdesign.py
@@ -151,24 +151,39 @@ class FEATFSFDesign(object):
 
         if len(self.__evs) != self.__numEVs:
             raise FSFError('Number of EVs does not match design.mat')
+
+        # Load the voxelwise images now,
+        # so they're ready to be used by
+        # the getDesign method.
+        for ev in self.__evs:
+            
+            if not isinstance(ev, (VoxelwiseEV, VoxelwiseConfoundEV)):
+                continue
+
+            # The path to some voxelwise 
+            # EVs may not be present - 
+            # see the VoxelwisEV class.
+            if ev.filename is not None: ev.image = fslimage.Image(ev.filename)
+            else:                       ev.image = None
  
     
     def getDesign(self, x, y, z):
-        """Returns the design matrix for the specified voxel.
-        """
+        """Returns the design matrix for the specified voxel. """
 
-        # if no vox EVs, just
-        # return the design
-        pass
+        design = np.array(self.__design)
 
+        for ev in self.__evs:
 
-    def getVoxelEVFile(self, idx):
-        return self.__evs[idx].filename
+            if not isinstance(ev, (VoxelwiseEV, VoxelwiseConfoundEV)):
+                continue
 
-    
-    def getVoxelConfoundFile(self, idx):
-        return self.__evs[idx].filename
+            if ev.image is None:
+                log.warning('Voxel EV image missing '
+                            'for ev {}'.format(ev.index))
+
+            design[:, ev.index] = ev.image.data[x, y, z, :]
 
+        return design
 
 
 class EV(object):
-- 
GitLab