Beispiel #1
0
 def test_write_4d_single_directory_explicit(self):
     si1 = Series(
         os.path.join('data', 'itk', 'time'),
         'none',
         self.opts)
     with tempfile.TemporaryDirectory() as d:
         si1.write(os.path.join(d, 'Image%05d.mha'), formats=['itk'])
         si2 = Series(d)
     self.assertEqual(si1.dtype, si2.dtype)
     self.assertEqual(si1.shape, si2.shape)
 def test_dicom_template_prog(self):
     # Read the DICOM empty header series,
     # adding DICOM template in Series constructor
     template = Series(os.path.join('data', 'dicom', 'time', 'time00'))
     si1 = Series(os.path.join(self.emptydir.name, 'empty_header'),
                  template=template)
     si2 = Series(os.path.join('data', 'dicom', 'time', 'time00'))
     # Compare constructed series si1 to original series si2
     self.assertEqual(si1.dtype, si2.dtype)
     np.testing.assert_array_equal(si1, si2)
     compare_template_headers(self, si1, si2)
 def test_write_single_file(self):
     si1 = Series(
         os.path.join(
             'data', 'nifti',
             'time_all.zip?time/time_all_fl3d_dynamic_20190207140517_14.nii.gz'
         ))
     with tempfile.TemporaryDirectory() as d:
         si1.write(os.path.join(d, 'nifti.zip'), formats=['nifti'])
         si2 = Series(os.path.join(d, 'nifti.zip?Image.nii.gz'))
     self.assertEqual(si1.dtype, si2.dtype)
     self.assertEqual(si1.shape, si2.shape)
 def test_write_single_file(self):
     si1 = Series(
         os.path.join('data', 'dicom',
                      'time.zip?time/time00/Image_00020.dcm'))
     with tempfile.TemporaryDirectory() as d:
         si1.write(os.path.join(d, 'dicom.zip'), formats=['dicom'])
         si2 = Series(os.path.join(d, 'dicom.zip?Image_00000.dcm'))
     self.assertEqual(si1.dtype, si2.dtype)
     self.assertEqual(si2.dtype, np.uint16)
     self.assertEqual(si1.shape, si2.shape)
     self.assertEqual(si1.studyInstanceUID, si2.studyInstanceUID)
 def test_qform_3D(self):
     dcm = Series(os.path.join('data', 'dicom', 'time', 'time00'))
     self.assertEqual('dicom', dcm.input_format)
     with tempfile.TemporaryDirectory() as d:
         dcm.write(d, formats=['nifti'])
         n = Series(d)
     self.assertEqual('nifti', n.input_format)
     nt = n.transformationMatrix
     self.assertEqual(dcm.shape, n.shape)
     self.assertEqual(dcm.dtype, n.dtype)
     np.testing.assert_allclose(n.transformationMatrix, dcm.transformationMatrix, rtol=1e-2)
 def test_read_2D(self):
     dcm = Series(os.path.join('data', 'dicom', 'time', 'time00'))
     si2 = dcm[0, ...]
     with tempfile.TemporaryDirectory() as d:
         si2.write(d, formats=['nifti'])
         si3 = Series(d, template=si2)
     with tempfile.TemporaryDirectory() as d:
         si3.write(d, formats=['dicom'])
     self.assertEqual(si2.dtype, si3.dtype)
     self.assertEqual(si2.shape, si3.shape)
     np.testing.assert_array_equal(si2, si3)
Beispiel #7
0
    def test_slicing_x(self):
        a1 = np.eye(128)
        a1.shape = (1, 128, 128)
        a = np.vstack([a1, a1, a1])
        s = Series(a)
        s.spacing = (1, 1, 1)
        s.axes[0] = imagedata.axis.UniformLengthAxis('slice', 0, s.shape[0])

        a_slice = a[:, 3:5, ...]
        s_slice = s[:, 3:5, ...]
        np.testing.assert_array_equal(a_slice, s_slice)
        self.assertEqual(s_slice.slices, 3)
