当前位置: 首页 > news >正文

【单细胞高级绘图】10.KEGG富集结果的圆圈图

alt

本次教程的figure仍然是读者求助的图,算得上是kegg富集图的新流派。据我的调查,该图应该是基迪奥云平台首创(https://www.omicshare.com/tools/Home/Soft/enrich_circle),之后公众号小白鱼的生统笔记进行了复现(仿一个网图,使用circlize包绘制圈图可视化基因集富集分析结果)。

最开始也是跟着上述的帖子学习,之后自己对代码进行了改写,重新安排图形的布局,使之(在我看来)更有意义。另一个改动是增加了kegg pathway的注释信息,我在之前的帖子中也提到了如何获取这个信息,没有这个信息是画不了这张图的。最后,将代码模块化,「一行代码」就能出图。

这张图如何解读:

  • 不论是 组间比较还是 cluster之间的比较,在得到某组/某cluster的差异基因后,都能进行KEGG富集分析,选取 20-35个term画图
  • 圆圈 从外向内看, 第1圈是通路编号和分类,具体编号对应什么通路名称可以在代码输出的Excel文件中查询;
  • 第2圈表示这个通路有多少个基因;
  • 第3圈分为深绿和浅绿,二者加和始终是一样的,表示高表达基因的数目,深绿表示其中有多少基因属于这个通路,浅绿是不属于这个通路的基因数目;
  • 第4圈是富集分析的显著性,-log10(p.adjust),有一条 灰色的竖线表示-log10(0.01);
  • 第5圈是富集因子,等于差异基因中落到这个通路的基因数除以这个通路的基因总数(第三圈深绿除以第二圈紫色)

代码演示

library(Seurat)
library(tidyverse)
library(xlsx)

testseu=readRDS("testseu.rds")
Idents(testseu)="anno_new"

### 找差异基因 #########################################################################
marker_celltype=FindAllMarkers(testseu,logfc.threshold = 0.8,only.pos = T)
# 过滤
marker_celltype=marker_celltype%>%filter(p_val_adj < 0.01)
marker_celltype$d=marker_celltype$pct.1-marker_celltype$pct.2
marker_celltype=marker_celltype%>%filter(d > 0.2)
marker_celltype=marker_celltype%>%arrange(cluster,desc(avg_log2FC))
marker_celltype=as.data.frame(marker_celltype)
write.xlsx(marker_celltype,file = "markers_log2fc0.8_padj0.01_pctd0.2.xlsx",row.names = F,col.names = T)

### 富集分析 ###########################################################################
library(clusterProfiler)
library(org.Hs.eg.db)
R.utils::setOption("clusterProfiler.download.method","auto"#https://github.com/YuLab-SMU/clusterProfiler/issues/256

source("syEnrich.R")
syEnrich(marker_celltype,outpath = "markers_log2fc0.8_padj0.01_pctd0.2")

### 挑一类细胞来作为演示 #######################################################
kegg.res=read.xlsx("markers_log2fc0.8_padj0.01_pctd0.2.KEGG.xls",sheetIndex = 1,as.data.frame = T,header = T)
kegg.res=kegg.res%>%filter(p.adjust < 0.05)
kegg.res=kegg.res%>%filter(cluster == "Endothelial")

导入《KEGG通路的从属/注释信息如何获取》这一讲的文件

# 导入《KEGG通路的从属/注释信息如何获取》这一讲的文件
kegg_info=read.xlsx("kegg_info.xlsx",sheetIndex = 1,startRow = 3)
kegg_info=kegg_info[,c("ID","Pathway","big.annotion")]

# 合并两个表格
kegg.res$ID=str_replace(kegg.res$ID,"hsa","")
kegg.res=kegg.res%>%inner_join(kegg_info,by = "ID")

# 画图展示的term控制在20到35个
kegg.res=kegg.res%>%arrange(p.adjust)
kegg.res=head(kegg.res,20)

write.table(kegg.res,file = "kegg.res.txt",quote = F,sep = "\t",row.names = F,col.names = T)
write.xlsx(kegg.res,file = "kegg.res.xlsx",col.names = T,row.names = F)

调用画图函数

### 调用画图函数 ###############################################################
source("kegg_loop.R")
kegg_loop(enrich.res = kegg.res,filename = "Endothelial_kegg")

然后就能得到推文开头那张图了。

获取代码

本文代码「限时公开」24小时内是免费的。超过这个时间如何获取,后台回复2022A可知。

代码和测试数据的网盘链接如下: 链接:https://pan.baidu.com/s/1O1QJN-wvTdYSUhFEmt85vg 提取码:szcj

说点别的

这个系列到今天一共更新了10篇帖子(9篇2022A,1篇2022B),前后4个月的跨度,算是更新很慢的了。一方面,学校的事情越来越多,写博客的时间越来越少;另一方面,这些原创度很高的绘图帖子需要我花很多精力整理总结。

创作不易,觉得代码有用的话,可以给个三/二/一连(文末点赞分享点下小广告)。

相关文章:

  • 怎样在应用中实现自助报表功能?
  • 生成指定位数的随机验证码
  • 线性布局和相对布局
  • 高级数据结构——红黑树
  • Python语言学习:Python语言学习之数据类型/变量/字符串/操作符/转义符的简介、案例应用之详细攻略
  • CentOS下安装及配置MySQL
  • 开发者说论文|人工智能为设备磨损“把脉”:依托飞桨开展的铁谱图像智能故障诊断研究...
  • 学习笔记4--自动驾驶汽车感知系统
  • rpy2: Unable to determine R library path:
  • kali超详细安装CUDA,安装java,安装go, docker
  • 虚拟机双网卡设置(外网+内网)
  • 基于蒲公英优化算法的函数寻优算法
  • Dubbo是如何完成服务导出的?
  • BingSNS多层级分销拓客社群源码(微信端+纯静态PC端)
  • python案例:百钱买鸡
  • JS 中的深拷贝与浅拷贝
  • Java精华积累:初学者都应该搞懂的问题
  • js学习笔记
  • markdown编辑器简评
  • Node + FFmpeg 实现Canvas动画导出视频
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • SpriteKit 技巧之添加背景图片
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 简单实现一个textarea自适应高度
  • 聊聊flink的BlobWriter
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 设计模式走一遍---观察者模式
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ionic入门之数据绑定显示-1
  • 阿里云ACE认证学习知识点梳理
  • 数据可视化之下发图实践
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​queue --- 一个同步的队列类​
  • ​ssh免密码登录设置及问题总结
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #pragma预处理命令
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (分类)KNN算法- 参数调优
  • (转)大型网站架构演变和知识体系
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET Core中的去虚
  • .NET Project Open Day(2011.11.13)
  • .NET学习全景图
  • .Net语言中的StringBuilder:入门到精通
  • /etc/fstab和/etc/mtab的区别
  • :=
  • @Controller和@RestController的区别?
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [100天算法】-x 的平方根(day 61)
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [C++]18:set和map的使用
  • [CISCN2019 华东南赛区]Web4