## ----eval=FALSE---------------------------------------------------------------
# githubURL <- "https://github.com/XiaoZhangryy/CAESAR.Suite/blob/master/vignettes_data/MOB_ST.rda?raw=true"
# MOB_ST_file <- file.path(tempdir(), "MOB_ST.rda")
# download.file(githubURL, MOB_ST_file, mode='wb')
# load(MOB_ST_file)
# 
# print(MOB_ST)
# 
# githubURL <- "https://github.com/XiaoZhangryy/CAESAR.Suite/blob/master/vignettes_data/MOB_scRNA.rda?raw=true"
# MOB_scRNA_file <- file.path(tempdir(), "MOB_scRNA.rda")
# download.file(githubURL, MOB_scRNA_file, mode='wb')
# load(MOB_scRNA_file)
# 
# print(MOB_scRNA)

## -----------------------------------------------------------------------------
set.seed(1) # set a random seed for reproducibility.
library(CAESAR.Suite) # load the package of CAESAR method
library(Seurat)
library(ggplot2)

## ----eval=FALSE---------------------------------------------------------------
# MOB_ST <- CreateSeuratObject(
#     counts = MOB_ST@assays$RNA@counts,
#     meta.data = MOB_ST@meta.data,
#     min.features = 5,
#     min.cells = 1
# )
# 
# print(MOB_ST)
# 
# MOB_scRNA <- CreateSeuratObject(
#     counts = MOB_scRNA@assays$RNA@counts,
#     meta.data = MOB_scRNA@meta.data,
#     min.features = 5,
#     min.cells = 1
# )
# 
# print(MOB_scRNA)

## ----eval=FALSE---------------------------------------------------------------
# # match genes
# common_genes <- intersect(rownames(MOB_ST), rownames(MOB_scRNA))
# MOB_ST <- MOB_ST[common_genes, ]
# MOB_scRNA <- MOB_scRNA[common_genes, ]
# 
# print(length(common_genes))
# 
# MOB_ST <- NormalizeData(MOB_ST)
# MOB_ST <- FindVariableFeatures(MOB_ST, nfeatures = 2000)
# 
# MOB_scRNA <- NormalizeData(MOB_scRNA)
# MOB_scRNA <- FindVariableFeatures(MOB_scRNA, nfeatures = 2000)
# 
# common_vgs <- intersect(VariableFeatures(MOB_ST), VariableFeatures(MOB_scRNA))
# VariableFeatures(MOB_ST) <- common_vgs
# VariableFeatures(MOB_scRNA) <- common_vgs
# 
# print(length(common_vgs))

## ----eval=FALSE---------------------------------------------------------------
# MOB_scRNA <- CAESAR.coembedding(MOB_scRNA, q = 50)

## ----eval=FALSE---------------------------------------------------------------
# # calculate cell-gene distance and identify signature genes
# print(table(MOB_scRNA$CellType))
# 
# Idents(MOB_scRNA) <- MOB_scRNA$CellType
# sg_sc_List <- find.sig.genes(MOB_scRNA, reduction.name = "caesar")
# 
# str(sg_sc_List)

## ----eval=FALSE---------------------------------------------------------------
# marker <- marker.select(sg_sc_List, overlap.max = 1)
# print(marker)

## ----eval=FALSE---------------------------------------------------------------
# # the spatial coordinates
# pos <- MOB_ST@meta.data[, c("x", "y")]
# print(head(pos))
# 
# MOB_ST <- CAESAR.coembedding(MOB_ST, pos, reduction.name = "caesar", q = 50)
# print(MOB_ST)

## ----eval=FALSE---------------------------------------------------------------
# # convert marker list to marker frequency matrix
# marker.freq <- markerList2mat(list(marker))
# 
# # perform annotation using CAESAR and save results to Seurat object
# print(colnames(MOB_ST@meta.data))
# 
# MOB_ST <- CAESAR.annotation(MOB_ST, marker.freq, reduction.name = "caesar", add.to.meta = TRUE)
# print(colnames(MOB_ST@meta.data))

## ----eval=FALSE---------------------------------------------------------------
# # set up colors
# cols_manual <- setNames(
#     c(
#         "#4374A5", "#FCDDDE", "#2AB67F", "#F08A21", "#737373"
#     ),
#     c(
#         "GCL", "MCL", "ONL", "GL", "Unknown"
#     )
# )
# 
# celltypes_manual <- c("GCL", "MCL", "ONL", "GL", "Unknown")
# 
# cols <- setNames(
#     c(
#         "#4374A5", "#FCDDDE", "#2AB673", "#F08A21", "#E04D50", "#737373"
#     ),
#     c(
#         "GC", "M/TC", "OSNs", "PGC", "EPL-IN", "unassigned"
#     )
# )
# 
# celltypes <- c("GC", "M/TC", "OSNs", "PGC", "EPL-IN", "unassigned")
# 
# colnames(pos) <- paste0("pos", 1:2)
# MOB_ST@reductions[["pos"]] <- CreateDimReducObject(
#     embeddings = as.matrix(pos),
#     key = paste0("pos", "_"), assay = "RNA"
# )