Beispiel #8
0
 def test_read_2D(self):
     si1 = Series(os.path.join('data', 'mat', 'time', 'Image_00000.mat'),
                  imagedata.formats.INPUT_ORDER_TIME, self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (3, 3, 192, 152))
     si2 = si1[0, 0, ...]
     with tempfile.TemporaryDirectory() as d:
         si2.write(d, formats=['mat'])
         si3 = Series(d)
     self.assertEqual(si2.dtype, si3.dtype)
     self.assertEqual(si2.shape, si3.shape)
     np.testing.assert_array_equal(si2, si3)
Beispiel #9
0
 def test_copy_dicom_4D(self):
     si = Series(
         os.path.join('data', 'dicom', 'time'),
         imagedata.formats.INPUT_ORDER_TIME,
         self.opts)
     logging.debug("si.sliceLocations: {}".format(si.sliceLocations))
     logging.debug("si.imagePositions.keys(): {}".format(si.imagePositions.keys()))
     newsi = Series(si,
                    imagedata.formats.INPUT_ORDER_TIME)
     compare_headers(self, si, newsi)
     self.assertEqual(newsi.dtype, np.uint16)
     self.assertEqual(newsi.shape, (3, 3, 192, 152))
Beispiel #10
0
    def test_cross_talk(self):
        si = Series('data/dicom/time/time00')
        # print('si before', si.getDicomAttribute('SeriesInstanceUID'), si.seriesInstanceUID)
        si1 = si[0]
        si1.seriesNumber = si.seriesNumber + 10
        self.assertNotEqual(si.seriesNumber, si1.seriesNumber)
        # print('si after', si.getDicomAttribute('SeriesInstanceUID'), si.seriesInstanceUID)
        # print('si1', si1.getDicomAttribute('SeriesInstanceUID'), si1.seriesInstanceUID)
        self.assertNotEqual(si.seriesInstanceUID, si1.seriesInstanceUID)

        si2 = Series('data/dicom/time/time00')
        si2.seriesNumber += 10
        self.assertNotEqual(si.seriesNumber, si2.seriesNumber)
Beispiel #11
0
 def test_slicing_t_neg(self):
     from numpy.random import default_rng
     rng = default_rng()
     s = Series(rng.standard_normal(192).reshape((3, 4, 4, 4)))
     s.spacing = (1, 1, 1)
     s.axes[0] = imagedata.axis.UniformLengthAxis('time', 0, s.shape[0])
     s.axes[1] = imagedata.axis.UniformLengthAxis('slice', 0, s.shape[1])
     np.testing.assert_array_equal(s[2], s[-1])
     np.testing.assert_array_equal(s[1], s[-2])
     np.testing.assert_array_equal(s[0], s[-3])
     np.testing.assert_array_equal(s[1:2], s[1:-1])
     np.testing.assert_array_equal(s[1:2, :, :], s[1:-1, :, :])
     np.testing.assert_array_equal(s[0:1, :, :], s[0:-2, :, :])
Beispiel #12
0
 def test_slicing_x_neg(self):
     from numpy.random import default_rng
     rng = default_rng()
     s = Series(rng.standard_normal(64).reshape((4, 4, 4)))
     s.spacing = (1, 1, 1)
     s.axes[0] = imagedata.axis.UniformLengthAxis('slice', 0, s.shape[0])
     np.testing.assert_array_equal(s[:, :, 3], s[:, :, -1])
     np.testing.assert_array_equal(s[:, :, 2], s[:, :, -2])
     np.testing.assert_array_equal(s[:, :, 1], s[:, :, -3])
     np.testing.assert_array_equal(s[:, :, 0], s[:, :, -4])
     np.testing.assert_array_equal(s[:, :, 2:3], s[:, :, 2:-1])
     np.testing.assert_array_equal(s[:, :, 1:2], s[:, :, 1:-2])
     np.testing.assert_array_equal(s[:, :, 0:2], s[:, :, 0:-2])
