SCI写作模板与投稿合集
扫描下方二维码免费领取☟☟☟
复现2020年4分+纯生信文章教你用“UpSet”包作图
提到Venn图,真的是家喻户晓,用于多个集合的可视化,传统的Venn plot是目前绝大多数生信挖掘类文章的主流主。这时候就需要用到UpSetplot,其本质与Venn图一致,同样反映了集合的关系。Upset的最大优势就是不受样本数量限制,可以很好地展示多个集合之间的关系。并且更重要的是Upsetplot具有更多的展示方式。比如可以反应多个数据集的Hub基因表达情况;miRNA靶基因预测情况;基因突变等等,只要输入文件的格式OK,就统统可以进行可视化!好啦,我们现在就来看看如何使用R包“UpSet”如何绘制出精美的集合图。
这次我们以复现一篇4分+纯生信文章的数据图表为例,为小伙伴们展示如何运用“UpSet”包作图。
我们今天的范文是2020年3月发表在Sci Rep上的4分+纯生信文章,题目为“MicroRNAhsa-mir-3923 serves as a diagnostic and prognostic biomarker for gastriccarcinoma”本文利用R语言处理数据表达矩阵得到差异miRNA 后,通过网络数据库及在线平台进行靶基因预测。这里我们针对其筛选出的差异miRNA——hsa-mir-3923,Venn图和UpSet图展示其在五个常见的miRNA数据库中预测到的潜在靶基因。
一、VennPlot
数据准备——数据库预测靶基因
 数据准备是生信分析的重中之重,我们本次复现需要准备文章中的差异分子has-miR-3923在五个数据库(miRDB、miRPathDB、TargetScan、miRNAWalk、miRTarBase)中的靶基因预测列表,下面我们一一进行操作演示。

1. TargetScan

选择物种后,输入目标miRNA进行靶基因预测。随后点击如下右侧图中红框下载结果列表。

2. miRPathDB

