Skip to content

Latest commit

 

History

History
206 lines (139 loc) · 7.31 KB

File metadata and controls

206 lines (139 loc) · 7.31 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

v0.7.3 - 2025-08-07

Fixed

  • Memory missalocation in opal (#8).

v0.7.2 - 2025-06-12

Fixed

  • Memory leak in Aligner.align when running in buckets overflow mode.

v0.7.1 - 2025-03-04

Fixed

  • Extra key in pyproject.toml causing build issues with version 0.11.0 of scikit-build-core.
  • Broken detection of default SSE2 support for x86-64 CPUs on Windows.
  • Missing opal.h file in Python site install to allow Cython imports.

v0.7.0 - 2024-11-04

Added

  • Support for Python 3.13.

Changed

  • Bump required scoring-matrices dependency to v0.3.0.
  • Reorganize project to build with CMake and scikit-build-core.
  • Update documentation to use the PyData theme.

Fixed

  • Signature of Cython classes constructors not displaying in documentation.

Removed

  • Support for Python 3.6.

v0.6.1 - 2024-06-06

Fixed

  • Import of pyopal on non-AVX2-enabled CPUs causing a crash (#7).
  • Type hints for Database.__init__ not accepting alphabet as a Python string.

v0.6.0 - 2024-05-08

Changed

  • Use scoring-matrices package to handle scoring matrices.
  • Import Cython classes from pyopal.lib in the main pyopal namespace.

Fixed

  • Patching of architecture flags of MacOS compilers.

Removed

  • The ScoreMatrix class from pyopal.lib.

v0.5.2 - 2024-02-28

Fixed

  • Segmentation fault when attempting to align to an empty Database (#6).

v0.5.1 - 2024-01-21

Fixed

  • Broken behaviour of the ordered keyword in pyopal.align.

v0.5.0 - 2024-01-20

Added

  • Support for compiling and running package on Windows.
  • Support for Python 3.12.
  • pyopal.Alphabet class for handling sequence encoding outside of ScoreMatrix.
  • Additional score matrices using the data files from Opal.
  • encode_into and decode_into sans-io methods of Alphabet.
  • Aligner class to handle alignment of a query to a database.
  • ScoreMatrix.__eq__ implementation.
  • Database.lengths property to get the lengths of all the sequences in a database without decoding them.
  • pyopal.align top-level function to handle multithreaded alignments.
  • Alphabet.__eq__ implementation comparing letters.
  • pool argument to pyopal.align to support reusing a ThreadPool.

Changed

  • Store Database sequences using shared_ptr for fast slicing and extraction of a database subset.
  • Use templates to generate platform-specific Cython files.
  • Make internal extension public as pyopal.lib submodule.
  • Avoid temporary data copy in Database._encode.
  • Move Cython and Opal headers inside package to allow Cython import in other extensions.
  • Make Database use mostly the pointer array to make the algorithms more generic over the storage class.
  • Make MAX_ALPHABET_SIZE a constant of pyopal.lib rather than a user-defined macro for compatibility in other extensions.
  • Update Aligner.align to use the BaseDatabase Cython API.

Fixed

  • SSE2 not being detected on x86-64, where it is mandatory.
  • Mark Opal search functions as noexcept in Cython to avoid exception checks.
  • ScoreMatrix buffer-protocol not returning a read-only buffer.
  • Database.mask accessing out-of-bound elements when building pointer array.
  • Broken detection of PyInterpreterState_GetID in setup.py.
  • FullResult.cigar crashing on alignments starting with X.
  • Memory leak in Aligner.align caused by faulty allocation of pointer array.
  • __repr__ implementations of Alphabet and FullResult.
  • Alphabet.__getitem__ reading past the letters buffer.

Removed

  • Database.search method.

v0.4.2 - 2023-08-29

Fixed

  • Segmentation fault caused by out-of-bounds access in Opal (#5).

Changed

  • Use Cython binding directive to improve generated documentation.

v0.4.1 - 2023-08-29

Fixed

  • FullResult.__repr__ not returning a roundtripping string (#4, by @valentynbez).
  • Database.search overflowing for long sequences with non-sw algorithms (#3).

Changed

  • Make Database.search raise an OverflowError instead of a RuntimeError on score overflow.

v0.4.0 - 2023-07-21

Changed

  • Bumped Cython dependency to v3.0.

Fixed

  • PyPy 3.9 builds failing on missing PyInterpreterState_GetID.

v0.3.0 - 2023-05-30

Added

  • Database.extract method to subset a database given a sequence of indices.
  • Database.mask method to subset a database given a boolean mask.

Changed

  • Replaced cpu-features library with archspec Python package for runtime detection of CPU features.

Fixed

  • Segmentation fault in alignment reconstruction code for Needleman-Wunsch algorithm (#1).
  • Erroneous error message in Database.search on invalid overflow value (#2).

v0.2.0 - 2022-10-17

Added

  • query_length and target_length properties to FullResult to the lenghts of the complete query and target sequences.
  • FullResult.coverage method to compute the coverage of the alignment using either the query or the target as the reference.

Changed

  • Compile Cython extension with binding=False to fix rendering of documentation.

Fixed

  • Insertion & deletion symbols being inverted in FullResult.cigar strings.

v0.1.1 - 2022-10-07

Added

  • Buffer protocol implementation to pyopal.ScoreMatrix.
  • Sphinx documentation hosted on ReadTheDocs.

Fixed

  • Docstring now showing in the main pyopal module.
  • Database.insert potentially crashing when given negative indexes.
  • Database.search not listing the right return type.

v0.1.0 - 2022-10-06

Initial release.