Skip to content

Releases: harrispopgen/mushi

v1.1.4

09 Jan 08:51
Compare
Choose a tag to compare

v1.1.3

09 Jan 08:19
Compare
Choose a tag to compare

fixes pypi publication workflow

Full Changelog: v1.1.2...v1.1.3

v1.1.2

09 Jan 07:59
c7d27ef
Compare
Choose a tag to compare

What's Changed

  • jax config import by @theandyb in #78
  • Update Python versions and GitHub Actions configuration by @wsdewitt in #82
  • Dropped support for python 3.7

New Contributors

Full Changelog: v1.1.1...v1.1.2

v1.1.1

31 Jan 22:08
407307b
Compare
Choose a tag to compare

Patch release to allow pypi publication, using forked sdist of prox-tv dependency.

What's Changed

Full Changelog: v1.1.0...v1.1.1

v1.1.0

31 Jan 09:10
a58d75a
Compare
Choose a tag to compare
  • Python 3.7 or higher is supported (previously only 3.7 was supported)
  • A few bug fixes
  • Improved code formatting and testing
  • Simplification of developer install and tools

Full Changelog: v1.0.2...v1.1.0

v1.0.2: Docstrings and doctests (#71)

05 Feb 04:08
27e3a84
Compare
Choose a tag to compare
  • Added extensive docstrings and doctests for generating API docs
  • No new features or breaking API changes, although a few helper methods are now private

v1.0.1

02 Feb 23:34
Compare
Choose a tag to compare

This small patch release simplifies kSFS instantiation when X is a 1D SFS vector (it is no longer necessary to specify mutation_types in this case).

The documentation has also been revised in various places.

v1.0.0

01 Feb 20:08
Compare
Choose a tag to compare

Summary

This major version release brings several new features and API changes to improve usability, and accommodate demography-only analyses.

  • Inference for demography and mush is now done with two independent methods: kSFS.infer_eta and kSFS.infer_mush. See API docs for details.
  • Inference of ancestral state misidentification rate, for both sample frequency and mutation type, obviates frequency masking, which has been removed.
  • More interpretable model selection based on trend penalties. A user can supply as many trend penalties as they wish. A trend penalty of order k will encourage order k polynomial pieces in the solution (e.g. k=0 for piecewise constant). Trend penalties of different orders can be combined to get mixed trends. See API docs on the the inference methods above for details.
  • Simplified simulation notebook and updated Quickstart (see docs).

Under the hood

  • Rewrite of mushi.optimization module with abstraction and inheritance to avoid a lot of duplicated code. Added a trend filtering optimizer class based on the recursive ADMM of Ramdas and Tibshirani (this serves as the prox operator in the outer optimization routine when fitting demography or mush). I was able to get this running quite fast by caching Cholesky decompositions and using the fast prox-tv module for dual variable updates. I find that about 20 iterations of ADMM are plenty (although the default is 100).
  • Consolidated SFS folding code into a function in the utils model
  • Introduced a frequency misidentification operator and a mutation type misidentification operator to our model of the expected kSFS, and misidentification rate r that is a learned parameter for eta inference, and a vector of rates for MuSH inference.
  • It is no longer necessary to specify the time grid for inference. If no grid is specified, a reasonable default grid is constructed based on the TMRCA under a constant history. To specify the grid, use the parameters pts and ta when running kSFS.infer_eta().
  • Dedicated loss function model mushi.loss_functions. Inference can be done using any loss function from this module.

v0.2.2: 63 true divide (#65)

23 Dec 03:22
24cc225
Compare
Choose a tag to compare

A second 1-character patch to squash a bug in plotting integer-valued folded SFS vectors

v0.2.1

18 Dec 00:26
40552ce
Compare
Choose a tag to compare

A tiny 1-character patch to squash a bug in folded SFS inference from integer-valued SFS vectors