## ----echo = FALSE------------------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>", results = "hold") ## ----bioc_install, eval=FALSE------------------------------------------------- # if (!requireNamespace("BiocManager", quietly = TRUE)) { # install.packages("BiocManager") # } # # BiocManager::install("APL") ## ----git_install, eval=FALSE-------------------------------------------------- # library(devtools) # install_github("VingronLab/APL") ## ----git_vignette, eval=FALSE------------------------------------------------- # install_github("VingronLab/APL", build_vignettes = TRUE, dependencies = TRUE) ## ----setup, message=FALSE, warning=FALSE-------------------------------------- library(APL) library(scRNAseq) library(SingleCellExperiment) library(scran) library(scater) set.seed(1234) ## ----load_data---------------------------------------------------------------- darmanis <- DarmanisBrainData() darmanis ## ----preprocess--------------------------------------------------------------- set.seed(100) clust <- quickCluster(darmanis) darmanis <- computeSumFactors(darmanis, cluster = clust, min.mean = 0.1) darmanis <- logNormCounts(darmanis) dec <- modelGeneVar(darmanis) top_darmanis <- getTopHVGs(dec, n = 5000) darmanis <- fixedPCA(darmanis, subset.row = top_darmanis) darmanis <- runUMAP(darmanis, dimred = "PCA") plotReducedDim(darmanis, dimred = "UMAP", colour_by = "cell.type") ## ----runAPL------------------------------------------------------------------- runAPL( darmanis, assay = "logcounts", top = 5000, group = which(darmanis$cell.type == "oligodendrocytes"), type = "ggplot" ) ## ----cacomp------------------------------------------------------------------- # Computing CA on logcounts logcounts <- logcounts(darmanis) ca <- cacomp( obj = logcounts, top = 5000 ) # The above is equivalent to: # ca <- cacomp(obj = darmanis, # assay = "logcounts", # top = 5000) ## ----print_cacomp------------------------------------------------------------- ca ## ----std_coords--------------------------------------------------------------- cacomp_slot(ca, "std_coords_cols")[1:5, 1:5] ## ----ca_pbmc------------------------------------------------------------------ darmanis <- cacomp( obj = darmanis, assay = "logcounts", top = 5000, return_input = TRUE ) plotReducedDim(darmanis, dimred = "CA", ncomponents = c(1, 2), colour_by = "cell.type" ) plotReducedDim(darmanis, dimred = "CA", ncomponents = c(3, 4), colour_by = "cell.type" ) ## ----convert------------------------------------------------------------------ # Converting the object darmanis to cacomp ca <- as.cacomp(darmanis) ## ----scree_plot--------------------------------------------------------------- pick_dims(ca, method = "scree_plot") + xlim(c(0, 20)) ## ----pick_dims, results = "hide"---------------------------------------------- pd <- pick_dims( ca, mat = logcounts(darmanis), method = "elbow_rule", reps = 3 ) ## ----show_dims, message=FALSE------------------------------------------------- pd ## ----expl_inert--------------------------------------------------------------- # Compute the amount of inertia explained by each of the dimensions D <- cacomp_slot(ca, "D") expl_inertia <- (D^2 / sum(D^2)) * 100 # Compute the amount of intertia explained # by the number of dimensions defined by elbow rule sum(expl_inertia[seq_len(pd)]) ## ----subset_dims-------------------------------------------------------------- ca <- subset_dims(ca, dims = pd) ## ----apl_platelets------------------------------------------------------------ # Specifying a cell cluster of interest endo <- which(darmanis$cell.type == "endothelial") # Calculate Association Plot coordinates for endothelial cells ca <- apl_coords(ca, group = endo) ## ----apl_platelets_plot, fig.wide = TRUE-------------------------------------- # endothelial marker genes marker_genes <- c("APOLD1", "TM4SF1", "SULT1B1", "ESM1", "SELE") # Plot APL apl(ca, row_labs = TRUE, rows_idx = marker_genes, type = "ggplot" ) # type = "plotly" for an interactive plot ## ----apl_score, results = "hide"---------------------------------------------- # Compute S-alpha score # For the calculation the input matrix is also required. ca <- apl_score(ca, mat = logcounts(darmanis), reps = 5 ) ## ----apl_plot_platelets, fig.wide = TRUE-------------------------------------- apl(ca, show_score = TRUE, type = "ggplot" ) ## ----print_score-------------------------------------------------------------- head(cacomp_slot(ca, "APL_score")) ## ----seurat_apl, fig.wide = TRUE---------------------------------------------- scores <- cacomp_slot(ca, "APL_score") plotExpression(darmanis, features = head(scores$Rowname, 3), x = "cell.type", colour_by = "cell.type" ) plotReducedDim(darmanis, dimred = "UMAP", colour_by = scores$Rowname[1] ) ## ----biplot, fig.wide = TRUE-------------------------------------------------- # Specifying a cell cluster of interest endo <- which(darmanis$cell.type == "endothelial") # Creating a static plot ca_biplot(ca, col_labels = endo, type = "ggplot") # Creating an interactive plot # ca_biplot(ca, type = "plotly", col_labels = platelets) # 3D plot # ca_3Dplot(ca, col_labels = platelets) ## ----cluster_three, results="hide"-------------------------------------------- # Get indices of microglia cells microglia <- which(darmanis$cell.type == "microglia") # Calculate Association Plot coordinates of the genes and the $S_\alpha$-scores ca <- apl_coords(ca, group = microglia) ca <- apl_score(ca, mat = logcounts(darmanis), reps = 5 ) ## ----topGO, message=FALSE----------------------------------------------------- enr <- apl_topGO(ca, ontology = "BP", organism = "hs", score_cutoff = 1 ) head(enr) ## ----topGO_plot, message=FALSE------------------------------------------------ plot_enrichment(enr) ## ----sessionInfo, echo=FALSE-------------------------------------------------- sessionInfo()