Beispiel #1
0
 def test_is_singleframe_diffusion_imaging(self):
     assert convert_philips._is_singleframe_diffusion_imaging(
         convert_philips._get_grouped_dicoms(read_dicom_directory(test_data.PHILIPS_DTI)))
     assert not convert_philips._is_singleframe_diffusion_imaging(
         convert_philips._get_grouped_dicoms(read_dicom_directory(test_data.PHILIPS_ANATOMICAL)))
     assert not convert_philips._is_singleframe_diffusion_imaging(
         convert_philips._get_grouped_dicoms(read_dicom_directory(test_data.PHILIPS_FMRI)))
Beispiel #2
0
 def test_is_4d(self):
     diffusion_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_DTI))
     _4d_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_FMRI))
     anatomical_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_ANATOMICAL))
     self.assertTrue(convert_ge._is_4d(diffusion_group))
     self.assertTrue(convert_ge._is_4d(_4d_group))
     self.assertFalse(convert_ge._is_4d(anatomical_group))
Beispiel #3
0
    def test_4d(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_FMRI),
                                                     None)
            self.assertTrue(results.get('NII_FILE') is None)
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_FMRI),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.SIEMENS_FMRI)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_FMRI_IMPLICIT),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.SIEMENS_FMRI_IMPLICIT)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.SIEMENS_CLASSIC_FMRI)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI_IMPLICIT),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.SIEMENS_CLASSIC_FMRI_IMPLICIT)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #4
0
    def test_diffusion_images(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_DTI),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(results['NII_FILE'],
                                 ground_thruth_filenames(
                                     test_data.GE_DTI)[0]) is True
            assert compare_bval(results['BVAL_FILE'],
                                ground_thruth_filenames(
                                    test_data.GE_DTI)[2]) is True
            assert compare_bvec(results['BVEC_FILE'],
                                ground_thruth_filenames(
                                    test_data.GE_DTI)[3]) is True

            convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_DTI_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[0]) is True
            assert compare_bval(
                results['BVAL_FILE'],
                ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[2]) is True
            assert compare_bvec(
                results['BVEC_FILE'],
                ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[3]) is True
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #5
0
    def test_anatomical(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_ANATOMICAL), None)
            self.assertTrue(results.get('NII_FILE') is None)
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_ANATOMICAL),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.GE_ANATOMICAL)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
            results = convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_ANATOMICAL_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.GE_ANATOMICAL_IMPLICIT)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #6
0
    def test_4d(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_FMRI),
                                                     None)
            self.assertTrue(results.get('NII_FILE') is None)
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_FMRI),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.SIEMENS_FMRI)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_FMRI_IMPLICIT),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.SIEMENS_FMRI_IMPLICIT)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.SIEMENS_CLASSIC_FMRI)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_siemens.dicom_to_nifti(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI_IMPLICIT),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.SIEMENS_CLASSIC_FMRI_IMPLICIT)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #7
0
    def test_anatomical(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_philips.dicom_to_nifti(read_dicom_directory(test_data.PHILIPS_ANATOMICAL),
                                                     None)
            self.assertTrue(results.get('NII_FILE') is None)
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_philips.dicom_to_nifti(read_dicom_directory(test_data.PHILIPS_ANATOMICAL),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                 ground_thruth_filenames(test_data.PHILIPS_ANATOMICAL)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_philips.dicom_to_nifti(read_dicom_directory(test_data.PHILIPS_ANATOMICAL_IMPLICIT),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                 ground_thruth_filenames(test_data.PHILIPS_ANATOMICAL_IMPLICIT)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_philips.dicom_to_nifti(read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                 ground_thruth_filenames(test_data.PHILIPS_ENHANCED_ANATOMICAL)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            self.assertRaises(ConversionError,
                              convert_philips.dicom_to_nifti,
                              read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL_IMPLICIT),
                              os.path.join(tmp_output_dir, 'test.nii.gz'))
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #8
0
 def test_is_diffusion_imaging(self):
     diffusion_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_DTI))
     _4d_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_FMRI))
     anatomical_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_ANATOMICAL))
     assert convert_ge._is_diffusion_imaging(diffusion_group)
     assert not convert_ge._is_diffusion_imaging(_4d_group)
     assert not convert_ge._is_diffusion_imaging(anatomical_group)
Beispiel #9
0
 def test_is_4d(self):
     diffusion_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_DTI))
     _4d_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_FMRI))
     anatomical_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_ANATOMICAL))
     self.assertTrue(convert_ge._is_4d(diffusion_group))
     self.assertTrue(convert_ge._is_4d(_4d_group))
     self.assertFalse(convert_ge._is_4d(anatomical_group))