## ----fig.width=8.8, fig.height=6, eval=FALSE----------------------------------
# Idents(MOB_ST) <- factor(MOB_ST$manual_annotation, levels = celltypes_manual)
# DimPlot(MOB_ST, reduction = "pos", cols = cols_manual, pt.size = 8)

## ----fig.width=8.8, fig.height=6, eval=FALSE----------------------------------
# Idents(MOB_ST) <- factor(MOB_ST$CAESAR, levels = celltypes)
# DimPlot(MOB_ST, reduction = "pos", cols = cols, pt.size = 8)

## ----fig.width=8.8, fig.height=6, eval=FALSE----------------------------------
# Idents(MOB_ST) <- factor(MOB_ST$CAESARunasg, levels = celltypes)
# DimPlot(MOB_ST, reduction = "pos", cols = cols, pt.size = 8)

## ----fig.width=8.8, fig.height=6, eval=FALSE----------------------------------
# FeaturePlot(
#     MOB_ST,
#     reduction = "pos", features = "CAESARconf", pt.size = 8,
#     cols = c("blue", "lightgrey"), min.cutoff = 0.0, max.cutoff = 1.0
# )

## ----fig.width=8.8, fig.height=9, eval=FALSE----------------------------------
# caesar_prob <- colnames(MOB_ST@meta.data)[15:19]
# print(caesar_prob)
# 
# plots <- lapply(caesar_prob, function(feature) {
#     FeaturePlot(MOB_ST, features = feature, reduction = "pos", pt.size = 3.5) +
#         scale_color_gradientn(
#             colors = c("#f6eff7", "#feebe2", "#f768a1", "#7a0177", "#6e016b"),
#             values = scales::rescale(c(0.0, 0.125, 0.25, 0.375, 0.50)),
#             limits = c(0.0, 0.50)
#         ) + labs(title = feature)
# })
# 
# cowplot::plot_grid(plotlist = plots, ncol = 2)

## ----eval=FALSE---------------------------------------------------------------
# acc_st <- function(manual_annotation, pred) {
#     manual_annotation <- as.character(manual_annotation)
#     pred <- as.character(pred)
#     manual_annotation[manual_annotation == "GCL"] <- "GC"
#     manual_annotation[manual_annotation == "MCL"] <- "M/TC"
#     manual_annotation[manual_annotation == "ONL"] <- "OSNs"
#     manual_annotation[manual_annotation == "GL"] <- "PGC"
#     return(mean(manual_annotation == pred))
# }
# 
# print(paste0(
#     "The ACC of CAESAR annotation is ",
#     acc_st(MOB_ST$manual_annotation, MOB_ST$CAESARunasg)
# ))

## ----eval=FALSE---------------------------------------------------------------
# Idents(MOB_ST) <- factor(MOB_ST$CAESARunasg, celltypes)
# sg_List <- find.sig.genes(MOB_ST)
# 
# str(sg_List)

## ----fig.width=8.8, fig.height=5, eval=FALSE----------------------------------
# # obtain the top three signature genes
# celltypes_plot <- setdiff(names(sg_List), "unassigned")
# top3sgs <- Intsg(list(sg_List), 3)[celltypes_plot]
# print(top3sgs)
# 
# sg_features <- unname(unlist(top3sgs))
# 
# DotPlot(
#     MOB_ST,
#     idents = celltypes_plot, col.min = -1, col.max = 2, dot.scale = 7,
#     features = sg_features, scale.min = 0, scale.max = 30
# ) + theme(axis.text.x = element_text(face = "italic", angle = 45, vjust = 1, hjust = 1))

## ----fig.width=8.8, fig.height=6, eval=FALSE----------------------------------
# # calculate coumap
# MOB_ST <- CoUMAP(
#     MOB_ST, reduction = "caesar", reduction.name = "caesarUMAP",
#     gene.set = sg_features
# )
# 
# df_gene_label <- data.frame(
#     gene = unlist(top3sgs),
#     label = rep(names(top3sgs), each = 3)
# )
# 
# CoUMAP.plot(
#     MOB_ST, reduction = "caesarUMAP", gene_txtdata = df_gene_label,
#     cols = c("gene" = "#000000", cols)
# )

## -----------------------------------------------------------------------------
sessionInfo()

