From 487123d760d01a69a2fb34631eb3641d56f3c21f Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Thu, 2 Aug 2018 13:26:30 +0100 Subject: [PATCH] RF,BF: FEATImage.getCOPE was loading PE image. Clear refs to images on delete. --- fsl/data/featanalysis.py | 6 +++--- fsl/data/featimage.py | 13 +++++++++++-- fsl/data/image.py | 2 ++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/fsl/data/featanalysis.py b/fsl/data/featanalysis.py index e95ff8ae1..246722b57 100644 --- a/fsl/data/featanalysis.py +++ b/fsl/data/featanalysis.py @@ -357,6 +357,9 @@ def loadClusterResults(featdir, settings, contrast): clusterFile = op.join( featdir, 'cluster_zstat{}_std.txt'.format(contrast + 1)) + if not op.exists(clusterFile): + return None + # In higher levle analysis run in some standard # space, the cluster coordinates are in standard # space. We transform them to voxel coordinates. @@ -365,9 +368,6 @@ def loadClusterResults(featdir, settings, contrast): getDataFile(featdir), loadData=False).worldToVoxMat - if not op.exists(clusterFile): - return None - log.debug('Loading cluster results for contrast {} from {}'.format( contrast, clusterFile)) diff --git a/fsl/data/featimage.py b/fsl/data/featimage.py index 0b37540ba..80aad1989 100644 --- a/fsl/data/featimage.py +++ b/fsl/data/featimage.py @@ -95,6 +95,16 @@ class FEATImage(fslimage.Image): self.name = '{}: {}'.format(self.__analysisName, self.name) + def __del__(self): + """Clears references to any loaded images.""" + self.__design = None + self.__residuals = None + self.__pes = None + self.__copes = None + self.__zstats = None + self.__clustMasks = None + + def getFEATDir(self): """Returns the FEAT directory this image is contained in.""" return self.__featDir @@ -245,14 +255,13 @@ class FEATImage(fslimage.Image): """Returns the COPE image for the given contrast (0-indexed). """ if self.__copes[con] is None: - copefile = featanalysis.getPEFile(self.__featDir, con) + copefile = featanalysis.getCOPEFile(self.__featDir, con) self.__copes[con] = fslimage.Image( copefile, name='{}: COPE{} ({})'.format( self.__analysisName, con + 1, self.contrastNames()[con])) - return self.__copes[con] diff --git a/fsl/data/image.py b/fsl/data/image.py index 274273f26..0a130dcaa 100644 --- a/fsl/data/image.py +++ b/fsl/data/image.py @@ -986,11 +986,13 @@ class Image(Nifti): def __del__(self): """Closes any open file handles, and clears some references. """ + self.header = None self.__nibImage = None self.__imageWrapper = None if getattr(self, '__fileobj', None) is not None: self.__fileobj.close() + self.__fileobj = None def getImageWrapper(self): -- GitLab