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 and reinitialized if extinction is reached.
- Each output file contains
steps_per_filerecords, and the state is saved everysteps_per_savesteps.
From these output files mutare can also compute the following observables:
- The relative change in the number of agents.
- The probability of extinction.
- The probability of each environment.
- The average phenotypic strategy across agents.
- The standard deviation of the phenotypic strategy across agents.
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.9,],]
= [ [ 0.0, 1.6,], [ 1.0, 0.0,],]
= 0.002
[]
= 256
= [ 0.5, 0.5,]
[]
= 65536
= 256
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.