Beispiel #10
0
 def test_is_mosaic(self):
     # test wit directory
     assert convert_siemens._is_mosaic(
         read_dicom_directory(test_data.SIEMENS_DTI))
     assert convert_siemens._is_mosaic(
         read_dicom_directory(test_data.SIEMENS_FMRI))
     assert not convert_siemens._is_mosaic(
         read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI))
     assert not convert_siemens._is_mosaic(
         read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI))
     assert not convert_siemens._is_mosaic(
         read_dicom_directory(test_data.SIEMENS_ANATOMICAL))
     # test with grouped dicoms
     assert convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(
             read_dicom_directory(test_data.SIEMENS_DTI)))
     assert convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(
             read_dicom_directory(test_data.SIEMENS_FMRI)))
     assert not convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(
             read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI)))
     assert not convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(
             read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI)))
     assert not convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(
             read_dicom_directory(test_data.SIEMENS_ANATOMICAL)))
Beispiel #11
0
 def test_is_diffusion_imaging(self):
     diffusion_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_DTI))
     _4d_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_FMRI))
     anatomical_group = convert_ge._get_grouped_dicoms(read_dicom_directory(test_data.GE_ANATOMICAL))
     assert convert_ge._is_diffusion_imaging(diffusion_group)
     assert not convert_ge._is_diffusion_imaging(_4d_group)
     assert not convert_ge._is_diffusion_imaging(anatomical_group)
Beispiel #12
0
    def test_4d(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_siemens.dicom_to_nifti(
                read_dicom_directory(test_data.SIEMENS_FMRI),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.SIEMENS_FMRI)[0]) is True

            results = convert_siemens.dicom_to_nifti(
                read_dicom_directory(test_data.SIEMENS_FMRI_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(
                    test_data.SIEMENS_FMRI_IMPLICIT)[0]) is True

            results = convert_siemens.dicom_to_nifti(
                read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(
                    test_data.SIEMENS_CLASSIC_FMRI)[0]) is True

            results = convert_siemens.dicom_to_nifti(
                read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(
                    test_data.SIEMENS_CLASSIC_FMRI_IMPLICIT)[0]) is True
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #13
0
    def test_anatomical(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_philips.dicom_to_nifti(
                read_dicom_directory(test_data.PHILIPS_ANATOMICAL),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(
                    test_data.PHILIPS_ANATOMICAL)[0]) is True

            results = convert_philips.dicom_to_nifti(
                read_dicom_directory(test_data.PHILIPS_ANATOMICAL_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(
                    test_data.PHILIPS_ANATOMICAL_IMPLICIT)[0]) is True

            results = convert_philips.dicom_to_nifti(
                read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(
                    test_data.PHILIPS_ENHANCED_ANATOMICAL)[0]) is True

            self.assertRaises(
                ConversionError, convert_philips.dicom_to_nifti,
                read_dicom_directory(
                    test_data.PHILIPS_ENHANCED_ANATOMICAL_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #14
0
 def test_is_slice_increment_inconsistent(self):
     self.assertFalse(
         is_slice_increment_inconsistent(
             sort_dicoms(read_dicom_directory(test_data.GE_ANATOMICAL))))
     self.assertTrue(
         is_slice_increment_inconsistent(
             sort_dicoms(
                 read_dicom_directory(test_data.FAILING_SLICEINCREMENT))))
Beispiel #15
0
    def test_validate_sliceincrement(self):
        validate_slice_increment(
            sort_dicoms(read_dicom_directory(test_data.GE_ANATOMICAL)))

        self.assertRaises(
            ConversionValidationError, validate_slice_increment,
            sort_dicoms(read_dicom_directory(
                test_data.FAILING_SLICEINCREMENT)))
Beispiel #16
0
 def test_is_philips(self):
     assert convert_philips.is_philips(
         read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not convert_philips.is_philips(
         read_dicom_directory(test_data.SIEMENS_ANATOMICAL))
     assert not convert_philips.is_philips(
         read_dicom_directory(test_data.GE_ANATOMICAL))
     assert not convert_philips.is_philips(
         read_dicom_directory(test_data.GENERIC_ANATOMICAL))
Beispiel #17
0
 def test_get_vendor(self):
     assert convert_dicom._get_vendor(
         read_dicom_directory(test_data.SIEMENS_ANATOMICAL)) == convert_dicom.Vendor.SIEMENS
     assert convert_dicom._get_vendor(read_dicom_directory(test_data.GE_ANATOMICAL)) == convert_dicom.Vendor.GE
     assert convert_dicom._get_vendor(
         read_dicom_directory(test_data.PHILIPS_ANATOMICAL)) == convert_dicom.Vendor.PHILIPS
     assert convert_dicom._get_vendor(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL)) == convert_dicom.Vendor.PHILIPS
     assert convert_dicom._get_vendor(
         read_dicom_directory(test_data.GENERIC_ANATOMICAL)) == convert_dicom.Vendor.GENERIC
Beispiel #18
0
 def test_is_ge(self):
     assert not convert_ge.is_ge(
         read_dicom_directory(test_data.SIEMENS_ANATOMICAL))
     assert convert_ge.is_ge(read_dicom_directory(test_data.GE_ANATOMICAL))
     assert not convert_ge.is_ge(
         read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not convert_ge.is_ge(
         read_dicom_directory(test_data.GENERIC_ANATOMICAL))
     assert not convert_ge.is_ge(
         read_dicom_directory(test_data.HITACHI_ANATOMICAL))
 def test_is_singleframe_diffusion_imaging(self):
     assert convert_philips._is_singleframe_diffusion_imaging(
         convert_philips._get_grouped_dicoms(
             read_dicom_directory(test_data.PHILIPS_DTI)))
     assert not convert_philips._is_singleframe_diffusion_imaging(
         convert_philips._get_grouped_dicoms(
             read_dicom_directory(test_data.PHILIPS_ANATOMICAL)))
     assert not convert_philips._is_singleframe_diffusion_imaging(
         convert_philips._get_grouped_dicoms(
             read_dicom_directory(test_data.PHILIPS_FMRI)))
Beispiel #20
0
 def test_is_classic_4d(self):
     assert not convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_DTI)))
     assert not convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_FMRI)))
     assert convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI)))
     assert convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI)))
     assert not convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_ANATOMICAL)))
