Exemplo n.º 1
0
def _dummy_rdm():
    import PIL
    import matplotlib.markers
    from collections import defaultdict

    markers = list(matplotlib.markers.MarkerStyle().markers.keys())
    images = np.meshgrid(np.linspace(0.5, 1.0, 50), np.linspace(0.5, 1.0, 30),
                         np.linspace(0.5, 1.0, 3))
    images = [
        this_image * this_ind / 4.0 for this_ind in range(4)
        for this_image in images
    ]
    images = [
        PIL.Image.fromarray(255 * this_image, "RGB") for this_image in images
    ]
    names = [
        this_class + this_ex for this_class in ("a", "b", "c", "d")
        for this_ex in ("1", "2", "3")
    ]
    n_con = len(names)
    icons = defaultdict(list)
    for this_marker, this_image, this_name in zip(markers, images, names):
        icons["image"].append(rsv.Icon(image=this_image))
        icons["marker"].append(rsv.Icon(marker=this_marker, color=[0, 0, 0]))
        icons["string"].append(rsv.Icon(string=this_name))
        icons["text"].append(this_name)
    ROIs = ["X", "Y", "Z"]
    return rsr.concat([
        rsr.RDMs(
            dissimilarities=np.random.rand(1, int((n_con - 1) * n_con / 2)),
            dissimilarity_measure="1-rho",
            rdm_descriptors=dict(ROI=this_roi),
            pattern_descriptors=icons,
        ) for this_roi in ROIs
    ])
Exemplo n.º 2
0
 def test_k_fold_rdm(self):
     from rsatoolbox.inference import sets_k_fold_rdm
     import rsatoolbox.rdm as rsr
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     pattern_des = {'category': np.array([0, 1, 2, 2, 3])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     rdm_descriptors=rdm_des,
                     dissimilarity_measure=mes,
                     pattern_descriptors=pattern_des,
                     descriptors=des)
     train_set, test_set, ceil_set = sets_k_fold_rdm(
         rdms, k_rdm=3, rdm_descriptor='session', random=False)
     assert len(test_set) == 3
     assert len(train_set) == 3
     assert len(test_set[0]) == 2
     assert len(train_set[0]) == 2
     assert test_set[0][0].n_cond == 5
     assert test_set[1][0].n_cond == 5
     assert test_set[0][0].n_rdm == 3
     assert test_set[1][0].n_rdm == 3
     assert test_set[2][0].n_rdm == 2
     train_set, test_set, ceil_set = sets_k_fold_rdm(rdms,
                                                     k_rdm=3,
                                                     random=False)
Exemplo n.º 3
0
 def test_rdm2d_init(self):
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'session': 0, 'subj': 0}
     rdms = rsr.RDMs(dissimilarities=dis,
                     dissimilarity_measure=mes,
                     descriptors=des)
     self.assertEqual(rdms.n_rdm, 8)
     self.assertEqual(rdms.n_cond, 5)
Exemplo n.º 4
0
 def test_rdm_idx_len_is_1(self):
     n_rdm, n_cond = 7, 10
     dis = np.zeros((n_rdm, n_cond, n_cond))
     rdms = rsr.RDMs(
         dissimilarities=dis,
         pattern_descriptors={'type': np.array(list(range(n_cond)))},
         dissimilarity_measure='Euclidean',
         descriptors={'subj': range(n_rdm)})
     self.assertEqual(len(rdms[0]), 1)
Exemplo n.º 5
0
 def test_rdm2d_get_vectors(self):
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'session': 0, 'subj': 0}
     rdms = rsr.RDMs(dissimilarities=dis,
                     dissimilarity_measure=mes,
                     descriptors=des)
     v_rdms = rdms.get_vectors()
     self.assertEqual(v_rdms.shape[0], 8)
     self.assertEqual(v_rdms.shape[1], 10)
Exemplo n.º 6
0
 def test_rdm3d_get_matrices(self):
     dis = np.zeros((8, 5, 5))
     mes = "Euclidean"
     des = {'session': 0, 'subj': 0}
     rdms = rsr.RDMs(dissimilarities=dis,
                     dissimilarity_measure=mes,
                     descriptors=des)
     m_rdms = rdms.get_matrices()
     self.assertEqual(m_rdms.shape[0], 8)
     self.assertEqual(m_rdms.shape[1], 5)
     self.assertEqual(m_rdms.shape[2], 5)
