correct strings in _get_rep_names, add option for rep_sep

This commit is contained in:
Justus Kuhlmann 2025-01-06 09:20:50 +00:00
parent 997d360db3
commit 287160ac70

View file

@ -199,9 +199,9 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
else: else:
ens_name = kwargs.get("ens_name") ens_name = kwargs.get("ens_name")
if not appended: if not appended:
new_names = _get_rep_names(ls, ens_name) new_names = _get_rep_names(ls, ens_name, rep_sep=(kwargs.get('rep_string', 'r')))
else: else:
new_names = _get_appended_rep_names(ls, prefix, name_list[0], ens_name) new_names = _get_appended_rep_names(ls, prefix, name_list[0], ens_name, rep_sep=(kwargs.get('rep_string', 'r')))
new_names = sort_names(new_names) new_names = sort_names(new_names)
idl = [] idl = []
@ -646,22 +646,22 @@ def _read_append_rep(filename, pattern, b2b, cfg_separator, im, single):
return T, rep_idl, data return T, rep_idl, data
def _get_rep_names(ls, ens_name=None): def _get_rep_names(ls, ens_name=None, rep_sep='r'):
new_names = [] new_names = []
for entry in ls: for entry in ls:
try: try:
idx = entry.index('r') idx = entry.index(rep_sep)
except Exception: except Exception:
raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.")
if ens_name: if ens_name:
new_names.append('ens_name' + '|' + entry[idx:]) new_names.append(ens_name + '|' + entry[idx:])
else: else:
new_names.append(entry[:idx] + '|' + entry[idx:]) new_names.append(entry[:idx] + '|' + entry[idx:])
return new_names return new_names
def _get_appended_rep_names(ls, prefix, name, ens_name=None): def _get_appended_rep_names(ls, prefix, name, ens_name=None, rep_sep='r'):
new_names = [] new_names = []
for exc in ls: for exc in ls:
if not fnmatch.fnmatch(exc, prefix + '*.' + name): if not fnmatch.fnmatch(exc, prefix + '*.' + name):
@ -670,12 +670,12 @@ def _get_appended_rep_names(ls, prefix, name, ens_name=None):
for entry in ls: for entry in ls:
myentry = entry[:-len(name) - 1] myentry = entry[:-len(name) - 1]
try: try:
idx = myentry.index('r') idx = myentry.index(rep_sep)
except Exception: except Exception:
raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.") raise Exception("Automatic recognition of replicum failed, please enter the key word 'names'.")
if ens_name: if ens_name:
new_names.append('ens_name' + '|' + entry[idx:]) new_names.append(ens_name + '|' + entry[idx:])
else: else:
new_names.append(myentry[:idx] + '|' + myentry[idx:]) new_names.append(myentry[:idx] + '|' + myentry[idx:])
return new_names return new_names