Skip to content

Commit b06c76c

Browse files
committed
Adopt TransformedStructure for propagating metadata
1 parent 55938ab commit b06c76c

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

atomate/vasp/workflows/base/magnetism.py

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
MagOrderParameterConstraint,
2121
MagOrderingTransformation,
2222
)
23+
from pymatgen.alchemy.materials import TransformedStructure
2324

2425
from atomate.utils.utils import get_logger
2526

@@ -198,6 +199,13 @@ def __init__(
198199
self.num_orderings = 64
199200
self.max_unique_sites = 8
200201

202+
self.uuid = str(uuid4())
203+
self.wf_meta = {
204+
"wf_uuid": self.uuid,
205+
"wf_name": self.__class__.__name__,
206+
"wf_version": __magnetic_ordering_wf_version__,
207+
}
208+
201209
# kwargs to pass to transformation (ultimately to enumlib)
202210
default_transformation_kwargs = {"check_ordered_symmetry": False, "timeout": 5}
203211
transformation_kwargs = transformation_kwargs or {}
@@ -248,7 +256,7 @@ def __init__(
248256
)
249257

250258
@staticmethod
251-
def _sanitize_input_structure( input_structure):
259+
def _sanitize_input_structure(input_structure):
252260
"""
253261
Sanitize our input structure by removing magnetic information
254262
and making primitive.
@@ -565,6 +573,24 @@ def _add_structures(
565573
origin=origin,
566574
)
567575

576+
def _add_metadata(structure):
577+
"""
578+
For book-keeping, store useful metadata with the Structure
579+
object for later database ingestion.
580+
581+
Args:
582+
structure: Structure
583+
584+
Returns: TransformedStructure
585+
"""
586+
# this could be further improved by storing full transformation
587+
# history, but would require an improved transformation pipeline
588+
return TransformedStructure(
589+
structure, other_parameters={"wf_meta": self.wf_meta}
590+
)
591+
592+
ordered_structures = [_add_metadata(struct) for struct in ordered_structures]
593+
568594
# in case we've introduced duplicates, let's remove them
569595
logger.info("Pruning duplicate structures.")
570596
structures_to_remove = []
@@ -791,11 +817,10 @@ def get_wf(
791817

792818
analysis_parents.append(fws[-1])
793819

794-
uuid = str(uuid4())
795820
fw_analysis = Firework(
796821
MagneticOrderingsToDB(
797822
db_file=c["DB_FILE"],
798-
wf_uuid=uuid,
823+
wf_uuid=self.uuid,
799824
auto_generated=False,
800825
name="MagneticOrderingsToDB",
801826
parent_structure=self.sanitized_structure,
@@ -816,18 +841,9 @@ def get_wf(
816841
wf_name += " - SCAN"
817842
wf = Workflow(fws, name=wf_name)
818843

819-
wf = add_additional_fields_to_taskdocs(
820-
wf,
821-
{
822-
"wf_meta": {
823-
"wf_uuid": uuid,
824-
"wf_name": "magnetic_orderings",
825-
"wf_version": __magnetic_ordering_wf_version__,
826-
}
827-
},
828-
)
844+
wf = add_additional_fields_to_taskdocs(wf, {"wf_meta": self.wf_meta})
829845

830-
tag = "magnetic_orderings group: >>{}<<".format(uuid)
846+
tag = "magnetic_orderings group: >>{}<<".format(self.uuid)
831847
wf = add_tags(wf, [tag, ordered_structure_origins])
832848

833849
self._wf = wf

0 commit comments

Comments
 (0)