Skip to content

Commit 1b9327b

Browse files
authored
Support recent openfe and pymbar versions (#109)
* Support for latest openfe (>=1.1.0) * Support for pymbar >4.0
1 parent 6d0da0f commit 1b9327b

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

devtools/conda-envs/test_env.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ dependencies:
66
# Base depends
77
- gufe >=0.9.5
88
- numpy
9-
- openfe >=0.15 # TODO: Remove once we don't depend on openfe
9+
- openfe >=1.1.0 # TODO: Remove once we don't depend on openfe
1010
- openff-units
1111
- openmm
1212
- openmmforcefields >=0.14.1 # TODO: remove when upstream deps fix this
13-
- pymbar <4
13+
- pymbar >4.0
1414
- pydantic >=1.10.17
1515
- python
1616

feflow/protocols/nonequilibrium_cycling.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@
2323

2424
# TODO: Remove/change when things get migrated to openmmtools or feflow
2525
from openfe.protocols.openmm_utils import system_creation
26-
from openfe.protocols.openmm_rfe._rfe_utils.compute import get_openmm_platform
26+
27+
try: # Support openfe < 1.3.0
28+
from openfe.protocols.openmm_rfe._rfe_utils.compute import get_openmm_platform
29+
except ModuleNotFoundError:
30+
from openfe.protocols.openmm_utils.omm_compute import get_openmm_platform
2731

2832
from openff.toolkit import Molecule as OFFMolecule
2933
from openff.units import unit
@@ -864,7 +868,9 @@ def get_estimate(self):
864868

865869
forward_work: npt.NDArray[float] = np.array(forward_work)
866870
reverse_work: npt.NDArray[float] = np.array(reverse_work)
867-
free_energy, error = pymbar.bar.BAR(forward_work, reverse_work)
871+
fe_bar = pymbar.bar(forward_work, reverse_work)
872+
free_energy = fe_bar["Delta_f"]
873+
error = fe_bar["dDelta_f"]
868874

869875
return (
870876
free_energy * unit.k * self.data["temperature"] * unit.avogadro_constant
@@ -938,7 +944,9 @@ def _do_bootstrap(self, forward, reverse, n_bootstraps=1000):
938944
indices = np.random.choice(
939945
np.arange(traj_size), size=[traj_size], replace=True
940946
)
941-
dg, ddg = pymbar.bar.BAR(forward[indices], reverse[indices])
947+
fe_bar = pymbar.bar(forward[indices], reverse[indices])
948+
dg = fe_bar["Delta_f"]
949+
ddg = fe_bar["dDelta_f"]
942950
all_dgs[i] = dg
943951

944952
return all_dgs

0 commit comments

Comments
 (0)