forked from duty-machine/duty-machine
-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
15 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
--- | ||
title: "一种很新的功能富集结果展示方法" | ||
date: 2025-01-16T10:46:29Z | ||
draft: ["false"] | ||
tags: [ | ||
"fetched", | ||
"生信技能树" | ||
] | ||
categories: ["Acdemic"] | ||
--- | ||
一种很新的功能富集结果展示方法 by 生信技能树 | ||
------ | ||
<div><section data-tool="mdnice编辑器" data-website="https://www.mdnice.com"><blockquote data-tool="mdnice编辑器"><p>在我们新专辑<strong>《绘图小技巧2025》</strong>中,已经给大家介绍过一个高颜值两组间差异FC值比较散点图:<a href="https://mp.weixin.qq.com/s?__biz=MzAxMDkxODM1Ng==&mid=2247536875&idx=1&sn=7e42be92f977c2a134f529e82b895ac9&scene=21#wechat_redirect" data-linktype="2">顶刊 Science 文献两分组差异结果比较图复现</a>。今天我们继续来学习绘制其中另一幅的功能富集结果展示图,是一种很新的展示方法哦,且颜值高:</p></blockquote><h4 data-tool="mdnice编辑器"><span></span>含义:三组 KRAS signatures 基因做 Reactome 数据库的功能富集,并挑选 top10进行展示。<span></span></h4><figure data-tool="mdnice编辑器"><img data-imgfileid="100053387" data-ratio="0.21340887629839472" data-src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiaV3RbTbZDiaPaTYAd13bMu3Zx8akUdab5jPj3wYIBsIYGBrATn0GlbHA/640?wx_fmt=png&from=appmsg" data-type="png" data-w="1059" src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiaV3RbTbZDiaPaTYAd13bMu3Zx8akUdab5jPj3wYIBsIYGBrATn0GlbHA/640?wx_fmt=png&from=appmsg"></figure><p data-tool="mdnice编辑器"><strong>图注:</strong>Fig. 4. KRAS-ERK–dependent genes are essential for cell proliferation in PDAC. (A) Overrepresentation analysis for Reactome terms in three KRAS signatures: PDAC KRAS-ERK UP, PDAC KRASi UP, and PDAC iKras UP. The top 10 terms are shown.</p><h2 data-tool="mdnice编辑器"><span></span><span>数据准备</span></h2><h3 data-tool="mdnice编辑器"><span></span><span></span><span>1、Reactome 数据库通路</span><span></span></h3><p data-tool="mdnice编辑器">Reactome 数据库:是一个免费、开源、数据经过手动筛选和同行评审的生物分子通路知识数据库。数据库链接:https://reactome.org/。</p><p data-tool="mdnice编辑器">我们在 GSEA 的 MSigDB 数据库去下载 gmt 格式:https://www.gsea-msigdb.org/gsea/msigdb/human/collections.jsp#C2</p><figure data-tool="mdnice编辑器"><img data-imgfileid="100053384" data-ratio="0.13221601489757914" data-src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiaGE1tkIWiauzJs2WspA6NcUibRHAEXNhkCibcxKpkUtU3XWoH1gqaBXJ2g/640?wx_fmt=png&from=appmsg" data-type="png" data-w="1074" src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiaGE1tkIWiauzJs2WspA6NcUibRHAEXNhkCibcxKpkUtU3XWoH1gqaBXJ2g/640?wx_fmt=png&from=appmsg"></figure><h3 data-tool="mdnice编辑器"><span></span><span></span><span>2、三组 KRAS signatures 基因</span><span></span></h3><p data-tool="mdnice编辑器">这个数据在文章的附件:<strong>science.adk0775_data_s4.xlsx </strong>中</p><figure data-tool="mdnice编辑器"><img data-imgfileid="100053383" data-ratio="0.5051903114186851" data-src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiavpJ4X9Q2RXMguw09tfB07d1JS6RzA20QaflialIbqQGNZibW8nMQqvUw/640?wx_fmt=png&from=appmsg" data-type="png" data-w="578" src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiavpJ4X9Q2RXMguw09tfB07d1JS6RzA20QaflialIbqQGNZibW8nMQqvUw/640?wx_fmt=png&from=appmsg"></figure><h2 data-tool="mdnice编辑器"><span></span><span>开始绘图</span></h2><p data-tool="mdnice编辑器">这里依然是使用 ggplot2 进行绘制,ggplot2拥有强大的绘图系统。</p><h3 data-tool="mdnice编辑器"><span></span><span></span><span>1、读取数据</span><span></span></h3><p data-tool="mdnice编辑器">先看图中的最左边那个 signature:PDAC KRAS-ERK UP</p><pre data-tool="mdnice编辑器"><code><span>###</span><br><span>### Create: juan zhang</span><br><span>### Date: 2025-01-16</span><br><span>### Email: [email protected]</span><br><span>### Blog: http://www.bio-info-trainee.com/</span><br><span>### Forum: http://www.biotrainee.com/thread-1376-1-1.html</span><br><span>### Update Log: 2025-01-16 First version </span><br><span>### </span><br><br>rm(list=ls())<br>library(ggplot2)<br>library(clusterProfiler)<br>library(org.Hs.eg.db)<br>library(GSEABase)<br>library(tidyverse)<br><br><span># three KRAS signatures: </span><br><span># 1.PDAC KRAS-ERK UP</span><br><span># 2.PDAC KRASi UP </span><br><span># 3.PDAC iKras UP</span><br><br><span># 首先是 Reactome pathways 功能富集</span><br><span># 1.PDAC KRAS-ERK UP: 表格 PDAC_siKRAS_ERKi_UP</span><br>sig1 <- readxl::read_xlsx(<span>"data/science.adk0775_data_s4.xlsx"</span>, sheet = <span>"PDAC_siKRAS_ERKi_UP"</span>)<br>head(sig1)<br>gene <- na.omit(sig1<span>$external_gene_name</span>)<br>head(gene)<br><br><span># [1] "AEN" "ANTXR2" "AREG" "AURKA" "CDCA3" "CDCA8"</span><br></code></pre><h3 data-tool="mdnice编辑器"><span></span><span></span><span>2、读取 reactome 通路并富集:</span><span></span></h3><pre data-tool="mdnice编辑器"><code><span>## === reactome 数据库通路富集</span><br>geneset <- read.gmt(<span>"data/c2.cp.reactome.v2024.1.Hs.symbols.gmt"</span>)<br>table(geneset<span>$term</span>)<br>geneset<span>$term</span> <- gsub(pattern = <span>"REACTOME_"</span>,<span>""</span>, geneset<span>$term</span>)<br><br><span># 富集</span><br>my_path <- enricher(gene=gene, pvalueCutoff = 1, qvalueCutoff = 1, TERM2GENE=geneset)<br><br><span># 整理数据,挑选fdr top 10</span><br>dat <- my_path@result<br>dat <- dat[order(dat<span>$p</span>.adjust, decreasing = F),]<br>dat <- dat[1:10, ]<br>dat<span>$Description</span> <- factor(dat<span>$Description</span>, levels = dat<span>$Description</span>)<br>dat<span>$xlab</span> <- 1<br>head(dat)<br>colnames(dat)<br><br><span># 字体大小</span><br>max(-log10(dat<span>$p</span>.adjust))*1.01<br></code></pre><h3 data-tool="mdnice编辑器"><span></span><span></span><span>3、使用 ggplot2 定制化绘图</span><span></span></h3><pre data-tool="mdnice编辑器"><code>p1 <- ggplot(data = dat, aes(x = 1, y = rev(Description), colour = -log10(p.adjust))) +<br> geom_text(size=-log10(dat<span>$p</span>.adjust)*0.3, aes( label = Description), hjust = 0.5) + <span># hjust = 0.5,居中对齐</span><br> scale_color_gradient(low = <span>"#98bf92"</span>, high = <span>"#006a01"</span>) + <span># 创建颜色渐变</span><br> scale_x_continuous(expand = c(0,0)) + <span># 调整柱子底部与y轴紧贴</span><br> labs(x = <span>" "</span>, y = <span>" "</span>, title = <span>"PDAC KRAS-ERK UP"</span>, color=<span>"Significance\n(-log10 adj. p-val.)"</span>) + <br> theme(axis.text = element_blank(), <span># 隐藏x/y轴标签</span><br> axis.ticks = element_blank(), <span># 隐藏x/y轴刻度</span><br> <span># 隐藏其他边框线</span><br> panel.grid.major = element_blank(),<br> panel.grid.minor = element_blank(),<br> plot.background = element_rect(fill = <span>"white"</span>, color = NA),<br> panel.background = element_rect(fill = <span>"white"</span>, color = NA),<br> <span># 隐藏边框线</span><br> panel.border = element_blank(),<br> plot.title = element_text(hjust = 0.5) <span># 标题居中</span><br> ) +<br> <span># 添加顶部横着的黑线</span><br> annotate(<span>"segment"</span>, x = 0, xend = 2, y = 10.6, yend = 10.6, color = <span>"black"</span>, size = 1.1)<br><br>p1<br><br><span># 保存,这里的保存宽和高进行了调整,可以使得结果比较美观</span><br>ggsave(filename = <span>"p1.png"</span>, width = 5.0, height = 3, plot = p1)<br></code></pre><p data-tool="mdnice编辑器">结果如下:</p><figure data-tool="mdnice编辑器"><img data-imgfileid="100053385" data-ratio="0.5708762886597938" data-src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFialiclKnExZdeRsqZ8ibVQ4cOsL4q0NLEfDewV2DtvETrVRA5wg81pYeyw/640?wx_fmt=png&from=appmsg" data-type="png" data-w="776" src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFialiclKnExZdeRsqZ8ibVQ4cOsL4q0NLEfDewV2DtvETrVRA5wg81pYeyw/640?wx_fmt=png&from=appmsg"></figure><h3 data-tool="mdnice编辑器"><span></span><span></span><span>4、同样的方法得到 PDAC KRASi UP signature 结果</span><span></span></h3><p data-tool="mdnice编辑器">Note:注意字体大小有调整</p><pre data-tool="mdnice编辑器"><code><span>################################################################################</span><br><span># PDAC KRASi UP: 表格 PDAC_siKRAS_KRASi_iKras_UP</span><br>sig2 <- readxl::read_xlsx(<span>"data/science.adk0775_data_s4.xlsx"</span>, sheet = <span>"PDAC_siKRAS_KRASi_iKras_UP"</span>)<br>head(sig2)<br>gene <- na.omit(sig2<span>$external_gene_name</span>)<br>head(gene)<br><br><span>## === 其他数据库通路富集</span><br>geneset <- read.gmt(<span>"data/c2.cp.reactome.v2024.1.Hs.symbols.gmt"</span>)<br>table(geneset<span>$term</span>)<br>geneset<span>$term</span> <- gsub(pattern = <span>"REACTOME_"</span>,<span>""</span>, geneset<span>$term</span>)<br><br><span># 富集</span><br>my_path <- enricher(gene=gene, pvalueCutoff = 1, qvalueCutoff = 1, TERM2GENE=geneset)<br><br>dat <- my_path@result<br>dat <- dat[order(dat<span>$p</span>.adjust, decreasing = F),]<br>dat <- dat[1:10, ]<br>dat<span>$Description</span> <- factor(dat<span>$Description</span>, levels = dat<span>$Description</span>)<br>dat<span>$xlab</span> <- 1<br>head(dat)<br>colnames(dat)<br><br><span># 字体大小</span><br>-log10(dat<span>$p</span>.adjust)*1.01<br><br>p2 <- ggplot(data = dat, aes(x = 1, y = rev(Description), colour = -log10(p.adjust))) +<br> geom_text(size=-log10(dat<span>$p</span>.adjust)*3, aes( label = Description), hjust = 0.5) + <span># hjust = 0.5,居中对齐</span><br> scale_color_gradient(low = <span>"#dd8efb"</span>, high = <span>"#b000f6"</span>) + <span># <span>创建颜</span><span>色</span><span>渐变</span></span><br> scale_x_continuous(expand = c(0,0)) + <span># 调整柱子底部与y轴紧贴</span><br> labs(x = <span>" "</span>, y = <span>" "</span>, title = <span>"PDAC KRASi UP"</span>, color=<span>"Significance\n(-log10 adj. p-val.)"</span>) + <br> theme(axis.text = element_blank(), <span># 隐藏x/y轴标签</span><br> axis.ticks = element_blank(), <span># 隐藏x/y轴刻度</span><br> <span># 隐藏其他边框线</span><br> panel.grid.major = element_blank(),<br> panel.grid.minor = element_blank(),<br> plot.background = element_rect(fill = <span>"white"</span>, color = NA),<br> panel.background = element_rect(fill = <span>"white"</span>, color = NA),<br> <span># 隐藏边框线</span><br> panel.border = element_blank(),<br> plot.title = element_text(hjust = 0.5) <span># 标题居中</span><br> ) +<br> <span># 添加顶部横着的黑线</span><br> annotate(<span>"segment"</span>, x = 0, xend = 2, y = 10.5, yend = 10.5, color = <span>"black"</span>, size = 1.1)<br><br><span># 保存,这里的保存宽和高进行了调整,可以使得结果比较美观</span><br>ggsave(filename = <span>"p2.png"</span>, width = 5.0, height = 3, plot = p2)<br></code></pre><p data-tool="mdnice编辑器">结果如下:</p><figure data-tool="mdnice编辑器"><img data-imgfileid="100053386" data-ratio="0.5741556534508077" data-src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiaAZII1jCuqQgY3a1NHXcxKPb8GP2P2HTYOT7UST7xf84BkspMhDS5ag/640?wx_fmt=png&from=appmsg" data-type="png" data-w="681" src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiaAZII1jCuqQgY3a1NHXcxKPb8GP2P2HTYOT7UST7xf84BkspMhDS5ag/640?wx_fmt=png&from=appmsg"></figure><h3 data-tool="mdnice编辑器"><span></span><span></span><span>5、两个图片拼接在一起</span><span></span></h3><p data-tool="mdnice编辑器">第三个图就不绘制了,同样的技巧。这里将上面两个 signature 的结果拼在一起:</p><pre data-tool="mdnice编辑器"><code>p <- p1 + p2 <br>p<br><span># 保存,这里的保存宽和高进行了调整,可以使得结果比较美观</span><br>ggsave(filename = <span>"p1_p2.png"</span>, width = 10, height = 3, plot = p)<br></code></pre><p data-tool="mdnice编辑器">完美:</p><figure data-tool="mdnice编辑器"><img data-imgfileid="100053392" data-ratio="0.28055555555555556" data-src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiaVbyliaGETicKoBIXUic0phkXgZGJysRc906VpeV8grQtrWicnyN1WYUKGg/640?wx_fmt=png&from=appmsg" data-type="png" data-w="1080" src="https://mmbiz.qpic.cn/mmbiz_png/cZNhZQ6j4wwABt0xXTdA9qnNuZE2beFiaVbyliaGETicKoBIXUic0phkXgZGJysRc906VpeV8grQtrWicnyN1WYUKGg/640?wx_fmt=png&from=appmsg"></figure><p data-tool="mdnice编辑器"><strong>友情宣传:</strong></p><p data-tool="mdnice编辑器"><strong><a href="https://mp.weixin.qq.com/s?__biz=MzI1Njk4ODE0MQ==&mid=2247527230&idx=1&sn=7156afcd5ab734c7d391b9048695747a&scene=21#wechat_redirect" data-linktype="2">生信入门&数据挖掘线上直播课2025年1月班</a></strong></p><p data-tool="mdnice编辑器"><strong><a href="http://mp.weixin.qq.com/s?__biz=MzAxMDkxODM1Ng==&mid=2247524148&idx=1&sn=7806da6feb41a36493c519c1cfc1d3ac&chksm=9b4bdf8fac3c569960369602f1ef26639cb366b250f233b2297d1f059471c0458335bfc0b829&scene=21#wechat_redirect" data-linktype="2">时隔5年,我们的生信技能树VIP学徒继续招生啦</a></strong></p><p data-tool="mdnice编辑器"><a href="https://mp.weixin.qq.com/s?__biz=MzAxMDkxODM1Ng==&mid=2247535760&idx=2&sn=1e02a2e982a046ecf6389231e6768d5b&scene=21#wechat_redirect" data-linktype="2">满足你生信分析计算需求的低价解决方案</a></p></section><p><mp-style-type data-value="3"></mp-style-type></p></div> | ||
<hr> | ||
<a href="https://mp.weixin.qq.com/s/DhfUQCkJma52djjALFsFvg",target="_blank" rel="noopener noreferrer">原文链接</a> |