Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ dependencies:
# Control blas/openmp threads
- threadpoolctl
- pip:
- git+https://github.com/OpenFreeEnergy/gufe@main
- git+https://github.com/OpenFreeEnergy/gufe@restart_execute
- run_constrained:
# drop this pin when handled upstream in espaloma-feedstock
- smirnoff99frosst>=1.1.0.1 #https://github.com/openforcefield/smirnoff99Frosst/issues/109
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,12 @@ def patcher():
yield


def test_gather(benzene_complex_dag, patcher, tmpdir):
def test_gather(benzene_complex_dag, patcher, tmp_path):
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here and everywhere else I'm doing a tmpdir -> tmp_path change, turns out tmpdir's implementation in pytest doesn't implement all the pathlib.Path features, so it's better to use tmp_path.

As far as I'm aware the slow tests aren't affected by this because we wrap them around Path calls.

# check that .gather behaves as expected
dagres = gufe.protocols.execute_DAG(
benzene_complex_dag,
shared_basedir=tmpdir,
scratch_basedir=tmpdir,
shared_basedir=tmp_path,
scratch_basedir=tmp_path,
keep_shared=True,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,12 @@ def patcher():
yield


def test_gather(benzene_solvation_dag, patcher, tmpdir):
def test_gather(benzene_solvation_dag, patcher, tmp_path):
# check that .gather behaves as expected
dagres = gufe.protocols.execute_DAG(
benzene_solvation_dag,
shared_basedir=tmpdir,
scratch_basedir=tmpdir,
shared_basedir=tmp_path,
scratch_basedir=tmp_path,
keep_shared=True,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ def test_unit_tagging(solvent_protocol_dag, tmpdir):
assert len(repeats) == 3


def test_gather(solvent_protocol_dag, tmpdir):
def test_gather(solvent_protocol_dag, tmp_path):
# check .gather behaves as expected
with mock.patch(
"openfe.protocols.openmm_md.plain_md_methods.PlainMDProtocolUnit.run",
Expand All @@ -519,8 +519,8 @@ def test_gather(solvent_protocol_dag, tmpdir):
):
dagres = gufe.protocols.execute_DAG(
solvent_protocol_dag,
shared_basedir=tmpdir,
scratch_basedir=tmpdir,
shared_basedir=tmp_path,
scratch_basedir=tmp_path,
keep_shared=True,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1225,7 +1225,7 @@ def test_unit_tagging(solvent_protocol_dag, tmpdir):
assert len(setup_results) == len(sim_results) == len(analysis_results) == 3


def test_gather(solvent_protocol_dag, tmpdir):
def test_gather(solvent_protocol_dag, tmp_path):
# check .gather behaves as expected
with (
mock.patch(
Expand Down Expand Up @@ -1263,8 +1263,8 @@ def test_gather(solvent_protocol_dag, tmpdir):
):
dagres = gufe.protocols.execute_DAG(
solvent_protocol_dag,
shared_basedir=tmpdir,
scratch_basedir=tmpdir,
shared_basedir=tmp_path,
scratch_basedir=tmp_path,
keep_shared=True,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1295,7 +1295,7 @@ def test_unit_tagging(benzene_toluene_dag, tmpdir):
assert len(complex_repeats) == len(solv_repeats) == 2


def test_gather(benzene_toluene_dag, tmpdir):
def test_gather(benzene_toluene_dag, tmp_path):
# check that .gather behaves as expected
with (
mock.patch(
Expand Down Expand Up @@ -1339,8 +1339,8 @@ def test_gather(benzene_toluene_dag, tmpdir):
):
dagres = gufe.protocols.execute_DAG(
benzene_toluene_dag,
shared_basedir=tmpdir,
scratch_basedir=tmpdir,
shared_basedir=tmp_path,
scratch_basedir=tmp_path,
keep_shared=True,
)

Expand Down
19 changes: 17 additions & 2 deletions src/openfecli/commands/quickrun.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ def quickrun(transformation, work_dir, output):
import logging
import os
import sys
from json import JSONDecodeError

from gufe import ProtocolDAG
from gufe.protocols.protocoldag import execute_DAG
from gufe.tokenization import JSON_HANDLER
from gufe.transformations.transformation import Transformation
Expand Down Expand Up @@ -94,13 +96,26 @@ def quickrun(transformation, work_dir, output):
else:
output.parent.mkdir(exist_ok=True, parents=True)

write("Planning simulations for this edge...")
dag = trans.create()
# Attempt to either deserialize or freshly create DAG
if (work_dir / "protocol_dag.json").is_file():
write("Attempting to recover edge simulations from file")
try:
dag = ProtocolDAG.from_json(work_dir / "protocol_dag.json")
except JSONDecodeError:
errmsg = "Recovery failed, please clean workdir before continuing"
raise click.ClickException(errmsg)
else:
# Create the DAG instead and then serialize for later resuming
write("Planning simulations for this edge...")
dag = trans.create()
dag.to_json(work_dir / "protocol_dag.json")

write("Starting the simulations for this edge...")
dagresult = execute_DAG(
dag,
shared_basedir=work_dir,
scratch_basedir=work_dir,
unitresults_basedir=work_dir,
keep_shared=True,
raise_error=False,
n_retries=2,
Expand Down
Loading