mutare
mutare (Latin for "to change") is a simple tool to simulate and analyze a stochastic agent-based model of adaptation in uncertain environments.
Overview
mutare simulates a stochastic agent-based model of adaptation in uncertain environments with the following characteristics:
- The environment is a discrete variable with
n_envpossible values and follows a Markov chain defined by the transition ratesrates_trans. - Each agent carries a phenotype, a discrete variable with
n_phepossible values, and a phenotypic strategy, a distribution over phenotypes. - Agents may duplicate or die according to environment and phenotype specific rates (
rates_birthandrates_death). - The offspring's phenotype is sampled from the parent's phenotypic strategy.
- The offspring inherits the parent's phenotypic strategy, but with probability
prob_mutit suffers a random mutation and changes completely. - At every simulation step, the population is capped at its initial size (
n_agents) and reinitialized if extinction is reached. - Initially, if
strat_pheis set, all agents will share that same strategy; otherwise, they will each have a random strategy.
During the simulation, every steps_per_save steps, the following observables are computed and saved:
- Current simulation time
- Time until the next event
- Number of agents in the simulation
- Instantaneous population growth rate
- Number of extinctions so far
- Average phenotypic strategy
- Standard deviation of the phenotypic strategy
- Distribution of phenotypes
Every steps_per_file steps, the simulation is stopped and a new output file is written to disk.
Getting Started
Prerequisites
- Rust (install via rustup)
Installation
You can install mutare via cargo:
Or build it from source:
Basic Usage
Start by creating a simulation directory (e.g. example_sim/) and placing a config file named config.toml inside it.
Here is an example config file:
[]
= 2
= 2
= [ [ -1.0, 1.0,], [ 1.0, -1.0,],]
= [ [ 1.2, 0.0,], [ 0.0, 0.8,],]
= [ [ 0.0, 1.0,], [ 1.0, 0.0,],]
= 0.001
[]
= 100
= [ 0.5, 0.5,]
[]
= 65536
= 256
= 16
Now you can begin making simulation runs and analyzing them. Here are some examples of common commands:
Run mutare --help to see more detailed help information.
Advanced Usage
The repository also includes some Python utility modules in scripts/utils/ for automating simulation workflows.
Prerequisites
- Python 3.12+
Python Setup
If you want to use these utilities you can set up the Python environment by running the following commands (after having cloned the repository):
Documentation
Documentation is available via:
License
This project is licensed under the MIT License.
Contact
For questions or collaboration, reach out to marcomc@ucm.es or open an issue on GitHub.