Releases: molpopgen/fwdpp
fwdpp 0.6.1
Maintenance release fixing the following two bugs:
- A bug that resulted in the failure to transmit a mutation if it was on parental gamete 2 AND its position equalled the
left edge of a recombinant interval has been fixed. The bug was issue
134 and it was fixed via PR
135. - A bug in
fwdpp::update_mutations
was fixed via PR
132.
The following features were added:
- fwdpp::compact_mutations was added, which reorganizes data structures for better memory access, thus improving
performance. When used appropriately, significant run time improvements are possible.
The following API issues were addressed:
- The initialization of gamete counts in fwdpp::popbase is now independent of ploidy. PR 136.
fwdpp 0.6.0
This is a major release. Several new features, lots of code improvements. Too much to list here, so see the release notes.
fwdpp 0.5.7
This release has several API improvements. A big one is #55, which merges mutation and recombination into a single algorithm, improving performance in simulations where the probability that an offspring's copy of a region is both mutated and recombined is high.
Other changes:
- License change from GPL2 to GPL3
- The unit test suite is now compiled with warnings enabled. As a result, several warnings were silenced, including one
introduced in PR55 that would have mattered!. PR63 - API to KTfwd::sample_diploid was updated to removed an unused type as a result of PR54. PR63
- Gametes can now be constructed from tuples. PR62
- KTfwd::popgenmut, KTfwd::generalmut, and KTfwd::generalmut_vec may now be constructed from tuples. PR59
- Travis build system now skips OS X builds, tries more GCC versions as well as C++11 and C++14.
PR60 and PR61.
We are skipping OS X because there have been stability problems with the Travis CI infrastructure for that platform.
We would liked to have included Linux/clang tests for this release, but hit road blocks that we cannot reproduce on our
local machines. - Population objects from sugar layer can now be constructed with pre-calculated diploids, gametes, and mutations.
PR56. - Mutation and recombination are now merged into one path. See fwdpp/mutate_recombine.hpp. The entry points into the
old API are marked deprecated. This addresses issue Issue 54 via pull request PR55. - Travis builds using miniconda now use -Wl,-rpath when linking to dependencies, solving run-time link errors during "make check" on OS X.
Many API fixes
This release addresses several lingering API issues in fwdpp. It also breaks API compatibility for multi-locus simulations, but it also makes them more flexible.
- Issue #51 resolved.
- API issue #50 resolved. The KTfwd::GSLrng_t is no longer copy-constructible.
- API issue #48 is addressed. This is an API change breaking backwards compatilibity for multi-locus/region simulations. The new API allows more flexibility in modeling interlocus/region crossovers. The API for KTfwd::sample_diploid is changed for multi-locus/region sims. Two functions, KTfwd::make_poisson_interlocus_rec and KTfwd::make_binomial_interlocus_rec, return vectors of callbacks bound to the two new structs. commit
- API issue #49 is addressed. The changes maintain compile-time API compatibility with previous library versions.
- Refactored KTfwd::extensions::discrete_rec_model and KTfwd::extensions::discrete_mut_model to use PIMPL idiom and be
default-constructible. commit - Extend concept of regions to multi-locus sims via extensions::bind_vec__drm and extensions::bind_vec::dmm. commit
- extensions::discrete_mut_model::make_mut now takes a pointer to the generation, allowing a single point of binding rather than binding each generation. commit
- Exceptions in namespace KTfwd::extensions changed from std::runtime_error to std::invalid_argument where appropriate.
- Fix bug in examples/HOC_ind.cc affecting (improper) recycling of fixations during the simulation. commit
- KTfwd::data_matrix is now based on std:int8_t instead of char.
Lots of updates. API change for fitness functions.
- Added KTfwd::sugar::multiloc::locus_boundaries and simplified API in fwdpp/sugar/sampling.hpp, resolving #47.
- Refactor namespace KTfwd::traits, resolving #46.
- Streamline API for fitness functions, resolving #45.
- Resolving #45 allows us to simplify how custom diploid types are defined. See @ref md_md_customdip
- Test suite fixtures improved
- All source files reformatted using clang-format
- Build system generation of package version numbers improved
- fwdpp/version.hpp added and is auto-generated by build system
- fwdpp/sugar/matrix.hpp now included by fwdpp/sugar/sugar.hpp
- Fix forwarding of constructor arguments during mutation recycling.
- python_examples/fwdpp_pybind11.cc was updated to account for population type class hierarchy added in 0.5.3.
New sampling method
- fwdpp/sugar/matrix.hpp was added, providing functions for returning diploid haplotype/genotype data as a 1-d array.
- Functions in fwdpy/sugar/sampling.hpp are now more flexible with the integral types used to specify specific sets of diploids.
- Fixed API bugs in KTfwd::sample_separate for the case of multi-locus/region simulations. These errors resulted in compilation failure, and therefore it was impossible for results to have been affected.
1/2 the RAM!!!
- Streamline internal details of crossing over
- Fix issue #43
- KTfwd::change_neutral no longer tries to update extinct gametes.
- Single-argument constructors marked explicit for types inheriting from KTfwd::popbase
- Added an additional overload of KTfwd::infsites::operator()
- The integer type stored by a gamete and used to index mutations was changed from std::size_t to std::uint32_t. This change halves RAM use and has no other side-effects other than limiting the number of possible mutations in a simulation to 2^32, which is too many to store on a typical cluster node anyways.
There are also several changes to the build setup and Travis CI:
- Travis CI is now based on miniconda, taking advantage of bioconda/libsequence.
- Travis CI now only tests GCC on OS X, as bioconda/libsequence is built with that compiler
- "make" now makes fwdppConfig, all examples, and all unit tests, provided that dependencies are present. The examples and unit tests are not installed.
- "make check" now runs the unit tests
Minor update
0.5.2
- Documentation updates, finally! The tutorials, etc., have been brought up to date.
- Missing include of cassert added to fwdpp/internal/recycle.hpp
- Serialization code streamlined. Lots of redundant code was removed. The biggest changes are that std::runtime_error can be thrown from low-level functions. Also, KTfwd::serialize can now work with any stream type whose public interface is compatible with std::istream, and KTfwd::gzserialize is simply a convenience wrapper (it still works via an in-memory serialization).
- Test suite refactored. The code has moved from unit/ to testsuite/, and attempts to better separate unit tests from
integration tests. Further, fixtures are used to improve code reuse in testing. - operator== added to KTfwd::generalmut and KTfwd::generalmut_vec
Bug fix
Bug fix + new features
- Example file examples/K_linked_regions_multilocus.cc added
- Streamlined KTfwd::fwdpp_internal::multilocus_rec_mut
- The sugar types KTfwd::singlepop, KTfwd::metapop, and KTfwd::multiloc were refactored to inerit from KTfwd::sugar::popbase.
- Fixed error in KTfwd::multiloc where gametes were initialized with the incorrect count
- KTfwd::gamete_data_sane_multiloc was added to fwdpp/debug.hpp
- Issue #41 fixed. This issue affected simulations using the multi-locus API, and all simulations using that API need to be rerun. Sorry.
- The experimental API to sample_diploid was made more flexible via a new header file, fwdpp/experimental/dispatch.hpp. * This addition allows better fine-tuning of "rules" classes
- The experimental API now takes rvalue refrence (&&) instead of const reference (const &) for rules classes. This allows the rules to be written and be more idiomatic, avoiding use of mutable variables.
- Add overload of KTfwd::haplotype_dependent_fitness::operator() for custom diploids