Beispiel #13
0
    def test_slicing_dim(self):
        a1 = np.eye(128)
        a1.shape = (1, 128, 128)
        a = np.vstack([a1, a1, a1, a1, a1])
        s = Series(a)
        s.spacing = (1, 1, 1)
        s.axes[0] = imagedata.axis.UniformLengthAxis('slice', 0, s.shape[0])

        s_slice = s[2]
        self.assertEqual(s_slice.ndim, 2)
        self.assertEqual(len(s_slice.axes), 2)
        self.assertEqual(s_slice.axes[0].name, 'row')
        self.assertEqual(s_slice.axes[1].name, 'column')
Beispiel #14
0
    def test_set_axes(self):
        si1 = Series('data/dicom/time/time00')

        shape = si1.shape + (3, )
        img = np.zeros(shape, dtype=np.uint8)
        img[..., 0] = si1[:]
        img[..., 1] = si1[:]
        img[..., 2] = si1[:]

        rgb = Series(img,
                     geometry=si1,
                     axes=si1.axes +
                     [imagedata.axis.VariableAxis('rgb', ['r', 'g', 'b'])])
 def test_transport_single_image(self):
     si1 = Series(
         os.path.join('data', 'dicom', 'time', 'time00', 'Image_00020.dcm')
     )
     self.assertEqual((192, 152), si1.shape)
     si1.write('dicom://localhost:11112/Temp', formats=['dicom'])
     si2 = Series(
         scpdir.name
     )
     # compare_headers(obj, si1, si2)
     self.assertEqual(si1.dtype, si2.dtype)
     self.assertEqual(si1.shape, si2.shape)
     np.testing.assert_array_equal(si1, si2)
 def test_write_single_file(self):
     si1 = Series(
         os.path.join(
             'data',
             'nifti',
             'time_all',
             'time_all_fl3d_dynamic_20190207140517_14.nii.gz'),
         'time',
         self.opts)
     with tempfile.TemporaryDirectory() as d:
         si1.write(d + '?Image%1d.nii.gz', formats=['nifti'])
         si2 = Series(os.path.join(d, 'Image0.nii.gz'), 'time')
     self.assertEqual(si1.dtype, si2.dtype)
     self.assertEqual(si1.shape, si2.shape)
 def test_compare_qform_to_dicom(self):
     dcm = Series(
         os.path.join('data', 'dicom', 'time'),
         'time')
     self.assertEqual('dicom', dcm.input_format)
     dt = dcm.transformationMatrix
     n = Series(
         os.path.join('data', 'nifti', 'time', 'time_all_fl3d_dynamic_20190207140517_14.nii.gz'),
         'time')
     self.assertEqual('nifti', n.input_format)
     nt = n.transformationMatrix
     self.assertEqual(dcm.shape, n.shape)
     # obj.assertEqual(dcm.dtype, n.dtype)
     np.testing.assert_allclose(n.transformationMatrix, dcm.transformationMatrix, rtol=1e-3)
Beispiel #18
0
 def test_slicing_z_neg(self):
     from numpy.random import default_rng
     rng = default_rng()
     s = Series(rng.standard_normal(64).reshape((4, 4, 4)))
     s.spacing = (1, 1, 1)
     s.axes[0] = imagedata.axis.UniformLengthAxis('slice', 0, s.shape[0])
     np.testing.assert_array_equal(s[3, :, :], s[-1, :, :])
     np.testing.assert_array_equal(s[2, :, :], s[-2, :, :])
     np.testing.assert_array_equal(s[1, :, :], s[-3, :, :])
     np.testing.assert_array_equal(s[0, :, :], s[-4, :, :])
     np.testing.assert_array_equal(s[2:3], s[2:-1])
     np.testing.assert_array_equal(s[2:3, :, :], s[2:-1, :, :])
     np.testing.assert_array_equal(s[1:2, :, :], s[1:-2, :, :])
     np.testing.assert_array_equal(s[0:2, :, :], s[0:-2, :, :])
