Beispiel #1
0
def test_slice_time_image():
    # Test slice timing on image in memory
    n_slices = 4
    n_vols = 5
    TR = 3.5
    vol_times = np.arange(n_vols) * TR
    # Add some random jitter per slice
    slice_times = np.arange(n_slices) * TR / n_slices
    slice_times = slice_times + np.random.normal(0, 0.05, size=(n_slices,))

    # TEST AXIAL
    data = np.random.normal(size=(2, 3, n_slices, n_vols))
    img = nib.Nifti1Image(data, np.eye(4))
    # Test against interpolation with interp_slice
    for order in ('linear', 'cubic', 1, 4):
        interped = np.zeros_like(data)
        for slice_no in range(n_slices):
            orig_times = vol_times + slice_times[slice_no]
            interped[:, :, slice_no, :] = interp_slice(
                orig_times, data[:, :, slice_no, :], vol_times, order)
        interped_img = slice_time_image(img, slice_times, TR, order)
        assert_almost_equal(interped_img.get_data(), interped)

    # TEST SAGITTAL
    data = np.random.normal(size=(n_slices, 2, 3, n_vols))
    img = nib.Nifti1Image(data, np.eye(4))
    for order in ('linear', 'cubic', 1, 4):
        interped = np.zeros_like(data)
        for slice_no in range(n_slices):
            orig_times = vol_times + slice_times[slice_no]
            interped[slice_no, ...] = interp_slice(
                orig_times, data[slice_no, ...], vol_times, order)
        interped_img = slice_time_image(img, slice_times, TR, order,
                                        slice_axis=0)
        assert_almost_equal(interped_img.get_data(), interped)
def test_slice_time_image():
    # Test slice timing on image in memory
    n_slices = 4
    n_vols = 5
    TR = 3.5
    vol_times = np.arange(n_vols) * TR
    # Add some random jitter per slice
    slice_times = np.arange(n_slices) * TR / n_slices
    slice_times = slice_times + np.random.normal(0, 0.05, size=(n_slices, ))

    # TEST AXIAL
    data = np.random.normal(size=(2, 3, n_slices, n_vols))
    img = nib.Nifti1Image(data, np.eye(4))
    # Test against interpolation with interp_slice
    for order in ('linear', 'cubic', 1, 4):
        interped = np.zeros_like(data)
        for slice_no in range(n_slices):
            orig_times = vol_times + slice_times[slice_no]
            interped[:, :, slice_no, :] = interp_slice(orig_times,
                                                       data[:, :, slice_no, :],
                                                       vol_times, order)
        interped_img = slice_time_image(img, slice_times, TR, order)
        assert_almost_equal(interped_img.get_data(), interped)

    # TEST SAGITTAL
    data = np.random.normal(size=(n_slices, 2, 3, n_vols))
    img = nib.Nifti1Image(data, np.eye(4))
    for order in ('linear', 'cubic', 1, 4):
        interped = np.zeros_like(data)
        for slice_no in range(n_slices):
            orig_times = vol_times + slice_times[slice_no]
            interped[slice_no, ...] = interp_slice(orig_times, data[slice_no,
                                                                    ...],
                                                   vol_times, order)
        interped_img = slice_time_image(img,
                                        slice_times,
                                        TR,
                                        order,
                                        slice_axis=0)
        assert_almost_equal(interped_img.get_data(), interped)
Beispiel #3
0
def test_slice_time_file():
    # Test slice_time_file from slice_time_image
    n_slices = 5
    n_vols = 4
    TR = 2.0
    data = np.random.normal(size=(2, 3, n_slices, n_vols))
    img = nib.Nifti1Image(data, np.eye(4))
    slice_times = np.arange(n_slices) * TR / n_slices + 0.1
    tmpdir = tempfile.mkdtemp()
    try:
        fname = os.path.join(tmpdir, 'myfile.nii')
        a_fname = os.path.join(tmpdir, 'amyfile.nii')
        nib.save(img, fname)
        for order in ('linear', 'cubic', 1, 4):
            interped_img = slice_time_image(img, slice_times, TR, order)
            slice_time_file(fname, slice_times, TR, order)
            a_img = nib.load(a_fname)
            assert_almost_equal(interped_img.get_data(), a_img.get_data())
            del a_img
    finally:
        shutil.rmtree(tmpdir)
def test_slice_time_file():
    # Test slice_time_file from slice_time_image
    n_slices = 5
    n_vols = 4
    TR = 2.0
    data = np.random.normal(size=(2, 3, n_slices, n_vols))
    img = nib.Nifti1Image(data, np.eye(4))
    slice_times = np.arange(n_slices) * TR / n_slices + 0.1
    tmpdir = tempfile.mkdtemp()
    try:
        fname = os.path.join(tmpdir, 'myfile.nii')
        a_fname = os.path.join(tmpdir, 'amyfile.nii')
        nib.save(img, fname)
        for order in ('linear', 'cubic', 1, 4):
            interped_img = slice_time_image(img, slice_times, TR, order)
            slice_time_file(fname, slice_times, TR, order)
            a_img = nib.load(a_fname)
            assert_almost_equal(interped_img.get_data(), a_img.get_data())
            del a_img
    finally:
        shutil.rmtree(tmpdir)