diff --git a/CHANGELOG.md b/CHANGELOG.md index bbe5dd609f2d5283454458a2ae1b8de727873a6b..4ce49baf60f1d7e999be02f90a7a8478f6b6d333 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<A::Symbol>` constructor for `EncodedSequence<A>`. +- `MultipleOf<N>` 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 488588ff153b47d38396f3515d8eeb3a952c4cd6..4046f07cc047053ca8b87544d2fcb0a8f73374de 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 cf15e8c3d5a886f5221ca6ce79582b5b13ebd2bc..8133d6965546ee01d173b57b0f35badd5f15b686 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 <martin.larralde@embl.de>"] 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 cc55f7c2a123b1003d57b9e4f589567cb81bcac4..d217b99bff2456b503515b7ea76e22bdacb8fdb1 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 <martin.larralde@embl.de>"] 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 91d7f566ad2ccc91f217f03b3a73933362bb9394..dd035e30d8c2f480f82e47c90534c206e2617d8a 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 1ea670e14078d27c7cea03555191743af706667a..b9392742b11df067057e6703273e7afc6507f81a 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 <martin.larralde@embl.de>"] 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 9113f9dcb641ec317ef27a10b8442ab5770f47e7..dc4ae0597fd01868b5b89ad5807b73852b9e5bdf 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 <martin.larralde@embl.de>"] 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"]