
Changelog
bixverse 0.5.2
Features
- Cellsweep implementation from Caskey et al., see vignette.
- Wired in new single cell batch correction metrics (cell-type specific LISI and ASW).
- Also wired in from edge-rs the limma-voom workflow.
- Sweep over the Rust/rextendr documentation
- Wired in scTransform v2 from Choudhary and the vignette.
bixverse 0.5.1
bixverse 0.5.0
Features
-
blitzGSEA wired into the R layer via
calc_blitzgsea(). Permutation GSEA pays per pathway, this does not: random gene sets are drawn once across a log-spaced grid of set sizes, gamma tails are fitted to the null enrichment scores, and every pathway’s p-value is read straight off the fitted tail. One gamma evaluation per pathway, no matter how big the library. No gene set library enters the calibration, soblitzgsea_calibrate()gives you aBlitzGseaNullthat serves every library scored against that signature and survivessaveRDS().params_blitzgsea()and aprint()method come with it. -
bixverse-rs0.5.0 under the hood. kNN graphs now return true Euclidean distances, so theis_squaredplumbing is gone from the binding layer. - NNDescent gained
extract_knn: hand back the graph the descent already built instead of running a separate search over the index. -
load_sce()readsSingleCellExperimentobjects. The Seurat loader was deduplicated against it. - Windows builds work on the r-universe runners.
Fixes
-
plot.Hotspot()draws readable module blocks, and the scored modules are the ones the heatmap actually shows. - ICA whitening rank is capped rather than left to blow up on rank-deficient input.
- The external HDF5 is gated on a cross-ABI host.
bixverse 0.4.11
Features
Single cells
- NEBULA for mixed model differential expression, see He, et al., Commun Biol, 2021:
nebula_sc()onSingleCellsandnebula_mc()onMetaCells, for when you have repeated measures per subject and pseudobulk throws away too much. - The miloR neighbourhood test runs in Rust now via
rs_make_milor_nhoods(), behindget_miloR_abundances_sc()andtest_nhoods(). - edgeR quasi-likelihood workflow via the
edge-rscrate:run_edger_ql()does the fit in Rust rather than round tripping through the R package. - Fewer redundant copies in the meta cell sparse handoff.
bixverse 0.4.10
Features
- Consensus NMF implemented:
-
consensus_nmf_bulk()onBulkCoExpandconsensus_nmf_sc()onSingleCellsandMetaCells. -
nmf_k_sweep_bulk()andnmf_k_sweep_sc()sweep a range ofkand report stability against reconstruction error, so choosingkstops being a guess. Both return anNmfKSweepResultwith aplot()method. -
params_nmf_consensus()plus the matching checkmate assertions. - New
ConsensusNmfResultclass withget_w(),get_h(),get_data()and a newget_stability()generic for the clustering diagnostics. -
get_nmf_stability()onBulkCoExpnow covers consensus fits as well as stabilised ones.
-
- Agent skills implemented:
install_agent_skill()installs an agent skill. - VISION scores enabled also for the
MetaCellsclass. - Latent dirichlet allocation (LDA) implemented for decomposing binary data (think cell x TF active binary matrices).
- DIALOGUE also available now.
bixverse 0.4.9
bixverse 0.4.8
Features
Single cells
Meta cells:
- Improved speed for meta cell methods regarding HVG detection and PCA.
- Additional functionalities around meta cell purities: you can return entropy top label and second best label + proportions.
- Hotspot can now also be applied on meta cells.
Single cells:
- Regulon binarisation for SCENIC.
- AUCell now defaults to
"recovery"a more top heavy score. If you want the old behaviour, please use"wilcox". - One-vs-many comparisons to identify cell type markers.
Fixes
- Various edge cases bug fixes in
bixverse-rsthat propagate into here.
Improved dev experience
If you want to develop on the package, set:
Sys.setenv(DEV_BUILD = "true")
devtools::document()
devtools::install()for local testing and exploration. It will optimise less aggressively in terms of performance, but still reach very good speeds this way, while massively reducing compile times.
bixverse 0.4.7
Features
Single cells
- Faster HVG detection across the board (batch-aware, streaming, one-pass) with faster Loess that uses interpolation now. Results compared to prior runs for
"vst"might be slightly different now. - Implementation of two trajectory methods: PAGA and Palantir.
- State management added for all of the single cell parts in the
ScCachepart. Less foot guns in the future. This works still with older objects, but good practice for the future. - Improvements on the meta-cells:
-
cells_to_keepare stored now avoiding some problems with state. - Less memory-hungry merging implemented.
-
bixverse 0.4.6
Features
Single cells
-
bixverse-rsversion bump for better performance in SEACells and more robust streaming engine. Old files will still behave, but the desired target size is now encoded in the files. - The pruning operation has been set to
TRUEby default in SEACells after further benchmarking. - Updated vignettes that had stale information (especially meta cells).
bixverse 0.4.4
Features
General
- NMF implemented for bulk co-expression module detection and updated vignette.
- Synthetic data generators for bulk updated to create different data structures.
Single cells
- Improved cell quality control functions.
- Additional single cell batch correction methods:
- Seurat-inspired CCA anchor-based batch correction
- Seurat-inspired rPCA anchor-based batch correction
-
SingleCellsSubsetclass. This class creates a view into a subset of cells, think doing further analysis on T cells within your data set. - AUCell reworked.
aucell_sc()now takes aparams_sc_aucell()list instead of anauc_typestring, and offers three statistics:"wilcox"(the Mann-Whitney AUC, still the default),"recovery"(the recovery-curve AUC of Aibar et al., with amax_rankcutoff) and"ap"(average precision). Scores can be z-scored per gene set viastandardise. - Something is cooking for the single cell stuff. There has been a major refactor on the Rust side that will enable some very, very, very cool future features. Watch the space…
bixverse 0.4.2
Features
- Faster fgsea multi-level implementation with less unnecessary allocations and faster computations.
Breaking changes
get_centroids() was renamed to get_centroids_sc() for the usage on the fast clustering algorithms.
bixverse 0.4.1
Features
-
SingleCellsSubsetclass that can split from the main class and allows for analysis of e.g., a subset of cell types, etc. - Added singscore, see Foroutan et al., as another option to score single samples and their pathway activity.
bixverse 0.4.0
Features
Following things were added:
- Merging of SingleCells object possible
- Multi file reading in for .mtx files
- Possibility to read in densely stored h5ad files.
- 10x h5 files can be read in.
- Multi-model single cell support set up
- New multi-model class for single cells:
SingleCellsMultiModal. - You can no add the ADT counts to that one (in the future maybe also ATAC- Seq).
- The weighted nearest neighbour graph method from Hao et al., 2021
- New multi-model class for single cells:
- Improved performance on:
- Harmony version 1 and version 2 with substantial speed improvements.
- Hotspot with even more substantial speed improvements via doing less suboptimal things in the Rust code.
- Large improvements to the memory management of SuperCells and SEACells. Both can run on a million cells on consumer hardware now.
- Large number of helpers for plotting via the sister package and updated vignettes for this.
- Reading in of 10x CellRanger h5 files (and multi-file support).
- NMF for single cell wired up. TODO: Add also to bulk -> in one of the future releases.
- Symphony for label transfer of cell types.
- Grouping column for doublet detection methods.
- NicheNet implementation for ligand receptor analysis
Bug fixes
- Multi-file loaders (
load_multi_tenx_h5(),load_multi_h5ad()) no longer writeNAgene ids into thevartable undergene_universe = "union"when the var reference file does not contain every gene in the universe. Thegene_idis now pinned to the canonical universe id and additional data found in the vars is dropped. The user has to add them subsequently. - Properly dealt with the mitch bug and removed the hotfix part.
Breaking changes
The interface to the i/o functions for the single cell was changed. The streaming = TRUE parameter was simplified and gives you now more control over how to stream in data. This can (and will) break old code! If you get an error like:
Assertion on 'streaming' failed. Must be of class 'integer', not 'logical'.
Update the streaming parameter to 0L, 1L or 2L, pending on data set size and available memory. Additionally, the interface to the PCA function has changed, see here:
{r} calculate_pca_sc( object, no_pcs, pca_params = params_sc_pca(), # new parameter replacing randomised_svd sparse_svd = FALSE, hvg = NULL, seed = 42L, .verbose = TRUE )
This gives you way more control over how to run the PCA normalisation (mean centering, variance normalisation or now also the new PFLogPF normalisation).
bixverse 0.3.2
Features
Following things were added:
- scDblFinder as another doublet detection method
- Following methods on top of meta-cells:
- HVG detection
- PCA
- kNN generation
- sNN generation
- Leiden clustering
- SCENIC for meta cells
- Exposing (finally) other HVG methods for single cell
- Addition of
KmKnnas a nearest neighbour method - Fast clustering methods with k-means clustering followed by Louvain clustering.
- Harmony v2 added.
- Following vignettes added:
- K-nearest neighbour searches for single cell
- Metacells in
bixverse - Updates to various single cell vignettes
- Major update to the rextendr/extendr interface
bixverse 0.3.0
The big one… First, shift of versioning + release of full single cell analysis suite. See below for more details.
- Full refactor of the Rust code, so it lives in its own crate
- Single cell officially released:
- Class with getters that leverages on-disk storage of counts and a streaming engine to enable memory-friendly analysis of millions of cells.
- I/O helpers that can read mtx outputs, h5ad, h5ad with only normalised counts, multiple h5ad and conversion from Seurat implemented.
- Fully functional suite of pre-processing functions: proportion of gene sets, proportion of Top N genes of overall counts, HVG detection, PCA (with sparse solving avoiding densification), multiple kNN backends for different use-cases, sNN generation and Leiden community detection.
- Three different batch correction methods implemented: BBKNN, fastMNN and Harmony.
- Various analysis methods for single cell implemented: AUCell, GeneModuleScoring, VISION, Hotspot, SCENIC and miloR implementations.
- Metacell generation: hdWGCNA bootstrap approach, SuperCells and SEACells.
- Large number of convenience functions.
- Sister package started with plotting functions.
- Package with very fast 2D embedding methods also ready as a sister package – check out manifoldsR.
bixverse 0.0.2.3
- RCisTarget implemented in Rust, see Aebir et al. for details.
- Bug fix: scaling in
preprocess_bulk_coexp()caused a matrix transpose.
bixverse 0.0.2.2
- Mitch multi contrast enrichment implemented in Rust.
- Rework and refactor of sub modules in the Rust code.
- Additional Rust functions for set similarity across a list of items in R.
- QC function for the bulk DGE class split into
qc_bulk_dge()andnormalise_bulk_dge(). - Bulk DGE function split into
calculate_dge_limma()andcalculate_dge_hedges(). - Splitting by correlation sign and Eigengene calculation added for CoReMo.
- SNF algorithm added from Wang et al..
- Spectral clustering methods implemented in Rust.
- Breaking change:
rs_set_similarity_list()renamed tors_set_similarity_list2(). The former now takes a single list and calculates set similarity across all permutations of elements. - Breaking change:
preprocess_bulk_dge()andcalculate_all_dges()have been removed.
bixverse 0.0.2.1
- Constrained PageRank implementation added.
- Improved synthetic data for correlation-based gene module detection.
- Improved tests for ICA, CoReMo and graph-based correlation modules.
- Various distance calculations accelerated in Rust.
- Rust-based personalised PageRank implementations now support weighted graphs.
- Bug fixes for the graph-based correlation methods.
- Fixed export bugs for some plotting functions.
- Breaking change: interface to Rust-based personalised PageRank calculations may break due to the addition of a
weightsparameter.
bixverse 0.0.2.0
- Rework of the ontology class with Wang similarity added as an additional measure.
- Rework of the genetic community detection class and diffusion methods, including permutation-based testing for diffusions.
- Rework of the ICA code with a testing suite added for the ICA class.
- Reciprocal best hit method based on correlations added; an additional parameter is now required specifying whether to use set similarity or correlation-based similarity.
- Vignettes added for various methods.
- GSVA and ssGSEA implemented in Rust.
- Rust code reworked in various places for improved performance.
- Mutual information calculations implemented in Rust.
- Improvements to the synthetic data.
- Bug fixes for the graph-based correlation methods.
- Breaking change: ontology class functions and methods have been modified heavily and may be breaking.
- Breaking change: community detection method has been updated; old code may not work.
- Breaking change: ICA detection functions and methods have been updated and may break existing code.
bixverse 0.0.1.4
- TOM implemented in Rust for correlation-based module detection.
- CoReMo-based gene module detection added.
- Breaking change:
cor_module_check_res()renamed tocor_module_graph_check_res()andcor_module_final_modules()renamed tocor_module_graph_final_modules().
bixverse 0.0.1.3
- fgsea multi level method implemented;
n_more_extremeis now returned by GSEA functions. - RBF function implementations added for R matrices.
bixverse 0.0.1.2
- fgsea simple implemented for gene ontology with elimination method.
- Improved gene ontology elimination methods to reduce unnecessary copying.
bixverse 0.0.1.1
- Semantic similarities for ontologies added.
- Speed improvements in various Rust functions via reduced memory copying and use of lifetimes.
- Package stability improved with tests powered by tinytest.
- Set similarity Rust functions exposed.
- DGE class added for Limma Voom differential gene expression calculations.
- Wrapper functions added to load h5ad objects into R memory.
- Traditional GSEA and fgsea simple ported into Rust.
- Bug fix:
future::plan()for iterating over resolutions in reciprocal best hit graph generation. - Bug fix: hypergeometric calculations and RBH graph.
- Breaking change:
community_detection()now usesparams_community_detection()for parameters.
bixverse 0.0.1.0
- Hypergeometric tests for gene set analysis for single or lists of target gene sets.
- Gene ontology aware hypergeometric test for GO analysis.
- Network diffusion methods based on personalised PageRank (single and tied diffusion).
- Community detection algorithms on top of diffusion scores.
- Reciprocal best hit graphs using set similarities between gene modules from different data sets or methods.
- Contrastive PCA implementation for gene module detection.
- Differential correlation-based methods for gene module detection using network-based graph community detection.
- Independent component analysis with stabilised versions.
- Helper functions for Hedge’s G effect size and OpenTargets score summarisation.