Skip to content

Releases: kr-colab/discoal

v0.1.7 - Memory Optimization Release

21 Jun 01:25
f8507dd

Choose a tag to compare

v0.1.7 - Memory Optimization Release

This release brings significant memory and performance optimizations to discoal while maintaining 100% backward compatibility. This serves as a transitional release before the upcoming tskit integration.

Highlights

  • 80-99% memory reduction for most simulation scenarios
  • Up to 50x performance improvement for high mutation rates
  • Sample size limit increased from 254 to 65,535

Major Improvements

Memory Optimizations

  • Dynamic allocation replaces fixed-size arrays (baseline memory: 400MB → 10MB)
  • Ancestry tracking via interval trees instead of per-site arrays
  • Memory-mapped files for sweep trajectories (2GB → 1.4MB)
  • Reference counting enables memory sharing between nodes
  • Active material tracking with segment-based structure

Performance Enhancements

  • Optimized mutation handling with hash tables and binary search
  • Pre-computed mutation presence matrix for output generation
  • AVL tree indexing for O(log n) ancestry lookups
  • Up to 50x speedup for extreme mutation rates (θ=10,000)
  • 33-47x faster for extreme recombination scenarios
# Same command-line interface as v0.1.6
./discoal 50 1000 10000 -t 10 -r 10

Installation

git clone https://github.com/kr-colab/discoal.git
cd discoal
make discoal

What's Next?

The next major release (v0.2.0) will introduce full tskit integration for tree sequence recording, bringing discoal into the modern tree sequence ecosystem.

v0.1.6 - Legacy Release

21 Jun 01:04

Choose a tag to compare

Legacy Version - Final release before tskit integration

This release represents the last version of discoal before the major tskit integration changes. It is being preserved for compatibility with existing workflows and as a reference point.

Features

  • Standard coalescent simulation with recombination
  • Selective sweep models (stochastic, deterministic, neutral)
  • Demographic changes (population splits, admixture, size changes)
  • Gene conversion support
  • Multiple population models with migration
  • Ancient sampling
  • Recurrent hitchhiking modes
  • Tree output mode (-T flag)

Installation

git clone https://github.com/kr-colab/discoal.git
cd discoal
git checkout v0.1.6
make discoal

What's Next?

The next major release will include full tskit integration for tree sequence recording, bringing:

  • Efficient tree sequence output format
  • Memory optimizations (80-99% reduction)
  • Performance improvements (up to 50x speedup for high mutation scenarios)
  • Compatibility with the tskit ecosystem

Documentation

See discoaldoc.pdf for full documentation, or run ./discoal for usage information.

maintenance release

24 Jul 22:42
c2b3853

Choose a tag to compare

a few minor bug fixes in this release

ancient sample bug fix

06 Dec 18:31

Choose a tag to compare

noticed that sweeps and ancient samples weren't playing together as expected.

bug fix release

12 Sep 23:48
1fcc67c

Choose a tag to compare

This release has a good bit of cleanup do to the help of @molpopgen. In addition @35ajstern found a bug in the newick tree output in cases with recombination that now is fixed. thanks for all the great help folks!

v0.1.2

24 Nov 13:17
e4a8647

Choose a tag to compare

v0.1.2 fixes a bug reported by Yoko Satta in which no recombination simulations very rarely violate the four gamete test. This was a result of a floating point precision problem with the RNG which effectively caused collisions between sites chosen to be mutations. This should now be fixed.

discoal v0.1.1

17 Nov 23:23

Choose a tag to compare

This is the first release of discoal using the "releases" feature of GitHub. Kevin Thornton suggested that I use this feature to track changes and I agree it's an excellent idea. v0.1.1 fixes the way I had been dealing with the origination of alleles used for conditional trajectories, both neutral and beneficial. In particular I had not been accounting for changes in the mutation rate of these alleles that we condition upon (see Slatkin (2001) Simulating genealogies of selected alleles in a population of variable size). Aaron Stern noted this potential problem and suggested a fix might be to use rejection sampling of trajectories. This is now implemented in v0.1.1. All said the update has very minor effects on summaries of variation from the vast majority of demographic models, so past work done with v0.1 is likely unaffected by my previous implementation.