Skip to content

Big release!

Compare
Choose a tag to compare
@molpopgen molpopgen released this 02 Jun 19:43

This release has a lot of big changes.

GitHub Issue 186 was fixed.
The "genome length" was not correctly accounted for in fwdpp::ts::mutate_tables. The
problem was fixed in this commit.

PR 187 Improves the performance of serializing
fwdpp::ts::table_collection objects. The output files are slightly bigger, but the IO is faster. This changes the
value of fwdpp::ts::TS_TABLES_VERSION from 1 to 2, and we retain the ability to read in "version 1" files.

PR 178 introduced several improvements related to tree sequence
recording, as well as cleaning up a variety of other, smaller, issues:

  • Added fwdpp::ts::generate_offspring, which is implemented in terms of fwdpp::mutate_recombine, and returns the
    data structures needed for edge recording after creating an offspring individual. This new function streamlines
    the API for "meiosis", with the same function applicable to fwdpp::slocuspop and fwdpp::mlocuspop objects.
  • The constructor for fwdpp::poptypes::mlocuspop is changed to require the locus boundaries. This change breaks
    API
    . The result is a much safer type.
  • Added fwdpp::GSLrng_mt as a typedef for a mersenne twister
  • Added fwdpp::zero_out_gametes, which is a convenience functions for a routine step needed each generation
  • Added fwdpp::mendel, which is a convenience function for a routine step needed each generation
  • Made updates to fwdpp::make_genetic_parameters, fixing the perfect forwarding and adding the ability to have
    custom replacements for the functionality of fwdpp::mendel.
  • The constructor of fwdpp::gamete_base taking an unsigned int is now marked explicit. (Having it non-expicit was a
    bone-headed error that made an initial bug in fwdpp::zero_out_gametes very difficult to track down. See this
    commit
    .
  • Adds example program wfmlts.cc
  • wfts.cc and wfmlts.cc now share a lot of common code, showing the power of a generic API.
  • Fixed a bug in lambda captures affecting some test suite fixtures. commit
  • Added a new test suite module that stress-tests fwdpp::ts::generate_offspring for the multi-locus case. The new test
    suite fixtures are also used as more/better unit tests of fwdpp::fwdpp_internal::multilocus_rec_mut.

Other changes:

  • fwdpp::multiplicative_diploid and fwdpp::additive_diploid constructors have been refactored to use strong types
    to distinguish trait from fitness calculations. Breaks API PR 175
  • Many types have been moved into the main library. Breaks API due to change of header names PR 176, PR 180
  • Added fwdpp::genetic_parameters. PR 177
  • Fixed issue 182
  • Fixed issue 181
  • Constructors for fwdpp::ts::table_simplifier and fwdpp::ts::table_collection marked explicit where appropriate.
  • Fixed error in return value of fwdpp::general_rec_variation::operator(), and fwdpp::mutate_recombine now explicitly
    tests for correct use of sentinel values. PR 184
  • The recycling machinery was moved from an internal namespace to the main namespace. The API was refactored in terms
    of strong types fwdpp::flagged_mutation_queue and fwdpp::flagged_gamete_queue. PR 185
  • Fixed bug in mutating tables where the genome length is not 1.0. Issue 186.