simple test for o format working

This commit is contained in:
Justus Kuhlmann 2023-10-06 10:40:45 +00:00
parent 79db746e66
commit eb58920e34
3 changed files with 209 additions and 35 deletions

View file

@ -247,15 +247,12 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
idl.append(rep_idl) idl.append(rep_idl)
# here we have found all the files we need to look into. # here we have found all the files we need to look into.
if i == 0: if i == 0:
if version == "0.0": if version != "0.0" and compact:
file = path + '/' + item + '/' + sub_ls[0] + '/' + name
else:
if compact:
file = path + '/' + item + '/' + sub_ls[0] file = path + '/' + item + '/' + sub_ls[0]
else:
file = path + '/' + item + '/' + sub_ls[0] + '/' + name
for name in name_list: for name in name_list:
if version == "0.0" or not compact:
file = path + '/' + item + '/' + sub_ls[0] + '/' + name
for quarks in quarks_list: for quarks in quarks_list:
for off in noffset_list: for off in noffset_list:
for w in wf_list: for w in wf_list:
@ -271,7 +268,7 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
# preparing the datastructure # preparing the datastructure
# the correlators get parsed into... # the correlators get parsed into...
deltas = [] deltas = []
for j in range(T): for j in range(intern[name]["T"]):
deltas.append([]) deltas.append([])
internal_ret_dict[name][quarks][str(off)][str(w)][str(w2)] = deltas internal_ret_dict[name][quarks][str(off)][str(w)][str(w2)] = deltas
@ -285,45 +282,53 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
for t in range(intern[name]["T"]): for t in range(intern[name]["T"]):
internal_ret_dict[name][quarks][str(off)][str(w)][str(w2)][t].append(rep_deltas[name][quarks][str(off)][str(w)][str(w2)][t]) internal_ret_dict[name][quarks][str(off)][str(w)][str(w2)][t].append(rep_deltas[name][quarks][str(off)][str(w)][str(w2)][t])
else: else:
for t in range(T): for name in name_list:
deltas[t].append(np.zeros(no_cfg)) rep_data = []
for cnfg, subitem in enumerate(sub_ls): for cnfg, subitem in enumerate(sub_ls):
with open(path + '/' + item + '/' + subitem + '/' + name) as fp: for quarks in quarks_list:
for k, line in enumerate(fp): for off in noffset_list:
if (k >= start_read and k < start_read + T): for w in wf_list:
floats = list(map(float, line.split())) for w2 in wf2_list:
if version == "0.0": cfg_path = path + '/' + item + '/' + subitem
deltas[k - start_read][i][cnfg] = floats[im - single] file_data = _read_o_file(cfg_path, name, intern, version, im)
else: rep_data.append(file_data)
deltas[k - start_read][i][cnfg] = floats[1 + im - single]
for quarks in quarks_list:
for off in noffset_list:
for w in wf_list:
for w2 in wf2_list:
for t in range(intern[name]["T"]):
internal_ret_dict[name][quarks][str(off)][str(w)][str(w2)][t].append([])
for cfg in range(no_cfg):
internal_ret_dict[name][quarks][str(off)][str(w)][str(w2)][t][i].append(rep_data[cfg][quarks][str(off)][str(w)][str(w2)][t])
else: else:
for name in name_list:
if "files" in kwargs: if "files" in kwargs:
ls = kwargs.get("files") ls = kwargs.get("files")
else: else:
for exc in ls: name_ls = ls
for exc in name_ls:
if not fnmatch.fnmatch(exc, prefix + '*.' + name): if not fnmatch.fnmatch(exc, prefix + '*.' + name):
ls = list(set(ls) - set([exc])) name_ls = list(set(name_ls) - set([exc]))
ls = sort_names(ls) name_ls = sort_names(name_ls)
for name in name_list:
for quarks in quarks_list: for quarks in quarks_list:
for off in noffset_list: for off in noffset_list:
for w in wf_list: for w in wf_list:
for w2 in wf2_list: for w2 in wf2_list:
pattern = _make_pattern(version, name, off, w, w2, intern[name]['b2b'], quarks) pattern = _make_pattern(version, name, off, w, w2, intern[name]['b2b'], quarks)
deltas = [] deltas = []
for rep, file in enumerate(ls): for rep, file in enumerate(name_ls):
rep_idl = [] rep_idl = []
filename = path + '/' + file filename = path + '/' + file
T, rep_idl, rep_data = _read_append_rep(filename, pattern, intern[name]['b2b'], cfg_separator, im, single) T, rep_idl, rep_data = _read_append_rep(filename, pattern, intern[name]['b2b'], cfg_separator, im, intern[name]['single'])
if 'T' not in intern[name]:
intern[name]['T'] = T
if rep == 0: if rep == 0:
for t in range(T): intern[name]['T'] = T
for t in range(intern[name]['T']):
deltas.append([]) deltas.append([])
for t in range(T): for t in range(intern[name]['T']):
deltas[t].append(rep_data[t]) deltas[t].append(rep_data[t])
internal_ret_dict[name][quarks][str(off)][str(w)][str(w2)] = deltas internal_ret_dict[name][quarks][str(off)][str(w)][str(w2)] = deltas
if name == name_list[0]:
idl.append(rep_idl) idl.append(rep_idl)
if kwargs.get("check_configs") is True: if kwargs.get("check_configs") is True:
@ -358,6 +363,31 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
return result_dict return result_dict
def _read_o_file(cfg_path, name, intern, version, im):
file = cfg_path + '/' + name
return_vals = {}
with open(file) as fp:
lines = fp.readlines()
for quarks in intern[name]["spec"].keys():
return_vals[quarks] = {}
for off in intern[name]["spec"][quarks].keys():
return_vals[quarks][off] = {}
for w in intern[name]["spec"][quarks][off].keys():
return_vals[quarks][off][w] = {}
for w2 in intern[name]["spec"][quarks][off][w].keys():
T = intern[name]["T"]
start_read = intern[name]["spec"][quarks][off][w][w2]["start"]
deltas = []
for line in lines[start_read:start_read + T]:
floats = list(map(float, line.split()))
if version == "0.0":
deltas.append(floats[im - intern[name]["single"]])
else:
deltas.append(floats[1 + im - intern[name]["single"]])
return_vals[quarks][off][w][w2] = deltas
return return_vals
def _extract_corr_type(corr_type): def _extract_corr_type(corr_type):
if corr_type == 'bb': if corr_type == 'bb':
b2b = True b2b = True

