专栏首页生信小驿站使用R语言绘制string蛋白互作图

使用R语言绘制string蛋白互作图

STRING(https://www.string-db.org)是已知和预测的蛋白质-蛋白质相互作用的数据库。交互包括直接(物理)关联和间接(功能)关联。数据库包含来自众多来源的信息,包括实验资料库,计算预测方法和公共文本集。每次互动都与组合的置信度相关综合各种证据的分数。目前,涵盖了来自5090的超过24百万种蛋白质生物。STRING数据库可用于在基因列表中添加含义。STRINGdb R软件包,以方便用户访问STRING中的数据库。在本指南中,以示例说明了该软件包的大多数功能。此外,iGraph包作为代表蛋白质-蛋白质相互作用网络的数据结构。

首先,首先知道所拥有生物的NCBI分类标准标识符(例如,人类使用9606,小鼠使用10090)。如果不知道,可以搜索NCBI分类法(http://www.ncbi.nlm.nih.gov/taxonomy)或开始查看。因此,如果物种不是人类,则可以在STRING网页的“有机体”部分(https://string-db.org/cgi/input.pl?input)下找到该物种及其分类学标识符页面有效表格=生物)或在STRING网站的下载部分下载完整列表。

  • 加载包
########################################################## 


########################################################## 
# if (!requireNamespace("BiocManager", quietly = TRUE))
#   install.packages("BiocManager")
# 
# BiocManager::install("STRINGdb")

library(STRINGdb)
library(tidyverse)
library(clusterProfiler) 
library(org.Hs.eg.db)  

library(STRINGdb)
library(igraph)
library(ggraph)
getwd()
  • 注释基因名
########################################################## 


########################################################## 


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


STRINGdb$methods()
 
# score_threshold是蛋白互作的得分,
# 此值会用于筛选互作结果,400是默认分值,
# 如果要求严格可以调高此值。自己调即可


gene <- read.csv('dat.csv', header = T)

gene <- gene$gene


gene <- gene %>% bitr(fromType = "SYMBOL", 
                      toType = "ENTREZID", 
                      OrgDb = "org.Hs.eg.db", 
                      drop = T)
  • 绘制string互作图
########################################################## 


########################################################## 



data_mapped <- gene %>% string_db$map(my_data_frame_id_col_names = "ENTREZID", 
                                      removeUnmappedRows = TRUE)

string_db$plot_network( data_mapped$STRING_id )
  • 利用ighraph包绘图
########################################################## 


########################################################## 


data_links <- data_mapped$STRING_id %>% string_db$get_interactions()

# 转换stringID为Symbol,只取前两列和最后一列
links <- data_links %>%
  mutate(from = data_mapped[match(from, data_mapped$STRING_id), "SYMBOL"]) %>% 
  mutate(to = data_mapped[match(to, data_mapped$STRING_id), "SYMBOL"]) %>%  
  dplyr::select(from, to , last_col()) %>% 
  dplyr::rename(weight = combined_score)
# 节点数据
nodes <- links %>% { data.frame(gene = c(.$from, .$to)) } %>% distinct()
# 创建网络图
# 根据links和nodes创建
net <- igraph::graph_from_data_frame(d=links,vertices=nodes,directed = F)
# 添加一些参数信息用于后续绘图
# V和E是igraph包的函数,分别用于修改网络图的节点(nodes)和连线(links)
igraph::V(net)$deg <- igraph::degree(net) # 每个节点连接的节点数
igraph::V(net)$size <- igraph::degree(net)/5 #
igraph::E(net)$width <- igraph::E(net)$weight/10

########################################################## 


########################################################## 


ggraph(net,layout = "linear", circular = TRUE)+
  geom_edge_arc(aes(edge_width=width), color = "lightblue", show.legend = F)+
  geom_node_point(aes(size=size), color="orange", alpha=0.7)+
  geom_node_text(aes(filter=deg>1, label=name), size = 3, repel = F)+
  scale_edge_width(range = c(0.2,1))+
  scale_size_continuous(range = c(1,10) )+
  guides(size=F)+
  theme_graph()

但是个人感觉绘制出来的图片依然没有cytoscape软件功能强大,建议还是string网页+cytoscape的方法来绘制。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R语言与生信系列①(R入门与临床三线表绘制)

    首次分享课讲的是TCGA数据分析,探究某一因素与肿瘤临床数据之间的关系,并自动生成可以用于SCI发表的三线表,如下图所示:

    用户1359560
  • Python常见数据框操作①

    用户1359560
  • 单基因生信分析流程(3)一文解决生存分析和临床参数相关分析

    用户1359560
  • 找数据分析工作,自我评价该怎么写

    在求职简历里,最容易作妖的部分,就是自我评价。和技能特长一起,并称作妖双雄。经常有求职者写的奇形怪状,看的面试官苦笑不得。今天我们就来会一会它。个人介绍一般出现...

    接地气的陈老师
  • 科学瞎想系列之一一一 NVH那些事(14)

    如前所述,NVH代表三个方面,即:噪声(Noise)、振动(Vibration)、舒适性或平顺性(Harshness)。振动是NVH的基础和核心,振动产生噪声,...

    标准答案
  • Selenium最新版本不再支持PhantomJS

    今天想对《自动读取单位某系统数据》一文中的项目做些优化,将Selenium+firefox改为无界面的PhantomJS,出现如下错误:

    拓荒者
  • android UiAutomator获取视频播放进度的方法

    本人在使用android UiAutomator做测试的时候,有时候需要统计视频播进度,然后去断言上传的进度数据正确与否。具体的思路就是根据进度条的颜色区分,我...

    FunTester
  • 众包音乐知识管理中的专业知识和动态:以Genius平台为例(CS SI)

    许多平台主要从志愿者那里收集众包信息。随着这类知识管理的广泛普及,贡献形式也发生了很大变化,并且受到跨不同平台的各种过程的驱动。因此,一个平台的模型不一定适用于...

    小童
  • Android热修复技术原理详解(最新最全版本)

    本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各...

    用户1155943
  • Mongodb后台daemon方式启动(一直运行)

    有时我们使用ssh装上Mongodb之后如果这样启动 ./mongod --dbpath=/export/nerdserv...

    用户5166556

扫码关注云+社区

领取腾讯云代金券