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