expranno is an R package for downstream RNA-seq workflows built around
Ensembl-ID expression matrices and sample metadata. It standardizes four
core steps:
https://dai540.github.io/expranno/
annotate_expr()for human or mouse gene annotationmerge_expr_meta()for stable expression-metadata integrationrun_cell_deconvolution()forimmunedeconv-based deconvolutionrun_signature_analysis()for GSVA or ssGSEA signature scoring
The package is intentionally narrow. It does not handle alignment, quantification, QC, or differential expression. Instead, it standardizes annotation presets, validation tables, provenance files, and downstream outputs once an expression matrix already exists.
It is designed for analysts working with bulk RNA-seq matrices where:
expr: first column isgene_id, remaining columns are samplesmeta: first column issample
For repeatable annotation, expranno ships fixed presets such as
human_tpm_v102 and mouse_tpm_v102, plus bundled truth tables through
example_annotation_truth().
Install from GitHub:
install.packages("pak")
pak::pak("dai540/expranno")Or:
install.packages("remotes")
remotes::install_github("dai540/expranno")Or install from a source tarball:
install.packages("path/to/expranno_<version>.tar.gz", repos = NULL, type = "source")Optional annotation and signature backends:
BiocManager::install(c(
"biomaRt",
"AnnotationDbi",
"org.Hs.eg.db",
"org.Mm.eg.db",
"ensembldb",
"EnsDb.Hsapiens.v86",
"EnsDb.Mmusculus.v79",
"GSVA"
))Optional deconvolution backend:
remotes::install_github("omnideconv/immunedeconv")Then load the package:
library(expranno)If you use expranno, cite the package as:
Dai (2026). expranno: Expression Annotation, Metadata Integration, Deconvolution, and Signature Analysis. R package. https://dai540.github.io/expranno/
You can also retrieve the citation from R:
citation("expranno")expranno does four things.
- Annotates Ensembl IDs with fixed-release human or mouse presets
- Benchmarks and validates annotation against truth tables
- Merges annotated expression with metadata into stable CSV outputs
- Runs deconvolution and signature scoring from the same annotated matrix
In practice, the package is doing this:
annotate_expr()writesexpr_anno.csvplus coverage, ambiguity, and provenance tablesvalidate_annotation_engines()compares predicted fields against truth tablesmerge_expr_meta()writesexpr_meta_merged.csvrun_cell_deconvolution()writescell_deconv_<method>.csvrun_signature_analysis()writessignature_gsva.csvandsignature_ssgsea.csvrun_expranno()orchestrates the full workflow and keeps the output layout stable
run_expranno()annotate_expr()benchmark_annotation_engines()validate_annotation_engines()merge_expr_meta()run_cell_deconvolution()run_signature_analysis()as_expranno_input()as_expranno_se()list_annotation_presets()example_annotation_truth()
expr_anno.csvannotation_report.csvannotation_ambiguity.csvannotation_provenance.csvannotation_validation_summary.csvannotation_validation_detail.csvexpr_meta_merged.csvcell_deconv_<method>.csvsignature_gsva.csvsignature_ssgsea.csvsession_info.txt
library(expranno)
demo <- example_expranno_data()
result <- run_expranno(
expr = demo$expr,
meta = demo$meta,
annotation_preset = "human_tpm_v102",
expr_scale = "abundance",
duplicate_strategy = "mean",
output_dir = tempdir(),
run_deconvolution = FALSE,
run_signature = FALSE
)
result$annotation$reportThe tutorial site is organized around:
Getting Started- preset reference
- benchmarking and reproducibility
- human case study
- mouse case study
- function reference
- It does not perform alignment, quantification, or read-level QC
- It does not replace native
immunedeconvorGSVAmethod-specific tuning - It does not provide a CRAN or Bioconductor release yet
- It does not implement a full reporting layer beyond CSV outputs, vignettes, and pkgdown docs
R/annotate.R: annotation workflows and backendsR/run.R: end-to-end wrapperR/signature.R: GSVA and ssGSEA scoringR/deconvolution.R: deconvolution wrapperR/benchmark.RandR/validation.R: benchmark and truth-table validationR/bioconductor.R: Bioconductor input/output helpersR/data-helpers.R: built-in examples, truth tables, and preset listingR/io.R: strict input validation and expression-metadata mergingvignettes/: getting-started, design, and case-study articlesinst/extdata/: bundled demo GMT and truth tables