Skip to contents

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.

Usage

bulkdeconv_methods(species = NULL, usable = TRUE)

Arguments

species

Optional. "human" or "mouse"; keeps only methods that support it.

usable

If TRUE (default), drops methods that cannot be run (status unavailable or excluded).

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