Summary
- A major enhancement for parsimony tree search is the use of a [history DAG](https://matsengrp.github.io/historydag/) to expand the set of trees found by dnapars, often by orders of magnitude. h/t willdumm
- Tree ranking can now use a linear combination of branching process likelihood, isotype parsimony, and mutability parsimony (e.g. from a 5mer context model) to score trees.
Backwards-incompatible changes
- The `CollapsedForest` class no longer has a `trees` attribute, as the collection of trees is now represented as a history DAG.
- The gctree CLI can now accept pickled parsimony forests from the current gctree version, but not from older versions.
- Only the unique optimal tree is output by `gctree infer`, if it exists. If more than one tree is optimal, up to 10 will be output arbitrarily, and their numerical rankings will be arbitrary (rather than based on likelihood as before).
Pull requests
* Fit parameters on history DAG by willdumm in https://github.com/matsengrp/gctree/pull/68
* Add ambiguous sequence test and error message by willdumm in https://github.com/matsengrp/gctree/pull/72
* Transplant docs by WSDeWitt in https://github.com/matsengrp/gctree/pull/73
* Transplant patch by WSDeWitt in https://github.com/matsengrp/gctree/pull/74
* Docs fixes by WSDeWitt in https://github.com/matsengrp/gctree/pull/76
* Update README.md by WSDeWitt in https://github.com/matsengrp/gctree/pull/77
* Store isotype data in nodes by willdumm in https://github.com/matsengrp/gctree/pull/75
* Mutability chain split by willdumm in https://github.com/matsengrp/gctree/pull/78
* Prerelease tidying by WSDeWitt in https://github.com/matsengrp/gctree/pull/79
**Full Changelog**: https://github.com/matsengrp/gctree/compare/v3.3.0...v4.0.0