The propeller method has now been accepted for publicaton in Bioinformatics.
Please use the following citation when using propeller:
Belinda Phipson, Choon Boon Sim, Enzo R Porrello, Alex W Hewitt, Joseph Powell, Alicia Oshlack, propeller: testing for differences in cell type proportions in single cell data, Bioinformatics, 2022;, btac582, https://doi.org/10.1093/bioinformatics/btac582
The preprint is available on bioRxiv.
The speckle package currently contains functions to analyse differences in cell type proportions in single cell RNA-seq data. As our research into specialised analyses of single cell data continues we anticipate that the package will be updated with new functions.
The propeller, propeller.ttest and propeller.anova functions perform statistical tests for differences in cell type composition in single cell data. In order to test for differences in cell type proportions between multiple experimental conditions at least one of the groups must have some form of biological replication (i.e. at least two samples). For a two group scenario, the absolute minimum sample size is thus three. Since there are many technical aspects which can affect cell type proportion estimates, having biological replication is essential for a meaningful analysis.
The propeller function takes a SingleCellExperiment or Seurat object as input, extracts the relevant cell information, and tests whether the cell type proportions are statistically significantly different between experimental conditions/groups. The user can also explicitly pass the cluster, sample and experimental group information to propeller. P-values and false discovery rates are outputted for each cell type.
The propeller.ttest() and propeller.anova() are more general functions that can account for additional covariates in the analysis.
We are currently in the process of submitting speckle to Bioconductor. Once it has passed review, the following installation instructions can be used to install speckle:
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("speckle")
In order to view the vignette for speckle use the following command:
browseVignettes("speckle")
To install speckle from github, use either of the following commands:
BiocManager::install(c("CellBench", "BiocStyle", "scater"))
remotes::install_github("phipsonlab/speckle", build_vignettes = TRUE,
dependencies = "Suggest")
The remotes package allows the vignette to be built.
library(devtools)
devtools::install_github("phipsonlab/speckle")
This is a basic example which shows you how to test for differences in cell type proportions in a two group experimental set up.
library(speckle)
library(limma)
library(ggplot2)
# Get some example data which has two groups, three cell types and two
# biological replicates in each group
cell_info <- speckle_example_data()
head(cell_info)
# Run propeller testing for cell type proportion differences between the two
# groups
propeller(clusters = cell_info$clusters, sample = cell_info$samples,
group = cell_info$group)
# Plot cell type proportions
plotCellTypeProps(clusters=cell_info$clusters, sample=cell_info$samples)
Please note that this basic implementation is for when you are only modelling group information. When you have additional covariates that you would like to account for, please use the propeller.ttest() and propeller.anova() functions directly. Please read the vignette for examples on how to model a continuous variable, account for additional covariates and include a random effect in the analysis.