Exemplo n.º 7
0
 def test_vis_mds_output_shape_corresponds_to_inputs(self, show_scatter):
     from rsatoolbox.vis.scatter_plot import show_MDS
     dis = np.random.rand(8, 10)
     mes = "Euclidean"
     des = {"session": 0, "subj": 0}
     rdms = rsr.RDMs(dissimilarities=dis,
                     dissimilarity_measure=mes,
                     descriptors=des)
     show_MDS(rdms)
     coords = show_scatter.call_args[0][1]
     self.assertEqual(coords.shape, (8, 5, 2))
Exemplo n.º 8
0
 def test_concat(self):
     from rsatoolbox.rdm import concat
     dis = np.zeros((8, 10))
     dis2 = np.random.rand(8, 10)
     mes = "Euclidean"
     des = {'subj': 0}
     pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     rdms1 = rsr.RDMs(dissimilarities=dis,
                      pattern_descriptors=pattern_des,
                      dissimilarity_measure=mes,
                      descriptors=des,
                      rdm_descriptors=rdm_des)
     rdms2 = rsr.RDMs(dissimilarities=dis2,
                      pattern_descriptors=pattern_des,
                      dissimilarity_measure=mes,
                      descriptors=des,
                      rdm_descriptors=rdm_des)
     rdms = concat((rdms1, rdms2))
     self.assertEqual(rdms.n_rdm, 16)
     assert len(rdms.rdm_descriptors['session']) == 16
Exemplo n.º 9
0
 def test_rdm_subset_len(self):
     subset_idxs = [0, 1, 2]
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     rdm_des = {'session': np.array([0, 1, 2, 3, 4, 5, 6, 7])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     rdm_descriptors=rdm_des,
                     dissimilarity_measure=mes,
                     descriptors=des)
     rdms_subset = rdms.subset('session', np.array(subset_idxs))
     self.assertEqual(len(rdms_subset), len(subset_idxs))
Exemplo n.º 10
0
 def test_rdm_append(self):
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     pattern_descriptors=pattern_des,
                     dissimilarity_measure=mes,
                     descriptors=des,
                     rdm_descriptors=rdm_des)
     rdms.append(rdms)
     self.assertEqual(rdms.n_rdm, 16)
Exemplo n.º 11
0
 def test_rdm_subset_pattern(self):
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     pattern_descriptors=pattern_des,
                     dissimilarity_measure=mes,
                     descriptors=des)
     rdms_subset = rdms.subset_pattern('type', np.array([0, 1, 2]))
     self.assertEqual(rdms_subset.n_rdm, 8)
     self.assertEqual(rdms_subset.n_cond, 4)
     assert_array_equal(rdms_subset.pattern_descriptors['type'],
                        [0, 1, 2, 2])
Exemplo n.º 12
0
 def test_rdm_subset(self):
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     rdm_descriptors=rdm_des,
                     dissimilarity_measure=mes,
                     descriptors=des)
     rdms_subset = rdms.subset('session', np.array([0, 1, 2]))
     self.assertEqual(rdms_subset.n_rdm, 4)
     self.assertEqual(rdms_subset.n_cond, 5)
     assert_array_equal(rdms_subset.rdm_descriptors['session'],
                        [0, 1, 2, 2])
Exemplo n.º 13
0
 def test_concat_varargs_multiple_rdms(self):
     from rsatoolbox.rdm import concat
     dis = np.zeros((8, 10))
     dis2 = np.random.rand(8, 10)
     mes = "Euclidean"
     des = {'subj': 0}
     pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     rdms1 = rsr.RDMs(dissimilarities=dis,
                      pattern_descriptors=pattern_des,
                      dissimilarity_measure=mes,
                      descriptors=des,
                      rdm_descriptors=rdm_des)
     rdms2 = rsr.RDMs(dissimilarities=dis2,
                      pattern_descriptors=pattern_des,
                      dissimilarity_measure=mes,
                      descriptors=des,
                      rdm_descriptors=rdm_des)
     rdm_c1 = concat((rdms1, rdms2))
     rdm_c2 = concat(rdms1, rdms2)
     self.assertEqual(rdm_c1.n_rdm, 16)
     self.assertEqual(rdm_c2.n_rdm, 16)
     assert_array_equal(rdm_c1.dissimilarities, rdm_c2.dissimilarities)
