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.

Unreleased#

v0.8.2 - 2025-08-18#

Fixed#

v0.8.1 - 2025-05-06#

Changed#

  • Use CMake and scikit-build-core instead of setuptools to build package.

  • Bump scoring-matrices package to v0.3.0.

Fixed#

  • Runtime detection of SSE2 on x86-64 Windows platforms.

v0.8.0 - 2024-08-28#

Changed#

  • Update vendored trimAl to d89ffc3 (2.0_RC).

  • Use scoring-matrices package to get a base for the SimilarityMatrix class.

  • Rename backend to platform for all trimmer classes.

  • Use trimAl platform-specific code to accelerate computations.

  • Migrate documentation to pydata-sphinx-theme.

Fixed#

  • Missing trimmer classes in API documentation.

  • Pin supported versions of scoring-matrices package to ~=0.2.0.

Removed#

  • Outdated platform-specific code.

  • archspec dependency (replaced by cpu_features used internally in trimAl).

v0.7.0 - 2023-07-21#

Changed#

  • Bumped Cython dependency to v3.0.

v0.6.0 - 2022-10-17#

Fixed#

  • Overflow in calculateSpuriousVector for certain sequence block sizes.

  • MMX backend never being used unless explicitly required even when being the best supported backend.

Changed#

  • Use archspec Python package instead of cpu-features library for CPU feature detection at runtime.

  • Use importlib.resources.files to load package data in pytrimal.tests.

v0.5.5 - 2022-10-17#

Fixed#

  • calculateSpuriousVector method of SIMD implementations not being declared override.

Changed#

  • Replaced aligned_alloc with posix_memalign for compatibility with MacOS.

v0.5.4 - 2022-10-15#

Added#

  • AVX2 and MMX implementations of the SIMD statistics computation.

  • Tests for all SIMD implementations supported on the local machine.

Changed#

  • Refactor SIMD code using C++ templates and generic implementation.

Fixed#

  • Broken rendering of function signatures in Sphinx documentation.

  • residues_mask and sequences_mask attributes of TrimmedAlignment not being documented (#1).

v0.5.3 - 2022-10-04#

Fixed#

  • SimilarityMatrix.nt inverting the degenerated argument value.

v0.5.2 - 2022-09-30#

Changed#

  • Replace NEON horizontal sums with implementations using vaddvq on Aarch64 and vpaddl on Armv7.

  • Remove one layer of table lookup in all Similarity::CalculateVectors implementations.

  • Make all SIMD code use local buffers and deallocate early.

Fixed#

  • Invalid operator being used in Cython code to deallocate C++ arrays.

Added#

  • SSE2 and NEON implementations for the Gaps statistic.

v0.5.1 - 2022-09-05#

Fixed#

  • Build of cpu_features for platforms without hardware detection support.

v0.5.0 - 2022-09-05#

Added#

  • pytrimal.RepresentativeTrimmer class to trim by maximum identity or fixed number of cluster representatives.

  • pickle protocol support for all trimmer classes.

  • Conversion methods to convert an Alignment from and to Biopython or PyHMMER objects.

  • Arm NEON implementation of the statistics computation algorithm, with speed-up similar to that of the SSE implementation.

Fixed#

  • std::streambuf implementation based on the readinto Python method not working on Arm because of char being used to read ASCII.

Removed#

  • Support for Python 3.5, due to Cython compatibility issues.

v0.4.0 - 2022-08-14#

Added#

  • BaseTrimmer.backend property to get the backend used by a trimmer object.

  • Zero-copy slicing for AlignmentSequences and AlignmentResidues objects.

  • noduplicateseqs method for AutomaticTrimmer objects.

  • OverlapTrimmer class to perform overlap trimming with SSE-accelerated implementation.

  • AutomaticTrimmer.METHODS attribute to expose all supported automatic trimming methods.

  • __repr__ implementation to all trimmer classes.

Fixed#

  • Missing deallocation code for standalone AlignmentResidues objects.

  • Alignment.load not working properly in PyPy environments.

  • Alignment constructor sometimes crashing when not given any sequence.

Changed#

  • Use aligned memory for some temporary buffers used in SIMD code.

  • Enable loop unrolling when supported by the compiler.

  • Skip letter validation when creating an Alignment object with sequences from an AlignmentSequences object.

Removed#

  • consistency_threshold and consistency_window arguments of ManualTrimmer.

v0.3.0 - 2022-06-26#

Added#

  • Support for loading an Alignment from a file-like object for certain formats.

  • Generic optimized backend using caching optimizations from inab/trimal#66.

Fixed#

  • Compilation of code for OSX platforms in Python 3.10.

  • File not being closed on error when loading a FASTA alignment.

Changed#

  • Add tests for loading an Alignment without requiring importlib.resources.

v0.2.2 - 2022-06-08#

Added#

  • Keyword arguments to specify the half-window sizes in manual trimmer.

  • Alignment.dump and Alignment.dumps function to write an alignment to a file, file-like object, or string.

  • Optimized implementation of Similarity::calculateVectors.

Changed#

  • Use faster implementation of SSE2 horizontal sum based on _mm_sad_epu8.

v0.2.1 - 2022-06-06#

Fixed#

  • Missing SSE2 files in source distribution.

v0.2.0 - 2022-06-06#

Added#

  • Vendored cpu_features library to perform runtime detection of CPU features.

  • SIMD implementation of the similarity statistic code with SSE2 instructions.

Fixed#

  • Compilation on platforms without OpenMP by adding an empty omp.h header file.

v0.1.2 - 2022-06-04#

Added#

  • Python constructor and buffer protocol support for SimilarityMatrix.

  • SimilarityMatrix.similarity method to get the similarity between two characters instead.

Fixed#

  • Source compilation failing because of source files in the pytrimal folder.

v0.1.1 - 2022-06-03#

Added#

  • Type annotations for all classes of the pytrimal extension module.

Fixed#

  • Cython header files not being included in source distribution.

v0.1.0 - 2022-06-02#

Initial release.