def test_reweighting(): my_obs = pe.Obs([np.random.rand(1000)], ['t']) assert not my_obs.reweighted r_obs = pe.reweight(my_obs, [my_obs]) assert r_obs[0].reweighted r_obs2 = r_obs[0] * my_obs assert r_obs2.reweighted my_irregular_obs = pe.Obs([np.random.rand(500)], ['t'], idl=[range(1, 1001, 2)]) assert not my_irregular_obs.reweighted r_obs = pe.reweight(my_obs, [my_irregular_obs], all_configs=True) r_obs = pe.reweight(my_obs, [my_irregular_obs], all_configs=False) r_obs = pe.reweight(my_obs, [my_obs]) assert r_obs[0].reweighted r_obs2 = r_obs[0] * my_obs assert r_obs2.reweighted my_covobs = pe.cov_Obs(1.0, 0.003, 'cov') with pytest.raises(Exception): pe.reweight(my_obs, [my_covobs]) my_obs2 = pe.Obs([np.random.rand(1000)], ['t2']) with pytest.raises(Exception): pe.reweight(my_obs, [my_obs + my_obs2]) with pytest.raises(Exception): pe.reweight(my_irregular_obs, [my_obs])
def test_multi_dot(): for dim in [4, 6]: my_list = [] length = 1000 + np.random.randint(200) for i in range(dim**2): my_list.append( pe.Obs([np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2'])) my_array = pe.cov_Obs(1.0, 0.002, 'cov') * np.array(my_list).reshape( (dim, dim)) tt = pe.linalg.matmul( my_array, my_array, my_array, my_array) - my_array @ my_array @ my_array @ my_array for t, e in np.ndenumerate(tt): assert e.is_zero(), t my_list = [] length = 1000 + np.random.randint(200) for i in range(dim**2): my_list.append( pe.CObs( pe.Obs( [np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']), pe.Obs( [np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2']))) my_array = np.array(my_list).reshape( (dim, dim)) * pe.cov_Obs(1.0, 0.002, 'cov') tt = pe.linalg.matmul( my_array, my_array, my_array, my_array) - my_array @ my_array @ my_array @ my_array for t, e in np.ndenumerate(tt): assert e.is_zero(), t
def test_matmul_irregular_histories(): dim = 2 length = 500 standard_array = [] for i in range(dim**2): standard_array.append( pe.Obs([np.random.normal(1.1, 0.2, length)], ['ens1'])) standard_matrix = np.array(standard_array).reshape( (dim, dim)) * pe.cov_Obs(1.0, 0.002, 'cov') * pe.pseudo_Obs( 0.1, 0.002, 'qr') for idl in [range(1, 501, 2), range(250, 273), [2, 8, 19, 20, 78]]: irregular_array = [] for i in range(dim**2): irregular_array.append( pe.Obs([np.random.normal(1.1, 0.2, len(idl))], ['ens1'], idl=[idl])) irregular_matrix = np.array(irregular_array).reshape( (dim, dim)) * pe.cov_Obs( [1.0, 1.0], [[0.001, 0.0001], [0.0001, 0.002]], 'norm')[0] t1 = standard_matrix @ irregular_matrix t2 = pe.linalg.matmul(standard_matrix, irregular_matrix) assert np.all([o.is_zero() for o in (t1 - t2).ravel()]) assert np.all([o.is_merged for o in t1.ravel()]) assert np.all([o.is_merged for o in t2.ravel()])
def test_json_corr_io(): my_list = [ pe.Obs([np.random.normal(1.0, 0.1, 100)], ['ens1']) for o in range(8) ] rw_list = pe.reweight(pe.Obs([np.random.normal(1.0, 0.1, 100)], ['ens1']), my_list) for obs_list in [my_list, rw_list]: for tag in [None, "test"]: obs_list[3].tag = tag for pad in [0, 2]: for corr_tag in [None, 'my_Corr_tag']: for prange in [None, [3, 6]]: for gap in [False, True]: my_corr = pe.Corr(obs_list, padding=[pad, pad], prange=prange) my_corr.tag = corr_tag if gap: my_corr.content[4] = None pe.input.json.dump_to_json(my_corr, 'corr') recover = pe.input.json.load_json('corr') os.remove('corr.json.gz') assert np.all([ o.is_zero() for o in [ x for x in (my_corr - recover) if x is not None ] ]) for index, entry in enumerate(my_corr): if entry is None: assert recover[index] is None assert my_corr.tag == recover.tag assert my_corr.prange == recover.prange assert my_corr.reweighted == recover.reweighted
def test_gamma_method_kwargs(): my_obs = pe.Obs([np.random.normal(1, 0.8, 5)], ['ens'], idl=[[1, 2, 3, 6, 17]]) pe.Obs.S_dict['ens13.7'] = 3 my_obs.gamma_method() assert my_obs.S['ens'] == pe.Obs.S_global assert my_obs.tau_exp['ens'] == pe.Obs.tau_exp_global assert my_obs.N_sigma['ens'] == pe.Obs.N_sigma_global my_obs.gamma_method(S=3.71) assert my_obs.S['ens'] == 3.71 assert my_obs.tau_exp['ens'] == pe.Obs.tau_exp_global assert my_obs.N_sigma['ens'] == pe.Obs.N_sigma_global my_obs.gamma_method(tau_exp=17) assert my_obs.S['ens'] == pe.Obs.S_global assert my_obs.tau_exp['ens'] == 17 assert my_obs.N_sigma['ens'] == pe.Obs.N_sigma_global my_obs.gamma_method(tau_exp=1.7, N_sigma=2.123) assert my_obs.S['ens'] == pe.Obs.S_global assert my_obs.tau_exp['ens'] == 1.7 assert my_obs.N_sigma['ens'] == 2.123 pe.Obs.S_dict['ens'] = 3 pe.Obs.S_dict['ens|23'] = 7 my_obs.gamma_method() assert my_obs.S['ens'] == pe.Obs.S_dict['ens'] == 3 assert my_obs.tau_exp['ens'] == pe.Obs.tau_exp_global assert my_obs.N_sigma['ens'] == pe.Obs.N_sigma_global pe.Obs.tau_exp_dict['ens'] = 4 pe.Obs.N_sigma_dict['ens'] = 4 my_obs.gamma_method() assert my_obs.S['ens'] == pe.Obs.S_dict['ens'] == 3 assert my_obs.tau_exp['ens'] == pe.Obs.tau_exp_dict['ens'] == 4 assert my_obs.N_sigma['ens'] == pe.Obs.N_sigma_dict['ens'] == 4 my_obs.gamma_method(S=1.1, tau_exp=1.2, N_sigma=1.3) assert my_obs.S['ens'] == 1.1 assert my_obs.tau_exp['ens'] == 1.2 assert my_obs.N_sigma['ens'] == 1.3 pe.Obs.S_dict = {} pe.Obs.tau_exp_dict = {} pe.Obs.N_sigma_dict = {} my_obs = pe.Obs([np.random.normal(1, 0.8, 5)], ['ens']) my_obs.gamma_method() assert my_obs.S['ens'] == pe.Obs.S_global assert my_obs.tau_exp['ens'] == pe.Obs.tau_exp_global assert my_obs.N_sigma['ens'] == pe.Obs.N_sigma_global
def test_b_cmatmul(benchmark): dim = 4 my_list = [] for i in range(dim**2): my_list.append( pe.CObs(pe.Obs([np.random.rand(length)], ['t1']), pe.Obs([np.random.rand(length)], ['t1']))) my_array = np.array(my_list).reshape((dim, dim)) benchmark(pe.linalg.matmul, my_array, my_array)
def get_complex_matrix(dimension): base_matrix = np.empty((dimension, dimension), dtype=object) for (n, m), entry in np.ndenumerate(base_matrix): exponent_real = np.random.normal(0, 1) exponent_imag = np.random.normal(0, 1) base_matrix[n, m] = pe.CObs( pe.Obs([np.random.normal(1.0, 0.1, 100)], ['t']), pe.Obs([np.random.normal(1.0, 0.1, 100)], ['t'])) return base_matrix
def test_merge_obs(): my_obs1 = pe.Obs([np.random.rand(100)], ['t']) my_obs2 = pe.Obs([np.random.rand(100)], ['q'], idl=[range(1, 200, 2)]) merged = pe.merge_obs([my_obs1, my_obs2]) diff = merged - my_obs2 - my_obs1 assert diff == -(my_obs1.value + my_obs2.value) / 2 with pytest.raises(Exception): pe.merge_obs([my_obs1, my_obs1]) my_covobs = pe.cov_Obs(1.0, 0.003, 'cov') with pytest.raises(Exception): pe.merge_obs([my_obs1, my_covobs])
def test_correlated_fit(): num_samples = 400 N = 10 x = norm.rvs(size=(N, num_samples)) r = np.zeros((N, N)) for i in range(N): for j in range(N): r[i, j] = np.exp(-0.8 * np.fabs(i - j)) errl = np.sqrt([3.4, 2.5, 3.6, 2.8, 4.2, 4.7, 4.9, 5.1, 3.2, 4.2]) for i in range(N): for j in range(N): r[i, j] *= errl[i] * errl[j] c = cholesky(r, lower=True) y = np.dot(c, x) x = np.arange(N) for linear in [True, False]: data = [] for i in range(N): if linear: data.append(pe.Obs([[i + 1 + o for o in y[i]]], ['ens'])) else: data.append( pe.Obs([[ np.exp(-(i + 1)) + np.exp(-(i + 1)) * o for o in y[i] ]], ['ens'])) [o.gamma_method() for o in data] if linear: def fitf(p, x): return p[1] + p[0] * x else: def fitf(p, x): return p[1] * np.exp(-p[0] * x) fitp = pe.least_squares(x, data, fitf, expected_chisquare=True) fitpc = pe.least_squares(x, data, fitf, correlated_fit=True) for i in range(2): diff = fitp[i] - fitpc[i] diff.gamma_method() assert (diff.is_zero_within_error(sigma=5))
def test_padded_correlator(): my_list = [ pe.Obs([np.random.normal(1.0, 0.1, 100)], ['ens1']) for o in range(8) ] my_corr = pe.Corr(my_list, padding=[7, 3]) my_corr.reweighted [o for o in my_corr]
def test_multi_ens(): names = ['A0', 'A1|r001', 'A1|r002'] test_obs = pe.Obs( [np.random.rand(50), np.random.rand(50), np.random.rand(50)], names) assert test_obs.e_names == ['A0', 'A1'] assert test_obs.e_content['A0'] == ['A0'] assert test_obs.e_content['A1'] == ['A1|r001', 'A1|r002'] my_sum = 0 ensembles = [] for i in range(100): my_sum += pe.Obs([np.random.rand(50)], [str(i)]) ensembles.append(str(i)) assert my_sum.e_names == sorted(ensembles)
def test_covariance_symmetry(): value1 = np.random.normal(5, 10) dvalue1 = np.abs(np.random.normal(0, 1)) test_obs1 = pe.pseudo_Obs(value1, dvalue1, 't') test_obs1.gamma_method() value2 = np.random.normal(5, 10) dvalue2 = np.abs(np.random.normal(0, 1)) test_obs2 = pe.pseudo_Obs(value2, dvalue2, 't') test_obs2.gamma_method() cov_ab = pe.covariance(test_obs1, test_obs2) cov_ba = pe.covariance(test_obs2, test_obs1) assert np.abs(cov_ab - cov_ba) <= 10 * np.finfo(np.float64).eps assert np.abs(cov_ab) < test_obs1.dvalue * test_obs2.dvalue * ( 1 + 10 * np.finfo(np.float64).eps) N = 100 arr = np.random.normal(1, .2, size=N) configs = np.ones_like(arr) for i in np.random.uniform(0, len(arr), size=int(.8 * N)): configs[int(i)] = 0 zero_arr = [arr[i] for i in range(len(arr)) if not configs[i] == 0] idx = [i + 1 for i in range(len(configs)) if configs[i] == 1] a = pe.Obs([zero_arr], ['t'], idl=[idx]) a.gamma_method() assert np.isclose(a.dvalue**2, pe.covariance(a, a), atol=100, rtol=1e-4) cov_ab = pe.covariance(test_obs1, a) cov_ba = pe.covariance(a, test_obs1) assert np.abs(cov_ab - cov_ba) <= 10 * np.finfo(np.float64).eps assert np.abs(cov_ab) < test_obs1.dvalue * test_obs2.dvalue * ( 1 + 10 * np.finfo(np.float64).eps)
def test_jackknife(): full_data = np.random.normal(1.1, 0.87, 5487) my_obs = pe.Obs([full_data], ['test']) n = full_data.size mean = np.mean(full_data) tmp_jacks = np.zeros(n + 1) tmp_jacks[0] = mean for i in range(n): tmp_jacks[i + 1] = (n * mean - full_data[i]) / (n - 1) assert np.allclose(tmp_jacks, my_obs.export_jackknife()) my_new_obs = my_obs + pe.Obs([full_data], ['test2']) with pytest.raises(Exception): my_new_obs.export_jackknife()
def test_irregular_error_propagation(): obs_list = [ pe.Obs([np.random.rand(100)], ['t']), pe.Obs([np.random.rand(50)], ['t'], idl=[range(1, 100, 2)]), pe.Obs([np.random.rand(50)], ['t'], idl=[np.arange(1, 100, 2)]), pe.Obs([np.random.rand(6)], ['t'], idl=[[4, 18, 27, 29, 57, 80]]), pe.Obs([np.random.rand(50)], ['t'], idl=[list(range(1, 26)) + list(range(50, 100, 2))]) ] for obs1 in obs_list: obs1.details() for obs2 in obs_list: assert obs1 == (obs1 / obs2) * obs2 assert obs1 == (obs1 * obs2) / obs2 assert obs1 == obs1 * (obs2 / obs2) assert obs1 == (obs1 + obs2) - obs2 assert obs1 == obs1 + (obs2 - obs2)
def test_correlate(): my_obs1 = pe.Obs([np.random.rand(100)], ['t']) my_obs2 = pe.Obs([np.random.rand(100)], ['t']) corr1 = pe.correlate(my_obs1, my_obs2) corr2 = pe.correlate(my_obs2, my_obs1) assert corr1 == corr2 my_obs3 = pe.Obs([np.random.rand(100)], ['t'], idl=[range(2, 102)]) with pytest.raises(Exception): pe.correlate(my_obs1, my_obs3) my_obs4 = pe.Obs([np.random.rand(99)], ['t']) with pytest.raises(Exception): pe.correlate(my_obs1, my_obs4) my_obs5 = pe.Obs([np.random.rand(100)], ['t'], idl=[range(5, 505, 5)]) my_obs6 = pe.Obs([np.random.rand(100)], ['t'], idl=[range(5, 505, 5)]) corr3 = pe.correlate(my_obs5, my_obs6) assert my_obs5.idl == corr3.idl my_new_obs = pe.Obs([np.random.rand(100)], ['q3']) with pytest.raises(Exception): pe.correlate(my_obs1, my_new_obs) my_covobs = pe.cov_Obs(1.0, 0.003, 'cov') with pytest.raises(Exception): pe.correlate(my_covobs, my_covobs) r_obs = pe.reweight(my_obs1, [my_obs1])[0] with pytest.warns(RuntimeWarning): pe.correlate(r_obs, r_obs)
def test_root_linear_idl(): def root_function(x, d): return x - d my_obs = pe.Obs([np.random.rand(50)], ['t'], idl=[range(20, 120, 2)]) my_root = pe.roots.find_root(my_obs, root_function) difference = my_obs - my_root assert difference.is_zero()
def test_gamma_method_no_windowing(): for iteration in range(50): obs = pe.Obs( [np.random.normal(1.02, 0.02, 733 + np.random.randint(1000))], ['ens']) obs.gamma_method(S=0) assert obs.e_tauint['ens'] == 0.5 assert np.isclose( np.sqrt(np.var(obs.deltas['ens'], ddof=1) / obs.shape['ens']), obs.dvalue) obs.gamma_method(S=1.1) assert obs.e_tauint['ens'] > 0.5 with pytest.raises(Exception): obs.gamma_method(S=-0.2)
def test_json_string_reconstruction(): my_obs = pe.Obs([np.random.rand(100)], ['name']) json_string = pe.input.json.create_json_string(my_obs) reconstructed_obs1 = pe.input.json.import_json_string(json_string) assert my_obs == reconstructed_obs1 compressed_string = gzip.compress(json_string.encode('utf-8')) reconstructed_string = gzip.decompress(compressed_string).decode('utf-8') reconstructed_obs2 = pe.input.json.import_json_string(reconstructed_string) assert reconstructed_string == json_string assert my_obs == reconstructed_obs2
def test_gamma_method(): for data in [ np.tile([1, -1], 1000), np.random.rand(100001), np.zeros(1195), np.sin(np.sqrt(2) * np.pi * np.arange(1812)) ]: test_obs = pe.Obs([data], ['t']) test_obs.gamma_method() assert test_obs.dvalue - test_obs.ddvalue <= np.std( data, ddof=1) / np.sqrt(len(data)) assert test_obs.e_tauint['t'] - 0.5 <= test_obs.e_dtauint['t'] test_obs.gamma_method(tau_exp=10) assert test_obs.e_tauint['t'] - 10.5 <= test_obs.e_dtauint['t']
def test_matmul(): for dim in [4, 6]: for const in [ 1, pe.cov_Obs([1.0, 1.0], [[0.001, 0.0001], [0.0001, 0.002]], 'norm')[1] ]: my_list = [] length = 100 + np.random.randint(200) for i in range(dim**2): my_list.append( pe.Obs( [np.random.rand(length), np.random.rand(length + 1)], ['t1', 't2'])) my_array = const * np.array(my_list).reshape((dim, dim)) tt = pe.linalg.matmul(my_array, my_array) - my_array @ my_array for t, e in np.ndenumerate(tt): assert e.is_zero(), t my_list = [] length = 100 + np.random.randint(200) for i in range(dim**2): my_list.append( pe.CObs( pe.Obs([ np.random.rand(length), np.random.rand(length + 1) ], ['t1', 't2']), pe.Obs([ np.random.rand(length), np.random.rand(length + 1) ], ['t1', 't2']))) my_array = np.array(my_list).reshape((dim, dim)) * const tt = pe.linalg.matmul(my_array, my_array) - my_array @ my_array for t, e in np.ndenumerate(tt): assert e.is_zero(), t
def test_multi_ens_system(n): names = [] for i in range(100 + int(np.random.rand() * 50)): tmp_string = '' for _ in range(int(2 + np.random.rand() * 4)): tmp_string += random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) names.append(tmp_string) names = list(set(names)) samples = [np.random.rand(5)] * len(names) new_obs = pe.Obs(samples, names) for e_tag_length in range(1, 6): new_obs.gamma_method(e_tag=e_tag_length) e_names = sorted(set([n[:e_tag_length] for n in names])) assert e_names == new_obs.e_names assert sorted(x for y in sorted(new_obs.e_content.values()) for x in y) == sorted(new_obs.names)
def test_gamma_method_persistance(): my_obs = pe.Obs([np.random.rand(730)], ['t']) my_obs.gamma_method() value = my_obs.value dvalue = my_obs.dvalue ddvalue = my_obs.ddvalue my_obs = 1.0 * my_obs my_obs.gamma_method() assert value == my_obs.value assert dvalue == my_obs.dvalue assert ddvalue == my_obs.ddvalue my_obs.gamma_method() assert value == my_obs.value assert dvalue == my_obs.dvalue assert ddvalue == my_obs.ddvalue my_obs.gamma_method(S=3.7) my_obs.gamma_method() assert value == my_obs.value assert dvalue == my_obs.dvalue assert ddvalue == my_obs.ddvalue
def test_corr_exceptions(): obs_a = pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test']) obs_b = pe.Obs([np.random.normal(0.1, 0.1, 99)], ['test']) with pytest.raises(Exception): pe.Corr([obs_a, obs_b]) obs_a = pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test']) obs_b = pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test'], idl=[range(1, 200, 2)]) with pytest.raises(Exception): pe.Corr([obs_a, obs_b]) obs_a = pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test']) obs_b = pe.Obs([np.random.normal(0.1, 0.1, 100)], ['test2']) with pytest.raises(Exception): pe.Corr([obs_a, obs_b])
def test_irregular_matrix_inverse(): dim = 3 length = 500 for idl in [ range(8, 508, 10), range(250, 273), [2, 8, 19, 20, 78, 99, 828, 10548979] ]: irregular_array = [] for i in range(dim**2): irregular_array.append( pe.Obs([ np.random.normal(1.1, 0.2, len(idl)), np.random.normal(0.25, 0.1, 10) ], ['ens1', 'ens2'], idl=[idl, range(1, 11)])) irregular_matrix = np.array(irregular_array).reshape( (dim, dim)) * pe.cov_Obs(1.0, 0.002, 'cov') * pe.pseudo_Obs( 1.0, 0.002, 'ens2|r23') invertible_irregular_matrix = np.identity( dim) + irregular_matrix @ irregular_matrix.T inverse = pe.linalg.inv(invertible_irregular_matrix) assert np.allclose( np.linalg.inv( np.vectorize(lambda x: x.value)(invertible_irregular_matrix)) - np.vectorize(lambda x: x.value)(inverse), 0.0) check1 = pe.linalg.matmul(invertible_irregular_matrix, inverse) assert np.all( [o.is_zero() for o in (check1 - np.identity(dim)).ravel()]) check2 = invertible_irregular_matrix @ inverse assert np.all( [o.is_zero() for o in (check2 - np.identity(dim)).ravel()])
def test_gamma_method_irregular(): N = 20000 arr = np.random.normal(1, .2, size=N) afull = pe.Obs([arr], ['a']) configs = np.ones_like(arr) for i in np.random.uniform(0, len(arr), size=int(.8 * N)): configs[int(i)] = 0 zero_arr = [arr[i] for i in range(len(arr)) if not configs[i] == 0] idx = [i + 1 for i in range(len(configs)) if configs[i] == 1] a = pe.Obs([zero_arr], ['a'], idl=[idx]) afull.gamma_method() a.gamma_method() ad = a.dvalue expe = (afull.dvalue * np.sqrt(N / np.sum(configs))) assert (a.dvalue - 5 * a.ddvalue < expe and expe < a.dvalue + 5 * a.ddvalue) afull.gamma_method(fft=False) a.gamma_method(fft=False) expe = (afull.dvalue * np.sqrt(N / np.sum(configs))) assert (a.dvalue - 5 * a.ddvalue < expe and expe < a.dvalue + 5 * a.ddvalue) assert np.abs(a.dvalue - ad) <= 10 * max(a.dvalue, ad) * np.finfo(np.float64).eps afull.gamma_method(tau_exp=.00001) a.gamma_method(tau_exp=.00001) expe = (afull.dvalue * np.sqrt(N / np.sum(configs))) assert (a.dvalue - 5 * a.ddvalue < expe and expe < a.dvalue + 5 * a.ddvalue) arr2 = np.random.normal(1, .2, size=N) afull = pe.Obs([arr, arr2], ['a1', 'a2']) configs = np.ones_like(arr2) for i in np.random.uniform(0, len(arr2), size=int(.8 * N)): configs[int(i)] = 0 zero_arr2 = [arr2[i] for i in range(len(arr2)) if not configs[i] == 0] idx2 = [i + 1 for i in range(len(configs)) if configs[i] == 1] a = pe.Obs([zero_arr, zero_arr2], ['a1', 'a2'], idl=[idx, idx2]) afull.gamma_method() a.gamma_method() expe = (afull.dvalue * np.sqrt(N / np.sum(configs))) assert (a.dvalue - 5 * a.ddvalue < expe and expe < a.dvalue + 5 * a.ddvalue) def gen_autocorrelated_array(inarr, rho): outarr = np.copy(inarr) for i in range(1, len(outarr)): outarr[i] = rho * outarr[i - 1] + np.sqrt(1 - rho**2) * outarr[i] return outarr arr = np.random.normal(1, .2, size=N) carr = gen_autocorrelated_array(arr, .346) a = pe.Obs([carr], ['a']) a.gamma_method() ae = pe.Obs([[carr[i] for i in range(len(carr)) if i % 2 == 0]], ['a'], idl=[[i for i in range(len(carr)) if i % 2 == 0]]) ae.gamma_method() ao = pe.Obs([[carr[i] for i in range(len(carr)) if i % 2 == 1]], ['a'], idl=[[i for i in range(len(carr)) if i % 2 == 1]]) ao.gamma_method() assert (ae.e_tauint['a'] < a.e_tauint['a']) assert ((ae.e_tauint['a'] - 4 * ae.e_dtauint['a'] < ao.e_tauint['a'])) assert ((ae.e_tauint['a'] + 4 * ae.e_dtauint['a'] > ao.e_tauint['a']))
def test_b_cmul(benchmark): my_obs = pe.CObs(pe.Obs([np.random.rand(length)], ['t1']), pe.Obs([np.random.rand(length)], ['t1'])) benchmark(mul, my_obs, my_obs)
def test_import_jackknife(): full_data = np.random.normal(1.105, 0.021, 754) my_obs = pe.Obs([full_data], ['test']) my_jacks = my_obs.export_jackknife() reconstructed_obs = pe.import_jackknife(my_jacks, 'test') assert my_obs == reconstructed_obs
def test_Obs_exceptions(): with pytest.raises(Exception): pe.Obs([np.random.rand(10)], ['1', '2']) with pytest.raises(Exception): pe.Obs([np.random.rand(10)], ['1'], idl=[]) with pytest.raises(Exception): pe.Obs([np.random.rand(10), np.random.rand(10)], ['1', '1']) with pytest.raises(Exception): pe.Obs([np.random.rand(10), np.random.rand(10)], ['1', 1]) with pytest.raises(Exception): pe.Obs([np.random.rand(10)], [1]) with pytest.raises(Exception): pe.Obs([np.random.rand(4)], ['name']) with pytest.raises(Exception): pe.Obs([np.random.rand(5)], ['1'], idl=[[5, 3, 2, 4, 1]]) with pytest.raises(Exception): pe.Obs([np.random.rand(5)], ['1'], idl=['t']) with pytest.raises(Exception): pe.Obs([np.random.rand(5)], ['1'], idl=[range(1, 8)]) my_obs = pe.Obs([np.random.rand(6)], ['name']) my_obs._value = 0.0 my_obs.details() with pytest.raises(Exception): my_obs.plot_tauint() with pytest.raises(Exception): my_obs.plot_rho() with pytest.raises(Exception): my_obs.plot_rep_dist() with pytest.raises(Exception): my_obs.plot_piechart() with pytest.raises(Exception): my_obs.gamma_method(S='2.3') with pytest.raises(Exception): my_obs.gamma_method(tau_exp=2.3) my_obs.gamma_method() my_obs.details() my_obs.plot_rep_dist() my_obs += pe.Obs([np.random.rand(6)], ['name2|r1'], idl=[[1, 3, 4, 5, 6, 7]]) my_obs += pe.Obs([np.random.rand(6)], ['name2|r2']) my_obs.gamma_method() my_obs.details()
def test_empty_obs(): o = pe.Obs([np.random.rand(100)], ['test']) q = o + pe.Obs([], []) assert q == o
def test_b_gamma(benchmark): my_obs = pe.Obs([np.random.rand(length)], ['t1']) benchmark(my_obs.gamma_method)