We have just released SLiM 2.5. This is a major release with a bunch of new stuff. First of all, for all users, it is important to note:
- This release fixes a bug present in 2.4, 2.4.1, and 2.4.2 that would cause incorrect addition of mutations in models that involved clonal reproduction. If you did not call setCloningRate() in your model, this bug will not have affected you, but if you were using clonal reproduction with 2.4, 2.4.1, or 2.4.2 you should consider all results from those runs to be suspect. Apologies for this very bad bug, which slipped through the cracks due to a flaw in my test code (which has been fixed). As always, it is wise to verify that your results make sense, since bugs do happen!
- We have started a new online repository called SLiM-Extras, for useful code and resources related to SLiM, at https://github.com/MesserLab/SLiM-Extras. It has a couple of useful tidbits already, and we hope that the SLiM user community (that's you!) will contribute more.
Here are the major new features and changes:
- You can now write your own Eidos functions, and call them from your SLiM code! This makes it easier to encapsulate code into reuseable packages, and to organize the code in your model. Chapter 4 of the new Eidos manual covers this feature in detail, and recipe 11.1 in the new SLiM manual provides an example. SLiM-Extras (see above) now has reuseable functions for calculating FST and mean nucleotide heterozygosity.
- The mutation rate can now vary along the chromosome, with a mutation-rate map similar to the existing recombination map, and this map can be displayed in SLiMgui.
- The Mutation class now supports the getValue()/setValue() mechanism that many other SLiM classes already possess, for greater extensibility.
- SLiMgui can now prettyprint your code (i.e., fix its indentation to look nice), with a button in the toolbar directly above the script editor view.
- Eidos has several new language features, including block comments with /* */ and a "ternary conditional" operator, ?else. See the new Eidos manual for details.
- A new function, source(), can be used to read and execute Eidos code contained in a file
- The SLiM and Eidos documentation now have hyperlinks in their tables of contents, for easier navigation
- Improvements to various Eidos functions: pmax(), pmin(), max(), min(), range(), seq(), any(), all(), unique(). All changes are backward-compatible. Check the new documentation if you care.
- A bug fix for a flaw in InteractionType; spatial queries could return incorrect results if two individuals had an identical coordinate value. Not all coordinates had to be identical between the individuals; any individual coordinate being identical could trigger the bug. If you use integer coordinate values, or if offspring in your model inherit a spatial coordinate from a parent without modification, you might care, otherwise this bug is very unlikely to matter to you.
We've also got some new recipes:
- 13.13: a model of haploid organisms in SLiM
- 13.14: a model of variation in functional density along the chromosome, using the new mutation-rate-map feature in an unusual way
You can obtain SLiM 2.5 from the SLiM home page at http://messerlab.org/slim/
; note that the manuals, recipes, and reference sheets have also undergone revisions.
If you have any questions, comments, etc., please use the slim-discuss group for that. Thanks, and happy modeling!