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:
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.
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:
EnsembleProgress
component with an API of having some methods like:calc_ensemble_progress(walkers) -> stop_sim, {'progressA' : value_a, 'progressB' : value_b}
stop_sim
signal to the simulation manager to allow it to shut down a simulation upon this flag being raised.progress
section likely, this is just a little different as not being walker based and will have a more consistent shape and structure usually.