← Back to all sparks
S

scikit-bio

DEVOPS
Velocity0.0

Bioinformatics data structures and algorithms

scikit-bio spent two years turning a NumPy library into an array-API-native one.

bioinformaticsarray apigpu computingphylogeneticsmicrobiomeperformance
Current state
scikit-bio releases two to four times a year and has used that cadence to rebuild its foundations rather than pile on features. The 0.7 series introduced an optional C++ extension for large datasets, native interop with Polars, Anndata, PyTorch tensors and JAX arrays, and then generalized GPU support from a few compositional functions into a library-wide mechanism built on the Python array API standard. Domain capability grew alongside: ancombc, mmvec, rclr, pair_align, and a family of alignment distance metrics.
Where it's heading
The direction is a bioinformatics library that stops assuming NumPy on a CPU. Each release pushes further toward being a computational layer that runs wherever the caller's arrays already live, with accelerated phylogenetics and reduced-memory distance matrices making the same dataset sizes cheaper. The recurring memory and import-time work suggests the target user is running these methods on omics data that no longer fits the assumptions the library was written under.
Prediction
Expect the array-API mechanism to spread to the modules that have not yet adopted it, and the metadata module's pandas 3.0 refactor — flagged as pending in 0.7.2 — to land in an upcoming release.

Recent moves

  1. 2mo ago

    0.7.3: array API and GPU support go library-wide

    ⚡ SPARK

    The GPU work that started as a compositional-arithmetic special case in 0.7.0 becomes a global mechanism built on the Python array API standard — the arc this library has been building toward for two years. The release also adds mmvec for microbe-metabolite co-occurrence and rclr for compositional transforms, accelerates the minimum-evolution phylogenetics algorithms, and cuts import time.

    View source ↗
  2. 6mo ago

    0.7.2: condensed distance matrices halve memory for permanova and mantel

    permanova and mantel can now operate directly on condensed DistanceMatrix objects, cutting memory in half and removing conversion overhead — the practical payoff of the matrix class hierarchy introduced in 0.7.1. New jc69 and k2p evolutionary distance metrics, an align_dists function, PHYLIP distance-matrix reading, and OrdinationResults plotting round it out. The release also flags that the metadata module still needs a refactor before pandas 3.0.

    View source ↗
  3. 9mo ago

    scikit-bio 0.7.1.post1

    A packaging-only release: the 0.7.1 source distribution would not build against Python 3.14, and Windows ARM64 wheels are now built natively. No library changes.

    View source ↗
  4. 9mo ago

    0.7.1: native ANCOM-BC and a three-tier distance matrix hierarchy

    Brings ANCOM-BC into scikit-bio as a native Python implementation, removing a reason to leave the library for differential abundance testing. Underneath, distance matrices are restructured into PairwiseMatrix, SymmetricMatrix and DistanceMatrix with optional condensed storage — the groundwork 0.7.2 then spends on halving permanova and mantel memory.

    View source ↗
  5. 1y ago

    0.7.0: optional C++ acceleration, GPU tensors, and native Polars/PyTorch/JAX interop

    ⚡ SPARK

    The release that set the direction the 0.7 series has followed since: scikit-bio-binaries as an optional C++ extension for very large datasets, GPU-resident tensors handled without round-tripping through CPU, and native support for Polars, Anndata, PyTorch and JAX alongside pandas. pair_align, phylomix data augmentation, and dirmult_lme arrived in the same cut.

    View source ↗
  6. 1y ago

    0.6.3: phylogenetics module rebuilt for very large trees

    A large release under a small version number, concentrated on skbio.tree: TreeNode optimized for very large phylogenies, expanded Robinson-Foulds and cophenetic distance variants, and optimized minimum-evolution and neighbor-joining reconstruction. Reproducibility also improves — every stochastic algorithm now accepts a seed or generator — which becomes table stakes for the acceleration work that follows.

    View source ↗