diff --git a/dpgen2/entrypoint/submit.py b/dpgen2/entrypoint/submit.py index e8930cbd..e852ca09 100644 --- a/dpgen2/entrypoint/submit.py +++ b/dpgen2/entrypoint/submit.py @@ -838,6 +838,8 @@ def get_superop(key): return key.replace("prep-caly-model-devi", "prep-run-explore") elif "run-caly-model-devi" in key: return re.sub("run-caly-model-devi-[0-9]*", "prep-run-explore", key) + elif "caly-evo-step" in key: + return re.sub("caly-evo-step-[0-9]*", "prep-run-explore", key) return None @@ -871,30 +873,51 @@ def get_resubmit_keys( wf, ): all_step_keys = successful_step_keys(wf) - all_step_keys = matched_step_key( - all_step_keys, - [ - "prep-run-train", - "prep-train", - "run-train", - "modify-train-script", - "prep-caly-input", + step_keys = [ + "prep-run-train", + "prep-train", + "run-train", + "modify-train-script", + "prep-caly-input", + "prep-caly-model-devi", + "run-caly-model-devi", + "prep-run-explore", + "prep-lmp", + "run-lmp", + "select-confs", + "prep-run-fp", + "prep-fp", + "run-fp", + "collect-data", + "scheduler", + "id", + ] + if ( + len( + matched_step_key( + all_step_keys, + [ + "collect-run-calypso", + "prep-dp-optim", + "run-dp-optim", + ], + ) + ) + > 0 + ): + # calypso default mode + step_keys += [ "collect-run-calypso", "prep-dp-optim", "run-dp-optim", - "prep-caly-model-devi", - "run-caly-model-devi", - "prep-run-explore", - "prep-lmp", - "run-lmp", - "select-confs", - "prep-run-fp", - "prep-fp", - "run-fp", - "collect-data", - "scheduler", - "id", - ], + ] + else: + # calypso merge mode + step_keys.append("caly-evo-step") + + all_step_keys = matched_step_key( + all_step_keys, + step_keys, ) all_step_keys = sort_slice_ops( all_step_keys, diff --git a/dpgen2/op/prep_caly_model_devi.py b/dpgen2/op/prep_caly_model_devi.py index 7f90a8cb..3b070959 100644 --- a/dpgen2/op/prep_caly_model_devi.py +++ b/dpgen2/op/prep_caly_model_devi.py @@ -87,7 +87,11 @@ def execute( """ work_dir = Path(ip["task_name"]) - traj_results_dir = [Path(dir_name).resolve() for dir_name in ip["traj_results"]] + traj_results_dir = [ + Path(dir_name).resolve() + for dir_name in ip["traj_results"] + if dir_name is not None + ] trajs = [ traj.resolve() for traj_dir in traj_results_dir