背景
开始monocle3案例数据学习。
文档:https://cole-trapnell-lab.github.io/monocle3/docs/clustering/
一、读入数据
代码语言:javascript复制#1 读入数据
expression_matrix <- readRDS("monocle3/celegans/cao_l2_expression.rds")
cell_metadata <- readRDS("monocle3/celegans/cao_l2_colData.rds")
gene_annotation <- readRDS("monocle3/celegans/cao_l2_rowData.rds")
# Make the CDS object
cds <- new_cell_data_set(expression_matrix,
cell_metadata = cell_metadata,
gene_metadata = gene_annotation)
二、数据处理
数据处理包括表达数据标准化和批次效应的去除,对数据进行标准化使用 preprocess_cds函数,相当于 seurat 中 NormalizeData ScaleData RunPCA。
代码语言:javascript复制cds <- preprocess_cds(cds, num_dim = 100)
num_dim 是降维的维数,默认为 100,这里是根据各组成部分解释的差异散点趋势图,也可以自己调整,建议安装默认维数进行降维。
代码语言:javascript复制plot_pc_variance_explained(cds)
monocle3 数据处理
三、降维以及可视化
3.1 UMAP 方法
代码语言:javascript复制cds <- reduce_dimension(cds)
plot_cells(cds)
plot_cells(cds, color_cells_by="cao_cell_type")
#绘制特定基因在细胞中表达
plot_cells(cds, genes=c("cpna-2", "egl-21", "ram-2", "inos-1"))
代码语言:javascript复制#可以使用多线程,前面读取好cds数据重新preprocess
cds <- preprocess_cds(cds, num_dim = 100)
cds <- reduce_dimension(cds, cores = 12)
plot_cells(cds, color_cells_by="cao_cell_type")
#和单线程的结果看起来差别不大,但是提醒是有差别的。
3.2 tSNE 方法
代码语言:javascript复制cds <- reduce_dimension(cds, reduction_method="tSNE")
plot_cells(cds, reduction_method="tSNE", color_cells_by="cao_cell_type", group_label_size=3.5,cell_size = 0.8)
3.3 去除批次效应
代码语言:javascript复制plot_cells(cds, color_cells_by="plate", label_cell_groups=FALSE)
cds <- align_cds(cds, num_dim = 100, alignment_group = "plate")
cds <- reduce_dimension(cds)
plot_cells(cds, color_cells_by="plate", label_cell_groups=FALSE)
3.4 细胞聚类
代码语言:javascript复制cds <- cluster_cells(cds, resolution=1e-5)
plot_cells(cds)
代码语言:javascript复制#使用PAGA算法进行聚类
plot_cells(cds, color_cells_by="partition", group_cells_by="partition")
#根据细胞类型进行涂色
plot_cells(cds, color_cells_by="cao_cell_type")
#更改细胞标注策略,不对聚类的进行标注。
plot_cells(cds, color_cells_by="cao_cell_type", label_groups_by_cluster=FALSE)
四、 寻找 marker 基因
代码语言:javascript复制#寻找每个cluster的marker基因
marker_test_res <- top_markers(cds, group_cells_by="partition",
reference_cells=1000, cores=8)
#根据pseudo_R2方法对标记基因进行排序,取出每个cluster排名最高的基因
library(dplyr)
top_specific_markers <- marker_test_res %>% filter(fraction_expressing >= 0.10) %>% group_by(cell_group) %>% top_n(1, pseudo_R2)
top_specific_marker_ids <- unique(top_specific_markers %>% pull(gene_id))
#绘制每个cluster中不同marker基因的表达量
plot_genes_by_group(cds, top_specific_marker_ids, group_cells_by="partition",
ordering_type="maximal_on_diag",max.size=3)
#选取更多marker基因进行绘图
top_specific_markers <- marker_test_res %>% filter(fraction_expressing >= 0.10) %>% group_by(cell_group) %>% top_n(3, pseudo_R2)
top_specific_marker_ids <- unique(top_specific_markers %>% pull(gene_id))
plot_genes_by_group(cds,top_specific_marker_ids,group_cells_by="partition", ordering_type="cluster_row_col", max.size=3)
五、 对细胞进行注释
代码语言:javascript复制#根据marker基因对细胞进行鉴定。
colData(cds)$assigned_cell_type <- as.character(partitions(cds))
#为每个cluster重新命名。
colData(cds)$assigned_cell_type <- dplyr::recode(colData(cds)$assigned_cell_type,
"1"="Body wall muscle",
"2"="Germline",
"3"="Motor neurons",
"4"="Seam cells",
"5"="Sex myoblasts",
"6"="Socket cells",
"7"="Marginal_cell",
"8"="Coelomocyte",
"9"="Am/PH sheath cells",
"10"="Ciliated neurons",
"11"="Intestinal/rectal muscle",
"12"="Excretory gland",
"13"="Chemosensory neurons",
"14"="Interneurons",
"15"="Unclassified eurons",
"16"="Ciliated neurons",
"17"="Pharyngeal gland cells",
"18"="Unclassified neurons",
"19"="Chemosensory neurons",
"20"="Ciliated neurons",
"21"="Ciliated neurons",
"22"="Inner labial neuron",
"23"="Ciliated neurons",
"24"="Ciliated neurons",
"25"="Ciliated neurons",
"26"="Hypodermal cells",
"27"="Mesodermal cells",
"28"="Motor neurons",
"29"="Pharyngeal gland cells",
"30"="Ciliated neurons",
"31"="Excretory cells",
"32"="Amphid neuron",
"33"="Pharyngeal muscle")
#重新绘图
plot_cells(cds, group_cells_by="partition", color_cells_by="assigned_cell_type")
每个 cluster 重新命名之后进行绘图
写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。原地址暂未启用(bioinfoer.com)。
代码语言:javascript复制sx.voiceclouds.cn
有些板块也可以预设为大家日常趣事的分享等,欢迎大家来提建议。