STRINGDB包的简单使用

String是一个很好的蛋白互作网络数据库,其不仅包含了直接物理作用的互作关系,还包含了蛋白之间以间接作用的互作关系。除了有实验证据支持的数据外,还有整合其他数据库中的互作数据以及利用生物信息学预测获得的互作数据。 官网网址:https://string-db.org/

从网址上可看出其提供了一个比较友好的界面可供大家使用,可根据需求输入不同的protein name or protein sequence。String网站还提供了互作信息的数据库可供大家下载DOWNLOAD,如果当你需要处理N组数据时,将数据库下载到本地进行计算是一个不错的选择。

但是如果想避免下载数据库又要获得多组数据的互作信息,那么使用StringDB这个R包是一个不错的选择。The STRINGdb package provides a R interface to the STRING protein-protein interactions database (http://www.string-db.org),从这个介绍可看出,StringDB包就是连接String网站的数据库进行蛋白互作网络分析的,这个R包半年更新一次,基本上也跟String数据库的更新速度差不多,所以数据的实时性还是有保证的,下面简单介绍下StringDB包的使用

安装R包

source("https://bioconductor.org/biocLite.R")
biocLite("STRINGdb")

简单使用

StringDB包将其所有函数都放在了string_db对象里面,所以可用(符号来调用函数,如用STRINGdb\)methods()查看包中的所有函数:

> STRINGdb$methods()
 [1] ".objectPackage"                      ".objectParent"                      
 [3] "add_diff_exp_color"                  "add_proteins_description"           
 [5] "benchmark_ppi"                       "benchmark_ppi_pathway_view"         
 [7] "callSuper"                           "copy"                               
 [9] "enrichment_heatmap"                  "export"                             
[11] "field"                               "get_aliases"                        
[13] "get_annotations"                     "get_annotations_desc"               
[15] "get_bioc_graph"                      "get_clusters"                       
[17] "get_enrichment"                      "get_graph"                          
[19] "get_homologs"                        "get_homologs_besthits"              
[21] "get_homology_graph"                  "get_interactions"                   
[23] "get_link"                            "get_neighbors"                      
[25] "get_pathways_benchmarking_blackList" "get_png"                            
[27] "get_ppi_enrichment"                  "get_ppi_enrichment_full"            
[29] "get_proteins"                        "get_pubmed"                         
[31] "get_pubmed_interaction"              "get_subnetwork"                     
[33] "get_summary"                         "get_term_proteins"                  
[35] "getClass"                            "getRefClass"                        
[37] "import"                              "initFields"                         
[39] "initialize"                          "load"                               
[41] "load_all"                            "map"                                
[43] "mp"                                  "plot_network"                       
[45] "plot_ppi_enrichment"                 "post_payload"                       
[47] "remove_homologous_interactions"      "set_background"                     
[49] "show"                                "show#envRefClass"                   
[51] "trace"                               "untrace"                            
[53] "usingMethods"                       

由于没有帮助文档,所以不能用?help来查看函数用法,但可用STRINGdb$help("map")来查看map函数的介绍及说明:

> STRINGdb$help("map")
Call:
$map(my_data_frame, my_data_frame_id_col_names, takeFirst = , removeUnmappedRows = , quiet = )

Description:
  Maps the gene identifiers of the input dataframe to STRING identifiers.
  It returns the input dataframe with the "STRING_id" additional column.

Input parameters:
  "my_data_frame"                 data frame provided as input. 
  "my_data_frame_id_col_names"    vector contatining the names of the columns of "my_data_frame" that have to be used for the mapping.
  "takeFirst"                     boolean indicating what to do in case of multiple STRING proteins that map to the same name. 
                                      If TRUE, only the first of those is taken. Otherwise all of them are used. (default TRUE)
  "removeUnmappedRows"            remove the rows that cannot be mapped to STRING 
                                      (by default those lines are left and their STRING_id is set to NA)
  "quiet"                         Setting this variable to TRUE we can avoid printing the warning relative to the unmapped values.

Author(s):
   Andrea Franceschini

最后就是使用函数进行蛋白互作网络分析了,首先我们肯定需要一个用于分析的gene list,然后使用map函数将gene list 的id转化为string id,stringDB包支持多种ID转化,比如HUGO names,Entrez GeneID, ENSEMBL proteins, RefSeq transcripts等,虽然stringdb手册中写着是上述几种,其他的似乎也行,比如我这次以ENSEMBL gene id为例,总共43个ensembl id

> head(data, 5)
              geneid
1 ENSRNOG00000050827
2 ENSRNOG00000011815
3 ENSRNOG00000061527
4 ENSRNOG00000049944
5 ENSRNOG00000016348

接着我们需要先构建一个string_db对象

string_db <- STRINGdb$new(version = "10", species = 10116, score_threshold = 700, input_directory = "")

这里我为什么选择version 10.0而不用最新的10.5呢,因为stringDB包现在只支持10.0的数据库(2016年的)。。。原来用了才知道也不是最新跟官网同步的。。后面的score_threshold则是阈值卡分,string官网上也有这一步,700表示高可信度

然后使用map函数来做ID转化,stringDB包会下载临时的数据库文件,所以需要联网的,但是如果将R关闭,这些文件则会被删除

data_mapped <- string_db$map(data, "geneid", removeUnmappedRows = TRUE)
Warning:  we couldn't map to STRING 11% of your identifiers

我用removeUnmappedRows参数设定了如果没mapping上的id在最后结果中不显示,最后43个ID有38个mapping上了,如下:

hit <- data_mapped$STRING_id
> length(hit)
[1] 38

再着我们将转化后的string id进行作图,这是stringDB包还是需要下载string数据库中的互作连接数据,这个比较大,需要等待下的,然后简单的使用plot_network函数作图

string_db$plot_network(hit)

[图片上传失败...(image-80fb0a-1629254616665)]

<figcaption>stringdb_pic</figcaption>

结果略尴尬,一个有互作关系的蛋白都没,可能是我设置的可信度太高了,也有可能是因为版本不是最新的。所以我也string官网也尝试了下,45个ID有40个mapping上了,比stringDB包多2个。然后出图,结果中有4条蛋白有互作关系,但是这时的默认可信度是400(属于中等可信度),但是当我将可信度设置为700后,这2条互作信息就没了。。。看样子之前stringdb包出的结果还是跟官网一样的,只是我可信度设置过高了

image.png

用stringdb作图后,stringdb还提供了一个小功能STRING payload mechanism,就是能根据基因表达的上下调信息对互作网络图上的点进行标注颜色,比如上调标注为红色,下调标注为绿色。个人觉得这个不如用cytoscape软件来实现比较好,但我们需要先从stringdb中将互作网络的信息导出,所以我先将可信度重新设置为400,然后重置下string_db对象,结果显示的互作关系比string官网的还多1条,这时只能用版本不同来解释了,毕竟数据库都是在更新的

info <- string_db$get_interactions(hit)
image.png

最后将info数据库输出到txt文件中,然后再导入cytoscape即可作图了

Summary

Stringdb包还提供了聚类功能,可将复杂的互作网络图分割成几个小块(官网也有这个功能的),还有GO/KEGG富集功能(个人感觉其他的包做的更好,毕竟stringDB包只是基于string数据库的,信息不够全)。最后如果想用string数据库最新数据的话,还是建议去官网使用,或者把官网的数据库下载下来后自行用脚本进行处理,但是如果不太建议数据的更新程度,stringDB包则是个不错的选择。

参考:
http://bioconductor.org/packages/release/bioc/vignettes/STRINGdb/inst/doc/STRINGdb.pdf
http://bioconductor.org/packages/release/bioc/html/STRINGdb.html

本文出自于http://www.bioinfo-scrounger.com转载请注明出处

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容