Skip to content

Commit a882c1a

Browse files
committed
adapt expand_zip for ICON
1 parent 757d088 commit a882c1a

File tree

2 files changed

+50
-33
lines changed

2 files changed

+50
-33
lines changed

engine/tolerance.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
has_enough_data,
2020
)
2121
from util.log_handler import logger
22-
from util.utils import FileInfo, FileType, expand_zip
22+
from util.utils import FileInfo, FileType, expand_zip, expand_fof
2323

2424

2525
@click.command()
@@ -69,19 +69,23 @@ def tolerance(
6969
): # pylint: disable=too-many-positional-arguments
7070

7171
files_list = zip(ensemble_files, tolerance_files)
72-
expanded_zip = expand_zip(files_list, fof_types, member_type=None,)
72+
expanded_zip = expand_fof(files_list, fof_types)
7373

7474
for mem, tol in expanded_zip:
7575

7676
ensemble_files = expand_zip(mem, member_ids=member_ids, member_type=member_type)
77+
7778
dfs = [
7879
file_name_parser[info.type](info.path)
7980
for file in ensemble_files
8081
for info in [FileInfo(file)]
8182
]
8283

8384
ref_info = FileInfo(mem.format(member_id="ref", member_type=""))
85+
if ref_info.type is FileType.FOF:
86+
ref_info.path = ref_info.path.replace("ref", "")
8487
df_ref = file_name_parser[ref_info.type](ref_info.path)
88+
# print(df_ref)
8589

8690
has_enough_data(dfs)
8791
df_ref = df_ref["veri_data"] if ref_info.type is FileType.FOF else df_ref

util/utils.py

Lines changed: 44 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -192,41 +192,41 @@ def value_list(placeholder, values, placeholders):
192192
return [""]
193193
return values or [None]
194194

195+
from collections import defaultdict
195196

196-
# def expand_fof(zipped, fof_type=None):
197-
# """
198-
# """
199-
# fof_list = to_list(fof_type)
197+
def expand_fof(zipped, fof_type=None):
198+
"""
199+
Espande una lista di tuple (zip) sostituendo il placeholder {fof_type}
200+
con i valori forniti. Altri placeholder (es. {member_id}, {member_type})
201+
vengono lasciati invariati.
202+
"""
200203

201-
# if isinstance(zipped, zip):
202-
# zipped = list(zipped)
203-
# elif isinstance(zipped, (list, tuple)):
204-
# zipped = [(z,) if not isinstance(z, tuple) else z for z in zipped]
205-
# else:
206-
# zipped = [(zipped,)]
204+
fof_list = to_list(fof_type)
207205

208-
# expanded = []
206+
if isinstance(zipped, zip):
207+
zipped = list(zipped)
208+
elif isinstance(zipped, (list, tuple)):
209+
zipped = [(z,) if not isinstance(z, tuple) else z for z in zipped]
210+
else:
211+
zipped = [(zipped,)]
209212

210-
# for items in zipped:
211-
# placeholders = {
212-
# key: any(f"{{{key}}}" in str(item) for item in items)
213-
# for key in ("fof_type",)
214-
# }
213+
expanded = []
214+
215+
for items in zipped:
216+
fof_values = value_list("fof_type", fof_list, {"fof_type": True})
215217

216-
# fof_values = value_list("fof_type", fof_list, placeholders)
218+
for fof_val in fof_values:
219+
safe_dict = defaultdict(lambda: "{%s}" % _placeholder, {"fof_type": fof_val})
217220

218-
# for fof_val in fof_values:
219-
# formatted = [
220-
# item.format(
221-
# fof_type=fof_val or "{fof_type}",
222-
# )
223-
# for item in items
224-
# ]
225-
# expanded.append(
226-
# formatted[0] if len(formatted) == 1 else tuple(formatted)
227-
# )
221+
formatted = []
222+
for item in items:
223+
for _placeholder in ("member_id", "member_type"):
224+
safe_dict[_placeholder] = "{%s}" % _placeholder
225+
formatted.append(item.format_map(safe_dict))
228226

229-
# return expanded
227+
expanded.append(formatted[0] if len(formatted) == 1 else tuple(formatted))
228+
229+
return expanded
230230

231231

232232
# def expand_members(zipped, member_ids=None, member_type=None):
@@ -316,12 +316,24 @@ def expand_zip(zipped, fof_type=None, member_ids=None, member_type=None):
316316
fof_values = value_list("fof_type", fof_list, placeholders)
317317
member_values = value_list("member_id", member_list, placeholders)
318318

319+
if file_type is FileType.FOF:
320+
if member_type_list:
321+
member_type_list = [f"_member_id_{mtype}_" for mtype in member_type_list]
322+
else:
323+
if not (member_list and all(m == "ref" for m in member_list)):
324+
member_type_list = ["_member_id_"]
325+
else:
326+
member_type_list = []
327+
319328
member_values_expanded = []
320329

321330
if file_type is FileType.STATS and member_type_list:
322-
for m_id in member_values:
323-
for m_type in member_type_list:
324-
member_values_expanded.append(f"{m_type}_{m_id}")
331+
if member_values:
332+
for m_id in member_values:
333+
for m_type in member_type_list:
334+
member_values_expanded.append(f"{m_type}_{m_id}")
335+
else:
336+
member_values_expanded = member_type_list.copy()
325337
else:
326338
member_values_expanded = member_values.copy()
327339

@@ -331,6 +343,7 @@ def expand_zip(zipped, fof_type=None, member_ids=None, member_type=None):
331343
item.format(
332344
fof_type=fof_val or "{fof_type}",
333345
member_id=member_val or "{member_id}",
346+
member_type=member_type_list[0] if member_type_list else "{member_type}",
334347
)
335348
for item in items
336349
]

0 commit comments

Comments
 (0)