def add_wf_metadata(original_wf, structure): """ Adds structure metadata to a workflow Args: original_wf: (Workflow) structure: (Structure) the structure being run by this workflow Returns: """ original_wf.metadata["structure"] = structure.as_dict() original_wf.metadata.update(get_meta_from_structure(structure)) return update_wf(original_wf)
def add_bandgap_check(original_wf, check_bandgap_params=None, fw_name_constraint=None): """ Every FireWork that runs VASP has a CheckStability task afterward. This allows defusing jobs that are not stable. In practice, you might want to set the fw_name_constraint so that the stability is only checked at the beginning of the workflow Args: original_wf (Workflow) check_bandgap_params (dict): a **kwargs** style dict of params fw_name_constraint (str) - Only apply changes to FWs where fw_name contains this substring. """ check_bandgap_params = check_bandgap_params or {} for idx_fw, idx_t in get_fws_and_tasks(original_wf, fw_name_constraint=fw_name_constraint, task_name_constraint="DbTask"): original_wf.fws[idx_fw].spec["_tasks"].append(CheckBandgap(**check_bandgap_params).to_dict()) return update_wf(original_wf)
def add_priority(original_wf, root_priority, child_priority=None): """ Adds priority to a workflow Args: original_wf (Workflow): original WF root_priority (int): priority of first (root) job(s) child_priority(int): priority of all child jobs. Defaults to root_priority Returns: (Workflow) priority-decorated workflow """ child_priority = child_priority or root_priority root_fw_ids = original_wf.root_fw_ids for fw in original_wf.fws: if fw.fw_id in root_fw_ids: fw.spec["_priority"] = root_priority else: fw.spec["_priority"] = child_priority return update_wf(original_wf)