选择物种后,输入目标miRNA进行靶基因预测。
www.mirdb.org/miRDB/), miRPathDB(https://mpd.bioinf.uni-sb.de/), TargetScan)中的靶基因预测列表,下面我们一一进行操作演示。
跳转到如下页面即检索结果,下拉可下载不同格式靶基因预测列表。

3. miRWalk

4. miRDB

结果会按照TarGetScore进行排序,由于是软件预测的结果,score值越高,可信度也越高。通常认为score大于80的结果是相对可靠的,而低于60的话可信度就很差了。
得到检索结果如下:
这里需要我们注意的是该网站不支持下载结果列表,我们需要自行复制粘贴到excel中,提取靶基因列。

5.miRTarBase

同法在数据库主页检索目标miRNA,一键进行靶基因预测。
很遗憾的是,在miRTarBase数据库中无论是通过TarBase数据库检索还是miRTarBase数据库检索,都只能得到很少的靶基因。小编呢还是不死心的从网站下载了人类基因的原始文件,在原始文件中检索了目标miRNA,但仍然只得到了32个预测靶基因。最后很勉强的在原文中找到了一条线索,也许是因为作者在五个数据库后面标注了“etc. ”,这意味着作者可能还利用了其他方法或者其他数据库预测到了更多的靶基因。我们本次的目标呢还是以学习代码为主,因此在数据上我们理解预测靶基因的方法和操作流程就好。
最后,我们将五个数据库预测的靶基因列表复制到一个新建的excel中,如下图所示,并将该文件名后缀以“txt”格式命名。

Venn图绘制

#install.packages("VennDiagram")#安装包>library(VennDiagram) #载入包Loading required package:gridLoading required package:futile.loggerWarning messages:1:package ‘VennDiagram’ was builtunder R version 3.6.32:package ‘futile.logger’ was builtunder R version 3.6.3>setwd("D:\\")#自行设置路径,记得将"\"全部改为"\\">data =read.table("Venn.txt",header = T,sep="\t")>head(data) miRDBmiRPathDB miRWalk TarBase TargetScan1 MSR1 A1CF PCDHA1 HIVEP2 MT-ATP82 C14orf28 A2ML1 PCDHA1 SLC39A9 MSR13 C5orf34 AAK1 PCDHA1 PI4K2B CPED14 HDX AAMP PCDHA1 WNK1 MAP3K25 ZIC5 ABCA1 PCDHA2 RORA CASP126 SPTLC1 ABCA5 PCDHA2 TOX4 ST8SIA1>venn.plot <-venn.diagram(+ list(miRDB=data$miRDB,miRPathDB=data$miRPathDB,miRWalk=data$miRWalk,TarBase=data$TarBase,TargetScan=data$TargetScan),+ filename ="Venn.tiff",+ lty ="dotted",+ lwd =2,+ col ="black", #"transparent",+ fill =c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),+ alpha =0.60,+ cat.col =c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),+ cat.cex =0.8,+ cat.fontface="bold",+ margin =0.07,+ cex =0.8+)>
我们运行以上代码后,在我们设置的工作路径中会出现如下图所示的文件,打开后可以看到如下图所示的五个集合的韦恩图,和原文中的韦恩图大体一致。
但可惜的是生信文章大部分难以复现完整的数据。因此,我们选择了另一个靶基因比较丰富的miRNA(hsa-miR-122-5p)进行重新分析。预测靶基因的方法与上述操作一致,这里就不过多赘述了,做出来的图是这个样子的,结果有24个靶基因是存在于全部五个数据库的。
我们本次的复现主题是做出精美的图片。因此,尽管数据上有所出入,我们还是学会了如何绘制五个集合的精美韦恩图是不是?好啦,我们下面继续进行R语言绘制UpSet图。
二、UpSetPlot
数据准备——适用的数据类型及数据导入
UpsetR接受三种类型的数据输入:
① table,也就是R中的数据框,行表示元素,列表示数据集分配和额外信息;
②fromList,元素名的集合;
③ fromExpression,用于描述集合交集的向量,一般使用venneuler包引入。fromList &fromExpression是UpSetR提供的两个函数,用于将数据转换为UpsetR 适用的数据格式。
接下来我们需要准备一个Upset能够读入的格式文件
如下图所示,我们需要在excel中将靶基因数据整理成Upset能够读入的格式文件。
第一步:第一列是所有靶基因的集合,只需将所有的靶基因复制粘贴到第一列即可,并删除重复项。
第二步:使用excel中“countif”函数判断各数据库中预测的靶基因是否存在于总的靶基因预测集合中,如果是则输出为“1”,否则为“0”。
第三步:为了便于后续操作,将文件保存为csv或者txt格式,以不同方式读取。
整理后的表格如下所示:

Upset图绘制

好啦,接下来我们使用UpsetR包里面的upset()函数绘制集合可视化图形。
1)安装“UpSet”
#CRAN安装命令install.packages("UpSetR")#Github上安装命令,这里需要先安装“devtools”devtools::install_github("hms-dbmi/UpSetR")
2)基本参数(以UpsetR包提供的参考)
upset(data,sets =c("Action", "Adventure", "Comedy", "Drama", "Fantasy" , "Children","Crime"),#设置特定集合 mb.ratio =c(0.55, 0.45),#控制上方条形图以及下方点图的比例 order.by ="freq", #以freq表示从大到小排序展示 keep.order =TRUE, #keep.order按照sets参数的顺序排序 number.angles =30, #柱形图上数字的角度 point.size =2, line.size=1, #点和线的大小设置 mainbar.y.label ="Genre Intersections", sets.x.label ="Movies Per Genre", #坐标轴名称设置 text.scale =c(1, 1, 1, 1, 1.5,1)) #六个数字,分别代表c(intersectionsize title, intersection size tick labels, set size title, set size ticklabels, set names, numbers above bars)
3)常用参数
queries参数
#分为四个部分:query, param, color, active;upset(data, main.bar.color ="black",queries =list(list(query = intersects, #UpSetR 内置的intersects queryparams =list("Drama"), ##指定作用的交集color ="red", ##设置颜色active = F, # TRUE:条形图被颜色覆盖,FALSE:条形图顶端显示三角形query.name ="Drama"), # 添加query图例list(query = intersects, params =list("Action", "Drama"), active = T,query.name ="Emotional action"),list(query = intersects, params =list("Drama", "Comedy", "Action"), color ="orange", active = T)),query.legend ="top")
attribute.plots
参数
#用于添加属性图,内置有柱形图、散点图、热图等upset(data, main.bar.color ="black",queries =list(list(query = intersects, params =list("Drama"), color ="red",active = F, query.name ="Drama"),list(query = intersects, params =list("Action", "Drama"), active = T,query.name ="Emotional action"),list(query = intersects, params =list("Drama", "Comedy", "Action"), color ="orange", active = T)), attribute.plots =list(gridrows =45, #添加属性图plots =list(list(plot = scatter_plot, #散点图 x ="ReleaseDate", y ="AvgRating", #横纵轴的变量queries = T), #T 则显示出上面queries定义的颜色list(plot = histogram, x ="ReleaseDate", queries = F)),ncols =2), #添加的图分两列query.legend ="top") #query图例在最上方
绘图步骤
library(UpSetR)#载入R包require(ggplot2); require(plyr); require(gridExtra); require(grid);setwd("D:\\")#设置工作路径#example<-read.table("example.txt",header=F,sep="\t",skip= 16,fill = T,quote = "")example<-read.csv(file ="Venn.csv",header = T,sep =",")#读取文件View(example)upset(example, nsets =5, number.angles=30, point.size =2, line.size =1,mainbar.y.label="GeneIntersections", sets.x.label ="Set Size", text.scale =c(1.3, 1.3,1, 1, 1.5, 1))#绘制图形
随后,出图如下:
我们导出为pdf或png格式文件即可,是不是很简单呢?如下所示:
好啦~经过自己动手从“安装R包——准备数据——完善代码”这一过程,大家的R语言水平是不是又进步了呢!认真学习会有收获哒~
后台回复“汇然0526”,我们将为大家提供范例文献和代码哟~快来关注干货满满的“挑圈联靠”吧!成功的喜悦在向你招手~
参考文献及网址链接:
[1] Yang X, Zhang Z, Zhang L, Zhou L. MicroRNA hsa-mir-3923serves as a diagnostic and prognostic biomarker for gastric carcinoma. Sci Rep.2020;10(1):4672. Published 2020 Mar 13. doi:10.1038/s41598-020-61633-8
[2] Lex A, Gehlenborg N, Strobelt H, Vuillemot R, Pfister H.UpSet: Visualization of Intersecting Sets. IEEE Trans Vis Comput Graph.2014;20(12):1983-1992. doi:10.1109/TVCG.2014.2346248
[3] Lex and Gehlenborg (2014). Points of view: Sets andintersections. Nature Methods 11, 779 (2014).
[4] http://www.nature.com/nmeth/journal/v11/n8/abs/nmeth.3033.html.
[5]  http://vcg.github.io/upset/about/.
欢迎大家关注解螺旋生信频道-挑圈联靠公号~

继续阅读
阅读原文