Exemplo n.º 14
0
 def test_concat_varargs_one_rdm(self):
     from rsatoolbox.rdm import concat
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     pattern_descriptors=pattern_des,
                     dissimilarity_measure=mes,
                     descriptors=des,
                     rdm_descriptors=rdm_des)
     rdm_c1 = concat(rdms)
     self.assertEqual(rdm_c1.n_rdm, 8)
     assert_array_equal(rdm_c1.dissimilarities, rdms.dissimilarities)
Exemplo n.º 15
0
 def test_sqrt_transform(self):
     from rsatoolbox.rdm import sqrt_transform
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     rdm_descriptors=rdm_des,
                     pattern_descriptors=pattern_des,
                     dissimilarity_measure=mes,
                     descriptors=des)
     sqrt_rdm = sqrt_transform(rdms)
     self.assertEqual(sqrt_rdm.n_rdm, rdms.n_rdm)
     self.assertEqual(sqrt_rdm.n_cond, rdms.n_cond)
Exemplo n.º 16
0
 def test_rdm_idx(self):
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     pattern_descriptors=pattern_des,
                     dissimilarity_measure=mes,
                     descriptors=des)
     rdms_sample = rdms[2]
     self.assertEqual(rdms_sample.n_rdm, 1)
     assert_array_equal(rdms_sample.dissimilarities[0], dis[2])
     rdms_sample = rdms[3, 4, 5]
     self.assertEqual(rdms_sample.n_rdm, 3)
     assert_array_equal(rdms_sample.dissimilarities[0], dis[3])
Exemplo n.º 17
0
 def test_calc_correlation(self, _parse_input):
     from rsatoolbox.rdm import calc_rdm
     data = Mock()
     data.descriptors = {'session': 0, 'subj': 0}
     data.measurements = np.random.rand(6, 5)
     desc = [0, 1, 2, 3, 4, 5]
     _parse_input.return_value = (data.measurements, desc, 'conds')
     rdm_expected = 1 - np.corrcoef(data.measurements)
     rdme = rsr.RDMs(dissimilarities=np.array([rdm_expected]),
                     dissimilarity_measure='correlation',
                     descriptors=data.descriptors)
     rdm = calc_rdm(data, descriptor='conds', method='correlation')
     self.assertIsNone(
         assert_array_almost_equal(rdme.dissimilarities.flatten(),
                                   rdm.dissimilarities.flatten()))
Exemplo n.º 18
0
 def test_rdm_iter(self):
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     rdm_descriptors=rdm_des,
                     dissimilarity_measure=mes,
                     descriptors=des)
     i = 0
     for rdm in rdms:
         self.assertIsInstance(rdm, rsr.RDMs)
         self.assertEqual(len(rdm), 1)
         assert_array_equal(rdm.dissimilarities, rdms[i].dissimilarities)
         i += 1
     self.assertEqual(i, rdms.n_rdm)
Exemplo n.º 19
0
 def test_vis_weighted_mds_output_behaves_like_mds(self, show_scatter):
     from rsatoolbox.vis.scatter_plot import show_MDS
     dis = np.random.rand(8, 10)
     wes = np.ones((8, 10))
     mes = "Euclidean"
     des = {"session": 0, "subj": 0}
     rdms = rsr.RDMs(dissimilarities=dis,
                     dissimilarity_measure=mes,
                     descriptors=des)
     show_MDS(rdms)
     mds_coords = show_scatter.call_args[0][1]
     show_MDS(rdms, weights=wes)
     wmds_coords = show_scatter.call_args[0][1]
     np.testing.assert_allclose(pdist(mds_coords[0]),
                                pdist(wmds_coords[0]),
                                atol=3e-1)
Exemplo n.º 20
0
 def test_positive_transform(self):
     from rsatoolbox.rdm import positive_transform
     dis = np.random.rand(8, 10) - 0.5
     mes = "Euclidean"
     des = {'subj': 0}
     pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     rdm_descriptors=rdm_des,
                     pattern_descriptors=pattern_des,
                     dissimilarity_measure=mes,
                     descriptors=des)
     pos_rdm = positive_transform(rdms)
     self.assertEqual(pos_rdm.n_rdm, rdms.n_rdm)
     self.assertEqual(pos_rdm.n_cond, rdms.n_cond)
     assert np.all(pos_rdm.dissimilarities >= 0)
