ABMEv.jl is a package aimed at simulating the eco-evolutionary dynamics of a population in a multidimensional space, at the individual level.

EVOID.jl is a package aimed at simulating the eco-evolutionary dynamics of a population in a multidimensional space, at the individual level.

Individuals are characterised by **a set of traits** in some **combination of evolutionary spaces**. An evolutionary space can represent for example a geographical landscape, a trait space, or genetic structure. Individuals give birth at a rate given by the birth function `b`, and die at a rate given by the death function `d`. When an individual give birth, its offspring can move on the underlying evolutionary spaces. The movement can capture whether migration or mutation processes, and is characterised by a probability `m` and movement range `D`.

Individuals are characterised by **a set of traits** in some **combination of evolutionary spaces**. An evolutionary space can represent for example a geographical landscape, a trait space, or genetic structure. Individuals give birth at a rate given by the birth function `b`, and die at a rate given by the death function `d`. When an individual give birth, its offspring can move on the underlying evolutionary spaces. The movement can capture whether migration or mutation processes, and is characterised by a probability `m` and movement range `D`.

The user can provide **any birth and death functions**, which should depend on the system state and the individuals' trait. Together with the **movement rate and movement range**, this defines the dynamics of the system.

The user can provide **any birth and death functions**, which should depend on the system state and the individuals' trait. Together with the **movement rate and movement range**, this defines the dynamics of the system.

ABMEv.jl provides a **numerical laboratory** for eco-evolutionary dynamics, supplying

EVOID.jl provides a **numerical laboratory** for eco-evolutionary dynamics, supplying

- flexible types for **individuals**, which can

- flexible types for **individuals**, which can

- evolve over any combination of space,

- evolve over any combination of space,

...

@@ -29,25 +29,25 @@ Open Julia in your favorite REPL and type the following

...

@@ -29,25 +29,25 @@ Open Julia in your favorite REPL and type the following

This will download latest version from git repo and download all dependencies.

This will download latest version from git repo and download all dependencies.

## Getting started

## Getting started

Check out the documentation if you want to use the advanced features of ABMEv.jl. Otherwise, you can content yourself with the simple tutorial prodived below.

Check out the documentation if you want to use the advanced features of EVOID.jl. Otherwise, you can content yourself with the simple tutorial prodived below.

## Similar packages

## Similar packages

[Agents.jl](https://juliadynamics.github.io/Agents.jl/) is a library oriented towards general ABM modelling, and thus is not as easy to deploy as ABMEv.jl for simulating stochastic models of structured populations.

[Agents.jl](https://juliadynamics.github.io/Agents.jl/) is a library oriented towards general ABM modelling, and thus is not as easy to deploy as EVOID.jl for simulating stochastic models of structured populations.

-----

-----

## A first tutorial

## A first tutorial

We provide here a tutorial that sums up the 5 steps necessary to launch a simulation. For the sake of the tutorial, we propose to model a population that is structured over the vertices of a graph and characterised by a trait under selection.

We provide here a tutorial that sums up the 5 steps necessary to launch a simulation. For the sake of the tutorial, we propose to model a population that is structured over the vertices of a graph and characterised by a trait under selection.

If `mu[i]` has dimension greater than 1, then mutations happen independently at each component of the trait in high dimensional space. If this is not the case

# ABMEv.jl: Agent Based Model for Evolutionary Dynamics

# EVOID.jl: Agent Based Model for Evolutionary Dynamics

ABMEv.jl is a package aimed at simulating the evolutionary dynamics of a population in a multidimensional space. The population is modelled at the individual level. Individuals experience four elementary events : birth, death, mutation and migration.

EVOID.jl is a package aimed at simulating the evolutionary dynamics of a population in a multidimensional space. The population is modelled at the individual level. Individuals experience four elementary events : birth, death, mutation and migration.

-ABMEv.jl hence falls in the realm of *Agent Based Model*.

-EVOID.jl hence falls in the realm of *Agent Based Model*.

ABMEv.jl provides a numerical laboratory for evolutionary dynamics, supplying

EVOID.jl provides a numerical laboratory for evolutionary dynamics, supplying

- flexible types for individuals, which can

- flexible types for individuals, which can

- evolve over any combination of space

- evolve over any combination of space

- store ancestors trait,

- store ancestors trait,

...

@@ -17,16 +17,16 @@ Agents consist of sets of traits in some combination of evolutionary spaces. An

...

@@ -17,16 +17,16 @@ Agents consist of sets of traits in some combination of evolutionary spaces. An

Vector spaces are used to define birth and death processes, as well as mutation processes.

Vector spaces are used to define birth and death processes, as well as mutation processes.

### Specificities

### Specificities

-[ABMEv.jl allows to keep track of agents' trait lineages](@ref lineages)

-[EVOID.jl allows to keep track of agents' trait lineages](@ref lineages)

-[ABMEv.jl enables to run evolutionary dynamics on graphs!](@ref genetic_structure)

-[EVOID.jl enables to run evolutionary dynamics on graphs!](@ref genetic_structure)

## Getting started

## Getting started

```@repl

```@repl

using ABMEv

using EVOID

```

```

## Tutorial

## Tutorial

We strongly advise to have a look at the tutorial section. All the scripts of the examples can be found [here](https://gitlab.ethz.ch/bvictor/abmev/-/tree/master/examples).

We strongly advise to have a look at the tutorial section. All the scripts of the examples can be found [here](https://gitlab.ethz.ch/bvictor/EVOID/-/tree/master/examples).

```@contents

```@contents

Pages = [

Pages = [

"examples/delta_competition_example.md",

"examples/delta_competition_example.md",

...

@@ -59,4 +59,4 @@ As of now, three types of simulation algorithm can be used:

...

@@ -59,4 +59,4 @@ As of now, three types of simulation algorithm can be used:

-[Champagnat and Ferriere second article - 2008](https://www.tandfonline.com/doi/full/10.1080/15326340802437710)

-[Champagnat and Ferriere second article - 2008](https://www.tandfonline.com/doi/full/10.1080/15326340802437710)

## Similar packages

## Similar packages

[Agents.jl](https://juliadynamics.github.io/Agents.jl/) This package is oriented towards general ABM modelling, and thus is not as efficient and easy to deploy as ABMEv.jl for simulating stochastic models of structured populations.

[Agents.jl](https://juliadynamics.github.io/Agents.jl/) This package is oriented towards general ABM modelling, and thus is not as efficient and easy to deploy as EVOID.jl for simulating stochastic models of structured populations.