使用R语言绘制string蛋白互作图
时间:2022-07-24
本文章向大家介绍使用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的方法来绘制。
- Jquery闪烁提示特效
- mstsc 远程序桌面登录的 c#开发
- 突然顿悟的Javascript中的this
- 解决Electron加载带jquery的项目报错问题
- dedecms利用addfields body在首页调用文章内容
- 如何设置dedecms自定义表单必填项?
- 如何用<dl>标签做表格而不用table标签
- Gulp使用指南
- Gulp Error: Cannot find module 'jshint/src/cli'
- 自学如何使用Python和Keras构建你自己专属的AlphaZero系统
- 用Visual Studio Code写Node.j
- 帝国CMS搜索页伪静态实现方法
- 5步搭建GO环境
- 你真的了解如何将 Nginx 配置为Web服务器吗
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- React17新特性:启发式更新算法
- spring之通过FactoryBean配置Bean
- 谱聚类的python实现
- 基于TypeScript封装Axios笔记(三)
- hadoop伪分布式之启动HDFS并运行MR程序(WordCount)
- 细品Reids的HyperLogLog数据结构
- 布隆过滤器与缓存击穿
- spring之通过注解方式配置Bean(二)
- 【python-leetcode103-树的宽度遍历】二叉树的锯齿形层次遍历
- 图卷积网络(GCN)python实现
- hadoop伪分布式之配置yarn并运行MR程序(WordCount)
- 【python-leetcode637-树的宽度遍历】二叉树的层平均值
- graphSAGE的python实现
- 【python-leetcode111-树的宽度遍历】二叉树的最小深度
- 基于TypeScript封装Axios笔记(四)