Changelog
All notable changes to this project are documented here.
Format follows Keep a Changelog. Versioning follows Semantic Versioning.
[1.7.0] - 2026-05-18​
Added​
- Docusaurus-based static documentation site with teal theme, light/dark mode, and full-text search
- Comprehensive benchmark results page with embedded plots, per-dataset findings, and conclusions
docs/assets/plots/- benchmark visualisations bundled with the docs site.env.examplefor environment configurationrequirements.txtfor reproducible installs- GitHub issue templates and pull request template
- Contributing guidelines (
CONTRIBUTING.md)
[1.6.0] - 2026-05-16​
Developed by Israt Jahan Khan
Added​
- Full Python port of the R SoupX package (Young & Behjati, 2020) - no R dependency
SoupChannelcontainer class with AnnData/pickle interoperability- HDF5 input support via
load_10x_h5/read_10x_h5(5-10x faster than MEX format) - DecontX per-cell decontamination: two-component Dirichlet-Multinomial EM with LDA topics (
run_decontx,select_n_topics) - Per-cell rho refinement via empirical Bayes (
estimate_cell_rho) and DecontX EM (estimate_decontx_rho) - Doublet-aware estimation: Scrublet-style doublet scoring integrated into contamination estimation (
estimate_doublet_scores,auto_est_cont_doublet_aware) - Gene-heterogeneity correction: amplify truly ambient genes before EM (
compute_gene_enrichment,reweight_soup_profile,run_decontx_genehet) - Iterative refinement loop (
iterative_auto_est_cont): auto_est_cont - adjust_counts - soup profile update until convergence - Downstream analysis pipeline (
run_downstream): normalization - PCA - UMAP/tSNE - Leiden/k-means clustering - one-vs-rest Wilcoxon DE - Eight quantitative benchmark metrics:
cross_species_reduction- barnyard experiment contamination fold-changemarker_fold_change- cell-type marker specificitycluster_membership_delta- artificial cluster dissolutionbatch_entropy- local neighbourhood batch-mixinghbb_expression_analysis- HBB removal in non-erythroid cellscluster_silhouette- post-correction cluster coherencespurious_de_reduction- spurious DE gene reductionmarker_enrichment_score- known marker enrichment post-correction
- Three soup profile estimation methods:
fixed,statistical,emptydrops - Three
adjust_countsmethods:subtraction(default),multinomial,soupOnly - Three per-cell rho methods:
empirical_bayes,glm,decontx - Visualization:
plot_soup_correlation,plot_marker_distribution,plot_marker_map,plot_change_map - Full test suite: 16 test modules, regression golden baseline
Changed​
auto_est_cont: Bayesian posterior uses proper joint log-posterior (product of Poisson likelihoods x Gamma prior) instead of the original mixture-density approach- Cluster-level
adjust_countsuses weighted-mean rho aggregation _subtraction: warns when rho x nUMI exceeds allocatable counts
Fixed​
- Zero-UMI cell detection and removal in
SoupChannel.__init__ adjust_counts: normalizerhoarray to 1-D before indexing (prevents scalar-as-0d bug)estimate_decontx_rho: convergence on both parameter delta and relative log-likelihood
[1.0.0] - Reference R Package​
Original R SoupX package by Matthew D. Young & Sam Behjati. This Python implementation begins at v1.6.0 to indicate major feature additions beyond the R baseline.
- Core
SoupChannelworkflow:load10X->autoEstCont->adjustCounts - tf-idf marker detection
- Bayesian rho estimation
- Subtraction and multinomial count correction