Skip to content

v0.1.7 - Memory Optimization Release

Latest

Choose a tag to compare

@andrewkern andrewkern released this 21 Jun 01:25
· 44 commits to master since this release
f8507dd

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.