Skip to content

Commit 6b378bc

Browse files
committed
Store energies in lambda order to begin with.
1 parent de8bbf8 commit 6b378bc

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

src/sire/mol/_dynamics.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__all__ = ["Dynamics"]
1+
__all__ = ["Dynamics":
22

33

44
class DynamicsData:
@@ -475,7 +475,8 @@ def _exit_dynamics_block(
475475
nrg += self._pressure * volume
476476
if excess_chemical_potential is not None:
477477
nrg += excess_chemical_potential * num_waters
478-
nrgs[f"{sim_lambda_value:.5f}"] = nrg * kcal_per_mol
478+
# Store the potential energy for the current lambda value.
479+
nrg_sim_lambda_value = nrg
479480

480481
if lambda_windows is not None:
481482
# get the index of the simulation lambda value in the
@@ -510,6 +511,10 @@ def _exit_dynamics_block(
510511
nrgs[key] = nrg * kcal_per_mol
511512
else:
512513
nrgs[key] = null_energy * kcal_per_mol
514+
else:
515+
nrgs[f"{sim_lambda_value:.5f}"] = (
516+
nrg_sim_lambda_value * kcal_per_mol
517+
)
513518

514519
self._omm_mols.set_lambda(
515520
sim_lambda_value,
@@ -865,12 +870,15 @@ def current_kinetic_energy(self):
865870
def energy_trajectory(self):
866871
return self._energy_trajectory.clone()
867872

868-
def current_energies(self):
873+
def current_energies(self, sort: bool = False):
869874
try:
870-
# Sort the energies by key to ensure consistent ordering.
871-
nrgs = self._nrgs.copy()
872-
nrgs = dict(sorted(nrgs.items(), key=lambda item: item[0]))
873-
return nrgs
875+
if sort:
876+
nrgs = self._nrgs.copy()
877+
sorted_items = sorted(list(nrgs.items())[2:], key=lambda x: x[0])
878+
nrgs = dict(list(nrgs.items())[:2] + sorted_items)
879+
return nrgs
880+
else:
881+
return self._nrgs
874882
except Exception:
875883
return {}
876884

@@ -2208,11 +2216,12 @@ def energy_trajectory(self, to_pandas: bool = False, to_alchemlyb: bool = False)
22082216
else:
22092217
return t
22102218

2211-
def current_energies(self):
2219+
def current_energies(self, sort: bool = False):
22122220
"""
22132221
Return a dictionary of the most recent energy trajectory entry.
2222+
If 'sort' is True, then the dictionary will be sorted by key.
22142223
"""
2215-
return self._d.current_energies()
2224+
return self._d.current_energies(sort=sort)
22162225

22172226
def to_xml(self, f=None):
22182227
"""

0 commit comments

Comments
 (0)