wepy icon indicating copy to clipboard operation
wepy copied to clipboard

Mechanism to calculate ensemble based progress

Open salotz opened this issue 1 year ago • 0 comments

The BoundaryCondition mechanism is pretty good at covering per-walker progress but sometimes you want to track the progress of the entire ensemble.

The BCDashboardSection already automatically summarizes the min, max, and mean of the per-walker progress values, but it might be that you want to calculate something more complex such as a free energy distribution transformation and some statistics.

This mechanism could also be used to implement a built in mechanism for stopping simulations based on some criterion. For instance if you just want to get one walker to RMSD < 0.2 or something arbitrary like that. This would introduce a new way of running simulations that is not just based on time or number of cycles.

To summarize the sub-features:

  • Add new step in the simulation manager for an EnsembleProgress component with an API of having some methods like:
    • calc_ensemble_progress(walkers) -> stop_sim, {'progressA' : value_a, 'progressB' : value_b}
  • hook up the stop_sim signal to the simulation manager to allow it to shut down a simulation upon this flag being raised.
  • new dashboard sections for reporting this component by default
  • method in the HDF5 reporter for supporting this progress. Can reuse the record fields and progress section likely, this is just a little different as not being walker based and will have a more consistent shape and structure usually.

salotz avatar Nov 21 '23 18:11 salotz