ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
116 stars 30 forks source link

优雅的可视化细胞群 Marker 基因 #5463

Closed ixxmu closed 2 months ago

ixxmu commented 2 months ago

https://mp.weixin.qq.com/s/8GVl-JFGO6Q92-jh3glK_g

ixxmu commented 2 months ago

优雅的可视化细胞群 Marker 基因 by 单细胞天地


1引言

FindAllMarkers 函数来寻找每个细胞 cluster 的特异性基因,我们可以对每个 cluster 的基因绘制类似于 volcalno 的图。类似于下面这篇 NC 里的展现方式:

参考 生信技能树 的推文 两个不同单细胞亚群差异分析,合并一定要做火山图 。我们可以拓展一下,用这样的图来展示每个细胞类群的 Marker 基因。

2加载所需 R 包

library(Seurat)
library(ggplot2)
library(ggsci)
library(ggrepel)
library(tidyverse)
library(SeuratData)
library(pbmc3k.SeuratData)

3加载内置单细胞测试数据

这是已经处理好的单细胞数据:

# load data
pbmc3k <- LoadData("pbmc3k", type = "pbmc3k.final")
pbmc3k <- UpdateSeuratObject(object = pbmc3k)
pbmc3k

# An object of class Seurat
# 13714 features across 2638 samples within 1 assay
# Active assay: RNA (13714 features, 2000 variable features)
# 2 dimensional reductions calculated: pca, umap

差异分析:

这里 logfc.threshold 设置为 0 :

# find markers
pbmc.markers <- FindAllMarkers(pbmc3k, only.pos = FALSE,
                               min.pct = 0.25,
                               logfc.threshold = 0)
# Calculating cluster Naive CD4 T
#   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s

# cluster markers numbers
table(pbmc.markers$cluster)
# Naive CD4 T Memory CD4 T   CD14+ Mono            B        CD8 T FCGR3A+ Mono
# 617          533          764          540          367         1035
# NK           DC     Platelet
# 579         1060          426

# check
head(pbmc.markers,3)
# p_val avg_log2FC pct.1 pct.2     p_val_adj     cluster  gene
# RPS12 2.008629e-140  0.7256738 1.000 0.991 2.754633e-136 Naive CD4 T RPS12
# RPS27 2.624075e-140  0.7242847 0.999 0.992 3.598656e-136 Naive CD4 T RPS27
# RPS6  1.280169e-138  0.6742630 1.000 0.995 1.755623e-134 Naive CD4 T  RPS6

4绘图

筛选前五和后 5 的基因作为展示:

# top 5 genes
top5pos <- pbmc.markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)
top5negtive <- pbmc.markers %>% group_by(cluster) %>% top_n(n = -5, wt = avg_log2FC)

# merge
top10 <- rbind(top5pos,top5negtive)

绘图:

# plot
ggplot(pbmc.markers,
       aes(x = pct.2 - pct.1,y = avg_log2FC)) +
  geom_point(color = 'grey80') +
  # 添加水平线
  geom_hline(yintercept = c(-0.25,0.25),lty = 'dashed',size = 1,color = 'grey50') +
  # 添加 top5pos 基因标签
  geom_text_repel(data = top5pos,
                   aes(x = pct.2 - pct.1,y = avg_log2FC,
                       label = gene,color = cluster),
                   show.legend = F,direction = 'y',
                  hjust = 1# 右对齐
                  nudge_y = 0.25# 文字竖直方向调整
                  force = 5# 文字重叠调整
                  # 文字靠右竖直对齐
                  nudge_x = 0.8 - (top5pos$pct.2 - top5pos$pct.1)) +
  # 添加 top5negtive 基因标签
  geom_text_repel(data = top5negtive,
                  aes(x = pct.2 - pct.1,y = avg_log2FC,
                      label = gene,color = cluster),
                  show.legend = F,direction = 'y',
                  hjust = 0# 左对齐
                  force = 2.5# 文字重叠调整
                  # 文字靠左竖直对齐
                  nudge_x = -0.8 - (top5negtive$pct.2 - top5negtive$pct.1)) +
  # top10 点颜色
  geom_point(data = top10,show.legend = F,
             aes(x = pct.2 - pct.1,y = avg_log2FC,color = cluster)) +
  scale_color_npg(name = '') +
  # x y breaks label
  scale_y_continuous(limits = c(-6,10),breaks = seq(-6,10,2)) +
  scale_x_continuous(limits = c(-1,1),breaks = seq(-1,1,0.5)) +
  theme_bw(base_size = 14) +
  # 主题调整
  theme(panel.grid = element_blank(),
        axis.text.x = element_text(angle = 45,hjust = 1),
        strip.background = element_rect(color = NA,fill = 'grey90')) +
  # 轴标签
  xlab(expression(Delta~'Percentage Diffrence')) +
  ylab('Log2-Fold Change') +
  # 分面
  facet_wrap(~cluster,nrow = 1,scales = 'fixed')

5结尾

上图的横坐标是两个组基因占细胞百分比的差值。下面是文章的图例:



往期回顾

单细胞集大成者的seurat包的可视化本质上是ggplot2语法

各个单细胞亚群的差异基因数量投射到umap图

各个单细胞亚群独立在两个分组做差异分析

Science: 微生物单细胞、高通量、菌株分辨率,我全都要!| 深度长文






如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程



看完记得顺手点个“在看”哦!


生物 | 单细胞 | 转录组丨资料
每天都精彩

长按扫码可关注