Perform differential expression analysis on SCE object

runDEAnalysis(method = c("wilcox", "MAST", "DESeq2", "Limma", "ANOVA"), ...)

runDESeq2(
  inSCE,
  useAssay = "counts",
  useReducedDim = NULL,
  index1 = NULL,
  index2 = NULL,
  class = NULL,
  classGroup1 = NULL,
  classGroup2 = NULL,
  analysisName,
  groupName1,
  groupName2,
  covariates = NULL,
  fullReduced = TRUE,
  onlyPos = FALSE,
  log2fcThreshold = NULL,
  fdrThreshold = NULL,
  minGroup1MeanExp = NULL,
  maxGroup2MeanExp = NULL,
  minGroup1ExprPerc = NULL,
  maxGroup2ExprPerc = NULL,
  overwrite = FALSE,
  verbose = TRUE
)

runLimmaDE(
  inSCE,
  useAssay = "logcounts",
  useReducedDim = NULL,
  index1 = NULL,
  index2 = NULL,
  class = NULL,
  classGroup1 = NULL,
  classGroup2 = NULL,
  analysisName,
  groupName1,
  groupName2,
  covariates = NULL,
  onlyPos = FALSE,
  log2fcThreshold = NULL,
  fdrThreshold = NULL,
  minGroup1MeanExp = NULL,
  maxGroup2MeanExp = NULL,
  minGroup1ExprPerc = NULL,
  maxGroup2ExprPerc = NULL,
  overwrite = FALSE,
  verbose = TRUE
)

runANOVA(
  inSCE,
  useAssay = "logcounts",
  useReducedDim = NULL,
  index1 = NULL,
  index2 = NULL,
  class = NULL,
  classGroup1 = NULL,
  classGroup2 = NULL,
  analysisName,
  groupName1,
  groupName2,
  covariates = NULL,
  onlyPos = FALSE,
  log2fcThreshold = NULL,
  fdrThreshold = NULL,
  minGroup1MeanExp = NULL,
  maxGroup2MeanExp = NULL,
  minGroup1ExprPerc = NULL,
  maxGroup2ExprPerc = NULL,
  overwrite = FALSE,
  verbose = TRUE
)

runMAST(
  inSCE,
  useAssay = "logcounts",
  useReducedDim = NULL,
  index1 = NULL,
  index2 = NULL,
  class = NULL,
  classGroup1 = NULL,
  classGroup2 = NULL,
  analysisName,
  groupName1,
  groupName2,
  covariates = NULL,
  onlyPos = FALSE,
  log2fcThreshold = NULL,
  fdrThreshold = NULL,
  minGroup1MeanExp = NULL,
  maxGroup2MeanExp = NULL,
  minGroup1ExprPerc = NULL,
  maxGroup2ExprPerc = NULL,
  overwrite = FALSE,
  check_sanity = TRUE,
  verbose = TRUE
)

runWilcox(
  inSCE,
  useAssay = "logcounts",
  useReducedDim = NULL,
  index1 = NULL,
  index2 = NULL,
  class = NULL,
  classGroup1 = NULL,
  classGroup2 = NULL,
  analysisName,
  groupName1,
  groupName2,
  covariates = NULL,
  onlyPos = FALSE,
  log2fcThreshold = NULL,
  fdrThreshold = NULL,
  minGroup1MeanExp = NULL,
  maxGroup2MeanExp = NULL,
  minGroup1ExprPerc = NULL,
  maxGroup2ExprPerc = NULL,
  overwrite = FALSE,
  verbose = TRUE
)

Arguments

method

Character. Specify which method to use when using runDEAnalysis(). Choose from "wilcox", "MAST", "DESeq2", "Limma", "ANOVA". Default "wilcox".

...

Arguments to pass to specific methods when using the generic runDEAnalysis().

inSCE

SingleCellExperiment inherited object.

useAssay

character. A string specifying which assay to use for the DE regression. Ignored when useReducedDim is specified. Default "counts" for DESeq2, "logcounts" for other methods.

useReducedDim

character. A string specifying which reducedDim to use for DE analysis. Will treat the dimensions as features. Default NULL.

index1

Any type of indices that can subset a SingleCellExperiment inherited object by cells. Specifies which cells are of interests. Default NULL.

index2

Any type of indices that can subset a SingleCellExperiment inherited object by cells. specifies the control group against those specified by index1. If NULL when using index specification, index1 cells will be compared with all other cells. Default NULL.

class

A vector/factor with ncol(inSCE) elements, or a character scalar that specifies a column name of colData(inSCE). Default NULL.

classGroup1

a vector specifying which "levels" given in class are of interests. Default NULL.

classGroup2

a vector specifying which "levels" given in class is the control group against those specified by classGroup1. If NULL when using annotation specification, classGroup1 cells will be compared with all other cells.

analysisName

A character scalar naming the DEG analysis. Required

groupName1

A character scalar naming the group of interests. Required.

groupName2

A character scalar naming the control group. Required.

covariates

A character vector of additional covariates to use when building the model. All covariates must exist in names(colData(inSCE)). Default NULL.

fullReduced

Logical, DESeq2 only argument. Whether to apply LRT (Likelihood ratio test) with a 'full' model. Default TRUE.

onlyPos

Whether to only output DEG with positive log2_FC value. Default FALSE.

log2fcThreshold

Only out put DEGs with the absolute values of log2FC greater than this value. Default NULL.

fdrThreshold

Only out put DEGs with FDR value less than this value. Default NULL.

minGroup1MeanExp

Only out put DEGs with mean expression in group1 greater then this value. Default NULL.

maxGroup2MeanExp

Only out put DEGs with mean expression in group2 less then this value. Default NULL.

minGroup1ExprPerc

Only out put DEGs expressed in greater then this fraction of cells in group1. Default NULL.

maxGroup2ExprPerc

Only out put DEGs expressed in less then this fraction of cells in group2. Default NULL.

overwrite

A logical scalar. Whether to overwrite result if exists. Default FALSE.

verbose

A logical scalar. Whether to show messages. Default TRUE.

check_sanity

Logical, MAST only argument. Whether to perform MAST's sanity check to see if the counts are logged. Default TRUE.

Value

The input SingleCellExperiment object, where metadata(inSCE)$diffExp is updated with a list named by analysisName, with elements of:

$groupNames

the naming of the two conditions

$useAssay, $useReducedDim

the matrix name that was used for calculation

$select

the cell selection indices (logical) for each condition

$result

a data.frame of the DEGs table

$method

the method used

Details

SCTK provides Limma, MAST, DESeq2, ANOVA and Wilcoxon test for differential expression analysis, where DESeq2 expects non-negtive integer assay input while others expect logcounts.

Condition specification allows two methods: 1. Index level selection. Only use arguments index1 and index2. 2. Annotation level selection. Only use arguments class, classGroup1 and classGroup2.

See also

See plotDEGHeatmap, plotDEGRegression, plotDEGViolin and plotDEGVolcano for visualization method after running DE analysis.

Examples

data(scExample, package = "singleCellTK")
sce <- subsetSCECols(sce, colData = "type != 'EmptyDroplet'")
sce <- scaterlogNormCounts(sce, assayName = "logcounts")
sce <- runDEAnalysis(method = "Limma", inSCE = sce, groupName1 = "group1",
 groupName2 = "group2", index1 = seq(20), index2 = seq(21,40),
 analysisName = "Limma")
#> Sat Mar 18 10:30:32 2023 ... Running DE with limma, Analysis name: Limma