Skip to content

Commit 34f46e7

Browse files
remove metadata in favor of top-level failure_reasons field
1 parent 42fc0f5 commit 34f46e7

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

src/atomate2/common/jobs/approx_neb.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,16 +132,18 @@ def collate_results(
132132
endpoint_idxs = sorted(set(endpoint_idxs))
133133

134134
for combo_name, entry in image_calc_output.items():
135-
metadata = {}
135+
failure_reasons = []
136136
task_state = TaskState.SUCCESS
137137
images = entry
138138
if all(isinstance(v, str) for v in entry):
139139
# hop calculation failed
140-
metadata = {"failure_reasons": entry}
140+
failure_reasons.extend([HopFailureReason(v) for v in entry])
141141
task_state = TaskState.FAILED
142-
if HopFailureReason.ENDPOINT.value in entry:
142+
if HopFailureReason.ENDPOINT in failure_reasons:
143143
# Cannot populate any NEB fields, skip entirely
144-
hop_dict[combo_name] = NebResult(state=task_state, metadata=metadata)
144+
hop_dict[combo_name] = NebResult(
145+
state=task_state, failure_reasons=failure_reasons
146+
)
145147
continue
146148
images = []
147149

@@ -154,9 +156,7 @@ def collate_results(
154156
)
155157
if num_success_calcs < min_images_per_hop:
156158
task_state = TaskState.FAILED
157-
if "failure_reasons" not in metadata:
158-
metadata["failure_reasons"] = []
159-
metadata["failure_reasons"].append(HopFailureReason.MIN_IMAGE.value)
159+
failure_reasons.append(HopFailureReason.MIN_IMAGE)
160160

161161
hop_dict[combo_name] = NebResult(
162162
images=[calc["structure"] for calc in hop if calc["structure"] is not None],
@@ -168,7 +168,7 @@ def collate_results(
168168
energies=[calc["energy"] for calc in hop if calc["energy"] is not None],
169169
method=NebMethod.APPROX,
170170
state=task_state,
171-
metadata=metadata if len(metadata) > 0 else None,
171+
failure_reasons=failure_reasons if len(failure_reasons) > 0 else None,
172172
endpoint_indices=combo_name.split("+"),
173173
)
174174

@@ -519,13 +519,13 @@ def collate_images_single_hop(
519519
-------
520520
NebResult
521521
"""
522-
metadata: dict[str, Any] = {}
522+
failure_reasons: list[HopFailureReason] = []
523523
task_state = TaskState.SUCCESS
524524

525525
calcs: list[dict[str, Any]] = []
526526
if image_calc_output is None:
527527
task_state = TaskState.FAILED
528-
metadata["failure_reasons"] = ["No image calculation output."]
528+
failure_reasons.append(HopFailureReason.IMAGE_FAILURE)
529529
else:
530530
calcs += image_calc_output
531531

@@ -538,9 +538,7 @@ def collate_images_single_hop(
538538
)
539539
if num_success_calcs < min_images_per_hop:
540540
task_state = TaskState.FAILED
541-
if "failure_reasons" not in metadata:
542-
metadata["failure_reasons"] = []
543-
metadata["failure_reasons"].append(HopFailureReason.MIN_IMAGE.value)
541+
failure_reasons.append(HopFailureReason.MIN_IMAGE)
544542

545543
hop_dist = None
546544
if endpoint_calc_output is not None and working_ion is not None:
@@ -558,6 +556,6 @@ def collate_images_single_hop(
558556
energies=[calc["energy"] for calc in calcs if calc["energy"] is not None],
559557
method=NebMethod.APPROX,
560558
state=task_state,
561-
metadata=metadata if len(metadata) > 0 else None,
559+
failure_reasons=failure_reasons if len(failure_reasons) > 0 else None,
562560
hop_distance=hop_dist,
563561
)

0 commit comments

Comments
 (0)