查看原文
其他

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

JunJunLab 老俊俊的生信笔记 2022-08-17




祝学子金榜题名


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.1 - pct.2,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.1 - pct.2,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.1 - pct.2,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结尾

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






  老俊俊生信交流群 (微信交流群满200人后需收取20元入群费用)QQ,


老俊俊微信:


知识星球:



今天的分享就到这里了,敬请期待下一篇!

最后欢迎大家分享转发,您的点赞是对我的鼓励肯定

如果觉得对您帮助很大,赏杯快乐水喝喝吧!



  





GENES & DEVELOPMENT 单细胞结果复现

加速你的单细胞数据分析

Cell 教我学画图之累积分布曲线

Molecular Cell 文章 ribosome pausing 结果复现 (终)

Molecular Cell 文章 ribosome pausing 结果复现 (四)

Molecular Cell 文章 ribosome pausing 结果复现 (三)

Molecular Cell 文章 ribosome pausing 结果复现 (二) (PCR 去重)

Molecular Cell 文章 ribosome pausing 结果复现 (一)

SAM 文件 flag 研究 (续)

将 UMI 添加到 read 名称里并去除 UMI 序列

◀...

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存