def test_PDistTargetSimilaritySearchlight(): # Test ability to use PDistTargetSimilarity in a searchlight from mvpa2.testing.datasets import datasets from mvpa2.mappers.fx import mean_group_sample from mvpa2.mappers.shape import TransposeMapper from mvpa2.measures.searchlight import sphere_searchlight ds = datasets['3dsmall'][:, :3] ds.fa['voxel_indices'] = ds.fa.myspace # use chunks values (4 of them) for targets ds.sa['targets'] = ds.sa.chunks ds = mean_group_sample(['chunks'])(ds) tdsm = np.arange(6) # We can run on full dataset tdcm1 = PDistTargetSimilarity(tdsm) a1 = tdcm1(ds) assert_array_equal(a1.fa.metrics, ['rho', 'p']) tdcm1_rho = PDistTargetSimilarity(tdsm, corrcoef_only=True) sl_rho = sphere_searchlight(tdcm1_rho)(ds) assert_array_equal(sl_rho.shape, (1, ds.nfeatures)) # now with both but we need to transpose datasets tdcm1_both = PDistTargetSimilarity(tdsm, postproc=TransposeMapper()) sl_both = sphere_searchlight(tdcm1_both)(ds) assert_array_equal(sl_both.shape, (2, ds.nfeatures)) assert_array_equal(sl_both.sa.metrics, ['rho', 'p']) # rho must be exactly the same assert_array_equal(sl_both.samples[0], sl_rho.samples[0]) # just because we are here and we can # Actually here for some reason assert_array_lequal gave me a trouble assert_true(np.all(sl_both.samples[1] <= 1.0)) assert_true(np.all(0 <= sl_both.samples[1]))
def test_transpose(): from mvpa2.mappers.shape import TransposeMapper ds = Dataset(np.arange(24).reshape(2, 3, 4), sa={"testsa": np.arange(2)}, fa={"testfa": np.arange(3)}) tp = TransposeMapper() tds = tp(ds) assert_equal(tds.shape, (3, 2, 4)) assert_true("testfa" in tds.sa) assert_true("testsa" in tds.fa) assert_false(tds.fa is tds.sa) # and back ttds = tp(tds) assert_array_equal(ttds.samples, ds.samples) assert_equal(ttds.sa, ds.sa) assert_equal(ttds.fa, ds.fa) # or this way rds = tp.reverse(tds) assert_array_equal(rds.samples, ds.samples) assert_equal(rds.sa, ds.sa) assert_equal(rds.fa, ds.fa) assert_array_equal(rds.samples, ttds.samples) assert_equal(rds.sa, ttds.sa) assert_equal(rds.fa, ttds.fa)
def test_transpose(): from mvpa2.mappers.shape import TransposeMapper ds = Dataset(np.arange(24).reshape(2, 3, 4), sa={'testsa': np.arange(2)}, fa={'testfa': np.arange(3)}) tp = TransposeMapper() tds = tp(ds) assert_equal(tds.shape, (3, 2, 4)) assert_true('testfa' in tds.sa) assert_true('testsa' in tds.fa) assert_false(tds.fa is tds.sa) # and back ttds = tp(tds) assert_array_equal(ttds.samples, ds.samples) assert_equal(ttds.sa, ds.sa) assert_equal(ttds.fa, ds.fa) # or this way rds = tp.reverse(tds) assert_array_equal(rds.samples, ds.samples) assert_equal(rds.sa, ds.sa) assert_equal(rds.fa, ds.fa) assert_array_equal(rds.samples, ttds.samples) assert_equal(rds.sa, ttds.sa) assert_equal(rds.fa, ttds.fa)
'Most consistent searchlight pattern correlation distances') """ It is all in the face! It would be interesting to know where in the brain dissimilarity structures can be found that are similar to this one. PDistTargetSimilarity() can be used to discover this kind of information with any kind of target dissimilarity structure. We need to transpose the result for aggregation into a searchlight map, as PDistTargetSimilarity can return more features than just the correlation coefficient. """ # let's see where in the brain we find dissimilarity structures that are # similar to our most stable one tdsm = rsa.PDistTargetSimilarity( slres.samples[:, mean_consistency.argmax()]) # using a searchlight from mvpa2.base.learner import ChainLearner from mvpa2.mappers.shape import TransposeMapper sl_tdsm = sphere_searchlight(ChainLearner([tdsm, TransposeMapper()]), 2) slres_tdsm = sl_tdsm(mtds) """ Lastly, we can map this result back onto the 3D voxel grid, and overlay it onto the brain anatomy. """ # plot the spatial distribution using NiPy vol = ds.a.mapper.reverse1(slres_tdsm.samples[0]) import nibabel as nb anat = nb.load(pjoin(datapath, 'sub001', 'anatomy', 'highres001.nii.gz')) from nipy.labs.viz_tools.activation_maps import plot_map pl.figure(figsize=(15, 4)) sp = pl.subplot(121) pl.title('Distribution of target similarity structure correlation')