Exemplo n.º 21
0
 def test_leave_one_out_rdm(self):
     from rsatoolbox.inference import sets_leave_one_out_rdm
     import rsatoolbox.rdm as rsr
     dis = np.zeros((8, 10))
     mes = "Euclidean"
     des = {'subj': 0}
     rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
     pattern_des = {'category': np.array([0, 1, 2, 2, 3])}
     rdms = rsr.RDMs(dissimilarities=dis,
                     rdm_descriptors=rdm_des,
                     dissimilarity_measure=mes,
                     pattern_descriptors=pattern_des,
                     descriptors=des)
     train_set, test_set, ceil_set = sets_leave_one_out_rdm(rdms)
     for i_test in test_set:
         assert i_test[0].n_rdm == 1
Exemplo n.º 22
0
    def test_transform(self):
        from rsatoolbox.rdm import transform
        dis = np.random.rand(8, 10)
        mes = "Euclidean"
        des = {'subj': 0}
        pattern_des = {'type': np.array([0, 1, 2, 2, 4])}
        rdm_des = {'session': np.array([0, 1, 2, 2, 4, 5, 6, 7])}
        rdms = rsr.RDMs(dissimilarities=dis,
                        rdm_descriptors=rdm_des,
                        pattern_descriptors=pattern_des,
                        dissimilarity_measure=mes,
                        descriptors=des)

        def square(x):
            return x**2

        transformed_rdm = transform(rdms, square)
        self.assertEqual(transformed_rdm.n_rdm, rdms.n_rdm)
        self.assertEqual(transformed_rdm.n_cond, rdms.n_cond)
Exemplo n.º 23
0
 def test_example_dissimilarities(self):
     # relevant imports
     import numpy as np
     from scipy import io
     import rsatoolbox
     import rsatoolbox.data as rsd  # abbreviation to deal with dataset
     import rsatoolbox.rdm as rsr
     # create a dataset object
     measurements = {'simTruePatterns': np.random.randn(92, 100)}
     measurements = measurements['simTruePatterns']
     nCond = measurements.shape[0]
     nVox = measurements.shape[1]
     # now create a  dataset object
     des = {'session': 1, 'subj': 1}
     obs_des = {
         'conds': np.array(['cond_' + str(x) for x in np.arange(nCond)])
     }
     chn_des = {
         'voxels': np.array(['voxel_' + str(x) for x in np.arange(nVox)])
     }
     data = rsd.Dataset(measurements=measurements,
                        descriptors=des,
                        obs_descriptors=obs_des,
                        channel_descriptors=chn_des)
     # calculate an RDM
     RDM_euc = rsr.calc_rdm(data)
     RDM_corr = rsr.calc_rdm(data, method='correlation', descriptor='conds')
     # create an RDM object
     rdm_des = {'RDM': np.array(['RDM_1'])}
     RDM_euc2 = rsr.RDMs(
         RDM_euc.dissimilarities,
         dissimilarity_measure=RDM_euc.dissimilarity_measure,
         descriptors=RDM_euc.descriptors,
         rdm_descriptors=rdm_des,
         pattern_descriptors=obs_des)
     print(RDM_euc.dissimilarities)  # here a vector
     dist_matrix = RDM_euc.get_matrices()
     print(dist_matrix)
Exemplo n.º 24
0
 def test_calc_correlation(self, _parse_input):
     from rsatoolbox.rdm import calc_rdm_unbalanced
     data = rsa.data.Dataset(
         np.random.rand(6, 5),
         descriptors={'session': 0, 'subj': 0},
         obs_descriptors={'conds': [0, 1, 2, 3, 4, 5]}
         )
     rdm_expected = 1 - np.corrcoef(data.measurements)
     rdme = rsr.RDMs(
         dissimilarities=np.array([rdm_expected]),
         dissimilarity_measure='correlation',
         descriptors=data.descriptors)
     rdm = calc_rdm_unbalanced(
         data,
         descriptor='conds',
         method='correlation'
     )
     self.assertIsNone(
         assert_array_almost_equal(
             rdme.dissimilarities.flatten(),
             rdm.dissimilarities.flatten()
         )
     )