Beispiel #19
0
 def test_read_2D(self):
     si1 = Series(
         os.path.join('data', 'itk', 'time', 'Image_00000.mha'),
         'none',
         self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (3, 192, 152))
     si2 = si1[0, ...]
     with tempfile.TemporaryDirectory() as d:
         si2.write(os.path.join(d, '?Image.mha'), formats=['itk'])
         si3 = Series(d)
     self.assertEqual(si2.dtype, si3.dtype)
     self.assertEqual(si2.shape, si3.shape)
     np.testing.assert_array_equal(si2, si3)
 def test_transport_cget_series(self):
     patID = '123456'
     stuInsUID = '1.2.3.4'
     serInsUID = '1.2.3.4.5'
     accno = '98765'
     serNum = 4
     si1 = Series('dicom://localhost:11112/Temp/{}/{}/{}'.format(
         patID, stuInsUID, serInsUID
     ))
     print(si1.shape, si1.spacing, si1.patientName, si1.accessionNumber, si1.seriesNumber)
     si2 = Series('dicom://localhost:11112/Temp/{}/{}/{}'.format(
         patID, accno, serNum
     ))
     print(si2.shape, si2.spacing, si2.patientName, si2.accessionNumber, si2.seriesNumber)
Beispiel #21
0
    def test_write_4d_mat(self):
        si1 = Series(os.path.join('data', 'mat', 'time', 'Image_00000.mat'),
                     imagedata.formats.INPUT_ORDER_TIME, self.opts)
        self.assertEqual(si1.dtype, np.uint16)
        self.assertEqual(si1.shape, (3, 3, 192, 152))
        with tempfile.TemporaryDirectory() as d:
            si1.write(os.path.join(d, 'mat?Image_%05d'),
                      formats=['mat'],
                      opts=self.opts)

            # Read back the MAT data and compare to original si1
            si2 = Series(os.path.join(d, 'mat', 'Image_00000.mat'),
                         imagedata.formats.INPUT_ORDER_TIME, self.opts)
        self.assertEqual(si1.shape, si2.shape)
        np.testing.assert_array_equal(si1, si2)
Beispiel #22
0
 def test_read_single_directory(self):
     si1 = Series(
         os.path.join('data', 'dicom', 'time', 'time00'),
         'none',
         self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (3, 192, 152))
Beispiel #23
0
 def test_read_all_files(self):
     si1 = Series(
         os.path.join('data', 'dicom', 'time.zip?time/'),
         imagedata.formats.INPUT_ORDER_TIME,
         self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (3, 3, 192, 152))
Beispiel #24
0
 def test_read_two_files(self):
     si1 = Series(
         os.path.join('data', 'dicom', 'time.zip?time/time00/Image_0002[01].dcm'),
         'none',
         self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (2, 192, 152))
Beispiel #25
0
 def test_read_single_file_wildcard(self):
     si1 = Series(
         os.path.join('data', 'dicom', 'time.zip?*time00/Image_00020.dcm'),
         'none',
         self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (192, 152))
 def test_zipread_all_files(self):
     si1 = Series(
         os.path.join('data', 'nifti', 'time_all.zip'),
         imagedata.formats.INPUT_ORDER_TIME,
         self.opts)
     self.assertEqual(si1.dtype, np.int16)
     self.assertEqual(si1.shape, (3, 3, 192, 152))
Beispiel #27
0
 def test_read_two_files(self):
     si1 = Series([
         os.path.join('data', 'mat', 'time', 'Image_00000.mat'),
         os.path.join('data', 'mat', 'time', 'Image_00000.mat')
     ], imagedata.formats.INPUT_ORDER_TIME, self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (2, 3, 3, 192, 152))
 def test_read_two_files2(self):
     si1 = Series(
         os.path.join('data', 'dicom',
                      'time.zip?*0[01]/Image_0002[01].dcm'),
         imagedata.formats.INPUT_ORDER_TIME, self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (2, 2, 192, 152))
Beispiel #29
0
 def test_read_single_directory(self):
     si1 = Series(
         os.path.join('data', 'itk', 'time'),
         imagedata.formats.INPUT_ORDER_TIME,
         self.opts)
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (3, 3, 192, 152))
Beispiel #30
0
 def test_read_single_file(self):
     si1 = Series(
         os.path.join('data', 'dicom', 'time', 'time00', 'Image_00020.dcm'),
         'none',
         self.opts)
     self.assertEqual(si1.input_format, 'dicom')
     self.assertEqual(si1.dtype, np.uint16)
     self.assertEqual(si1.shape, (192, 152))