review.md
91 lines · skills/scikit-bio/references/review.md at 5f2bc03
Most marks come from matching words in the file, so treat them as pointers.
scikit-bio 0.7.4 review
Reviewed 2026-10-01. Official release metadata identifies 0.7.4 (2026-09-21, Python >=3.10). Native checks ran with Python 3.13, NumPy 2.5.1, SciPy 1.18.1, pandas 3.0.6, biom-format 2.1.17, matplotlib 3.11.2 and seaborn 0.13.2. The repository's per-skill environment pins scikit-bio 0.7.4.
Raw lines 1 to 7Scope and sources
All sections of SKILL.md and api_reference.md were reviewed. This skill calls local Python APIs, with no owned hosted endpoint, authentication, or pagination contract. Upstream package/docs downloads are evidence retrieval only. Some web caches of latest still identify 0.6.3/0.7.3; current signatures were checked against the installed 0.7.4 release, and 28 relevant tagged source files matched the installed wheel byte for byte.
- PyPI release metadata
- 0.7.4 release
- Tagged changelog
- Sequence operations source: regex capture groups, k-mer frequencies, metadata and distances.
- Pair alignment, TabularMSA, progressive MSA: scoring, terminal gaps, result/path conversion and filtering.
- Tree operations source, NJ, minimum evolution source: construction, rooting, pruning, branch distances and RF comparisons.
- Diversity driver source, count validation source, subsampling: actual floating-abundance acceptance, taxa mapping, incomplete-pair behavior, seeded rarefaction.
- PCoA, CCA, RDA: dimensions, output/ID conventions, negative-eigenvalue warnings and feature_ids.
- Mantel, PERMDISP, distance module: two-matrix association, grouping alignment, permutation arguments and matrix classes.
- ANCOM, Dirichlet-multinomial source: positive-composition versus count-model inputs, named contrasts, seeds and mixed-effects arguments.
- I/O registry, FASTA source, FASTQ source, BIOM source: format/object compatibility, generator writers, encoding and HDF5.
- Table dispatch, BIOM table API, augmentation source: orientation, mutation defaults, output formats, synthetic augmentation.
- Embedding source, protein embedding source: residue rows, sequence vectors, helper conversion and SVD.
- QIIME 2 import guide: external artifact boundary and explicit semantic type.
Contracts that prevent silent errors
find_with_regexyields capturing-group slices, not whole matches by default. Regex motifs therefore need parentheses.kmer_distancerequiresk.pair_align(..., mode='global')defaults tofree_ends=True; fully penalized global alignment needs False. A length-L affine gap costs open + L × extend. Similar BLAST scoring does not reproduce BLAST search statistics. Only aligned sequences of equal length belong inTabularMSA. MSA gap filtering uses a positional mask; consensus and entropy require declared gap/ambiguity handling.- Faith PD and UniFrac need ordered features matching tree tips and a scientifically justified rooted tree with finite nonnegative branch lengths. Root-degree validation alone does not establish correct biological rooting. Weighted UniFrac defaults to unnormalized branch-length distances, which can exceed one.
- Count-based estimators need original sampling counts. Shannon/Bray-Curtis accept floating abundances; that does not recover sampling depth. Rarefaction depth is the minimum row sum, not the minimum feature count. Repeated draws quantify subsampling variability, not between-subject uncertainty.
- Deprecated
partial_beta_diversityfills uncomputed entries with zero. Its restricted string resolver also affectsblock_beta_diversity; a SciPy metric callable is needed for Bray-Curtis on that path. Complete block output matched the full driver on a synthetic fixture. Dense output remains quadratic. - PERMANOVA operates on complete distances; PCoA is a parallel visualization. Built-in grouping tests expose no strata/block argument. Unrestricted permutations need exchangeable experimental units.
mantelaccepts two matrices and implements no partial-Mantel adjustment; the former unused-third-matrix example has been removed without substituting an unsupported method. - On a six-sample DistanceMatrix, released 0.7.4
permdispfails with its defaultdimensions=10for bothmethod='eigh'(default) andmethod='fsvd': PCoA raisesValueError: Invalid operation: cannot extend distance matrix size.Settingdimensions=0passes for both and retains all axes. This describes this direct Python call, not any wrapper's settings. No failure is claimed when n >= 10 or when an already-computedOrdinationResultsis supplied. cca/rdausefeature_ids, notspecies_ids; environmental columns must be identified and aligned. Associations are not causal effects. Avoid collinear constraints and report rank and residual degrees of freedom.- The sequence writer expects a Python generator; list and list-iterator writers are unregistered. FASTQ needs an explicitly known encoding.
Table.read/writeusesformat='biom'for BIOM 2.1 HDF5;biom.load_tablehandles legacy JSON.Table.filterdefaults to in-place mutation; preserve originals with False. ProteinEmbeddingis residue-by-latent-dimension for one sequence;ProteinVectoris one pooled sequence vector. Conversion functions are module helpers, not embedding instance methods.embed_vec_to_ordinationuses SVD.embed_vec_to_distancespasses throughbeta_diversityand rejects negative coordinates in 0.7.4; use SciPypdistplusDistanceMatrixfor signed vectors. Helper IDs derive from sequence strings; retain explicit sample identities.- Augment only training folds, after splitting original experimental units. Synthetic samples are not independent replicates and must not inflate inferential sample size. Aitchison mixup assumes strictly positive compositions.
Validation limits
The native tests use tiny synthetic sequence, tree, community-table and embedding fixtures, including analytic diversity/distances, roundtrips, seeded stochastic results and ID reordering. They do not validate a biological conclusion or model. No model weights, sequencing database, QIIME 2 installation, GPU/Numba backend, large-data parallel mapper, or external plotting package was required. AnnData and Polars dispatch and the less common GenBank/EMBL/QSeq/BLAST/GFF format paths were checked in official documentation/source, not executed here. File paths, undefined data inputs and QIIME CLI snippets in the API reference are illustrative integration templates; adapt and validate them for the actual study.
Raw lines 81 to 91