diff --git a/CHANGELOG.md b/CHANGELOG.md index bbe5dd6..4ce49ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,62 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -[Unreleased]: https://github.com/althonos/lightmotif/compare/v0.6.0...HEAD +[Unreleased]: https://github.com/althonos/lightmotif/compare/v0.7.0...HEAD + + +## [v0.7.0] - 2024-06-14 +[v0.7.0]: https://github.com/althonos/lightmotif/compare/v0.6.0...v0.7.0 + +### Added + +#### `lightmotif` +- Implement indexing of `StripedSequence` by sequence index. +- `matrix` accessor to all matrix types in `lightmotif::pwm` and `lightmotif::seq`. +- `entropy` and `information_content` methods to `CountMatrix`. +- `SymbolCount` trait for counting the number of occurrences of a symbol in an iterable. +- Several `Background` constructors for counting occurences in one or more sequences. +- `FromIterator` constructor for `EncodedSequence`. +- `MultipleOf` trait to simplify typenums in platform code signatures. +- Sampling of random sequences using the `rand` dependency under a feature flag. +- `ScoringMatrix.score_into` method to re-use a `StripedScores` buffer. +- `ScoringMatrix.score_position` method to score a single sequence position. +- Indexing by `MatrixCoordinates` in `DenseMatrix`. +- Support for chanding logarithm base when building a `ScoringMatrix` from a `WeightMatrix`. +- Scanning algorithm for finding hits in a sequence with an iterator without allocating `StripedScores` for each sequence position. + +### `lightmotif-py` +- Support for optional TFMPvalue interface in Python bindings under GPLv3+ code. +- Constructor for `ScoringMatrix` class. +- `ScoringMatrix.reverse_complement` to compute the reverse-complement of a scoring matrix. + +### Changed + +#### `lightmotif` +- Make `EncodedSequence.stripe` use a dispatching `Pipeline` internally. +- Require power-of-two alignment in `DenseMatrix` implementations. +- Update `generic-array` dependency to `v1.0`. +- Change order of parameters in `ScoringMatrix.score`. +- Reorganize scoring trait and implement row-slice scoring for AVX2 and SSE2. +- Rewrite `Pipeline::threshold` to return matrix coordinates instead of a sequence index. +- Rewrite `Pipeline::argmax` to return matrix coordinates instead of a sequence index. + +#### `lightmotif-py` +- Streamline the use of pipelined functions in Python bindings. + +### Fixed + +#### `lightmotif` +- Handling of unknown residues in `permute` implementation of `Score` on AVX2. +- `PartialEq` for `DenseMatrix` to ignore alignment padding in each row. + +### Removed + +#### `lightmotif` +- Platform-specific code for thresholding a `StripedScores` matrix. +- Direct attribute access in `StripedSequence`. + +#### `lightmotif-transfac` +- Remove crate from repository, superseded by the `lightmotif-io` crate. ## [v0.6.0] - 2023-12-13 diff --git a/lightmotif-bench/Cargo.toml b/lightmotif-bench/Cargo.toml index 488588f..4046f07 100644 --- a/lightmotif-bench/Cargo.toml +++ b/lightmotif-bench/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightmotif-bench" -version = "0.6.0" +version = "0.7.0" edition = "2021" publish = false diff --git a/lightmotif-io/Cargo.toml b/lightmotif-io/Cargo.toml index cf15e8c..8133d69 100644 --- a/lightmotif-io/Cargo.toml +++ b/lightmotif-io/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightmotif-io" -version = "0.6.0" +version = "0.7.0" authors = ["Martin Larralde "] edition = "2021" license = "MIT" @@ -19,4 +19,4 @@ memchr = "2" [dependencies.lightmotif] path = "../lightmotif" -version = "0.6.0" +version = "0.7.0" diff --git a/lightmotif-py/Cargo.toml b/lightmotif-py/Cargo.toml index cc55f7c..d217b99 100644 --- a/lightmotif-py/Cargo.toml +++ b/lightmotif-py/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightmotif-py" -version = "0.6.0" +version = "0.7.0" authors = ["Martin Larralde "] edition = "2021" license = "MIT OR GPL-3.0-or-later" @@ -17,11 +17,11 @@ path = "lightmotif/lib.rs" [dependencies.lightmotif] path = "../lightmotif" -version = "0.6.0" +version = "0.7.0" [dependencies.lightmotif-tfmpvalue] optional = true path = "../lightmotif-tfmpvalue" -version = "0.6.0" +version = "0.7.0" [dependencies] pyo3 = "0.18.3" generic-array = "1.0.0" diff --git a/lightmotif-py/lightmotif/__init__.py b/lightmotif-py/lightmotif/__init__.py index 91d7f56..dd035e3 100644 --- a/lightmotif-py/lightmotif/__init__.py +++ b/lightmotif-py/lightmotif/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.7.0-a1" +__version__ = "0.7.0" from . import lib from .lib import ( diff --git a/lightmotif-tfmpvalue/Cargo.toml b/lightmotif-tfmpvalue/Cargo.toml index 1ea670e..b939274 100644 --- a/lightmotif-tfmpvalue/Cargo.toml +++ b/lightmotif-tfmpvalue/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightmotif-tfmpvalue" -version = "0.6.0" +version = "0.7.0" authors = ["Martin Larralde "] edition = "2021" license = "GPL-3.0" @@ -13,5 +13,5 @@ keywords = ["bioinformatics", "motif", "pssm", "pvalue"] [dependencies.lightmotif] path = "../lightmotif" -version = "0.6.0" +version = "0.7.0" diff --git a/lightmotif/Cargo.toml b/lightmotif/Cargo.toml index 9113f9d..dc4ae05 100644 --- a/lightmotif/Cargo.toml +++ b/lightmotif/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lightmotif" -version = "0.6.0" +version = "0.7.0" authors = ["Martin Larralde "] edition = "2021" license = "MIT" @@ -24,4 +24,4 @@ version = "0.4.3" [features] default = ["sample"] -sample = ["rand", "rand_distr"] \ No newline at end of file +sample = ["rand", "rand_distr"]