We have just released SLiM 2.6. This is a major release with a bunch of new stuff. Here are the major new features and changes:
- Eidos now supports matrices (2-D) and arrays (n-D), with new functions related to matrices/arrays such as array() and matrix(), cbind() and rbind(), dim() and nrow() and ncol(), and matrixMult(). The way matrices/arrays work in Eidos is very parallel to how they work in R. See the new Eidos manual, sections 2.9 and 3.7, for details.
- SLiM now supports periodic spatial boundary conditions, in which the modeled space wraps around at one or all edges to form a seamless, continuous space. This boundary condition can be extremely useful for theoretical models in particular, since it eliminates "edge effects" that exist with any other boundary condition. See the new recipe 14.12 for discussion and an example model.
- SLiMgui now supports making haplotype plots, and the chromosome view now supports an alternative haplotype-based display mode. See the new, revised recipe 13.5 for an example of using these features.
- SLiMgui now supports visualization of the distribution of fitness effects for mutation types, so you can see a plot of the DFE directly and verify that it looks how you expect. See the revised section 7.1 of the SLiM manual for discussion and examples.
- Eidos now has an rdunif() function for drawing from a discrete uniform distribution, and rmvnorm() for drawing from a multivariate normal distribution.
- The Eidos core has been optimized considerably, leading to as much as a 20% speedup for Eidos-intensive models. (If your model spends most of its time in the SLiM core, as many models do, this will make no difference to you.)
- The function that used to be named apply() is now named sapply(), following R's naming conventions more closely. A new function named apply() has been added for executing code on the margins of a matrix/array, like the R function apply(). If your code uses the old apply() function, you will be shown an error message suggesting that you switch to using sapply() instead, following the rename.
There are a bunch of other changes, some of which may be important to you; see the revision history in the SLiM manual (chapter 23) for a more complete list.
In addition to the recipes mentioned above, we've got some other new/modified recipes:
- Recipe 13.9 (tracking true local ancestry along the chromosome) has been revised, with supporting modifications in the SLiM core, to be much faster. True local ancestry can now be tracked along a fairly long chromosome; there is still a speed penalty, but it should not be prohibitive for many applications.
- Recipe 13.12 (modeling nucleotides) has similarly been revised, with supporting SLiM revisions, to be much faster. You can now model explicit nucleotide bases along a fairly long chromosome, albeit still with some speed penalty of course.
- Recipes have been added to show how one might model microsatellites in SLiM (recipe 13.15) and how one might model transposons (recipe 13.16).
- A new recipe, 13.17, shows how to model multiple phenotypic traits based upon QTLs, with pleiotropy and mutational correlation based upon an M-matrix that governs the mutational effects of each QTL mutation.
A handful of minor bugs was fixed in this release. The only one that might affect simulation results from SLiM 2.5 is that the mutation frequencies/counts from the mutationFrequencies() and mutationCounts() methods of SLiMSim could be wrong immediately after a call to addMutations() or removeMutations(), until the next fitness-recalculation generation cycle stage. This would not occur after a call to addNewMutation() or addNewDrawnMutation(), only after addMutations() or removeMutations(); it is thus expected to impact few, if any, end users. If your model does use those particular calls in a way that would have been unsafe, however, you should redo all runs.
You can obtain SLiM 2.6 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!
Benjamin C. Haller