SLiM is an evolutionary simulation framework that combines a powerful engine for population genetic simulations with the capability of modeling arbitrarily complex evolutionary scenarios. Simulations are configured via the integrated Eidos scripting language that allows interactive control over practically every aspect of the simulated evolutionary scenarios. The underlying individual-based simulation engine is highly optimized to enable modeling of entire chromosomes in large populations. We also provide a graphical user interface on macOS, Linux, and Windows, for easy simulation set-up, interactive runtime control, and dynamical visualization of simulation output.
A 4–5 day SLiM Workshop is now available online. The SLiM Workshop is also offered in person from time to time; see the SLiM Workshops subsection below for more information.
SLiM 4.0 beta 1
A “beta” prerelease version of SLiM 4.0, named 4.0b1, is now available. The big new feature is support for simulating multiple species, including ecological interactions between species, coevolutionary dynamics, and so forth. In other words, simulations of evolutionary ecology and eco-evolutionary dynamics are now possible in SLiM! There is a public Google Doc summarizing the design and implementation of multispecies support in SLiM 4; this may be particularly useful to users who are quite familiar with SLiM already.
It is not recommended that all SLiM users switch to SLiM 4.0b1. This is prerelease software. It may contain bugs (although it seems to be stable and bug-free at this point), and the design of SLiM 4 may change between this beta and the final release. It is recommended mainly for experienced SLiM users who are interested in doing simulations of multiple species. Backward compatibility and backward reproducibility with SLiM 3 is not preserved, and modifications will be required to most existing SLiM scripts to run under SLiM 4. These problems will usually be minor, however, and SLiMgui will usually offer to assist you in fixing them, since it understands most of the changes that have been made; just recycle and run your existing script, and accept SLiMgui’s offers to “fix” your script as it encounters issues. The Google Doc linked above summarizes most of the changes made.
To obtain SLiM 4.0b1, you need to check out the 4.0b1 tag from GitHub and then build SLiM and SLiMgui from those sources, following the instructions in chapter 2 of the SLiM manual. Note that the master branch is still basically SLiM 3.7.1; the SLiM 4.0 beta is presently on the multispecies branch. Installers will continue to install SLiM 3.7.1.
To go along with this release, there is a beta release of pyslim v1.0 from Peter Ralph. To install it, run pip install pyslim==1.0b1. There have been many major changes to pyslim, thanks to much of its functionality having been absorbed into core tskit; most notably the SlimTreeSequence class is no longer needed. The documentation for this beta release is available (or will be soon) at https://tskit.dev/pyslim/docs – and, see https://tskit.dev/pyslim/docs/latest/previous_versions.html for an overview of what has changed and how to update your pyslim analysis code.
Resources available for this beta include draft versions of the SLiM manual, Eidos manual, SLiM and Eidos reference sheets, and SLiM recipes. The draft SLiM manual has new content about multispecies models and related concepts in section 1.5.7, section 1.9, and chapter 19, including a bunch of new multispecies recipes that build from simple to complex. The SLiM Workshop has not yet been updated. A detailed change log for SLiM 4.0b1 can be found in its VERSIONS file on GitHub.
If you try out this beta release, we would greatly appreciate receiving feedback on it, from bug reports to feature requests. We hope to release SLiM 4 in late summer or early fall, but that very much depends upon the feedback from this beta.
Downloads (version 3.7.1)
For help with installation on all platforms, see chapter 2 of the SLiM manual. The macOS Installer above will install the slim command-line tool, the SLiMgui graphical development environment, and both manuals. (The old macOS Cocoa-based SLiMguiLegacy app can be downloaded from SLiMguiLegacy.app.zip or built in Xcode; it is no longer supported.) On Linux platforms there is probably an installer for your platform, or you can build from sources. On Windows, there is a pacman installer, or you can build from source; you can also run SLiM on Windows under the WSL.
The SLiM Manual includes a collection of over 100 recipes for common situations. You can download a zip archive of those recipes, if you wish; they are also directly available through SLiMgui’s File menu. The Eidos Manual covers the details of the Eidos language, used to control SLiM via scripting. Reference sheets for both SLiM and Eidos, downloadable above, make them easy to use with minimal use of the full documentation.
Note that the source code archive provided above contains neither macOS specific code, nor the Xcode project for SLiM; it is intended for users on Linux and Windows (macOS users are strongly encouraged to use the macOS Installer rather than building from sources). The complete sources including macOS files can be found on GitHub; you can get the sources for a tagged release, such as 3.7.1, or for the current development head.
We also provide a GitHub repository called SLiM-Extras with additional useful tidbits for users of SLiM, such as user-defined Eidos functions for performing some common tasks, and we welcome contributions to that repository from others.
With the SLiMgui graphical modeling environment (compatible with macOS, Linux, and Windows), you can visualize your simulation as it runs and examine its parameters in real-time, allowing for much easier simulation development.
A screenshot of SLiMgui simulating the population dynamics of a CRISPR/Cas9 “gene drive” in a six-subpopulation island model with spatial variation in selection on the driver allele. The Eidos scripting area is on the left, output is on the right. A visual representation of the population structure is shown in the subwindow, and all of the individuals in the six subpopulations can be seen at top (colored according to their relative fitness). The central black bar shows a summary of the genetic variation present in the population; rare neutral mutations are visible as short yellow bars, and the tall red bar represents the driver allele approaching fixation.
There are two mailing lists. Please subscribe to either or both using the links below:
- slim-announce: A low-volume mailing list for announcements only. Users may not post to this list.
- slim-discuss: A higher-volume mailing list for questions, comments, bug reports, and discussion among users of SLiM.
We run 5-day SLiM workshops that are free and open to the public (with registration). At present, however, these workshops are on hold due to the coronavirus pandemic.
The workshop materials are now online, for people who want to do it themselves; visit the online workshop download page for more information.
- 6–10 March 2020, University of Iceland, Reykjavík, Iceland
- 13–17 January 2020, Cornell University, Ithaca, NY, USA
- 4–8 November 2019, City University of New York, New York City, USA
- 9–13 September 2019, University of East Anglia, Norwich, UK
- 12–16 August 2019, Umeå University, Umeå, Sweden
The first SLiM workshop: Umeå, Sweden, August 2019.
2022 February 14: SLiM 3.7.1 is released! This is a minor bug-fix release, fixing one crash and several more minor issues. This upgrade is recommended for all users, and preserves backward compatibility and reproducibility from SLiM 3.7. For more information, see slim-announce for the announcement and release notes.
2021 December 15: SLiM 3.7 is released! This is a major release, with tons of new stuff and several important bug fixes. It adds Windows as a supported platform. This upgrade is recommended for all users, but breaks backward compatibility in a couple of ways for some models. Version 3.6 should be used with caution, due to three bugs that could cause incorrect model results. For more information, see slim-announce for the announcement and release notes.
2021 March 3: SLiM 3.6 is released! This is a major release, with many new features and several important bug fixes. This upgrade is strongly recommended for all users; version 3.5 should not be used due to two bugs that could cause incorrect model results. For more information, see slim-announce for the announcement and release notes.
2020 December 8: SLiM 3.5 is released! This is a major release, with many new features and several important bug fixes. This upgrade is recommended for all users, but it breaks backward compatibility/reproducibility in several ways; read the release notes carefully. For more information, see slim-announce for the announcement and release notes.
2020 May 12: SLiM 3.4 is released! This is a major release, including the first release of QtSLiM, as well as a few other new features and fixes for a couple of bugs. This upgrade is recommended for all users. For more information, see slim-announce as usual.
2020 January 30: SLiM 3.3.2 is released! This is a minor release, with several small improvements and fixes for a couple of bugs (one significant). This upgrade is recommended for all users. For more information, see slim-announce as usual.
2020 January 13–17: We had a SLiM workshop on our home turf, at Cornell! We’ve done a couple so far (Sweden, the UK, New York City) but this was our first at Cornell. We had 28 attendees, and it went very well, including a catered lunch sponsored by 3CPG. We’ve got more workshops planned (see the previous subsection); please contact us if you’d like to host a workshop at your institution!
2019 September 28: SLiM 3.3.1 is released! This version is a minor release, mostly bug fixes (including a few rare but nasty bugs!). This upgrade is recommended for all users. For more information, see the new manuals, and the release notes in the announcement on slim-announce.
2019 May 15: SLiM 3.3 is released! This version is a major release, with big new features (nucleotide-based models, mutation() callbacks, etc.) and some big, important bug fixes. This upgrade is strongly recommended for all users. For more information, see the new manuals, and the release notes in the announcement on slim-announce.
2019 January 29: SLiM 3.2.1 is released! This version is a minor release, providing some smaller feature additions and a couple of new recipes, as well as bug fixes. For more information, see the new manuals, and the release notes in the announcement on slim-announce.
2019 January 18: In recent days we have had three (!) new papers published related to SLiM. (1) “SLiM 3: Forward genetic simulations beyond the Wright–Fisher model” describes the support for non-Wright–Fisher models and continuous space in SLiM 3 (DOI). (2) “Evolutionary modeling in SLiM 3 for beginners” walks new users through making a simple model in SLiM 3, with lots of explanations of basic concepts (DOI). (3) “Tree‐sequence recording in SLiM opens new horizons for forward‐time simulation of whole genomes” discusses the new tree-sequence recording feature in SLiM 3 in detail, with several examples of its practical application to speeding up model execution, burn-in simulation, and data analysis (DOI). We hope these papers are useful for getting up to speed on all the new stuff we’ve been working on!
2018 November 6: SLiM 3.2 is released! This version greatly improves the performance of large nonWF models, and provides numerous improvements and bug fixes. For more information, see the new manuals, and the release notes in the announcement on slim-announce.
2018 September 3: SLiM 3.1 is released! This version greatly improves the performance of spatial interactions, and provides improvements to tree-sequence recording, among other improvements and bug fixes. For more information, see the new manuals, and the release notes in the announcement on slim-announce.
2018 July 1: SLiM 3.0 is released! This is our first full version upgrade since SLiM 2.0 was released in early 2016. It adds support for non-Wright-Fisher (nonWF) models and tree-sequence recording, two features that greatly increase SLiM’s power and flexibility. Many smaller improvements have been made too. For more information, see the new manuals, and the release notes in the announcement on slim-announce.
2017 December 16: SLiM 2.6 is released! This is a major release, with lots of new stuff; see the new manuals, and the release notes in the announcement on slim-announce.
2017 October 27: SLiM 2.5 is released! This is a major release, with lots of new stuff and some important bug fixes; see the new manuals, and the release notes in the announcement on slim-announce.
2017 September 12: SLiM 2.4.2 is released (fix for a bug that could cause incorrect output from many/most models).
2017 July 26: SLiM 2.4.1 is released (fix for a bug that could cause crashes or incorrect results in multi-subpopulation simulations).
2017 July 14: SLiM 2.4 is released! This is a major release, with speed improvements for many types of models, new support for runtime profiling in SLiMgui, and many other features. See the new SLiM and Eidos manuals for current documentation. There are also release notes in the announcement on slim-announce.
2017 April 18: SLiM 2.3 is released! This is a major release, notably adding support for continuous space and spatial interactions. See the new SLiM and Eidos manuals for current documentation. There are also release notes in the announcement on slim-announce.
2017 February 22: SLiM 2.2.1 is released (new recipes, minor features and fixes).
2016 December 8: SLiM 2.2 is released! This is a major release with big performance improvements and several new features. See the new SLiM and Eidos manuals for current documentation. There are also release notes in the announcement on slim-announce.
2016 November 8: SLiM 2.1.1 is released (mostly bug fixes, some serious).
2016 October 4: Our publication on SLiM 2 is out in Molecular Biology and Evolution: DOI.
2016 September 19: SLiM 2.1 is released! This is a major release with lots of features added. See the new SLiM and Eidos manuals for current documentation. There are also release notes in the announcement on slim-announce.
2016 May 26: SLiM 2.0.4 is released (minor bug fixes).
2016 May 12: SLiM 2.0.3 is released (improvements to code completion).
2016 May 6: SLiM 2.0.2 is released (minor feature additions).
2016 April 27: SLiM 2.0.1 is released (minor bug fix and minor feature addition).
2016 April 1: SLiM 2.0 is released! We are excited to announce SLiM 2.0, a new major release of the SLiM package. SLiM 2.0 adds scriptability with Eidos, and interactive simulation development using the SLiMgui application. We have put up a blog post with more details about the SLiM 2.0 release.
License and citation
SLiM is free open-source software, licensed under the GNU General Public License version 3. If you use SLiM in your research, please cite us.
For SLiM 3, cite:
Haller, B.C., & Messer, P.W. (2019). SLiM 3: Forward genetic simulations beyond the Wright–Fisher model. Molecular Biology and Evolution 36(3), 632–637. DOI
For models using tree-sequence recording, cite:
Haller, B.C., Galloway, J., Kelleher, J., Messer, P.W., & Ralph, P.L. (2019). Tree‐sequence recording in SLiM opens new horizons for forward‐time simulation of whole genomes. Molecular Ecology Resources 19(2), 552–566. DOI
If appropriate, cite our “protocol” paper for beginning SLiM users:
Haller, B.C., & Messer, P.W. (2019). Evolutionary modeling in SLiM 3 for beginners. Molecular Biology and Evolution 36(5), 1101–1109. DOI
For older models using SLiM 2, cite:
Haller, B.C., & Messer, P.W. (2017). SLiM 2: Flexible, interactive forward genetic simulations. Molecular Biology and Evolution 34(1), 230–240. DOI
And for SLiM 1, cite:
Messer, P.W. (2013). SLiM: Simulating evolution with selection and linkage. Genetics 194(4), 1037–1039. DOI
The SLiM icon
Graphics files for the SLiM icon are downloadable here. These images are: Copyright (c) 2016–2022 Philipp Messer, All Rights Reserved. Permission is hereby granted for re-use specifically for SLiM-related purposes that are respectful and supportive of the SLiM community. If you have any doubt as to this, please contact us for permission. Various sizes and formats are provided.
For new projects, using the current version is strongly recommended. Old versions from SLiM 2.0 onward can be found on GitHub using the release tags. These old versions are no longer supported.
It can be useful to see how others are using SLiM; sometimes you can even download the actual SLiM model used in a paper. However, updating a list of all the publications that cite SLiM became too time-consuming, so now we provide links for Google Scholar searches, for papers that cite our SLiM papers.
Citations for SLiM 3 (> 300 cites)
Citations for Tree-sequence Recording in SLiM (> 60 cites)
Citations for SLiM 2 (> 160 cites)
Citations for SLiM 1 (> 160 cites)