Beispiel #21
0
 def test_is_classic_4d(self):
     assert not convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_DTI)))
     assert not convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_FMRI)))
     assert convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI)))
     assert convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI)))
     assert not convert_siemens._is_classic_4d(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_ANATOMICAL)))
Beispiel #22
0
 def test_is_diffusion_imaging(self):
     assert convert_siemens._is_diffusion_imaging(
         read_dicom_directory(test_data.SIEMENS_DTI)[0])
     assert not convert_siemens._is_diffusion_imaging(
         read_dicom_directory(test_data.SIEMENS_FMRI)[0])
     assert convert_siemens._is_diffusion_imaging(
         read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI)[0])
     assert not convert_siemens._is_diffusion_imaging(
         read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI)[0])
     assert not convert_siemens._is_diffusion_imaging(
         read_dicom_directory(test_data.SIEMENS_ANATOMICAL)[0])
Beispiel #23
0
 def test_is_4d(self):
     assert convert_siemens._is_4d(
         read_dicom_directory(test_data.SIEMENS_DTI))
     assert convert_siemens._is_4d(
         read_dicom_directory(test_data.SIEMENS_FMRI))
     assert not convert_siemens._is_4d(
         read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI))
     assert not convert_siemens._is_4d(
         read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI))
     assert not convert_siemens._is_4d(
         read_dicom_directory(test_data.SIEMENS_ANATOMICAL))
