前言
不知道大家在分析单细胞数据时有没有想过一步将所有功能通路全部筛选一遍,从而筛选出有差异的一些通路进行更深入的解读。事实上,虽然这样做看似很简单,但是目前仍然没有成熟的分析软件可以实现,今天Immugent就来介绍如何通过SCPA来对某种疾病状态下所有通路的改变情况进行评估。
代码实操
下面实操使用的是两篇已经发表的COVID的单细胞数据,系统评估人类在感染新冠之后功能通路的改变。
library(SCPA)
library(Seurat)
library(tidyverse)
library(ComplexHeatmap)
library(circlize)
library(magrittr)
blood_atlas <- readRDS("covid_blood_atlas.rds")
Idents(blood_atlas) <- blood_atlas$cell.type
DimPlot(blood_atlas, label = T, group.by = "cell.type.fine", split.by = "Status") +
theme(aspect.ratio = 1)
下面使用目前已有的所有主流功能通路基因集(h_k_r_go_pid_reg_wik.csv)进行分析。
idents <- c("Class-switched B", "IgG PB", "IgA PB", "CD14 Monocyte", "CD8m T",
"CD4m T", "CD4n T", "B", "NK", "Neutrophil", "CD16 Monocyte", "gd T",
"pDC", "SC & Eosinophil", "DC")
blood_atlas <- subset(blood_atlas, idents = idents)
pathways <- "h_k_r_go_pid_reg_wik.csv"
cell_types <- unique(blood_atlas$cell.type.fine)
blood_atlas <- SplitObject(blood_atlas, split.by = "Status")
scpa_out <- list()
for (i in cell_types) {
healthy <- seurat_extract(blood_atlas$Healthy,
meta1 = "cell.type.fine", value_meta1 = i)
covid <- seurat_extract(blood_atlas$COVID,
meta1 = "cell.type.fine", value_meta1 = i)
print(paste("comparing", i))
scpa_out[[i]] <- compare_pathways(list(healthy, covid), pathways) %>%
select(Pathway, qval) %>%
set_colnames(c("Pathway", paste(i, "qval", sep = "_")))
}
下面是全局展示所有差异分析结果,也可以通过热图和点图,突出展示某一条关注的功能通路的改变。
Heatmap(scpa_out,
col = col_hm,
name = "Qval",
show_row_names = F,
right_annotation = row_an,
column_names_gp = gpar(fontsize = 8),
border = T,
column_km = 3,
row_km = 3,
column_labels = c("CS B", "IgG B", "IgA B", "CD14 Mono", "mCD8 T", "mCD4 T",
"nCD4 T", "B", "NK", "Neut", "CD16 Mono", "gdT", "pDC", "Eosin", "DC"))
也可以换几种可视化方式。。。
# if you want all pathways that contain "MYC"...
p1 <- plot_rank(scpa_out, "myc",
highlight_point_size = 3.5, highlight_point_color = "#60c5f7")
# or if you want a specific myc pathway...
p2 <- plot_rank(scpa_out, "HALLMARK_MYC_TARGETS_V1",
highlight_point_size = 3.5, highlight_point_color = "#fa815c")
patchwork::wrap_plots(p1, p2)
plot_heatmap(scpa_out,
highlight_pathways = "myc",
column_names = "Th1 vs Tcm",
show_row_names = F)
# here we'll just duplicate the qval column for the purpose of this example
scpa_out %>%
mutate(another_qval = qval) %>%
plot_heatmap(highlight_pathways = "myc",
hm_colors = c("#5ab0f2", "white", "#be67c9"),
column_names = c("First qval", "Second qval"),
cluster_columns = F,
show_row_names = F)
说在最后
总体来说,使用SCPA对所有功能通路进行差异筛选是十分方便的,只需要一步就能实现,而且可以通过比较两种状态下每一类细胞所有功能通路的改变。通过对细胞进行聚类,从而找出某一种或者某几种对疾病发生发展至关重要的的细胞类型,同时还可以对相应的功能通路进行聚类,找出这些细胞通过哪一些功能的改变影响了疾病的发生发展。
好啦,本期分享到此就结束了,我们下期再会~~
网友评论