ModelManager.jl
ModelManager.jl is simulator-agnostic infrastructure for managing agent-based modeling (ABM) campaigns in Julia. It provides the generic base layer — a trial hierarchy, parameter variations, an SQLite database, a parallel runner, global sensitivity analysis, and ABC-SMC calibration — that simulator-specific packages build on by implementing the AbstractSimulator interface.
ModelManager is not used directly to run a particular simulator. Instead, a backend such as PhysiCellModelManager.jl (PCMM) implements AbstractSimulator and exposes the user-facing workflow. ModelManager supplies everything underneath.
New here? Read What ModelManager is to understand where this package sits, then Installation. If you are building a backend, jump to Building a Simulator Backend.
Where do I look?
Getting set up
| I want to… | Go to |
|---|---|
| Understand ModelManager's role in the ecosystem | What ModelManager is |
| Add the package as a dependency | Installation |
Understand Simulation / Monad / Sampling / Trial | The trial hierarchy |
Learn how inputs.toml and the data/ directory work | Project configuration |
Running a campaign
| I want to… | Go to |
|---|---|
| Change parameter values across runs | Variations |
| Sweep with LHS, Sobol', or RBD designs | Space-filling designs |
| Run trials in parallel | Running simulations |
| Run on a cluster or under SLURM | HPC support |
| Re-run a script without redoing finished work | Cheap re-runs |
Getting results out
| I want to… | Go to |
|---|---|
| Compute and store a quantity of interest for each simulation | Post-processing and quantities of interest |
| See what I ran, as a table of parameters and outcomes | Result tables |
| Export results to CSV | Result tables |
| Label runs so I can find them again later | Tagging and recovering simulations |
| Write my own SQL against the project database | The database |
Analyzing and fitting
| I want to… | Go to |
|---|---|
| Find out which parameters matter most | Sensitivity analysis |
| Fit a model to data with ABC-SMC | Calibration |
| Plot a sensitivity or calibration result | Visualizing GSA results, Visualizing calibration results |
| Work out why a calibration is failing or not converging | When things go wrong |
Maintaining and extending
| I want to… | Go to |
|---|---|
| Delete simulations or reset the database | Managing data |
| Understand a schema change after upgrading | Database upgrades |
| Implement a new simulator backend | Building a Simulator Backend |
| Look up a function's signature | the Alphabetical index |
Issues
Found a bug or have a question? Please open an issue on the ModelManager.jl GitHub page.