def test_standardization(): data_shape = (9, 9, 5) n_samples = 500 signals = np.random.randn(np.prod(data_shape), n_samples) means = np.random.randn(np.prod(data_shape), 1) * 50 + 1000 signals += means img = Nifti1Image(signals.reshape(data_shape + (n_samples, )), np.eye(4)) mask = Nifti1Image(np.ones(data_shape), np.eye(4)) # z-score masker = NiftiMasker(mask, standardize='zscore') trans_signals = masker.fit_transform(img) np.testing.assert_almost_equal(trans_signals.mean(0), 0) np.testing.assert_almost_equal(trans_signals.std(0), 1) # psc masker = NiftiMasker(mask, standardize='psc') trans_signals = masker.fit_transform(img) np.testing.assert_almost_equal(trans_signals.mean(0), 0) np.testing.assert_almost_equal( trans_signals, (signals / signals.mean(1)[:, np.newaxis] * 100 - 100).T)
def test_dtype(): data_32 = np.zeros((9, 9, 9), dtype=np.float32) data_64 = np.zeros((9, 9, 9), dtype=np.float64) data_32[2:-2, 2:-2, 2:-2] = 10 data_64[2:-2, 2:-2, 2:-2] = 10 affine_32 = np.eye(4, dtype=np.float32) affine_64 = np.eye(4, dtype=np.float64) img_32 = Nifti1Image(data_32, affine_32) img_64 = Nifti1Image(data_64, affine_64) masker_1 = NiftiMasker(dtype='auto') assert (masker_1.fit_transform(img_32).dtype == np.float32) assert (masker_1.fit_transform(img_64).dtype == np.float32) masker_2 = NiftiMasker(dtype='float64') assert (masker_2.fit_transform(img_32).dtype == np.float64) assert (masker_2.fit_transform(img_64).dtype == np.float64)
def test_dtype(): data_32 = np.zeros((9, 9, 9), dtype=np.float32) data_64 = np.zeros((9, 9, 9), dtype=np.float64) data_32[2:-2, 2:-2, 2:-2] = 10 data_64[2:-2, 2:-2, 2:-2] = 10 affine_32 = np.eye(4, dtype=np.float32) affine_64 = np.eye(4, dtype=np.float64) img_32 = Nifti1Image(data_32, affine_32) img_64 = Nifti1Image(data_64, affine_64) masker_1 = NiftiMasker(dtype='auto') assert(masker_1.fit_transform(img_32).dtype == np.float32) assert(masker_1.fit_transform(img_64).dtype == np.float32) masker_2 = NiftiMasker(dtype='float64') assert(masker_2.fit_transform(img_32).dtype == np.float64) assert(masker_2.fit_transform(img_64).dtype == np.float64)
def test_resample(): # Check that target_affine triggers the right resampling data = np.zeros((9, 9, 9)) data[3:-3, 3:-3, 3:-3] = 10 img = Nifti1Image(data, np.eye(4)) mask = data.astype(np.int) mask_img = Nifti1Image(mask, np.eye(4)) masker = NiftiMasker(mask_img=mask_img, target_affine=2 * np.eye(3)) # Smoke test the fit X = masker.fit_transform(img) assert_true(np.any(X != 0))
def test_detrend(): # Check that detrending doesn't do something stupid with 3D images data = np.zeros((9, 9, 9)) data[3:-3, 3:-3, 3:-3] = 10 img = Nifti1Image(data, np.eye(4)) mask = data.astype(np.int) mask_img = Nifti1Image(mask, np.eye(4)) masker = NiftiMasker(mask_img=mask_img, detrend=True) # Smoke test the fit X = masker.fit_transform(img) assert_true(np.any(X != 0))
def test_matrix_orientation(): """Test if processing is performed along the correct axis.""" # the "step" kind generate heavyside-like signals for each voxel. # all signals being identical, standardizing along the wrong axis # would leave a null signal. Along the correct axis, the step remains. fmri, mask = testing.generate_fake_fmri(shape=(40, 41, 42), kind="step") masker = NiftiMasker(mask_img=mask, standardize=True, detrend=True) timeseries = masker.fit_transform(fmri) assert (timeseries.shape[0] == fmri.shape[3]) assert (timeseries.shape[1] == mask.get_data().sum()) std = timeseries.std(axis=0) assert (std.shape[0] == timeseries.shape[1]) # paranoid assert (not np.any(std < 0.1)) # Test inverse transform masker = NiftiMasker(mask_img=mask, standardize=False, detrend=False) masker.fit() timeseries = masker.transform(fmri) recovered = masker.inverse_transform(timeseries) np.testing.assert_array_almost_equal(recovered.get_data(), fmri.get_data())
def test_matrix_orientation(): """Test if processing is performed along the correct axis.""" # the "step" kind generate heavyside-like signals for each voxel. # all signals being identical, standardizing along the wrong axis # would leave a null signal. Along the correct axis, the step remains. fmri, mask = testing.generate_fake_fmri(shape=(40, 41, 42), kind="step") masker = NiftiMasker(mask_img=mask, standardize=True, detrend=True) timeseries = masker.fit_transform(fmri) assert(timeseries.shape[0] == fmri.shape[3]) assert(timeseries.shape[1] == mask.get_data().sum()) std = timeseries.std(axis=0) assert(std.shape[0] == timeseries.shape[1]) # paranoid assert(not np.any(std < 0.1)) # Test inverse transform masker = NiftiMasker(mask_img=mask, standardize=False, detrend=False) masker.fit() timeseries = masker.transform(fmri) recovered = masker.inverse_transform(timeseries) np.testing.assert_array_almost_equal(recovered.get_data(), fmri.get_data())