def test_cosmo_do_not_store_unsupported_datatype(): ds = Dataset(np.zeros((0, 0))) class ArbitraryClass(object): pass ds.a['unused'] = ArbitraryClass() c = cosmo.map2cosmo(ds) assert_false('a' in c.keys()) ds.a['foo'] = np.zeros((1,)) c = cosmo.map2cosmo(ds) assert_true('a' in c.keys())
def test_cosmo_dataset(fn): skip_if_no_external('scipy', min_version='0.8') mat = _create_small_mat_dataset_dict() ds_mat = cosmo.from_any(mat) savemat(fn, mat) # test Dataset, filename, dict in matlab form, and input from loadmat for input in (ds_mat, fn, mat, loadmat(fn)): # check dataset creation ds = cosmo.from_any(mat) # ensure dataset has expected vlaues assert_array_equal(ds.samples, mat['samples']) _assert_set_equal(ds.sa.keys(), ['chunks', 'labels', 'targets']) _assert_set_equal(ds.sa.keys(), ['chunks', 'labels', 'targets']) _assert_set_equal(ds.a.keys(), ['name']) assert_array_equal(ds.a.name, 'input') assert_array_equal(ds.sa.chunks, [2, 2]) assert_array_equal(ds.sa.targets, [1, 2]) assert_array_equal(ds.sa.labels, ['yin', 'yan']) assert_array_equal(ds.fa.i, [3, 2, 1]) assert_array_equal(ds.fa.j, [1, 2, 2]) # check mapping to matlab format mat_mapped = cosmo.map2cosmo(ds) for m in (mat, mat_mapped): assert_array_equal(ds_mat.samples, m['samples']) _assert_ds_mat_attributes_equal(ds_mat, m)
def test_fmri_to_cosmo(): skip_if_no_external('nibabel') from mvpa2.datasets.mri import fmri_dataset # test exporting an fMRI dataset to CoSMoMVPA pymvpa_ds = fmri_dataset( samples=pathjoin(pymvpa_dataroot, 'example4d.nii.gz'), targets=[1, 2], sprefix='voxel') cosmomvpa_struct = cosmo.map2cosmo(pymvpa_ds) _assert_set_equal(cosmomvpa_struct.keys(), ['a', 'fa', 'sa', 'samples']) a_dict = dict(_obj2tup(cosmomvpa_struct['a'])) mri_keys = ['imgaffine', 'voxel_eldim', 'voxel_dim'] _assert_subset(mri_keys, a_dict.keys()) for k in mri_keys: c_value = a_dict[k] p_value = pymvpa_ds.a[k].value if isinstance(p_value, tuple): c_value = c_value.ravel() p_value = np.asarray(p_value).ravel() assert_array_almost_equal(c_value, p_value) fa_dict = dict(_obj2tup(cosmomvpa_struct['fa'])) fa_keys = ['voxel_indices'] _assert_set_equal(fa_dict.keys(), fa_keys) for k in fa_keys: assert_array_almost_equal(fa_dict[k].T, pymvpa_ds.fa[k].value)
def test_cosmo_dataset(fn): skip_if_no_external('scipy', min_version='0.8') mat = _create_small_mat_dataset_dict() ds_mat = cosmo.from_any(mat) savemat(fn, mat) # test Dataset, filename, dict in matlab form, and input from loadmat for input in (ds_mat, fn, mat, loadmat(fn)): # check dataset creation ds = cosmo.from_any(mat) # ensure dataset has expected vlaues assert_array_equal(ds.samples, mat['samples']) _assert_set_equal(ds.sa.keys(), ['chunks', 'labels', 'targets']) _assert_set_equal(ds.sa.keys(), ['chunks', 'labels', 'targets']) _assert_set_equal(ds.a.keys(), ['name', 'size']) assert_array_equal(ds.a.name, 'input') assert_array_equal(ds.a.size, [3, 2, 1]) assert_array_equal(ds.sa.chunks, [2, 2]) assert_array_equal(ds.sa.targets, [1, 2]) assert_array_equal(ds.sa.labels, ['yin', 'yan']) assert_array_equal(ds.fa.i, [3, 2, 1]) assert_array_equal(ds.fa.j, [1, 2, 2]) for convert_tuples in (True, False): ds_copy = ds.copy(deep=True) if convert_tuples: # use dataset with tuple data ds_copy.a.size = tuple(ds_copy.a.size) # check mapping to matlab format mat_mapped = cosmo.map2cosmo(ds_copy) for m in (mat, mat_mapped): assert_array_equal(ds_mat.samples, m['samples']) _assert_ds_mat_attributes_equal(ds_mat, m)
def load_save(fn): print('Running on {0}'.format(fn)) ds = h5load(fn) assert(len(mask.fa.voxel_indices) == len(ds.fa.center_ids)) ds.fa['voxel_indices'] = mask.fa.voxel_indices _ = map2cosmo(ds, fn.replace('hdf5', 'mat'))
def test_cosmo_empty_dataset(): ds = Dataset(np.zeros((0, 0))) c = cosmo.map2cosmo(ds) assert_equal(c['samples'].shape, (0, 0))