Changelog (rough)

0.0.4-rc3

  • fwdpy.fdwpy.tidy_trajectories() removed.
  • C++ back-end and Cython class definition of fwdpy.fwdpy.FreqSampler refactored. New version is much, much faster!
  • fwdpy.fwdpy.FreqSampler is now able to output directly to SQLite database files. There is also a new member function called “fetch” that allows filtering of trajectories before returning them as a Pandas DataFrame object.
  • fwdpy.numeric_gsl added, providing a Cython (nogil) API to some numeric operations implemented in terms of the GSL

0.0.4 (through release candidate 2)

Changes to the Python side:

  • “Evolve” functions are now much more generic due to fitness function objects and temporal sampler objects (see below)
  • The application of temporal samplers is now consistent for all types of simulation (“pop-gen”, “quant-trait”, etc.)
  • Added ability to use custom fitness functions!!! On the Python side, these work via fwdpy.fwdpy.SpopFitness and fwdpy.fwdpy.MlocusFitness
  • Class names now more “Pythonic”. This will break existing scripts.
  • Add fwdpy.demography module.
  • Add fwdpy.fwdpy.MlocusPop
  • Add fwdpy.fwdpy.MlocusPopVec
  • Add concept of a temporal sampler via fwdpy.fwdpy.TemporalSampler.
  • Add temporal sampler objects fwdpy.fwdpy.NothingSampler, fwdpy.fwdpy.QtraitStatsSampler, fwdpy.fwdpy.PopSampler, fwdpy.fwdpy.VASampler, fwdpy.fwdpy.FreqSampler
  • Add function fwdpy.fwdpy.apply_sampler()
  • Add fwdpy.fwdpy.tidy_trajectories(), which really speeds up coercion of mutation frequency trajectories to a pandas DataFrame.
  • Add fwdpy.fwdpy.hapmatrix() and fwdpy.fwdpy.genomatrix()
  • Added views of fixed mutations via fwdpy.fwdpy.view_fixations()
  • Better Python3 compatibility
  • Add support to serialize/deserialize fwdpy.fwdpy.MlocusPop
  • Streamline implementation of the various fwdpy.fwdpy.PopVec classes. They no longer contain two containers, and they yield fwdpy.fwdpy.PopType objects upon iteration.

Changes to the Cython/C++ back end:

  • diploid fitness now defaults to 1 instead of 0
  • Bug fixed in get_gamete in views.pyx. This affected the output of almost all “views” functions except those viewing just mutations.
  • cythonGSL is now required. We expect to use more GSL in this package, and so it makes sense to not reinvent the wheel.
  • Massive reduction in code base
  • Update to Cython 0.24.0
  • Generic temporal samplers and fitness functions are now supported.
  • Expose more fwdpp types for multi-locus/region simulations
  • Expose fwdpp’s fitness function objects site_dependent_fitness, additive_diploid, and multiplicative_diploid. Call operators (e.g. operator()) are only exposed for custom diploids.
  • More unit tests of sampling and “views”
  • Update how samples are taken from populations, reflecting a bug fix in fwdpp 0.4.9 that made the Cython wrappers in this package incorrect.
  • Population objects in types.hpp now have serialization/deserialization functions.
  • Single-parameter constructors for population objects in types.hpp are now “explicit”.

0.0.3

  • Change from std::thread to std::async for concurrency.
  • The asynchronous futures allow for the same “evolve” function to be used in different contexts.
  • The different contexts include calculating things from the population every “k” generation or doing nothing.
  • These things are implemented as classes with call operators and a minimal set of API requirements.
  • Fixed a bug in “mutation views”
  • Better parameter checking for various “evolve” functions
  • Source code re-organized so that all header files are installed