前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用R语言绘制string蛋白互作图

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

作者头像
用户1359560
发布2020-09-01 15:44:56
2.3K0
发布2020-09-01 15:44:56
举报
文章被收录于专栏:生信小驿站生信小驿站

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网站的下载部分下载完整列表。

  • 加载包
代码语言:javascript
复制
########################################################## 


########################################################## 
# 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()
  • 注释基因名
代码语言:javascript
复制
########################################################## 


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


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互作图
代码语言:javascript
复制
########################################################## 


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



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

string_db$plot_network( data_mapped$STRING_id )
  • 利用ighraph包绘图
代码语言:javascript
复制
########################################################## 


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


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的方法来绘制。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档