dchackett / taxi

Lightweight portable workflow management system for MCMC applications
MIT License
3 stars 1 forks source link

Implement Monitor tasks #27

Open dchackett opened 6 years ago

dchackett commented 6 years ago

Monitor tasks have a list of tasks that they watch. The status of the Monitor is some dynamically-evaluated (i.e., a property) function of the status of the watched tasks.

This structure is useful for, e.g., blocking from running an entire ensemble worth of overlap measurements if one of the measurements in that ensemble fails (because the parameters are probably mistuned across the ensemble, not just for the measured-upon configuration).

This can be done with a passive Monitor. An active Monitor is somehow triggered to run. An active Monitor might be, for example, an HMC nsteps adjustor. For some HMC stream, the Monitor depends on (at least) the currently-running HMC task. When that task finishes, the Monitor runs next. The Monitor looks at the HMC task, and creates a new HMC task to stack on the end of the stream, with nsteps adjusted appropriately. The Monitor adds this new task to its dependencies, so it is not ready to run again. When it completes, it is marked as a repeating task, so it goes back to being pending.