def test_msignal(): # Multi-voxel case ms, ng = msdki.mean_signal_bvalue(DWI, gtab_3s) assert_array_almost_equal(ms, MDWI) assert_array_almost_equal(ng, np.array([3, 64, 64, 64])) # Single-voxel case ms, ng = msdki.mean_signal_bvalue(signal_sph, gtab_3s) assert_array_almost_equal(ng, np.array([3, 64, 64, 64])) assert_array_almost_equal(ms, msignal_sph)
def test_msdki_statistics(): # tests if MD and MK are equal to expected values of a spherical # tensors # Multi-tensors ub = unique_bvals(bvals_3s) design_matrix = msdki.design_matrix(ub) msignal, ng = msdki.mean_signal_bvalue(DWI, gtab_3s, bmag=None) params = msdki.wls_fit_msdki(design_matrix, msignal, ng) assert_array_almost_equal(params[..., 1], MKgt_multi) assert_array_almost_equal(params[..., 0], MDgt_multi) mdkiM = msdki.MeanDiffusionKurtosisModel(gtab_3s) mdkiF = mdkiM.fit(DWI) mk = mdkiF.msk md = mdkiF.msd assert_array_almost_equal(MKgt_multi, mk) assert_array_almost_equal(MDgt_multi, md) # Single-tensors mdkiF = mdkiM.fit(signal_sph) mk = mdkiF.msk md = mdkiF.msd assert_array_almost_equal(MKgt, mk) assert_array_almost_equal(MDgt, md) # Test with given mask mask = np.ones(DWI.shape[:-1]) v = (0, 0, 0) mask[1, 1, 1] = 0 mdkiF = mdkiM.fit(DWI, mask=mask) mk = mdkiF.msk md = mdkiF.msd assert_array_almost_equal(MKgt_multi, mk) assert_array_almost_equal(MDgt_multi, md) assert_array_almost_equal(MKgt_multi[v], mdkiF[v].msk) # tuple case assert_array_almost_equal(MDgt_multi[v], mdkiF[v].msd) # tuple case assert_array_almost_equal(MKgt_multi[0], mdkiF[0].msk) # not tuple case assert_array_almost_equal(MDgt_multi[0], mdkiF[0].msd) # not tuple case # Test returned S0 mdkiM = msdki.MeanDiffusionKurtosisModel(gtab_3s, return_S0_hat=True) mdkiF = mdkiM.fit(DWI) assert_array_almost_equal(S0gt_multi, mdkiF.S0_hat) assert_array_almost_equal(MKgt_multi[v], mdkiF[v].msk)