Beispiel #24
0
    def test_validate_slicecount_disabled(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            self.assertRaises(ConversionValidationError,
                              dicom_to_nifti,
                              read_dicom_directory(test_data.FAILING_SLICECOUNT),
                              os.path.join(tmp_output_dir, 'test.nii.gz'))
            dicom2nifti.disable_validate_slicecount()
            dicom_to_nifti(read_dicom_directory(test_data.FAILING_SLICECOUNT),
                           os.path.join(tmp_output_dir, 'test.nii.gz'))

        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #25
0
    def test_validate_slicecount_disabled(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            self.assertRaises(
                ConversionValidationError, dicom_to_nifti,
                read_dicom_directory(test_data.FAILING_SLICECOUNT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            dicom2nifti.disable_validate_slicecount()
            dicom_to_nifti(read_dicom_directory(test_data.FAILING_SLICECOUNT),
                           os.path.join(tmp_output_dir, 'test.nii.gz'))

        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #26
0
 def test_anatomical(self):
     tmp_output_dir = tempfile.mkdtemp()
     try:
         results = convert_ge.dicom_to_nifti(read_dicom_directory(test_data.GE_ANATOMICAL),
                                   os.path.join(tmp_output_dir, 'test.nii.gz'))
         assert compare_nifti(results['NII_FILE'],
                              ground_thruth_filenames(test_data.GE_ANATOMICAL)[0]) == True
         results = convert_ge.dicom_to_nifti(read_dicom_directory(test_data.GE_ANATOMICAL_IMPLICIT),
                                   os.path.join(tmp_output_dir, 'test.nii.gz'))
         assert compare_nifti(results['NII_FILE'],
                              ground_thruth_filenames(test_data.GE_ANATOMICAL_IMPLICIT)[0]) == True
     finally:
         shutil.rmtree(tmp_output_dir)
Beispiel #27
0
    def test_validate_orientation_disabled(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            dicom2nifti.disable_validate_orthogonal()  # this will also fail on this data
            dicom2nifti.disable_validate_slice_increment()  # this will also fail on this data
            dicom2nifti.disable_validate_slicecount()
            self.assertRaises(ConversionValidationError,
                              dicom_to_nifti,
                              read_dicom_directory(test_data.FAILING_ORIENTATION),
                              os.path.join(tmp_output_dir, 'test.nii.gz'))
            dicom2nifti.disable_validate_orientation()
            dicom_to_nifti(read_dicom_directory(test_data.FAILING_ORIENTATION),
                           os.path.join(tmp_output_dir, 'test.nii.gz'))

        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #28
0
    def test_anatomical(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_generic.dicom_to_nifti(read_dicom_directory(test_data.GE_ANATOMICAL),
                                                     None)
            self.assertTrue(results.get('NII_FILE') is None)
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_generic.dicom_to_nifti(read_dicom_directory(test_data.GE_ANATOMICAL),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.GE_ANATOMICAL)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #29
0
    def test_diffusion_images(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_DTI), None)
            self.assertTrue(results.get('NII_FILE') is None)
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
            self.assertTrue(results.get('BVAL_FILE') is None)
            self.assertTrue(isinstance(results['BVAL'], numpy.ndarray))
            self.assertTrue(results.get('BVEC_FILE') is None)
            self.assertTrue(isinstance(results['BVEC'], numpy.ndarray))

            results = convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_DTI),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                 ground_thruth_filenames(test_data.GE_DTI)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
            assert_compare_bval(results['BVAL_FILE'],
                                ground_thruth_filenames(test_data.GE_DTI)[2])
            self.assertTrue(isinstance(results['BVAL'], numpy.ndarray))
            assert_compare_bval(results['BVEC_FILE'],
                                ground_thruth_filenames(test_data.GE_DTI)[3])
            self.assertTrue(isinstance(results['BVEC'], numpy.ndarray))

            convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_DTI_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
            assert_compare_bval(
                results['BVAL_FILE'],
                ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[2])
            self.assertTrue(isinstance(results['BVAL'], numpy.ndarray))
            assert_compare_bval(
                results['BVEC_FILE'],
                ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[3])
            self.assertTrue(isinstance(results['BVEC'], numpy.ndarray))
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #30
0
    def test_validate_orientation_disabled(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            dicom2nifti.disable_validate_orthogonal(
            )  # this will also fail on this data
            dicom2nifti.disable_validate_slice_increment(
            )  # this will also fail on this data
            dicom2nifti.disable_validate_slicecount()
            self.assertRaises(
                ConversionValidationError, dicom_to_nifti,
                read_dicom_directory(test_data.FAILING_ORIENTATION),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            dicom2nifti.disable_validate_orientation()
            dicom_to_nifti(read_dicom_directory(test_data.FAILING_ORIENTATION),
                           os.path.join(tmp_output_dir, 'test.nii.gz'))

        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #31
0
 def test_is_mosaic(self):
     # test wit directory
     assert convert_siemens._is_mosaic(read_dicom_directory(test_data.SIEMENS_DTI))
     assert convert_siemens._is_mosaic(read_dicom_directory(test_data.SIEMENS_FMRI))
     assert not convert_siemens._is_mosaic(read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI))
     assert not convert_siemens._is_mosaic(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI))
     assert not convert_siemens._is_mosaic(read_dicom_directory(test_data.SIEMENS_ANATOMICAL))
     # test with grouped dicoms
     assert convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_DTI)))
     assert convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_FMRI)))
     assert not convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI)))
     assert not convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI)))
     assert not convert_siemens._is_mosaic(
         convert_siemens._classic_get_grouped_dicoms(read_dicom_directory(test_data.SIEMENS_ANATOMICAL)))
