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
- Memory missalocation in
opal(#8).
v0.7.2 - 2025-06-12
- Memory leak in
Aligner.alignwhen running in buckets overflow mode.
v0.7.1 - 2025-03-04
- Extra key in
pyproject.tomlcausing build issues with version0.11.0ofscikit-build-core. - Broken detection of default SSE2 support for x86-64 CPUs on Windows.
- Missing
opal.hfile in Python site install to allow Cython imports.
v0.7.0 - 2024-11-04
- Support for Python 3.13.
- Bump required
scoring-matricesdependency tov0.3.0. - Reorganize project to build with CMake and
scikit-build-core. - Update documentation to use the PyData theme.
- Signature of Cython classes constructors not displaying in documentation.
- Support for Python 3.6.
v0.6.1 - 2024-06-06
- Import of
pyopalon non-AVX2-enabled CPUs causing a crash (#7). - Type hints for
Database.__init__not acceptingalphabetas a Python string.
v0.6.0 - 2024-05-08
- Use
scoring-matricespackage to handle scoring matrices. - Import Cython classes from
pyopal.libin the mainpyopalnamespace.
- Patching of architecture flags of MacOS compilers.
- The
ScoreMatrixclass frompyopal.lib.
v0.5.2 - 2024-02-28
- Segmentation fault when attempting to align to an empty
Database(#6).
v0.5.1 - 2024-01-21
- Broken behaviour of the
orderedkeyword inpyopal.align.
v0.5.0 - 2024-01-20
- Support for compiling and running package on Windows.
- Support for Python 3.12.
pyopal.Alphabetclass for handling sequence encoding outside ofScoreMatrix.- Additional score matrices using the data files from Opal.
encode_intoanddecode_intosans-io methods ofAlphabet.Alignerclass to handle alignment of a query to a database.ScoreMatrix.__eq__implementation.Database.lengthsproperty to get the lengths of all the sequences in a database without decoding them.pyopal.aligntop-level function to handle multithreaded alignments.Alphabet.__eq__implementation comparing letters.poolargument topyopal.alignto support reusing aThreadPool.
- Store
Databasesequences usingshared_ptrfor fast slicing and extraction of a database subset. - Use templates to generate platform-specific Cython files.
- Make internal extension public as
pyopal.libsubmodule. - Avoid temporary data copy in
Database._encode. - Move Cython and Opal headers inside package to allow Cython import in other extensions.
- Make
Databaseuse mostly the pointer array to make the algorithms more generic over the storage class. - Make
MAX_ALPHABET_SIZEa constant ofpyopal.librather than a user-defined macro for compatibility in other extensions. - Update
Aligner.alignto use theBaseDatabaseCython API.
- SSE2 not being detected on x86-64, where it is mandatory.
- Mark Opal search functions as
noexceptin Cython to avoid exception checks. ScoreMatrixbuffer-protocol not returning a read-only buffer.Database.maskaccessing out-of-bound elements when building pointer array.- Broken detection of
PyInterpreterState_GetIDinsetup.py. FullResult.cigarcrashing on alignments starting withX.- Memory leak in
Aligner.aligncaused by faulty allocation of pointer array. __repr__implementations ofAlphabetandFullResult.Alphabet.__getitem__reading past the letters buffer.
Database.searchmethod.
v0.4.2 - 2023-08-29
- Segmentation fault caused by out-of-bounds access in Opal (#5).
- Use Cython
bindingdirective to improve generated documentation.
v0.4.1 - 2023-08-29
FullResult.__repr__not returning a roundtripping string (#4, by @valentynbez).Database.searchoverflowing for long sequences with non-swalgorithms (#3).
- Make
Database.searchraise anOverflowErrorinstead of aRuntimeErroron score overflow.
v0.4.0 - 2023-07-21
- Bumped Cython dependency to
v3.0.
- PyPy 3.9 builds failing on missing
PyInterpreterState_GetID.
v0.3.0 - 2023-05-30
Database.extractmethod to subset a database given a sequence of indices.Database.maskmethod to subset a database given a boolean mask.
- Replaced
cpu-featureslibrary witharchspecPython package for runtime detection of CPU features.
- Segmentation fault in alignment reconstruction code for Needleman-Wunsch algorithm (#1).
- Erroneous error message in
Database.searchon invalidoverflowvalue (#2).
v0.2.0 - 2022-10-17
query_lengthandtarget_lengthproperties toFullResultto the lenghts of the complete query and target sequences.FullResult.coveragemethod to compute the coverage of the alignment using either the query or the target as the reference.
- Compile Cython extension with
binding=Falseto fix rendering of documentation.
- Insertion & deletion symbols being inverted in
FullResult.cigarstrings.
v0.1.1 - 2022-10-07
- Buffer protocol implementation to
pyopal.ScoreMatrix. - Sphinx documentation hosted on ReadTheDocs.
- Docstring now showing in the main
pyopalmodule. Database.insertpotentially crashing when given negative indexes.Database.searchnot listing the right return type.
v0.1.0 - 2022-10-06
Initial release.