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)
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)
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)
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)
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)
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)