Beispiel #32
0
    def test_diffusion_images_old(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_ge.dicom_to_nifti(read_dicom_directory(test_data.GE_DTI_OLD),
                                                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.GE_DTI_OLD)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

        finally:
            shutil.rmtree(tmp_output_dir)
    def test_4d(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_philips.dicom_to_nifti(
                read_dicom_directory(test_data.PHILIPS_FMRI), None)
            self.assertTrue(results.get('NII_FILE') is None)
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_philips.dicom_to_nifti(
                read_dicom_directory(test_data.PHILIPS_FMRI),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.PHILIPS_FMRI)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_philips.dicom_to_nifti(
                read_dicom_directory(test_data.PHILIPS_FMRI_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.PHILIPS_FMRI_IMPLICIT)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

            results = convert_philips.dicom_to_nifti(
                read_dicom_directory(test_data.PHILIPS_ENHANCED_FMRI),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.PHILIPS_ENHANCED_FMRI)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
            self.assertRaises(
                ConversionError, convert_philips.dicom_to_nifti,
                read_dicom_directory(test_data.PHILIPS_ENHANCED_FMRI_IMPLICIT),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #34
0
 def test_is_multiframe_dicom(self):
     assert common.is_multiframe_dicom(read_dicom_directory(test_data.PHILIPS_ENHANCED_DTI))
     assert not common.is_multiframe_dicom(read_dicom_directory(test_data.PHILIPS_DTI))
     assert common.is_multiframe_dicom(read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL))
     assert not common.is_multiframe_dicom(read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert common.is_multiframe_dicom(read_dicom_directory(test_data.PHILIPS_ENHANCED_FMRI))
     assert not common.is_multiframe_dicom(read_dicom_directory(test_data.PHILIPS_FMRI))
Beispiel #35
0
 def test_is_multiframe_anatomical(self):
     assert not convert_philips._is_multiframe_anatomical(read_dicom_directory(test_data.PHILIPS_ENHANCED_DTI))
     assert not convert_philips._is_multiframe_anatomical(read_dicom_directory(test_data.PHILIPS_DTI))
     assert convert_philips._is_multiframe_anatomical(read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL))
     assert not convert_philips._is_multiframe_anatomical(read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not convert_philips._is_multiframe_anatomical(read_dicom_directory(test_data.PHILIPS_ENHANCED_FMRI))
     assert not convert_philips._is_multiframe_anatomical(read_dicom_directory(test_data.PHILIPS_FMRI))
Beispiel #36
0
 def test_is_singleframe_4d(self):
     assert not convert_philips._is_singleframe_4d(read_dicom_directory(test_data.PHILIPS_ENHANCED_DTI))
     assert convert_philips._is_singleframe_4d(read_dicom_directory(test_data.PHILIPS_DTI))
     assert not convert_philips._is_singleframe_4d(read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL))
     assert not convert_philips._is_singleframe_4d(read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not convert_philips._is_singleframe_4d(read_dicom_directory(test_data.PHILIPS_ENHANCED_FMRI))
     assert convert_philips._is_singleframe_4d(read_dicom_directory(test_data.PHILIPS_FMRI))
Beispiel #37
0
    def test_not_a_volume(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            settings.disable_validate_orthogonal()
            with self.assertRaises(ConversionError) as exception:
                convert_generic.dicom_to_nifti(read_dicom_directory(test_data.FAILING_NOTAVOLUME),
                                               os.path.join(tmp_output_dir, 'test.nii.gz'))
            self.assertEqual(str(exception.exception),
                             'NOT_A_VOLUME')

        finally:
            settings.enable_validate_orthogonal()
            shutil.rmtree(tmp_output_dir)
Beispiel #38
0
    def test_not_a_volume(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            settings.disable_validate_orthogonal()
            with self.assertRaises(ConversionError) as exception:
                convert_generic.dicom_to_nifti(
                    read_dicom_directory(test_data.FAILING_NOTAVOLUME),
                    os.path.join(tmp_output_dir, 'test.nii.gz'))
            self.assertEqual(str(exception.exception), 'NOT_A_VOLUME')

        finally:
            settings.enable_validate_orthogonal()
            shutil.rmtree(tmp_output_dir)
Beispiel #39
0
 def test_anatomical_implicit(self):
     tmp_output_dir = tempfile.mkdtemp()
     try:
         settings.disable_validate_multiframe_implicit()
         results = convert_philips.dicom_to_nifti(read_dicom_directory(
             test_data.PHILIPS_ENHANCED_ANATOMICAL_IMPLICIT),
             os.path.join(tmp_output_dir, 'test.nii.gz'))
         assert_compare_nifti(results['NII_FILE'],
                              ground_thruth_filenames(test_data.PHILIPS_ENHANCED_ANATOMICAL_IMPLICIT)[0])
         self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
         settings.enable_validate_multiframe_implicit()
     finally:
         shutil.rmtree(tmp_output_dir)
Beispiel #40
0
    def test_diffusion_images_old(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_ge.dicom_to_nifti(
                read_dicom_directory(test_data.GE_DTI_OLD),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(test_data.GE_DTI_OLD)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #41
0
    def test_diffusion_images(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            results = convert_ge.dicom_to_nifti(read_dicom_directory(test_data.GE_DTI),
                                                None)
            self.assertTrue(results.get('NII_FILE') is None)
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
            self.assertTrue(results.get('BVAL_FILE') is None)
            self.assertTrue(isinstance(results['BVAL'], numpy.ndarray))
            self.assertTrue(results.get('BVEC_FILE') is None)
            self.assertTrue(isinstance(results['BVEC'], numpy.ndarray))

            results = convert_ge.dicom_to_nifti(read_dicom_directory(test_data.GE_DTI),
                                                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.GE_DTI)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
            assert_compare_bval(results['BVAL_FILE'],
                                       ground_thruth_filenames(test_data.GE_DTI)[2])
            self.assertTrue(isinstance(results['BVAL'], numpy.ndarray))
            assert_compare_bval(results['BVEC_FILE'],
                                       ground_thruth_filenames(test_data.GE_DTI)[3])
            self.assertTrue(isinstance(results['BVEC'], numpy.ndarray))

            convert_ge.dicom_to_nifti(read_dicom_directory(test_data.GE_DTI_IMPLICIT),
                                      os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                        ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))
            assert_compare_bval(results['BVAL_FILE'],
                                       ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[2])
            self.assertTrue(isinstance(results['BVAL'], numpy.ndarray))
            assert_compare_bval(results['BVEC_FILE'],
                                       ground_thruth_filenames(test_data.GE_DTI_IMPLICIT)[3])
            self.assertTrue(isinstance(results['BVEC'], numpy.ndarray))
        finally:
            shutil.rmtree(tmp_output_dir)
Beispiel #42
0
 def test_is_multiframe_diffusion_imaging(self):
     assert convert_philips._is_multiframe_diffusion_imaging(read_dicom_directory(test_data.PHILIPS_ENHANCED_DTI))
     assert not convert_philips._is_multiframe_diffusion_imaging(read_dicom_directory(test_data.PHILIPS_DTI))
     assert not convert_philips._is_multiframe_diffusion_imaging(read_dicom_directory(
         test_data.PHILIPS_ENHANCED_ANATOMICAL))
     assert not convert_philips._is_multiframe_diffusion_imaging(read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not convert_philips._is_multiframe_diffusion_imaging(read_dicom_directory(
         test_data.PHILIPS_ENHANCED_FMRI))
     assert not convert_philips._is_multiframe_diffusion_imaging(read_dicom_directory(test_data.PHILIPS_FMRI))
Beispiel #43
0
 def test_anatomical_implicit(self):
     tmp_output_dir = tempfile.mkdtemp()
     try:
         settings.disable_validate_multiframe_implicit()
         results = convert_philips.dicom_to_nifti(
             read_dicom_directory(
                 test_data.PHILIPS_ENHANCED_ANATOMICAL_IMPLICIT),
             os.path.join(tmp_output_dir, 'test.nii.gz'))
         assert compare_nifti(
             results['NII_FILE'],
             ground_thruth_filenames(
                 test_data.PHILIPS_ENHANCED_ANATOMICAL_IMPLICIT)[0]) is True
         settings.enable_validate_multiframe_implicit()
     finally:
         shutil.rmtree(tmp_output_dir)
Beispiel #44
0
def dicom_series_to_nifti(original_dicom_directory,
                          output_file,
                          reorient_nifti=True):
    """ Converts dicom single series (see pydicom) to nifty, mimicking SPM

    Examples: See unit test


    will return a dictionary containing
    - the NIFTI under key 'NIFTI'
    - the NIFTI file path under 'NII_FILE'
    - the BVAL file path under 'BVAL_FILE' (only for dti)
    - the BVEC file path under 'BVEC_FILE' (only for dti)

    IMPORTANT:
    If no specific sequence type can be found it will default to anatomical and try to convert.
    You should check that the data you are trying to convert is supported by this code

    Inspired by http://nipy.sourceforge.net/nibabel/dicom/spm_dicom.html
    Inspired by http://code.google.com/p/pydicom/source/browse/source/dicom/contrib/pydicom_series.py

    :param reorient_nifti: if True the nifti affine and data will be updated so the data is stored LAS oriented
    :param output_file: file path to write to
    :param original_dicom_directory: directory with the dicom files for a single series/scan
    """
    # copy files so we can can modify without altering the original
    temp_directory = tempfile.mkdtemp()
    try:
        dicom_directory = os.path.join(temp_directory, 'dicom')
        shutil.copytree(original_dicom_directory, dicom_directory)

        decompress_directory(dicom_directory)

        dicom_input = common.read_dicom_directory(dicom_directory)

        return dicom_array_to_nifti(dicom_input, output_file, reorient_nifti)

    except AttributeError as exception:
        reraise(tp=ConversionError,
                value=ConversionError(str(exception)),
                tb=sys.exc_info()[2])

    finally:
        # remove the copied data
        shutil.rmtree(temp_directory)
Beispiel #45
0
    def test_single_slice(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            settings.disable_validate_slicecount()

            results = convert_generic.dicom_to_nifti(
                read_dicom_directory(test_data.GE_ANATOMICAL_SINGLE_SLICE),
                os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(
                results['NII_FILE'],
                ground_thruth_filenames(
                    test_data.GE_ANATOMICAL_SINGLE_SLICE)[0])
            self.assertTrue(
                isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

        finally:
            settings.enable_validate_slicecount()
            shutil.rmtree(tmp_output_dir)
 def test_is_multiframe_anatomical(self):
     assert not convert_philips._is_multiframe_anatomical(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_DTI))
     assert not convert_philips._is_multiframe_anatomical(
         read_dicom_directory(test_data.PHILIPS_DTI))
     assert convert_philips._is_multiframe_anatomical(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL))
     assert not convert_philips._is_multiframe_anatomical(
         read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not convert_philips._is_multiframe_anatomical(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_FMRI))
     assert not convert_philips._is_multiframe_anatomical(
         read_dicom_directory(test_data.PHILIPS_FMRI))
 def test_is_multiframe_diffusion_imaging(self):
     assert convert_philips._is_multiframe_diffusion_imaging(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_DTI))
     assert not convert_philips._is_multiframe_diffusion_imaging(
         read_dicom_directory(test_data.PHILIPS_DTI))
     assert not convert_philips._is_multiframe_diffusion_imaging(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL))
     assert not convert_philips._is_multiframe_diffusion_imaging(
         read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not convert_philips._is_multiframe_diffusion_imaging(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_FMRI))
     assert not convert_philips._is_multiframe_diffusion_imaging(
         read_dicom_directory(test_data.PHILIPS_FMRI))
 def test_is_singleframe_4d(self):
     assert not convert_philips._is_singleframe_4d(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_DTI))
     assert convert_philips._is_singleframe_4d(
         read_dicom_directory(test_data.PHILIPS_DTI))
     assert not convert_philips._is_singleframe_4d(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_ANATOMICAL))
     assert not convert_philips._is_singleframe_4d(
         read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not convert_philips._is_singleframe_4d(
         read_dicom_directory(test_data.PHILIPS_ENHANCED_FMRI))
     assert convert_philips._is_singleframe_4d(
         read_dicom_directory(test_data.PHILIPS_FMRI))
Beispiel #49
0
def dicom_series_to_nifti(original_dicom_directory, output_file=None, reorient_nifti=True):
    """ Converts dicom single series (see pydicom) to nifty, mimicking SPM

    Examples: See unit test


    will return a dictionary containing
    - the NIFTI under key 'NIFTI'
    - the NIFTI file path under 'NII_FILE'
    - the BVAL file path under 'BVAL_FILE' (only for dti)
    - the BVEC file path under 'BVEC_FILE' (only for dti)

    IMPORTANT:
    If no specific sequence type can be found it will default to anatomical and try to convert.
    You should check that the data you are trying to convert is supported by this code

    Inspired by http://nipy.sourceforge.net/nibabel/dicom/spm_dicom.html
    Inspired by http://code.google.com/p/pydicom/source/browse/source/dicom/contrib/pydicom_series.py

    :param reorient_nifti: if True the nifti affine and data will be updated so the data is stored LAS oriented
    :param output_file: file path to write to if not set to None
    :param original_dicom_directory: directory with the dicom files for a single series/scan
    :return nibabel image
    """
    # copy files so we can can modify without altering the original
    temp_directory = tempfile.mkdtemp()
    try:
        dicom_directory = os.path.join(temp_directory, 'dicom')
        shutil.copytree(original_dicom_directory, dicom_directory)

        dicom_input = common.read_dicom_directory(dicom_directory)

        return dicom_array_to_nifti(dicom_input, output_file, reorient_nifti)

    except AttributeError as exception:
        reraise(
            tp=ConversionError,
            value=ConversionError(str(exception)),
            tb=sys.exc_info()[2])

    finally:
        # remove the copied data
        shutil.rmtree(temp_directory)
Beispiel #50
0
    def test_inconsistent_slice_increment_resampling(self):
        tmp_output_dir = tempfile.mkdtemp()
        try:
            settings.disable_validate_orthogonal()
            settings.disable_validate_slice_increment()
            settings.enable_resampling()
            settings.set_resample_padding(0)
            settings.set_resample_spline_interpolation_order(1)
            results = convert_generic.dicom_to_nifti(read_dicom_directory(test_data.FAILING_SLICEINCREMENT_2),
                                                     os.path.join(tmp_output_dir, 'test.nii.gz'))
            assert_compare_nifti(results['NII_FILE'],
                                 ground_thruth_filenames(test_data.FAILING_SLICEINCREMENT_2)[0])
            self.assertTrue(isinstance(results['NII'], nibabel.nifti1.Nifti1Image))

        finally:
            settings.disable_resampling()
            settings.enable_validate_slice_increment()
            settings.enable_validate_orientation()
            shutil.rmtree(tmp_output_dir)
Beispiel #51
0
    def test_validate_slicecount(self):
        validate_slicecount(read_dicom_directory(test_data.GE_ANATOMICAL))

        self.assertRaises(ConversionValidationError,
                          validate_slicecount,
                          read_dicom_directory(test_data.FAILING_SLICECOUNT))
Beispiel #52
0
 def test_is_diffusion_imaging(self):
     assert convert_siemens._is_diffusion_imaging(read_dicom_directory(test_data.SIEMENS_DTI)[0])
     assert not convert_siemens._is_diffusion_imaging(read_dicom_directory(test_data.SIEMENS_FMRI)[0])
     assert convert_siemens._is_diffusion_imaging(read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI)[0])
     assert not convert_siemens._is_diffusion_imaging(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI)[0])
     assert not convert_siemens._is_diffusion_imaging(read_dicom_directory(test_data.SIEMENS_ANATOMICAL)[0])
Beispiel #53
0
    def test_validate_orientation(self):
        validate_orientation(read_dicom_directory(test_data.GE_ANATOMICAL))

        self.assertRaises(ConversionValidationError,
                          validate_orientation,
                          read_dicom_directory(test_data.FAILING_ORIENTATION))
Beispiel #54
0
 def test_is_4d(self):
     assert convert_siemens._is_4d(read_dicom_directory(test_data.SIEMENS_DTI))
     assert convert_siemens._is_4d(read_dicom_directory(test_data.SIEMENS_FMRI))
     assert not convert_siemens._is_4d(read_dicom_directory(test_data.SIEMENS_CLASSIC_DTI))
     assert not convert_siemens._is_4d(read_dicom_directory(test_data.SIEMENS_CLASSIC_FMRI))
     assert not convert_siemens._is_4d(read_dicom_directory(test_data.SIEMENS_ANATOMICAL))
Beispiel #55
0
 def test_is_ge(self):
     assert not common.is_ge(read_dicom_directory(test_data.SIEMENS_ANATOMICAL))
     assert common.is_ge(read_dicom_directory(test_data.GE_ANATOMICAL))
     assert not common.is_ge(read_dicom_directory(test_data.PHILIPS_ANATOMICAL))
     assert not common.is_ge(read_dicom_directory(test_data.GENERIC_ANATOMICAL))
     assert not common.is_ge(read_dicom_directory(test_data.HITACHI_ANATOMICAL))
Beispiel #56
0
    def test_validate_sliceincrement(self):
        validate_slice_increment(sort_dicoms(read_dicom_directory(test_data.GE_ANATOMICAL)))

        self.assertRaises(ConversionValidationError,
                          validate_slice_increment,
                          sort_dicoms(read_dicom_directory(test_data.FAILING_SLICEINCREMENT)))
Beispiel #57
0
    def test_validate_orthogonal(self):
        validate_orthogonal(read_dicom_directory(test_data.GE_ANATOMICAL))

        self.assertRaises(ConversionValidationError,
                          validate_orthogonal,
                          read_dicom_directory(test_data.FAILING_ORHTOGONAL))