コード例 #1
0
ファイル: test_generate.py プロジェクト: dmcnamee/kabuki
    def test_add_noise(self):
        noise = 1
        params = OrderedDict([('loc', 0), ('scale', 1)])
        np.random.seed(31337)
        new_params = _add_noise({'test': params}, noise=noise)['test']

        # check if copied
        self.assertFalse(new_params is params)

        # check if noise correctly added
        np.random.seed(31337)
        self.assertTrue(new_params['loc'] == np.random.normal(loc=params['loc'], scale=noise))
        self.assertTrue(new_params['scale'] == np.random.normal(loc=params['scale'], scale=noise))

        # test whether exclude works
        new_params = _add_noise({'test': params}, noise=noise, exclude_params=('scale',))['test']
        self.assertTrue(new_params['scale'] == 1)

        # test whether bounds work
        for i in range(10):
            bound_params = _add_noise({'test': params}, bounds={'loc': (-1, 1), 'scale': (0, 2)}, noise=3)['test']
            assert (bound_params['loc'] > -1) and (bound_params['loc'] < 1)
            assert (bound_params['scale'] > 0) and (bound_params['scale'] < 2)

        # test whether valid_func works
        check_valid_func = lambda **params: (params['loc'] > -1) and (params['loc'] < 1) and (params['scale'] > 0) and (params['scale'] < 2)
        for i in range(10):
            bound_params = _add_noise({'test': params}, check_valid_func=check_valid_func, noise=3)['test']
            assert (bound_params['loc'] > -1) and (bound_params['loc'] < 1)
            assert (bound_params['scale'] > 0) and (bound_params['scale'] < 2)
コード例 #2
0
ファイル: test_generate.py プロジェクト: vishalbelsare/kabuki
    def test_single_cond_multi_subjs(self):
        params = OrderedDict([('loc', 0), ('scale', 1)])
        subjs = 3
        size = 100

        # generate test data
        seed = 31337
        data, params_subjs = gen_rand_data(gen_func_df,
                                           params,
                                           size=size,
                                           subjs=subjs,
                                           seed=seed)

        # test subj present
        np.testing.assert_array_equal(np.unique(data['subj_idx']),
                                      list(range(subjs)))

        # test for correct length
        np.testing.assert_array_equal(len(data), subjs * size)

        # generate truth
        np.random.seed(seed)
        for i in range(subjs):
            new_params = _add_noise({'test': params})['test']
            print("check", new_params)
            truth = gen_func_df(size=size, **new_params)
            np.testing.assert_array_equal(data[data['subj_idx'] == i]['data'],
                                          truth['data'])
            self.assertEqual(params_subjs[i], new_params)
コード例 #3
0
ファイル: test_generate.py プロジェクト: rkern/kabuki
    def test_add_noise(self):
        noise = 1
        params = OrderedDict([("loc", 0), ("scale", 1)])
        np.random.seed(31337)
        new_params = _add_noise(params, noise=noise)

        # check if copied
        self.assertFalse(new_params is params)

        # check if noise correctly added
        np.random.seed(31337)
        self.assertTrue(new_params["loc"] == np.random.normal(loc=params["loc"], scale=noise))
        self.assertTrue(new_params["scale"] == np.random.normal(loc=params["scale"], scale=noise))

        # test whether exclude works
        new_params = _add_noise(params, noise=noise, exclude_params=("scale",))
        self.assertTrue(new_params["scale"] == 1)
コード例 #4
0
ファイル: test_generate.py プロジェクト: vishalbelsare/kabuki
    def test_add_noise(self):
        noise = 1
        params = OrderedDict([('loc', 0), ('scale', 1)])
        np.random.seed(31337)
        new_params = _add_noise({'test': params}, noise=noise)['test']

        # check if copied
        self.assertFalse(new_params is params)

        # check if noise correctly added
        np.random.seed(31337)
        self.assertTrue(new_params['loc'] == np.random.normal(
            loc=params['loc'], scale=noise))
        self.assertTrue(new_params['scale'] == np.random.normal(
            loc=params['scale'], scale=noise))

        # test whether exclude works
        new_params = _add_noise({'test': params},
                                noise=noise,
                                exclude_params=('scale', ))['test']
        self.assertTrue(new_params['scale'] == 1)

        # test whether bounds work
        for i in range(10):
            bound_params = _add_noise({'test': params},
                                      bounds={
                                          'loc': (-1, 1),
                                          'scale': (0, 2)
                                      },
                                      noise=3)['test']
            assert (bound_params['loc'] > -1) and (bound_params['loc'] < 1)
            assert (bound_params['scale'] > 0) and (bound_params['scale'] < 2)

        # test whether valid_func works
        check_valid_func = lambda **params: (params['loc'] > -1) and (params[
            'loc'] < 1) and (params['scale'] > 0) and (params['scale'] < 2)
        for i in range(10):
            bound_params = _add_noise({'test': params},
                                      check_valid_func=check_valid_func,
                                      noise=3)['test']
            assert (bound_params['loc'] > -1) and (bound_params['loc'] < 1)
            assert (bound_params['scale'] > 0) and (bound_params['scale'] < 2)
コード例 #5
0
ファイル: test_generate.py プロジェクト: rkern/kabuki
    def test_single_cond_multi_subjs_exclude(self):
        params = OrderedDict([("loc", 0), ("scale", 1)])
        subjs = 100
        samples = 100

        # generate test data
        np.random.seed(31337)
        data, params_subjs = gen_rand_data(normal_like, params, samples=samples, subjs=subjs, exclude_params=("scale",))

        # test subj present
        np.testing.assert_array_equal(np.unique(data["subj_idx"]), range(subjs))

        # test for correct length
        np.testing.assert_array_equal(len(data), subjs * samples)

        # generate truth
        np.random.seed(31337)
        for i in range(subjs):
            new_params = _add_noise(params, exclude_params=("scale",))
            truth = np.float64(normal_like.rv.random(size=samples, **new_params))
            np.testing.assert_array_equal(data[data["subj_idx"] == i]["data"], truth)
            self.assertEqual(params_subjs[i], new_params)
コード例 #6
0
ファイル: test_generate.py プロジェクト: dmcnamee/kabuki
    def test_single_cond_multi_subjs_exclude(self):
        params = OrderedDict([('loc', 0), ('scale', 1)])
        subjs = 3
        size = 100

        # generate test data
        seed = 31337
        data, params_subjs = gen_rand_data(gen_func_df, params, size=size, subjs=subjs,
                                           exclude_params=('scale',), seed=seed)

        # test subj present
        np.testing.assert_array_equal(np.unique(data['subj_idx']), range(subjs))

        # test for correct length
        np.testing.assert_array_equal(len(data), subjs*size)

        # generate truth
        np.random.seed(seed)
        for i in range(subjs):
            new_params = _add_noise({'test': params}, exclude_params=('scale',))['test']
            truth = gen_func_df(size=size, **new_params)
            np.testing.assert_array_equal(data[data['subj_idx'] == i]['data'], truth['data'])
            self.assertEqual(params_subjs[i], new_params)