diff --git a/nibabel/nicom/dicomwrappers.py b/nibabel/nicom/dicomwrappers.py index fc3fbe4905..194227c6cf 100755 --- a/nibabel/nicom/dicomwrappers.py +++ b/nibabel/nicom/dicomwrappers.py @@ -201,7 +201,7 @@ def voxel_sizes(self): zs = self.get('SpacingBetweenSlices') if zs is None: zs = self.get('SliceThickness') - if zs is None: + if zs is None or zs == '': zs = 1 # Protect from python decimals in pydicom 0.9.7 zs = float(zs) diff --git a/nibabel/nicom/tests/data/slicethickness_empty_string.dcm b/nibabel/nicom/tests/data/slicethickness_empty_string.dcm new file mode 100644 index 0000000000..c2718cfdeb Binary files /dev/null and b/nibabel/nicom/tests/data/slicethickness_empty_string.dcm differ diff --git a/nibabel/nicom/tests/test_dicomwrappers.py b/nibabel/nicom/tests/test_dicomwrappers.py index 7e611c569d..bea88936d3 100755 --- a/nibabel/nicom/tests/test_dicomwrappers.py +++ b/nibabel/nicom/tests/test_dicomwrappers.py @@ -35,6 +35,7 @@ DATA_FILE_SLC_NORM = pjoin(IO_DATA_PATH, 'csa_slice_norm.dcm') DATA_FILE_DEC_RSCL = pjoin(IO_DATA_PATH, 'decimal_rescale.dcm') DATA_FILE_4D = pjoin(IO_DATA_PATH, '4d_multiframe_test.dcm') +DATA_FILE_EMPTY_ST = pjoin(IO_DATA_PATH, 'slicethickness_empty_string.dcm') # This affine from our converted image was shown to match our image spatially # with an image from SPM DICOM conversion. We checked the matching with SPM @@ -616,6 +617,11 @@ def test_data_real(self): assert_equal(sha1(dat_str).hexdigest(), '149323269b0af92baa7508e19ca315240f77fa8c') + @dicom_test + def test_slicethickness_fallback(self): + dw = didw.wrapper_from_file(DATA_FILE_EMPTY_ST) + assert_equal(dw.voxel_sizes[2], 1.0) + @dicom_test def test_data_fake(self): # Test algorithm for get_data