tradeSeq is an R/Bioconductor package for trajectory-based differential expression analysis of single-cell RNA sequencing (scRNA-seq) data. It implements a flexible statistical framework based on generalized additive models (GAMs) to identify genes whose expression patterns change significantly along developmental trajectories or pseudotime.
Single-cell transcriptomics enables the study of continuous biological processes such as cell differentiation, development, and disease progression. tradeSeq provides a comprehensive statistical framework for:
The statistical framework is based on fitting negative binomial generalized additive models (GAMs) with cubic regression splines for each gene:
$$\log(\mu_{gc}) = \sum_{l=1}^{L} \mathbf{1}{cl} \cdot s_l(t{cl}) + O_c$$
Where $s_l(t)$ are smooth functions of pseudotime for each lineage $l$, fitted using penalized cubic regression splines.
For detailed methodology, see the Statistical Framework vignette.
Van den Berge K, Roux de Bézieux H, Street K, Saelens W, Cannoodt R, Saeys Y, Dudoit S, Clement L. (2020). Trajectory-based differential expression analysis for single-cell sequencing data. Nature Communications, 11:1201. DOI: 10.1038/s41467-020-14766-3
install.packages("tradeSeq", repos = "https://zaoqu-liu.r-universe.dev")
if (!requireNamespace("BiocManager", quietly = TRUE)) {
install.packages("BiocManager")
}
BiocManager::install("tradeSeq")
if (!requireNamespace("remotes", quietly = TRUE)) {
install.packages("remotes")
}
remotes::install_github("Zaoqu-Liu/tradeSeq")
library(tradeSeq)
library(slingshot)
# Fit GAM models for trajectory analysis
sce <- fitGAM(counts = counts, sds = slingshot_object, nknots = 6)
# Test for association with pseudotime
assocRes <- associationTest(sce)
# Compare expression at trajectory endpoints
endRes <- diffEndTest(sce)
# Visualize gene expression along trajectory
plotSmoothers(sce, counts, gene = "GeneOfInterest")
For a complete tutorial, see the Quick Start Guide.
| Function | Description |
|---|---|
fitGAM() |
Fit negative binomial GAMs for each gene |
associationTest() |
Test association between gene expression and pseudotime |
diffEndTest() |
Compare expression at lineage endpoints |
earlyDETest() |
Test for early differential expression between lineages |
patternTest() |
Compare expression patterns across lineages |
startVsEndTest() |
Compare expression at start vs end of trajectories |
conditionTest() |
Test for condition-specific differential expression |
plotSmoothers() |
Visualize fitted expression curves |
plotGeneCount() |
Plot gene counts along trajectories |

tradeSeq integrates seamlessly with popular trajectory inference tools:
DESCRIPTION for complete dependency listIf you use tradeSeq in your research, please cite:
@article{vandenberge2020trajectory,
title={Trajectory-based differential expression analysis for single-cell sequencing data},
author={Van den Berge, Koen and Roux de B{\'e}zieux, Hector and Street, Kelly and Saelens, Wouter and Cannoodt, Robrecht and Saeys, Yvan and Dudoit, Sandrine and Clement, Lieven},
journal={Nature Communications},
volume={11},
number={1},
pages={1201},
year={2020},
publisher={Nature Publishing Group},
doi={10.1038/s41467-020-14766-3}
}
We welcome contributions! Please submit issues, bug reports, and feature requests via GitHub Issues.
This project is licensed under the MIT License - see the LICENSE file for details.
Zaoqu Liu (@Zaoqu-Liu)
Developed for the single-cell genomics community