11
$\begingroup$

I'm looking for a tool to simulate sequence evolution given a specific mutation model and birth-death model. I'm aware of tools and packages like INDELible, Seq-Gen and PhyloSim, but they simulate evolution along phylogenetic trees. What I want is to give a sequence and ask the tool to simulate the evolution of this sequence through N generations. The output should be a big bunch of descendant sequences. I've been thinking about writing such a tool myself, but it's always better to look for something already coded.

$\endgroup$
11
$\begingroup$

There exists a bunch of population genetics forward and backward (coalescence) simulation platforms. Here is a non-exhaustive list. They all differ and you'll have to go through their manual to see what is more adapted to your needs.

List of softwares

Here is a long list of such platforms. The list might arguably be a little bit outdated today though and many of these softwares might be slow or abandoned by their authors.

Most common softwares to my experience

Some are more known than others. Personally, I already saw uses of the following platforms in publication: SimCoal, Nemo, Slim and SFS_Code.

SimBit

Of course, I must indicate my own simulation platform SimBit. To my experience, SimBit is typically faster than Nemo. It is slower than SFS_Code and SLim for very small simulations but become much much faster than SFS_Code and SLim when you need simulations with a descent amount of genetic diversity.

Most important point about these softwares

You should compare softwares based on

  • Availability of the author to advice and bring new features
    • I won't talk about my personal experience here by respect for the authors!
  • Speed / RAM usage
    • I think SimBit is typically faster (and use less RAM) than Nemo. SFS_code and SLim are very fast for simulations with low genetic diversity but very slow for simulations with high genetic diversity.
  • Flexibility
    • Nemo, SLim and SimBit are very flexible (but they do different things) but SFS_code is not really.
  • User interface
    • I find Nemo error report pretty poor. I like SimBit error report. SLim interface is very nice (using eidos) and it even comes with a GUI (I have never used the GUI myself).
  • Free of Bugs
    • Several people have found important bugs in SFS_code (personal communication and experience).

Slightly more detailed comparison between Nemo, SLim, SFS_code and SimBit

I have personally used NEMO, SFS_CODE and SLim in the past (I now use SimBit only). So I can only talk about these 4 below.

All four models are well updated and maintained by their authors and of course everyone has a access to the source code.

SFS_code and SLim are very fast for small simulations. The issue of SFS_code and SLim is that the RAM usage and run time are exponential function of the genetic diversity. This means that some simulations can quickly become totally unmanageable. But it is a great tool if you expect little genetic diversity.

SimBit is typically faster than Nemo, at least for large genomes. This difference becomes particularly obvious for large genomes. One might think "Oh I am fine to wait a few extra days to get my results" but the difference in speed between two softwares can also be a difference in whether you have to wait a week or 20 years to get your results, so do not neglect the importance of running time and RAM usage without estimating your needs.

Nemo is very flexible when it comes to the order of life-cycle events (is migration before or after selection for example) and the newest version allows for simulating age structured population. SimBit is very flexible, very fast and allow for simulating multi-species and their ecological interactions. SFS_code is less flexible.


My only concerns about NEMO are that each individual dies after reproduction and that there can't be more than 256 alleles at the same time.

SFS_code limits the number of alleles to 4. Nemo limits the number of alleles to 256 (but you can also use phenotype and have a float number at each locus). SimBit uses either bi-allelic loci, a block in which the number of mutations are counted (max: 256 mutations; this is different than 256 alleles per say) or continuous float number at each locus for the phenotype. Do you really need more alleles? Why can't you just use several loci to represent a sequence with multiple alleles? Real biology can only have 4 alleles in its smallest locus! SimBit uses a bit-per-bit system. If you need, say 50,000 alleles, then you just need to ask for a sequence of 16 bits (2 bytes) and you can get $2^{16} = 65,536$ alleles.

If you need more alleles in a single block (which is a little surprising to me a priori), you can probably just ask the author and he might accept to helping you if you convince him it is of interest to add this feature (he might also be more willing to help in exchange of authorship if you need more support).

Hope that helps. Good luck!

$\endgroup$
  • $\begingroup$ Well, thank you a lot. You saved me a lot of time. $\endgroup$ – Eli Korvigo Jun 10 '15 at 13:14
  • $\begingroup$ Though I haven't found a tool that fits the task well enough, the list provides several links to R and C packages that would save me a significant amount of effort needed to develop one myself. $\endgroup$ – Eli Korvigo Jun 10 '15 at 14:55
  • $\begingroup$ I can't quite give you more advice as I don't exactly know what you're looking for. But you can simulate a whole bunch of things with NEMO and get the genes of every single indivdiuals afterward. NEMO is not super efficient for simulating an actual string of A,T,C,G (although it is feasible) but maybe something like SFS_code or SimCoal would do the trick. You might want to download Nemo (free of course) and run the example simulation that goes with the package you could get a better sense of what it does. $\endgroup$ – Remi.b Jun 10 '15 at 15:20
  • $\begingroup$ My only concerns about NEMO are that each individual dies after reproduction and that there can't be more than 256 alleles at the same time. Coalescence based techniques reconstruct genealogies, rather than inflate the sequence space. In my lab we are working on the structure of sequence spaces and we've found several hollow regions. Math-wise the problem is so complicated that we think it's better to try maximum-likelihood to estimate possible parameters of bacterial sequence evolution that could've led to this hollows. Hence the need in a simulator of forward sequence evolution. $\endgroup$ – Eli Korvigo Jun 10 '15 at 19:07
  • $\begingroup$ @EliKorvigo I reread your comment and realized I might have not addressed it correctly. I edited my answer. The comment is now 2.5 years old. I am curious, what did you end up doing? $\endgroup$ – Remi.b Dec 31 '17 at 17:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.