Returns the registry: one row per method, with the species it supports, the expression scale it accepts, what it needs, how its output can be compared, its licence, and whether it is installed in the private library.
Value
A data frame with one row per method. installed is TRUE when
every package the method needs is found in the private library or in the
normal library paths.
Examples
bulkdeconv_methods()
#> method species status expr_accepted min_samples_n
#> 1 quantiseq human ready tpm 1
#> 2 mcp_counter human ready tpm 1
#> 3 xcell human conditional tpm 2
#> 4 xcell2 human|mouse ready tpm 1
#> 5 estimate human ready tpm 1
#> 6 consensus_tme human conditional tpm 1
#> 7 immucellai2 human ready tpm 1
#> 8 imsig human conditional tpm 2
#> 9 spatialdecon_safetme human conditional tpm 1
#> 10 epic human ready tpm 1
#> 11 abis human ready tpm 1
#> 12 timer human conditional tpm 2
#> 13 mmcp_counter mouse ready tpm 1
#> 14 dcq mouse conditional tpm 1
#> 15 immucellai_mouse mouse conditional tpm 2
#> 16 ssmd mouse conditional tpm 6
#> 17 seqimmucc mouse ready count 1
#> 18 base mouse conditional tpm 2
#> single_sample sample_independent
#> 1 native yes (diff 0)
#> 2 native yes (diff 0)
#> 3 unsupported no (diff 0.566 when run with a duplicate)
#> 4 duplicate no (subtracts the cohort minimum)
#> 5 native yes (diff 0)
#> 6 native no (diff 0.254 alone vs in cohort)
#> 7 native nearly (diff 0.068)
#> 8 unsupported cohort-based by design (correlation filtering)
#> 9 native yes (diff 0)
#> 10 native yes (diff 0)
#> 11 native yes (diff 0)
#> 12 unsupported no (diff 0.04 between n=4 and n=3)
#> 13 native yes (diff 0)
#> 14 duplicate yes (diff 0)
#> 15 unsupported no (diff 2.62 when run with a duplicate)
#> 16 unsupported cohort-based by design
#> 17 native yes (diff 0)
#> 18 unsupported no (diff 0.65 between n=6 and n=3)
#> cohort_dependent engine
#> 1 no native
#> 2 no native
#> 3 yes native
#> 4 yes native
#> 5 no native
#> 6 yes native
#> 7 no native
#> 8 yes native
#> 9 no native
#> 10 no external
#> 11 no native
#> 12 yes native
#> 13 no native
#> 14 no external
#> 15 yes native
#> 16 yes external
#> 17 no native
#> 18 yes native
#> needs options
#> 1
#> 2
#> 3
#> 4 reference preset preset
#> 5
#> 6 cancer_type (32 TCGA types or 'Unfiltered') cancer_type
#> 7 tissue ('tumor' by default) tissue
#> 8
#> 9 background matrix (constant 0.1 used)
#> 10
#> 11
#> 12 cancer_type (32 TCGA types, required) cancer_type
#> 13
#> 14
#> 15
#> 16 tissue ('Inflammatory' uses the mouse cancer markers) tissue
#> 17
#> 18 n_permutations (default 100), seed (default 1) n_permutations|seed
#> output_class
#> 1 fraction
#> 2 abundance_score
#> 3 enrichment_score
#> 4 enrichment_score
#> 5 enrichment_score
#> 6 enrichment_score
#> 7 fraction
#> 8 abundance_score
#> 9 abundance_estimate
#> 10 fraction
#> 11 abundance_estimate
#> 12 abundance_score
#> 13 abundance_score
#> 14 relative_quantity
#> 15 fraction
#> 16 fraction_modules
#> 17 fraction
#> 18 enrichment_score
#> comparability
#> 1 estimated composition; comparable across samples for the same cell type and reference
#> 2 arbitrary units; comparable across samples for one cell type, not across cell types
#> 3 relative score within the run; not comparable across cell types or across studies
#> 4 relative score within the run; not comparable across cell types or across studies
#> 5 relative score within the run; not comparable across cell types or across studies
#> 6 relative score within the run; not comparable across cell types or across studies
#> 7 estimated composition; comparable across samples for the same cell type and reference
#> 8 arbitrary units; comparable across samples for one cell type, not across cell types
#> 9 model coefficients proportional to cell abundance; comparable across samples for one cell type
#> 10 estimated composition; comparable across samples for the same cell type and reference
#> 11 model coefficients proportional to cell abundance; comparable across samples for one cell type
#> 12 arbitrary units; comparable across samples for one cell type, not across cell types
#> 13 arbitrary units; comparable across samples for one cell type, not across cell types
#> 14 relative cell quantity; designed for expression changes
#> 15 estimated composition; comparable across samples for the same cell type and reference
#> 16 data-dependent marker modules; map to cell types before comparing
#> 17 estimated composition; comparable across samples for the same cell type and reference
#> 18 relative score within the run; not comparable across cell types or across studies
#> n_outputs_measured runtime_s packages
#> 1 11 0.4 quadprog
#> 2 10 0.3
#> 3 67 1.7
#> 4 25 10.4
#> 5 3 0.4
#> 6 19 0.5
#> 7 53 1.7
#> 8 10 0.3
#> 9 18 1.1
#> 10 8 0.2 EPIC
#> 11 17 0.1 MASS
#> 12 6 5.7 sva
#> 13 15 0
#> 14 207 0.2 ComICS
#> 15 37 1.1
#> 16 21-30 90-112 SSMD|nnls|bcv
#> 17 10 0.1
#> 18 15 51
#> install
#> 1
#> 2
#> 3
#> 4
#> 5
#> 6
#> 7
#> 8
#> 9
#> 10 github::GfellerLab/EPIC@50a4f404f96c2842b2891b517b4e3bfaa6c64b8f
#> 11
#> 12
#> 13
#> 14 cran::ComICS
#> 15
#> 16 github::xiaoyulu95/SSMD@b90d2541d8c5f76733c4ea151972f237c126ffe4;cran::nnls
#> 17
#> 18
#> source
#> 1 native port of quanTIseq (Finotello et al. 2019) after quantiseqr 1.18.0, with the TIL10 files and the HGNC table
#> 2 native port of MCP-counter (Becht et al. 2016); marker table from ebecht/MCPcounter@b6eac73
#> 3 native port of xCell (Aran et al. 2017) with its bundled signatures and spill-over matrix
#> 4 native xCell2 1.2.3 inference with its pre-trained reference presets
#> 5 native port of ESTIMATE (Yoshihara et al. 2013) after tidyestimate 1.1.1; data from tidyestimate
#> 6 native port of ConsensusTME (Jimenez-Sanchez et al. 2019) with its precomputed consensus gene sets
#> 7 native port of ImmuCellAI 2.0 (Yang) from GuoBioinfoLab/ImmuCellAI-2.0@0135016; reference restricted to the 5510 marker genes
#> 8 native port of ImSig (Nirmal et al. 2018) with its signature table
#> 9 native port of SpatialDecon 1.20.1 (NanoString) with the bundled SAFE-TME matrix; logNormReg::lognlm written out
#> 10 GitHub:GfellerLab/EPIC
#> 11 native port of ABIS (Monaco et al. 2019), RNA-seq signature from immunedeconv@e625e6c
#> 12 native port of TIMER (Li et al. 2016); reference data from immunedeconv@e625e6c
#> 13 native port of mMCP-counter (Petitprez et al. 2020), genome GCRm39 signatures
#> 14 CRAN:ComICS
#> 15 native port of ImmuCellAI-mouse 0.1.5 from BioInfoCloud/ImmuCellAI_mouse@b9fc2e7
#> 16 GitHub:xiaoyulu95/SSMD
#> 17 native port of seq-ImmuCC LLSR (Chen et al. 2018); signature matrix from immunedeconv@e625e6c
#> 18 native port of BASE (Varn et al. 2017) with the mouse compendium from immunedeconv@e625e6c
#> version pin
#> 1 bulkdeconv data:quantiseqr 1.18.0
#> 2 bulkdeconv data:MCPcounter@b6eac73
#> 3 bulkdeconv data:xCell@20e2919
#> 4 bulkdeconv data:xCell2 1.2.3 (38ae014)
#> 5 bulkdeconv data:tidyestimate 1.1.1
#> 6 bulkdeconv data:ConsensusTME@6e14ba3
#> 7 bulkdeconv data:ImmuCellAI-2.0@0135016
#> 8 bulkdeconv data:imsig 1.1.3
#> 9 bulkdeconv data:SpatialDecon 1.20.1
#> 10 1.1.7 50a4f404f96c2842b2891b517b4e3bfaa6c64b8f
#> 11 bulkdeconv data:e625e6c28ed14a30f9f40f159925cc9f0df4fa49
#> 12 bulkdeconv data:e625e6c28ed14a30f9f40f159925cc9f0df4fa49
#> 13 bulkdeconv data:mMCP-counter@cec6971
#> 14 1.0.4 cran-2026-11-11
#> 15 bulkdeconv data:ImmuCellAI_mouse@b9fc2e7
#> 16 0.1.0 b90d2541d8c5f76733c4ea151972f237c126ffe4
#> 17 bulkdeconv data:e625e6c28ed14a30f9f40f159925cc9f0df4fa49
#> 18 bulkdeconv data:e625e6c28ed14a30f9f40f159925cc9f0df4fa49
#> license
#> 1 GPL-3 (bulkdeconv)
#> 2 GPL-3 (bulkdeconv)
#> 3 GPL-3 (bulkdeconv)
#> 4 GPL-3 (bulkdeconv)
#> 5 GPL (>= 2) (ported into bulkdeconv, GPL-3)
#> 6 GPL-3 (bulkdeconv)
#> 7 MIT (ImmuCellAI 2.0, ported)
#> 8 GPL-3 (bulkdeconv)
#> 9 MIT (SpatialDecon, ported)
#> 10 file LICENSE (academic, non-commercial)
#> 11 GPL-3 (bulkdeconv)
#> 12 GPL-3 (bulkdeconv)
#> 13 GPL-3 (bulkdeconv)
#> 14 GPL-2
#> 15 MIT (ImmuCellAI-mouse, ported)
#> 16 none (placeholder 'What license is it under?')
#> 17 GPL-3 (bulkdeconv)
#> 18 GPL-3 (bulkdeconv)
#> license_note
#> 1 GPL-3 (quantiseqr); notice in inst/COPYRIGHTS
#> 2 GPL-3 (MCPcounter); the marker table is bundled, so nothing is downloaded at run time
#> 3 GPL-3 (xCell); notice in inst/COPYRIGHTS
#> 4 xCell2 GPL (>= 3); see inst/COPYRIGHTS for reference provenance
#> 5 tidyestimate is GPL (>= 2); the ESTIMATE common genes and signatures are bundled with it (inst/COPYRIGHTS)
#> 6 GPL-3 (ConsensusTME); notice in inst/COPYRIGHTS
#> 7 MIT + file LICENSE (Jingmin Yang, 2026); notice kept in inst/COPYRIGHTS
#> 8 GPL-3 (imsig); notice in inst/COPYRIGHTS
#> 9 MIT (NanoString Technologies, 2021); notice kept in inst/COPYRIGHTS
#> 10 README: free for academic non-commercial use; for-profit use needs a licence
#> 11 port of the ABIS Shiny application code; the signature matrix has no stated licence (inst/COPYRIGHTS)
#> 12 port of TIMER code (GPL-2.0); the curated immune reference derives from public sorted-cell expression data (inst/COPYRIGHTS)
#> 13 GPL-3 (mMCP-counter); notice in inst/COPYRIGHTS
#> 14 DESCRIPTION
#> 15 MIT + file LICENSE (Yun Sen, 2025); notice kept in inst/COPYRIGHTS
#> 16 DESCRIPTION template left unfilled
#> 17 port of code marked as provided by the seq-ImmuCC authors; the signature matrix has no stated licence (inst/COPYRIGHTS)
#> 18 port of code adapted from Varn et al.; the compendium has no stated licence and is stored rounded to 6 decimals (inst/COPYRIGHTS)
#> registration
#> 1 not required
#> 2 not required
#> 3 not required
#> 4 not required
#> 5 not required
#> 6 not required
#> 7 not required
#> 8 not required
#> 9 not required
#> 10 not required
#> 11 not required
#> 12 not required
#> 13 not required
#> 14 not required
#> 15 not required
#> 16 not required
#> 17 not required
#> 18 not required
#> expr_evidence
#> 1 tpm (run_quantiseq, is_arraydata=FALSE)
#> 2 not stated; ran with TPM
#> 3 rnaseq=TRUE; ran with TPM
#> 4 references trained on TPM or RMA; ran with TPM
#> 5 normalized expression; is_affymetrix=FALSE for RNA-seq
#> 6 not stated; ran with TPM
#> 7 TPM, non-log, genes in rows (README)
#> 8 natural scale (documentation)
#> 9 normalized data plus a background matrix (GeoMx design)
#> 10 TPM or RPKM (README)
#> 11 TPM (immunedeconv documentation; RNA-seq signature)
#> 12 TPM (immunedeconv documentation)
#> 13 not stated; ran with TPM
#> 14 designed for expression changes (delta); ran with TPM
#> 15 FPKM or TPM for RNA-seq (README)
#> 16 not stated; ran with TPM
#> 17 raw counts (paper and immunedeconv documentation); the code log2-transforms values above 50; a TPM-like matrix also ran, but only counts are accepted here
#> 18 TPM (immunedeconv documentation)
#> validated_on
#> 1 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 2 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 3 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 4 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 5 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 6 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 7 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 8 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 9 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 10 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 11 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 12 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 13 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 14 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 15 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 16 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 17 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> 18 R 4.5.3; Bioconductor 3.22; Windows 11; 2026-11-11
#> notes
#> 1 10 immune cell types plus 'Other'; is_tumordata=TRUE | native: no ggplot2, tidyr, SummarizedExperiment, preprocessCore, limSolve or MASS needed (only the small package quadprog for the constrained least squares); the original looks gene symbols up in a column called Synonyms that its HGNC table does not have, so only previous symbols are used (same result)
#> 2 MCPcounter.estimate() downloads genes.txt at call time; the adapter fetches it once at the pinned commit and caches it | native: no curl or MCPcounter package, no download at run time (the original fetches genes.txt from GitHub on every call)
#> 3 scores depend on the other samples in the run; superseded by xcell2 | native: no GSVA, GSEABase, pracma, quadprog or digest needed; ssGSEA and NNLS are written out and checked
#> 4 9 presets; at least 50% reference-gene overlap required. One sample is duplicated for compatibility; both copies then have the cohort minimum, so the scores are zero. Preset timings refer to the original implementation.
#> 5 stromal, immune and combined scores only; no tumour purity for RNA-seq | native: 0.4 s, same output as tidyestimate (tests/testthat/test-native.R)
#> 6 ssGSEA is relative within the run, so a single-sample value is not comparable with a cohort value; cancer_type 'Unfiltered' needs no cancer type | native: no GSVA, GSEABase or singscore needed; ssgsea only (the other statistics of the original are not offered)
#> 7 53 immune subtypes for tumour; 15-19 s on 4 samples | native: 1.7 s instead of 18 s (the original reads a 41 MB text reference on every call; here the reference is stored restricted to the 5510 marker genes, 2 MB)
#> 8 needs 2 distinct samples (identical duplicates fail); outputs include non-cell signatures (Interferon, Proliferation, Translation); last release 2021-01 | native: no igraph, HiClimR, ggplot2, gridExtra or survival needed; the original sorts the samples by the T cell score, here they stay in input order
#> 9 built for spatial data; bulk use is allowed by the package title but the meaning of the background for bulk is unvalidated; 'Unsuccessful convergence' warning on the test data; pulls in GeomxTools | native: no GeomxTools, SeuratObject or logNormReg needed; same coefficients as SpatialDecon; standard errors and p values are not computed
#> 10 no registration; a non-commercial notice is printed at run time; includes 'otherCells'
#> 11 signature built from sorted blood (PBMC) cell types, not from tumour tissue: 17 blood cell subsets as robust-regression coefficients times 100; uses MASS (a recommended package that most R installations include; installed into the private library when missing)
#> 12 signatures are cancer-type specific (a different type changed the values by up to 0.02); batch correction against a reference (ComBat, package sva) makes values depend on the other samples; needs at least 2 samples; 6 cell types (B, CD4 T, CD8 T, neutrophil, macrophage, DC)
#> 13 signatures bundled for GCRm38 and GCRm39 (GCRm39 used); warning 'No genes were found for population(s): Basophils' on the test data | native: also works on one sample (the original fails because a one-column matrix loses its dimensions); only the GCRm39 symbols signature is bundled
#> 14 the bundled reference is a 61-gene ImmGen subset (immgen_dat, 207 populations) with 61 markers (59 present in the test data); 207 fine-grained outputs; last release 2018-05
#> 15 37 outputs over three hierarchy layers; values depend strongly on the other samples | native: no GSVA or dplyr needed; ssGSEA and NNLS are written out and checked; one deliberate difference: the infiltration score matches sample names exactly instead of by regular expression (the original mixes samples when one name is part of another, e.g. S1 and S10)
#> 16 use the ORIGINAL repository (the zy26/SSMD fork lacks R2_two_mat); needs the undeclared package nnls; 6 samples or more (3 and 2 fail); 90-112 s per run; rows are data-dependent marker modules (21-30), not fixed cell types
#> 17 LLSR only (the SVR variant needs CIBERSORT and is not offered); 10 immune cell types in percent summing to 100; the original computes a quantile normalisation it never uses, so none is applied; values identical alone, in n=5 and in n=20
#> 18 51 s for 6 samples and 57 s for 20 samples at 100 permutations (the original code: 175 s for 6); quantile normalisation and per-gene median centring make scores relative to the cohort; scores are z-scored over samples before sub-types are combined, so 1 sample is not possible; permutations are seeded (option seed); 15 mouse cell types
#> installed
#> 1 TRUE
#> 2 TRUE
#> 3 TRUE
#> 4 TRUE
#> 5 TRUE
#> 6 TRUE
#> 7 TRUE
#> 8 TRUE
#> 9 TRUE
#> 10 FALSE
#> 11 TRUE
#> 12 TRUE
#> 13 TRUE
#> 14 FALSE
#> 15 TRUE
#> 16 FALSE
#> 17 TRUE
#> 18 TRUE
bulkdeconv_methods("mouse")[, c("method", "output_class", "installed")]
#> method output_class installed
#> 1 xcell2 enrichment_score TRUE
#> 2 mmcp_counter abundance_score TRUE
#> 3 dcq relative_quantity FALSE
#> 4 immucellai_mouse fraction TRUE
#> 5 ssmd fraction_modules FALSE
#> 6 seqimmucc fraction TRUE
#> 7 base enrichment_score TRUE