Upgrading from 2.4.0 or 2.4.1 is recommended. Version 2.4.2
fixes a major bug in the random word generator that affected free
recombination in the bitstring trait architectures (bdmi,
delet, ntrl, quant).
RAND::RandULong() returned only 32 random bits, leaving the
upper 32 bits of every 64-bit word at zero, so within each 64-bit block the
loci at positions 32 to 63 were always inherited from the same parental
chromosome instead of recombining. Simulations that used free recombination
with these traits under 2.4.0 or 2.4.1 should be re-run. See the
CHANGELOG
for details.
About
Nemo is a forward-time, individual-based, genetically explicit, and stochastic simulation program designed to study the evolution of quantitative traits and population genetics in a flexible (meta-)population framework. It implements many life-cycle events and evolvable traits with a variety of genetic architectures, all framed within a metapopulation model that allows for patch-specific carrying capacities, dispersal rates, stochastic extinction/harvesting, and demographic stochasticity.
The interface is a simple text file of simulation parameters and their values. Each parameter can take several argument values — running many simulations from a single file — or temporal values that automatically modify the simulation during a run. Nemo is highly optimized for batch mode, and a parallel-computing (MPI) version is part of the release, making it a flexible and powerful simulation tool.
Features
- Genetic elements on a shared genetic map: neutral markers (microsatellites, SNPs), deleterious mutations (locus-specific fitness & dominance), quantitative traits (pleiotropic QTL, additive or di-allelic effects, epistasis, dominance), and Bateson–Dobzhansky–Muller incompatibilities. The map supports multiple chromosomes and variable recombination rate and locus density.
- Additional evolvable traits: sex-specific dispersal rate, and Wolbachia (maternally inherited cytoplasmic-incompatibility endosymbiont).
- Composable life-cycle events, in any order: breeding (promiscuity, polygyny, monogamy, selfing, cloning, Wright–Fisher), dispersal (island, 1D/2D lattices, propagule pool, custom matrices), selection (Gaussian, quadratic, linear, disruptive, truncation; multivariate; spatially & temporally variable optima), phenotypic plasticity, aging, extinction/harvesting, patch fusion/fission, and crossing designs.
- Metapopulation framework: patch-specific carrying capacities, dispersal, and selection; dynamic modification during a run; demographic and environmental stochasticity; sparse connectivity matrices for large landscapes; batch and MPI parallel processing.
- Output formats: summary statistics (TSV/CSV), binary population snapshots, PLINK, FSTAT and GENEPOP, genotype and allele-frequency files.
Quick start
Install with Conda — no compilation required
The Conda package ships a precompiled binary and pulls in the GSL for you, so no compiler or manual setup is needed. Packages are built for Linux on Intel/AMD (linux-64) and ARM (linux-aarch64), and for macOS on Apple Silicon (osx-arm64). On an Intel Mac or on Windows, build from source instead — on Windows through WSL2.
conda create -n nemo -c conda-forge -c ecoevo nemo
conda activate nemo
The ecoevo channel is published automatically when a release is tagged, so it always carries the current version. Nemo is also on Bioconda, built from the same source, but updated through a pull request that a Bioconda maintainer has to review and merge — it can trail the current release by several weeks.
Remember that conda activate nemo is needed once per terminal, not just once after installing.
Build from source
Nemo requires the GNU Scientific Library (GSL) 2.0 or higher.
# Ubuntu / Debian
sudo apt-get install libgsl-dev
# macOS (Homebrew)
brew install gsl
Download and unpack the source — either the Nemo-2.4.2-src.tgz package from SourceForge, or the latest revision from the repository:
curl -L https://bitbucket.org/ecoevo/nemo-release/get/v2.4.2.tar.gz -o Nemo-2.4.2.tar.gz
mkdir Nemo-2.4.2 && tar xzf Nemo-2.4.2.tar.gz -C Nemo-2.4.2 --strip-components=1
Compile and install:
cd Nemo-2.4.2
mkdir bin
make
make install # copies to ~/bin/ by default
Platform-specific builds: make MAC_ARM=1 (Apple Silicon), make MAC_x86=1 (Intel Mac), make MPI=1 (parallel), make DEBUG=1 (debug build).
Run a simulation
However Nemo was installed, the executable carries its version number, so several versions can live side by side:
nemo2.4.2 my_simulation.ini
Without arguments, Nemo looks for a file named Nemo2.ini in the current directory; if there is none it prints its banner along with an error, which is a quick way to confirm the install works. Example configuration files are provided in the examples/ directory. See INSTALL for detailed, platform-specific instructions.
Documentation
- User manual (PDF) — full description of parameters and features
- Code documentation — Doxygen reference and developer guidelines
- Development guide — extend Nemo with new traits, life-cycle events, and handlers
- CHANGELOG — version history and release notes
Related projects
- Nemo-age — the age- and stage-structured version of Nemo.
- nemosub — a utility to submit Nemo jobs to cluster schedulers (Slurm, OAR, PBS, LSF) directly from simulation init files.
Citation
Please cite Nemo as:
Support
- News & updates: subscribe to the nemo-announce mailing list.
- Questions & bug reports: post to the nemo-simul mailing list.