To receive notifications about scheduled maintenance, please subscribe to the mailing-list gitlab-operations@sympa.ethz.ch. You can subscribe to the mailing-list at https://sympa.ethz.ch

Commit 86387bba authored by Victor's avatar Victor
Browse files

changed EVOID to EvoId

parent 06411318
Pipeline #99045 canceled with stage
......@@ -7,10 +7,10 @@
script:
# Let's run the tests. Substitute `coverage = false` below, if you do not
# want coverage results.
- julia -e 'using Pkg; Pkg.add(PackageSpec(path =pwd())); Pkg.build("EVOID"); Pkg.test("EVOID"; coverage = true)'
- julia -e 'using Pkg; Pkg.add(PackageSpec(path =pwd())); Pkg.build("EvoId"); Pkg.test("EvoId"; coverage = true)'
# Comment out below if you do not want coverage results.
- julia -e 'using Pkg; Pkg.add("Coverage");
import EVOID; cd(joinpath(dirname(pathof(EVOID)), ".."));
import EvoId; cd(joinpath(dirname(pathof(EvoId)), ".."));
using Coverage; cl, tl = get_summary(process_folder());
println("(", cl/tl*100, "%) covered")'
......@@ -27,8 +27,8 @@ test:1.4:
# stage: deploy
# script:
# - apt-get update -qq && apt-get install -y git # needed by Documenter
# - julia -e 'using Pkg; Pkg.add(PackageSpec(path =pwd())); Pkg.build("EVOID");' # rebuild Julia (can be put somewhere else I'm sure
# - julia -e 'using Pkg; import EVOID; Pkg.add("Documenter")' # install Documenter
# - julia -e 'using Pkg; Pkg.add(PackageSpec(path =pwd())); Pkg.build("EvoId");' # rebuild Julia (can be put somewhere else I'm sure
# - julia -e 'using Pkg; import EvoId; Pkg.add("Documenter")' # install Documenter
# - julia --color=yes docs/make.jl # make documentation
# - mv docs/build public # move to the directory picked up by Gitlab pages
# artifacts:
......
name = "EVOID"
name = "EvoId"
uuid = "837ac870-fb52-4b0c-9a0e-030f2f36f5ed"
authors = ["Victor Boussange "]
version = "4.0.0"
......
# EVOID.jl
<!-- [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://vboussange.github.io/EVOID.jl/stable) -->
# EvoId.jl
<!-- [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://vboussange.github.io/EvoId.jl/stable) -->
<!-- For now we only direct to dev documentation. In the future, one will need to deploy a ssh key to and use TagBot. -->
[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://vboussange.github.io/EVOID.jl/dev)
[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://vboussange.github.io/EvoId.jl/dev)
<div align="center"> <img
src="https://vboussange.github.io/images/research/conceptual_onlyadapt.png"
alt="" width="400"></img> </div>
EVOID.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`.
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.
EVOID.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
- evolve over any combination of space,
......@@ -28,25 +28,25 @@ Open Julia in your favorite REPL and type the following
```julia
using Pkg;
Pkg.add("https://github.com/vboussange/EVOID.jl")
Pkg.add("https://github.com/vboussange/EvoId.jl")
```
This will download latest version from git repo and download all dependencies.
## Getting started
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.
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
[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.
[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.
-----
## 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.
### 0. Import the relevant libraries
Let's import EVOID.jl, and LightGraphs.jl
Let's import EvoId.jl, and LightGraphs.jl
```julia
using EVOID
using EvoId
using LightGraphs
```
......
using Documenter, EVOID
# push!(LOAD_PATH,"/Users/victorboussange/ETHZ/projects/EVOID/") # not sure this is necessary
using Documenter, EvoId
# push!(LOAD_PATH,"/Users/victorboussange/ETHZ/projects/EvoId/") # not sure this is necessary
pathsrc = joinpath(@__DIR__,"src")
makedocs(sitename="EVOID.jl",
makedocs(sitename="EvoId.jl",
format = Documenter.HTML(prettyurls = false),
authors = "Victor Boussange",
pages = [
......@@ -20,4 +20,4 @@ makedocs(sitename="EVOID.jl",
# "contributing.md",
],)
deploydocs(repo = "github.com/vboussange/EVOID.jl")
deploydocs(repo = "github.com/vboussange/EvoId.jl")
......@@ -3,7 +3,7 @@ I recommend to first clone your branch in the directory you like best, and then
To develop, you ca
```julia
using Pkg
Pkg.dev("path_to_EVOID_dir")
Pkg.dev("path_to_EvoId_dir")
```
You can also do the same trick with directly the gitlab address, cf [Pkg.jl](https://docs.julialang.org/en/v1/stdlib/Pkg/index.html)
......
......@@ -12,7 +12,7 @@ There are two ways of implementing a linear landscape. The first one uses a `Dis
### DiscreteSegment
```julia
using EVOID
using EvoId
nodes = 10
mysegment = DiscreteSegment(1,nodes)
wholespace = (mysegment,)
......@@ -20,7 +20,7 @@ wholespace = (mysegment,)
### grid
```julia
using EVOID, LightGraphs
using EvoId, LightGraphs
nodes = 10
g = grid([nodes,1])
mysegmentgraph = GraphSpace(g)
......
# Dynamic graph
in EVOID.jl, individuals can evolve over graphs which connectivity can change over time.
in EvoId.jl, individuals can evolve over graphs which connectivity can change over time.
To define such a dynamic graph, one needs to use the constructor `DynGraphSpace`.
......@@ -10,7 +10,7 @@ DynGraphSpace
Here is an example
```julia
using UnPack,EVOID,LightGraphs
using UnPack,EvoId,LightGraphs
nodes = 10
g1 = LightGraphs.grid(Int8[9,1])
g2 = SimpleGraph(Int8(9))
......
......@@ -10,7 +10,7 @@ Every colour stands for a different optimal trait.
## Run the world
```julia
using Revise,EVOID,Plots,UnPack
using Revise,EvoId,Plots,UnPack
nodes = 9
......@@ -49,7 +49,7 @@ Here we show how to plot a cool animated scatter plot of the trait space through
![](../assets/tutorials/gradient_2Dtrait.gif)
## [Plotting lineages](@id lineages)
A cool feature of EVOID.jl is its ability to track agents ancestors traits (cf [Agent section](../manual/agent.md))
A cool feature of EvoId.jl is its ability to track agents ancestors traits (cf [Agent section](../manual/agent.md))
On can plot it, to get an idea of the coalescence of the population.
......
# EVOID.jl: Agent Based Model for Evolutionary Dynamics
# EvoId.jl: Agent Based Model for Evolutionary Dynamics
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.
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.
- EVOID.jl hence falls in the realm of *Agent Based Model*.
EVOID.jl provides a numerical laboratory for evolutionary dynamics, supplying
- EvoId.jl hence falls in the realm of *Agent Based Model*.
EvoId.jl provides a numerical laboratory for evolutionary dynamics, supplying
- flexible types for individuals, which can
- evolve over any combination of space
- store ancestors trait,
......@@ -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.
### Specificities
- [EVOID.jl allows to keep track of agents' trait lineages](@ref lineages)
- [EVOID.jl enables to run evolutionary dynamics on graphs!](@ref genetic_structure)
- [EvoId.jl allows to keep track of agents' trait lineages](@ref lineages)
- [EvoId.jl enables to run evolutionary dynamics on graphs!](@ref genetic_structure)
## Getting started
```@repl
using EVOID
using EvoId
```
## 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/EVOID/-/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
Pages = [
"examples/delta_competition_example.md",
......@@ -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)
## 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 EVOID.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.
......@@ -8,7 +8,7 @@ In order to use it, you need to feed to the dictionary parameters `p` a constant
## An example on how to use it
```julia
using EVOID,UnPack,Plots
using EvoId,UnPack,Plots
myspace = (RealSpace{1,Float64}(),)
σ_b = .9;
σ_d = .7;
......@@ -30,6 +30,6 @@ w0 = World(myagents,myspace,p,0.)
CFM gives an approximate time step. As of now, we do not manage to obtain qualitatively the same results as the Gillepsie algorithm.
```@autodocs
Modules = [EVOID]
Pages = ["algo/EVOID_CFM.jl"]
Modules = [EvoId]
Pages = ["algo/EvoId_CFM.jl"]
```
# Agent properties
## The `Agent` structure
`Agent` is the atomic structure of EVOID.jl. It has four attributes
`Agent` is the atomic structure of EvoId.jl. It has four attributes
- the ancestors' history of traits, and the corresponding time where the traits have changed,
- a death rate and a birth rate.
```julia
......@@ -23,6 +23,6 @@ end
- `Rates{bool}` : when `bool = true`, the rates `d` and `b` of agents are updated at each time step. This is needed in e.g. Gillepsie Algorithm
```@autodocs
Modules = [EVOID]
Pages = ["EVOID_Agent.jl"]
Modules = [EvoId]
Pages = ["EvoId_Agent.jl"]
```
# Diversity measures
```@autodocs
Modules = [EVOID]
Pages = ["EVOID_metrics.jl"]
Modules = [EvoId]
Pages = ["EvoId_metrics.jl"]
```
......@@ -15,6 +15,6 @@ A particular event, birth or death, is chosen at random with a probability equal
```@autodocs
Modules = [EVOID]
Pages = ["EVOID_Gillepsie.jl"]
Modules = [EvoId]
Pages = ["EvoId_Gillepsie.jl"]
```
# Plotting
EVOID comes with Plot recipes.
EvoId comes with Plot recipes.
```julia
function plot(sim::Simulation;trait = 1)
```
......
......@@ -9,6 +9,6 @@ A `Simulation` object is returned by the function `run!`. It is a container for
```@autodocs
Modules = [EVOID]
Pages = ["EVOID_Sim.jl"]
Modules = [EvoId]
Pages = ["EvoId_Sim.jl"]
```
# Space
```@autodocs
Modules = [EVOID]
Pages = ["EVOID_Space.jl"]
Modules = [EvoId]
Pages = ["EvoId_Space.jl"]
```
# Utils
```@autodocs
Modules = [EVOID]
Pages = ["EVOID_utils.jl"]
Modules = [EvoId]
Pages = ["EvoId_utils.jl"]
```
# World
```@autodocs
Modules = [EVOID]
Pages = ["EVOID_world.jl"]
Modules = [EvoId]
Pages = ["EvoId_world.jl"]
```
......@@ -34,12 +34,12 @@ You have several options available concerning the resource implemented and compe
You can run your script in parallel, which makes sense for large populations. To do so:
```julia
using Distributed;addprocs()
@everywhere using EVOID
@everywhere using EvoId
```
Parallelism only works with Wright Fisher model.
```@autodocs
Modules = [EVOID]
Pages = ["EVOID_WF.jl"]
Modules = [EvoId]
Pages = ["EvoId_WF.jl"]
```
......@@ -55,7 +55,7 @@ The invasion fitness `` f(x,y) `` corresponds to the fitness of a mutant with tr
f(x,y) &= b(y)\left( 1 - \frac{\alpha(x,y)K(x)}{K(y)} \right)
\end{aligned}
```
> :gun: Plot the fitness function in the case of the EVOID
> :gun: Plot the fitness function in the case of the EvoId
## Canonical equation for the Adaptive Dynamics
```math
\frac{d\, x}{d \, t} = m(x) D(x) \tag{2}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment