tests/testthat/test.markerDiffTable.R

library(monocle)
library(HSMMSingleCell)
context("markerDiffTable is functioning properly")

data(HSMM_expr_matrix)
data(HSMM_gene_annotation)
data(HSMM_sample_sheet)

pd <- new("AnnotatedDataFrame", data = HSMM_sample_sheet)
fd <- new("AnnotatedDataFrame", data = HSMM_gene_annotation)

# First create a CellDataSet from the relative expression levels
HSMM <- newCellDataSet(as.matrix(HSMM_expr_matrix),   
                       phenoData = pd, 
                       featureData = fd,
                       lowerDetectionLimit=0.1,
                       expressionFamily=tobit(Lower=0.1))

# Next, use it to estimate RNA counts
rpc_matrix <- relative2abs(HSMM, method = "num_genes")

# Now, make a new CellDataSet using the RNA counts
HSMM <- newCellDataSet(as(as.matrix(rpc_matrix), "sparseMatrix"),
                       phenoData = pd, 
                       featureData = fd,
                       lowerDetectionLimit=0.5,
                       expressionFamily=negbinomial.size())

HSMM <- estimateSizeFactors(HSMM)
HSMM <- estimateDispersions(HSMM)

HSMM <- detectGenes(HSMM, min_expr = 0.1)
expressed_genes <- row.names(subset(fData(HSMM), num_cells_expressed >= 10))

pData(HSMM)$Total_mRNAs <- Matrix::colSums(exprs(HSMM))

HSMM <- HSMM[,pData(HSMM)$Total_mRNAs < 1e6]

HSMM <- detectGenes(HSMM, min_expr = 0.1)

# Log-transform each value in the expression matrix.
L <- log(exprs(HSMM[expressed_genes,]))

# Standardize each gene, so that they are all on the same scale,
# Then melt the data with plyr so we can plot it easily
melted_dens_df <- melt(Matrix::t(scale(Matrix::t(L))))

# Plot the distribution of the standardized gene expression values.
qplot(value, geom = "density", data = melted_dens_df) +
  stat_function(fun = dnorm, size = 0.5, color = 'red') +
  xlab("Standardized log(FPKM)") +
  ylab("Density")

MYF5_id <- row.names(subset(fData(HSMM), gene_short_name == "MYF5"))
ANPEP_id <- row.names(subset(fData(HSMM), gene_short_name == "ANPEP"))

cth <- newCellTypeHierarchy()
cth <- addCellType(cth, "Myoblast", classify_func = function(x) { x[MYF5_id,] >= 1 })
cth <- addCellType(cth, "Fibroblast", classify_func = function(x)
{ x[MYF5_id,] < 1 & x[ANPEP_id,] > 1 })

HSMM <- classifyCells(HSMM, cth, 0.1)

test_that("markerDiffTable works properly in vignette", 
          expect_error(markerDiffTable(HSMM[expressed_genes,],
                                       cth,
                                       residualModelFormulaStr = "~Media + num_genes_expressed",
                                       cores = 1), NA))

test_that("markerDiffTable works when 'balanced set to true'", 
          expect_error(markerDiffTable(HSMM[expressed_genes,],
                                       cth,
                                       balanced = TRUE,
                                       residualModelFormulaStr = "~Media + num_genes_expressed",
                                       cores = 1), NA))

test_that("markerDiffTable works when 'verbose set to true'", 
          expect_error(markerDiffTable(HSMM[expressed_genes,],
                                       cth,
                                       verbose = TRUE,
                                       residualModelFormulaStr = "~Media + num_genes_expressed",
                                       cores = 1), NA))

test_that("markerDiffTable throws error if cds is not of type 'CellDataSet'", 
          expect_error(markerDiffTable(cth,
                                       cth,
                                       balanced = TRUE,
                                       residualModelFormulaStr = "~Media + num_genes_expressed",
                                       cores = 1), "Error cds is not of type 'CellDataSet'"))

test_that("markerDiffTable throws error if cds is not of type 'CellDataSet'", 
          expect_error(markerDiffTable(HSMM[expressed_genes,],
                                       HSMM[expressed_genes],
                                       balanced = TRUE,
                                       residualModelFormulaStr = "~Media + num_genes_expressed",
                                       cores = 1), "Error cth is not of type 'CellTypeHierarchy'"))

Try the monocle package in your browser

Any scripts or data that you put into this service are public.

monocle documentation built on Nov. 8, 2020, 5:06 p.m.