mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-03-15 23:00:25 +01:00
feat: removed attribute is_merged.
This commit is contained in:
parent
b708411830
commit
a53fb18821
6 changed files with 2 additions and 28 deletions
|
@ -41,8 +41,6 @@ def create_json_string(ol, description='', indent=1):
|
||||||
for r_name in ol[0].e_content[name]:
|
for r_name in ol[0].e_content[name]:
|
||||||
rd = {}
|
rd = {}
|
||||||
rd['name'] = r_name
|
rd['name'] = r_name
|
||||||
if ol[0].is_merged.get(r_name, False):
|
|
||||||
rd['is_merged'] = True
|
|
||||||
rd['deltas'] = []
|
rd['deltas'] = []
|
||||||
offsets = [o.r_values[r_name] - o.value for o in ol]
|
offsets = [o.r_values[r_name] - o.value for o in ol]
|
||||||
deltas = np.column_stack([ol[oi].deltas[r_name] + offsets[oi] for oi in range(No)])
|
deltas = np.column_stack([ol[oi].deltas[r_name] + offsets[oi] for oi in range(No)])
|
||||||
|
@ -138,7 +136,6 @@ def create_json_string(ol, description='', indent=1):
|
||||||
for name in obs._covobs:
|
for name in obs._covobs:
|
||||||
my_obs.names.append(name)
|
my_obs.names.append(name)
|
||||||
my_obs.reweighted = obs.reweighted
|
my_obs.reweighted = obs.reweighted
|
||||||
my_obs.is_merged = obs.is_merged
|
|
||||||
return my_obs
|
return my_obs
|
||||||
|
|
||||||
def write_Corr_to_dict(my_corr):
|
def write_Corr_to_dict(my_corr):
|
||||||
|
@ -258,7 +255,6 @@ def _parse_json_dict(json_dict, verbose=True, full_output=False):
|
||||||
retd['names'] = []
|
retd['names'] = []
|
||||||
retd['idl'] = []
|
retd['idl'] = []
|
||||||
retd['deltas'] = []
|
retd['deltas'] = []
|
||||||
retd['is_merged'] = {}
|
|
||||||
for ens in d:
|
for ens in d:
|
||||||
for rep in ens['replica']:
|
for rep in ens['replica']:
|
||||||
rep_name = rep['name']
|
rep_name = rep['name']
|
||||||
|
@ -270,7 +266,6 @@ def _parse_json_dict(json_dict, verbose=True, full_output=False):
|
||||||
retd['names'].append(rep_name)
|
retd['names'].append(rep_name)
|
||||||
retd['idl'].append([di[0] for di in rep['deltas']])
|
retd['idl'].append([di[0] for di in rep['deltas']])
|
||||||
retd['deltas'].append(np.array([di[1:] for di in rep['deltas']]))
|
retd['deltas'].append(np.array([di[1:] for di in rep['deltas']]))
|
||||||
retd['is_merged'][rep_name] = rep.get('is_merged', False)
|
|
||||||
return retd
|
return retd
|
||||||
|
|
||||||
def _gen_covobsd_from_cdatad(d):
|
def _gen_covobsd_from_cdatad(d):
|
||||||
|
@ -300,7 +295,6 @@ def _parse_json_dict(json_dict, verbose=True, full_output=False):
|
||||||
if od:
|
if od:
|
||||||
ret = Obs([[ddi[0] + values[0] for ddi in di] for di in od['deltas']], od['names'], idl=od['idl'])
|
ret = Obs([[ddi[0] + values[0] for ddi in di] for di in od['deltas']], od['names'], idl=od['idl'])
|
||||||
ret._value = values[0]
|
ret._value = values[0]
|
||||||
ret.is_merged = od['is_merged']
|
|
||||||
else:
|
else:
|
||||||
ret = Obs([], [], means=[])
|
ret = Obs([], [], means=[])
|
||||||
ret._value = values[0]
|
ret._value = values[0]
|
||||||
|
@ -326,7 +320,6 @@ def _parse_json_dict(json_dict, verbose=True, full_output=False):
|
||||||
if od:
|
if od:
|
||||||
ret.append(Obs([list(di[:, i] + values[i]) for di in od['deltas']], od['names'], idl=od['idl']))
|
ret.append(Obs([list(di[:, i] + values[i]) for di in od['deltas']], od['names'], idl=od['idl']))
|
||||||
ret[-1]._value = values[i]
|
ret[-1]._value = values[i]
|
||||||
ret[-1].is_merged = od['is_merged']
|
|
||||||
else:
|
else:
|
||||||
ret.append(Obs([], [], means=[]))
|
ret.append(Obs([], [], means=[]))
|
||||||
ret[-1]._value = values[i]
|
ret[-1]._value = values[i]
|
||||||
|
@ -354,7 +347,6 @@ def _parse_json_dict(json_dict, verbose=True, full_output=False):
|
||||||
if od:
|
if od:
|
||||||
ret.append(Obs([di[:, i] + values[i] for di in od['deltas']], od['names'], idl=od['idl']))
|
ret.append(Obs([di[:, i] + values[i] for di in od['deltas']], od['names'], idl=od['idl']))
|
||||||
ret[-1]._value = values[i]
|
ret[-1]._value = values[i]
|
||||||
ret[-1].is_merged = od['is_merged']
|
|
||||||
else:
|
else:
|
||||||
ret.append(Obs([], [], means=[]))
|
ret.append(Obs([], [], means=[]))
|
||||||
ret[-1]._value = values[i]
|
ret[-1]._value = values[i]
|
||||||
|
|
|
@ -932,7 +932,6 @@ def qtop_projection(qtop, target=0):
|
||||||
proj_qtop.append(np.array([1 if round(qtop.r_values[n] + q) == target else 0 for q in qtop.deltas[n]]))
|
proj_qtop.append(np.array([1 if round(qtop.r_values[n] + q) == target else 0 for q in qtop.deltas[n]]))
|
||||||
|
|
||||||
reto = Obs(proj_qtop, qtop.names, idl=[qtop.idl[name] for name in qtop.names])
|
reto = Obs(proj_qtop, qtop.names, idl=[qtop.idl[name] for name in qtop.names])
|
||||||
reto.is_merged = qtop.is_merged
|
|
||||||
return reto
|
return reto
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ def _assert_equal_properties(ol, otype=Obs):
|
||||||
for o in ol[1:]:
|
for o in ol[1:]:
|
||||||
if not isinstance(o, otype):
|
if not isinstance(o, otype):
|
||||||
raise Exception("Wrong data type in list.")
|
raise Exception("Wrong data type in list.")
|
||||||
for attr in ["is_merged", "reweighted", "e_content", "idl"]:
|
for attr in ["reweighted", "e_content", "idl"]:
|
||||||
if hasattr(ol[0], attr):
|
if hasattr(ol[0], attr):
|
||||||
if not getattr(ol[0], attr) == getattr(o, attr):
|
if not getattr(ol[0], attr) == getattr(o, attr):
|
||||||
raise Exception(f"All Obs in list have to have the same state '{attr}'.")
|
raise Exception(f"All Obs in list have to have the same state '{attr}'.")
|
||||||
|
|
|
@ -49,7 +49,7 @@ class Obs:
|
||||||
'ddvalue', 'reweighted', 'S', 'tau_exp', 'N_sigma',
|
'ddvalue', 'reweighted', 'S', 'tau_exp', 'N_sigma',
|
||||||
'e_dvalue', 'e_ddvalue', 'e_tauint', 'e_dtauint',
|
'e_dvalue', 'e_ddvalue', 'e_tauint', 'e_dtauint',
|
||||||
'e_windowsize', 'e_rho', 'e_drho', 'e_n_tauint', 'e_n_dtauint',
|
'e_windowsize', 'e_rho', 'e_drho', 'e_n_tauint', 'e_n_dtauint',
|
||||||
'idl', 'is_merged', 'tag', '_covobs', '__dict__']
|
'idl', 'tag', '_covobs', '__dict__']
|
||||||
|
|
||||||
S_global = 2.0
|
S_global = 2.0
|
||||||
S_dict = {}
|
S_dict = {}
|
||||||
|
@ -97,7 +97,6 @@ class Obs:
|
||||||
|
|
||||||
self._value = 0
|
self._value = 0
|
||||||
self.N = 0
|
self.N = 0
|
||||||
self.is_merged = {}
|
|
||||||
self.idl = {}
|
self.idl = {}
|
||||||
if idl is not None:
|
if idl is not None:
|
||||||
for name, idx in sorted(zip(names, idl)):
|
for name, idx in sorted(zip(names, idl)):
|
||||||
|
@ -1153,7 +1152,6 @@ def derived_observable(func, data, array_mode=False, **kwargs):
|
||||||
new_cov_names = sorted(set([y for x in [o.cov_names for o in raveled_data] for y in x]))
|
new_cov_names = sorted(set([y for x in [o.cov_names for o in raveled_data] for y in x]))
|
||||||
new_sample_names = sorted(set(new_names) - set(new_cov_names))
|
new_sample_names = sorted(set(new_names) - set(new_cov_names))
|
||||||
|
|
||||||
is_merged = {name: (len(list(filter(lambda o: o.is_merged.get(name, False) is True, raveled_data))) > 0) for name in new_sample_names}
|
|
||||||
reweighted = len(list(filter(lambda o: o.reweighted is True, raveled_data))) > 0
|
reweighted = len(list(filter(lambda o: o.reweighted is True, raveled_data))) > 0
|
||||||
|
|
||||||
if data.ndim == 1:
|
if data.ndim == 1:
|
||||||
|
@ -1179,8 +1177,6 @@ def derived_observable(func, data, array_mode=False, **kwargs):
|
||||||
tmp_values = np.array(tmp_values).reshape(data.shape)
|
tmp_values = np.array(tmp_values).reshape(data.shape)
|
||||||
new_r_values[name] = func(tmp_values, **kwargs)
|
new_r_values[name] = func(tmp_values, **kwargs)
|
||||||
new_idl_d[name] = _merge_idx(idl)
|
new_idl_d[name] = _merge_idx(idl)
|
||||||
if not is_merged[name]:
|
|
||||||
is_merged[name] = (1 != len(set([len(idx) for idx in [*idl, new_idl_d[name]]])))
|
|
||||||
|
|
||||||
if 'man_grad' in kwargs:
|
if 'man_grad' in kwargs:
|
||||||
deriv = np.asarray(kwargs.get('man_grad'))
|
deriv = np.asarray(kwargs.get('man_grad'))
|
||||||
|
@ -1266,7 +1262,6 @@ def derived_observable(func, data, array_mode=False, **kwargs):
|
||||||
final_result[i_val].names.append(name)
|
final_result[i_val].names.append(name)
|
||||||
final_result[i_val]._covobs = new_covobs
|
final_result[i_val]._covobs = new_covobs
|
||||||
final_result[i_val]._value = new_val
|
final_result[i_val]._value = new_val
|
||||||
final_result[i_val].is_merged = is_merged
|
|
||||||
final_result[i_val].reweighted = reweighted
|
final_result[i_val].reweighted = reweighted
|
||||||
|
|
||||||
if multi == 0:
|
if multi == 0:
|
||||||
|
@ -1347,7 +1342,6 @@ def reweight(weight, obs, **kwargs):
|
||||||
|
|
||||||
result.append(tmp_obs / new_weight)
|
result.append(tmp_obs / new_weight)
|
||||||
result[-1].reweighted = True
|
result[-1].reweighted = True
|
||||||
result[-1].is_merged = obs[i].is_merged
|
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -1391,7 +1385,6 @@ def correlate(obs_a, obs_b):
|
||||||
new_idl.append(obs_a.idl[name])
|
new_idl.append(obs_a.idl[name])
|
||||||
|
|
||||||
o = Obs(new_samples, sorted(obs_a.names), idl=new_idl)
|
o = Obs(new_samples, sorted(obs_a.names), idl=new_idl)
|
||||||
o.is_merged = {name: (obs_a.is_merged.get(name, False) or obs_b.is_merged.get(name, False)) for name in o.names}
|
|
||||||
o.reweighted = obs_a.reweighted or obs_b.reweighted
|
o.reweighted = obs_a.reweighted or obs_b.reweighted
|
||||||
return o
|
return o
|
||||||
|
|
||||||
|
@ -1589,7 +1582,6 @@ def merge_obs(list_of_obs):
|
||||||
|
|
||||||
names = sorted(new_dict.keys())
|
names = sorted(new_dict.keys())
|
||||||
o = Obs([new_dict[name] for name in names], names, idl=[idl_dict[name] for name in names])
|
o = Obs([new_dict[name] for name in names], names, idl=[idl_dict[name] for name in names])
|
||||||
o.is_merged = {name: np.any([oi.is_merged.get(name, False) for oi in list_of_obs]) for name in o.names}
|
|
||||||
o.reweighted = np.max([oi.reweighted for oi in list_of_obs])
|
o.reweighted = np.max([oi.reweighted for oi in list_of_obs])
|
||||||
return o
|
return o
|
||||||
|
|
||||||
|
|
|
@ -404,11 +404,4 @@ def assert_equal_Obs(to, ro):
|
||||||
if not np.allclose(v, v2, atol=1e-14):
|
if not np.allclose(v, v2, atol=1e-14):
|
||||||
print(kw, "does not match.")
|
print(kw, "does not match.")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
m_to = getattr(to, "is_merged")
|
|
||||||
m_ro = getattr(ro, "is_merged")
|
|
||||||
if not m_to == m_ro:
|
|
||||||
if not (all(value is False for value in m_ro.values()) and all(value is False for value in m_to.values())):
|
|
||||||
print("is_merged", "does not match.")
|
|
||||||
return False
|
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -201,8 +201,6 @@ def test_matmul_irregular_histories():
|
||||||
t2 = pe.linalg.matmul(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_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_irregular_matrix_inverse():
|
def test_irregular_matrix_inverse():
|
||||||
|
|
Loading…
Add table
Reference in a new issue