From efb9756e4d5a27e1ccdc5a23f62950a028f57e54 Mon Sep 17 00:00:00 2001 From: joostjm Date: Tue, 9 May 2023 13:27:43 +0200 Subject: [PATCH] BUG: Force label and label_channel to int Both label and label_channel are used in SimpleITK, which is more sensitive to datatypes (i.e. will fail when either parameter is int64_t). Therefore, force these values to int. --- radiomics/generalinfo.py | 4 ++-- radiomics/imageoperations.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/radiomics/generalinfo.py b/radiomics/generalinfo.py index 0034d8cb..58c1c6e0 100644 --- a/radiomics/generalinfo.py +++ b/radiomics/generalinfo.py @@ -113,8 +113,8 @@ def addMaskElements(self, image, mask, label, prefix='original'): lssif = sitk.LabelShapeStatisticsImageFilter() lssif.Execute(mask) - self.generalInfo[self.generalInfo_prefix + 'Mask-' + prefix + '_BoundingBox'] = lssif.GetBoundingBox(label) - self.generalInfo[self.generalInfo_prefix + 'Mask-' + prefix + '_VoxelNum'] = lssif.GetNumberOfPixels(label) + self.generalInfo[self.generalInfo_prefix + 'Mask-' + prefix + '_BoundingBox'] = lssif.GetBoundingBox(int(label)) + self.generalInfo[self.generalInfo_prefix + 'Mask-' + prefix + '_VoxelNum'] = lssif.GetNumberOfPixels(int(label)) labelMap = (mask == label) ccif = sitk.ConnectedComponentImageFilter() diff --git a/radiomics/imageoperations.py b/radiomics/imageoperations.py index 82a8e28a..db64f158 100644 --- a/radiomics/imageoperations.py +++ b/radiomics/imageoperations.py @@ -38,7 +38,7 @@ def getMask(mask, **kwargs): logger.info('Extracting mask at index %i', label_channel) selector = sitk.VectorIndexSelectionCastImageFilter() - selector.SetIndex(label_channel) + selector.SetIndex(int(label_channel)) mask = selector.Execute(mask) logger.debug('Force casting mask to UInt32 to ensure correct datatype.') @@ -216,7 +216,7 @@ def checkMask(imageNode, maskNode, **kwargs): correctedMask = None - label = kwargs.get('label', 1) + label = int(kwargs.get('label', 1)) minDims = kwargs.get('minimumROIDimensions', 2) minSize = kwargs.get('minimumROISize', None) @@ -316,7 +316,7 @@ def _checkROI(imageNode, maskNode, **kwargs): returned. Otherwise, a ValueError is raised. """ global logger - label = kwargs.get('label', 1) + label = int(kwargs.get('label', 1)) logger.debug('Checking ROI validity') @@ -442,7 +442,7 @@ def resampleImage(imageNode, maskNode, **kwargs): resampledPixelSpacing = kwargs['resampledPixelSpacing'] interpolator = kwargs.get('interpolator', sitk.sitkBSpline) padDistance = kwargs.get('padDistance', 5) - label = kwargs.get('label', 1) + label = int(kwargs.get('label', 1)) logger.debug('Resampling image and mask')