View file

@ -82,7 +82,7 @@ def check_idl(idl, che):
return miss_str return miss_str
def check_params(path, param_hash, prefix, param_prefix = "parameters_"): def check_params(path, param_hash, prefix, param_prefix="parameters_"):
""" """
Check if, for sfcf, the parameter hashes at the end of the parameter files are in fact the expected one. Check if, for sfcf, the parameter hashes at the end of the parameter files are in fact the expected one.

View file

@ -61,6 +61,45 @@ def test_o_bib(tmp_path):
assert f_V0[2] == 683.6776090081005 assert f_V0[2] == 683.6776090081005
def test_simple_multi_o(tmp_path):
build_test_environment(str(tmp_path), "o", 5, 3)
f_V0 = sfin.read_sfcf_multi(str(tmp_path) + "/data_o", "test", ["F_V0"], quarks=["lquark lquark"], wf1_list=[0], wf2_list=[0], version="2.0", corr_type_list=["bib"], nice_output=True)
print(f_V0)
assert len(f_V0) == 3
assert list(f_V0[0].shape.keys()) == ["test_|r0", "test_|r1", "test_|r2"]
assert f_V0[0] == 683.6776090085115
assert f_V0[1] == 661.3188585582334
assert f_V0[2] == 683.6776090081005
def test_dict_multi_o(tmp_path):
build_test_environment(str(tmp_path), "o", 5, 3)
corrs = sfin.read_sfcf_multi(str(tmp_path) + "/data_o", "test",
["F_V0", "f_A", "f_1"], quarks_list=["lquark lquark"],
wf_list=[0], wf2_list=[0], version="2.0",
corr_type_list=["bib", "bi", "bb"], nice_output=False)
print(corrs)
f_1 = corrs["f_1"]['lquark lquark']['0']['0']['0']
f_A = corrs["f_A"]['lquark lquark']['0']['0']['0']
f_V0 = corrs["F_V0"]['lquark lquark']['0']['0']['0']
assert len(f_1) == 1
assert list(f_1[0].shape.keys()) == ["test_|r0", "test_|r1", "test_|r2"]
assert f_1[0].value == 351.1941525454502
assert len(f_A) == 3
assert list(f_A[0].shape.keys()) == ["test_|r0", "test_|r1", "test_|r2"]
assert f_A[0].value == 65.4711887279723
assert f_A[1].value == 1.0447210336915187
assert f_A[2].value == -41.025094911185185
assert len(f_V0) == 3
assert list(f_V0[0].shape.keys()) == ["test_|r0", "test_|r1", "test_|r2"]
assert f_V0[0] == 683.6776090085115
assert f_V0[1] == 661.3188585582334
assert f_V0[2] == 683.6776090081005
def test_c_bb(tmp_path): def test_c_bb(tmp_path):
build_test_environment(str(tmp_path), "c", 5, 3) build_test_environment(str(tmp_path), "c", 5, 3)
f_1 = sfin.read_sfcf(str(tmp_path) + "/data_c", "data_c", "f_1", quarks="lquark lquark", wf=0, wf2=0, version="2.0c", corr_type="bb") f_1 = sfin.read_sfcf(str(tmp_path) + "/data_c", "data_c", "f_1", quarks="lquark lquark", wf=0, wf2=0, version="2.0c", corr_type="bb")
@ -131,6 +170,72 @@ def test_dict_multi_c(tmp_path):
assert f_V0[2] == 683.6776090081005 assert f_V0[2] == 683.6776090081005
def test_dict_multi_wf_c(tmp_path):
build_test_environment(str(tmp_path), "c", 5, 3)
corrs = sfin.read_sfcf_multi(str(tmp_path) + "/data_c", "data_c",
["F_V0", "f_A", "f_1"], quarks_list=["lquark lquark"],
wf_list=[0, 1], wf2_list=[0, 1], version="2.0c",
corr_type_list=["bib", "bi", "bb"], nice_output=False)
rep_names = ["data_c_|r0", "data_c_|r1", "data_c_|r2"]
f_1_00 = corrs["f_1"]['lquark lquark']['0']['0']['0']
f_1_01 = corrs["f_1"]['lquark lquark']['0']['0']['1']
f_1_10 = corrs["f_1"]['lquark lquark']['0']['1']['0']
f_1_11 = corrs["f_1"]['lquark lquark']['0']['1']['1']
assert len(f_1_00) == 1
assert list(f_1_00[0].shape.keys()) == rep_names
assert f_1_00[0].value == 351.1941525454502
assert len(f_1_01) == 1
assert list(f_1_01[0].shape.keys()) == rep_names
assert f_1_01[0].value == 351.20703575855345
assert len(f_1_10) == 1
assert list(f_1_10[0].shape.keys()) == rep_names
assert f_1_10[0].value == 351.20703575855515
assert len(f_1_11) == 1
assert list(f_1_11[0].shape.keys()) == rep_names
assert f_1_11[0].value == 351.22001235609065
f_A = corrs["f_A"]['lquark lquark']['0']['0']['0']
assert len(f_A) == 3
assert list(f_A[0].shape.keys()) == rep_names
assert f_A[0].value == 65.4711887279723
assert f_A[1].value == 1.0447210336915187
assert f_A[2].value == -41.025094911185185
f_V0_00 = corrs["F_V0"]['lquark lquark']['0']['0']['0']
f_V0_01 = corrs["F_V0"]['lquark lquark']['0']['0']['1']
f_V0_10 = corrs["F_V0"]['lquark lquark']['0']['1']['0']
f_V0_11 = corrs["F_V0"]['lquark lquark']['0']['1']['1']
assert len(f_V0_00) == 3
assert list(f_V0_00[0].shape.keys()) == rep_names
assert f_V0_00[0].value == 683.6776090085115
assert f_V0_00[1].value == 661.3188585582334
assert f_V0_00[2].value == 683.6776090081005
assert len(f_V0_01) == 3
assert list(f_V0_01[0].shape.keys()) == rep_names
assert f_V0_01[0].value == 683.7028316879306
assert f_V0_01[1].value == 661.3432563640756
assert f_V0_01[2].value == 683.7028316875197
assert len(f_V0_10) == 3
assert list(f_V0_10[0].shape.keys()) == rep_names
assert f_V0_10[0].value == 683.7028316879289
assert f_V0_10[1].value == 661.343256364074
assert f_V0_10[2].value == 683.702831687518
assert len(f_V0_11) == 3
assert list(f_V0_11[0].shape.keys()) == rep_names
assert f_V0_11[0].value == 683.7280552978792
assert f_V0_11[1].value == 661.3676550700158
assert f_V0_11[2].value == 683.7280552974681
def test_a_bb(tmp_path): def test_a_bb(tmp_path):
build_test_environment(str(tmp_path), "a", 5, 3) build_test_environment(str(tmp_path), "a", 5, 3)
f_1 = sfin.read_sfcf(str(tmp_path) + "/data_a", "data_a", "f_1", quarks="lquark lquark", wf=0, wf2=0, version="2.0a", corr_type="bb") f_1 = sfin.read_sfcf(str(tmp_path) + "/data_a", "data_a", "f_1", quarks="lquark lquark", wf=0, wf2=0, version="2.0a", corr_type="bb")
@ -162,6 +267,45 @@ def test_a_bib(tmp_path):
assert f_V0[2] == 683.6776090081005 assert f_V0[2] == 683.6776090081005
def test_simple_multi_a(tmp_path):
build_test_environment(str(tmp_path), "a", 5, 3)
f_V0 = sfin.read_sfcf_multi(str(tmp_path) + "/data_a", "data_a", ["F_V0"], quarks=["lquark lquark"], wf1_list=[0], wf2_list=[0], version="2.0a", corr_type_list=["bib"], nice_output=True)
print(f_V0)
assert len(f_V0) == 3
assert list(f_V0[0].shape.keys()) == ["data_a_|r0", "data_a_|r1", "data_a_|r2"]
assert f_V0[0] == 683.6776090085115
assert f_V0[1] == 661.3188585582334
assert f_V0[2] == 683.6776090081005
def test_dict_multi_a(tmp_path):
build_test_environment(str(tmp_path), "a", 5, 3)
corrs = sfin.read_sfcf_multi(str(tmp_path) + "/data_a", "data_a",
["F_V0", "f_A", "f_1"], quarks_list=["lquark lquark"],
wf_list=[0], wf2_list=[0], version="2.0a",
corr_type_list=["bib", "bi", "bb"], nice_output=False)
print(corrs)
f_1 = corrs["f_1"]['lquark lquark']['0']['0']['0']
f_A = corrs["f_A"]['lquark lquark']['0']['0']['0']
f_V0 = corrs["F_V0"]['lquark lquark']['0']['0']['0']
assert len(f_1) == 1
assert list(f_1[0].shape.keys()) == ["data_a_|r0", "data_a_|r1", "data_a_|r2"]
assert f_1[0].value == 351.1941525454502
assert len(f_A) == 3
assert list(f_A[0].shape.keys()) == ["data_a_|r0", "data_a_|r1", "data_a_|r2"]
assert f_A[0].value == 65.4711887279723
assert f_A[1].value == 1.0447210336915187
assert f_A[2].value == -41.025094911185185
assert len(f_V0) == 3
assert list(f_V0[0].shape.keys()) == ["data_a_|r0", "data_a_|r1", "data_a_|r2"]
assert f_V0[0] == 683.6776090085115
assert f_V0[1] == 661.3188585582334
assert f_V0[2] == 683.6776090081005
def test_find_corr(): def test_find_corr():
pattern = 'name ' + "f_A" + '\nquarks ' + "lquark lquark" + '\noffset ' + str(0) + '\nwf ' + str(0) pattern = 'name ' + "f_A" + '\nquarks ' + "lquark lquark" + '\noffset ' + str(0) + '\nwf ' + str(0)
start_read, T = sfin._find_correlator("tests/data/sfcf_test/data_c/data_c_r0/data_c_r0_n1", "2.0c", pattern, False) start_read, T = sfin._find_correlator("tests/data/sfcf_test/data_c/data_c_r0/data_c_r0_n1", "2.0c", pattern, False)
@ -177,7 +321,7 @@ def test_find_corr():
sfin._find_correlator("tests/data/sfcf_test/broken_data_c/data_c_r0/data_c_r0_n1", "2.0c", pattern, False) sfin._find_correlator("tests/data/sfcf_test/broken_data_c/data_c_r0/data_c_r0_n1", "2.0c", pattern, False)
def test_read_compact_file(tmp_path): def test_read_compact_file():
rep_path = "tests/data/sfcf_test/broken_data_c/data_c_r0/" rep_path = "tests/data/sfcf_test/broken_data_c/data_c_r0/"
config_file = "data_c_r0_n1" config_file = "data_c_r0_n1"
start_read = 469 start_read = 469