Individual-based implementation of Fisher's geometric model with evolvable phenotypic noise
Experimental studies demonstrate the existence of phenotypic diversity despite constant genotype and environment. Theoretical models based on a single phenotypic character predict that during an adaptation event, phenotypic noise should be positively selected far from the fitness optimum because it increases the fitness of the genotype, and then be selected against when the population reaches the optimum. It is suggested that because of this fitness gain, phenotypic noise should promote adaptive evolution. However, it is unclear how the selective advantage of phenotypic noise is linked to the rate of evolution, and whether any advantage would hold for more realistic, multi-dimensional phenotypes. Indeed, complex organisms suffer a cost of complexity, where beneficial mutations become rarer as the number of phenotypic characters increases (Rocabert et al. 2020).
σFGM simulates adaptive evolution in Fisher's geometric model with an evolvable phenotypic noise. A population of individuals is placed under stabilizing selection and must evolve towards a fitness optimum. The fitness function is configurable and can adopt non-Gaussian shapes. Phenotypic noise is modeled by an evolvable multivariate normal distribution. Simulations are fully configurable. See below for installation instructions and a first usage, and Rocabert et al. (2020) for a full description of the underlying mathematical model.
σFGM has been developed by Charles Rocabert, Guillaume Beslon, Carole Knibbe and Samuel Bernard.
• Rocabert C., Beslon G., Knibbe C. and Bernard S. (2020). Phenotypic Noise and the Cost of Complexity, Evolution, in press. https://doi.org/10.1111/evo.14083
Download the latest release of σFGM, and save it to a directory of your choice. Open a terminal and use the cd
command to navigate to this directory. Then follow the steps below to compile and build the executables.
σFGM software has been developed for Unix/Linux and macOS systems.
- A C++ compiler (GCC, LLVM, ...)
- CMake (command line version)
- GSL
- CBLAS
Download the latest release of σFGM, and save it to a directory of your choice. Open a terminal and use the cd
command to navigate to this directory. Then follow the steps below to compile and build the executables.
To compile σFGM, run the following instructions on the command line:
cd cmake/
and
bash make.sh
To compile the software in DEBUG mode, use make_debug.sh
script instead of make.sh
:
bash make_debug.sh
This mode should only be used for test or development phases.
Binary executable files are in build/bin
folder.
Open a terminal and use the cd
command to navigate to the example
directory. Then follow the steps below for a first usage.
As a first step, one can execute the Python file available in the example
directory:
python3 run_SigmaFGM_simulation.py
The parameters of the simulation can be edited in this file (see below for a description of the parameters).
To directly run a simulation from the main executable, use the following command line:
../build/bin/SigmaFGM_simulation <parameters>
The command line parameters are described below (see Rocabert et al. 2020 for details on the mathematical terms). Other non-mandatory parameters are also available, and are described by writing the following command line in a terminal:
../build/bin/SigmaFGM_simulation -h
-h
,--help
: Print this help, then exit-v
,--version
: Print the current version, then exit-seed
,--seed
: Specify the PRNG seed (mandatory, random if 0)-g
,--generations
: Specify the number of generations (mandatory)-nbdim
,--nb-dimensions
: Specify the number of dimensions n (mandatory)-alpha
,--alpha
: Specify the α parameter of the fitness function (mandatory)-beta
,--beta
: Specify the β parameter of the fitness function (mandatory)-Q
,--Q
: Specify the Q parameter of the fitness function (mandatory)-popsize
,--population-size
: Specify the population size N (mandatory)-initmu
,--initial-mu
: Specify the initial distance of the mean phenotype μ from the fitness optimum (mandatory)-initsigma
,--initial-sigma
: Specify the initial phenotypic noise amplitude (mandatory)-inittheta
,--initial-theta
: Specify the initial phenotypic noise orientation (mandatory, usually 0)-mmu
,--m-mu
: Specify μ mutation rate (mandatory)-msigma
,--m-sigma
: Specify σ mutation rate (mandatory)-mtheta
,--m-theta
: Specify θ mutation rate (mandatory)-smu
,--s-mu
: Specify μ mutation size (mandatory)-ssigma
,--s-sigma
: Specify σ mutation size (mandatory)-stheta
,--stheta
: Specify θ mutation size (mandatory)-noise
,--noise-type
: Specify the type of phenotypic noise (mandatory, NONE/ISOTROPIC/UNCORRELATED/FULL)
Note that setting -noise
to NONE
leads to a simulation with the classical Fisher's geometric model.
The software outputs two statistics files during the course of the simulation, containing the mean (mean.txt
) and the standard deviation (sd.txt
) of some metrics allowing to track the state of the evolving population (see Rocabert et al. 2020 for a full description):
g
: Current generation,dmu
: Distance of the mean phenotype μ from the optimum,dz
: Distance of the phenotype z from the optimum,Wmu
: Absolute fitness of the mean phenotype μ,Wz
: Absolute fitness of the phenotype z,EV
: Maximal eigenvalue of the phenotypic noise distribution,EV_contrib
: Contribution of the maximal eigenvalue to the sum of eigenvalues,EV_dot_product
: Alignment of the eigenvector corresponding to the maximum eigenvalue with the dirction of the fitness optimum,r_mu
: Mutation size on the mean phenotype μ,r_sigma
: Mutation size on the phenotypic noise amplitudes σ,r_theta
: Mutation size on the phenotypic rotation angles θ.
Copyright © 2016-2020 Charles Rocabert, Guillaume Beslon, Carole Knibbe, Samuel Bernard. All rights reserved.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.