使用R语言构建ceRNA网络(circRNA-miRNA-mRNA)
创作时间:
作者:
@小白创作中心
使用R语言构建ceRNA网络(circRNA-miRNA-mRNA)
引用
CSDN
1.
https://blog.csdn.net/weixin_49214410/article/details/137624397
ceRNA网络(竞争性内源RNA网络)是一种新型的基因调控机制,通过共享microRNA(miRNA)来影响彼此的表达,从而导致疾病或某种表型的改变。本文将介绍如何使用R语言中的igraph包构建ceRNA网络,帮助研究者深入探究基因调控的机制。
一、软件包与输入的配置
在开始构建ceRNA网络之前,需要先加载所需的R包。如果尚未安装,可以使用install.packages()函数进行安装。
library(igraph)
library(dplyr)
library(magrittr)
二、输入与绘图
1. 数据输入
假设我们有一个名为"data.csv"的输入文件,其表头如下:
circRNA miRNA mRNA
可以使用read.csv()函数读取数据:
network_data <- read.csv("data.csv", header = TRUE)
2. 定义网络参数与属性
接下来,我们将创建一个空的网络对象,并添加节点和边。
# 创建空的网络对象
g <- graph.empty(n = length(c(unique(network_data$miRNA), unique(network_data$circRNA), unique(network_data$mRNA))), directed = TRUE)
# 添加节点
g <- g %>%
set_vertex_attr("name", value = c(unique(network_data$circRNA), unique(network_data$miRNA), unique(network_data$mRNA))) %>%
set_vertex_attr("type", value = c(rep("circRNA", length(unique(network_data$circRNA))),
rep("miRNA", length(unique(network_data$miRNA))),
rep("mRNA", length(unique(network_data$mRNA)))))
# 设置节点颜色
g <- set_vertex_attr(g, "color", value = ifelse(V(g)$type == "circRNA", "#fb8072", ifelse(V(g)$type == "miRNA", "yellow3", "#80b1d3")))
# 添加边与边长
afedge <- c()
aflength <- c()
for(i in 1:nrow(network_data)) {
circRNA_node <- which(V(g)$name == network_data[i,1])
miRNA_node <- which(V(g)$name == network_data[i,2])
mRNA_node <- which(V(g)$name == network_data[i,3])
aflength <- c(aflength, 20, 10)
afedge <- c(afedge, circRNA_node, miRNA_node, miRNA_node, mRNA_node)
}
g <- g %>% add_edges(afedge) %>% set_edge_attr("edge.length", value = aflength)
# 添加节点大小
circRNA.size <- as.vector(scale(as.vector(table(network_data$circRNA)), center = FALSE)) + 15
miRNA.size <- as.vector(scale(as.vector(table(network_data$miRNA)), center = FALSE)) + 8
mRNA.size <- as.vector(scale(as.vector(table(network_data$mRNA)), center = FALSE)) + 3
V(g)$size <- c(circRNA.size, miRNA.size, mRNA.size)
3. 绘制并保存图片
igraph包提供了多种布局算法,可以将节点和边布局在平面上。以下是一些常见的布局算法:
- layout.circle:在圆形上均匀分布所有节点。
- layout.fruchterman.reingold:使用Fruchterman-Reingold算法,根据节点之间的力学模型,计算节点的位置。该算法可以确保相邻节点之间的距离尽量相等,并且可以避免节点之间的重叠。
- layout.graphopt:使用Graphopt算法,通过将节点移动到合适的位置以最小化边的长度来优化图的布局。
- layout.kamada.kawai:使用Kamada-Kawai算法,通过最小化图的能量来计算节点的位置。该算法可以确保相邻节点之间的距离尽量相等,并且可以保持图形的对称性。
- layout.lgl:使用Large Graph Layout算法,对于大型图形而言,布局更加高效。
下面使用Graphopt算法进行布局,并将结果保存为PDF文件:
# 使用Graphopt算法进行布局,保存为ceRNA.net.pdf文件
pdf(file = "ceRNA.net.pdf", height = 10, width = 10)
plot(g,
layout = layout.graphopt(g),
vertex.label = V(g)$name,
vertex.label.family = "sans",
vertex.label.cex = ifelse(V(g)$type == "circRNA", 0.8, ifelse(V(g)$type == "miRNA", 0.5, 0.2)),
vertex.size = V(g)$size,
vertex.color = V(g)$color,
vertex.label.color = "black",
edge.arrow.size = 0.5,
edge.width = 1
)
dev.off()
三、可视化结果
以下是使用上述代码生成的ceRNA网络图:
热门推荐
双剑合璧!外泌体研究新成果揭示癌症治疗新方向
腹肌打造攻略:持之以恒、膳食与休养三管齐下
js如何自动添加换行符
北宋兵书《武经总要》的兵学思想与学术价值
如何构建一份吸引招聘者的出色简历?
新手入门:女子自行车尺寸选购指南
深圳仙湖植物园一日游攻略 附最佳游玩路线
NBA从1946年成立至今,还有十队未拿到总冠军,谁能率先打破魔咒?
工作日中午健身指南:如何高效利用午休时间进行锻炼
过敏性鼻炎常见症状和体征有哪些
雄安发展需要怎样的条件支持?这些条件支持会带来哪些影响?
被我国核武器轰炸了45次的罗布泊,如今变成什么样子了?
不吃药,怎样摆脱偏头痛带来的恶心呕吐?
让绿萝两天爆盆的方法,放在光线明亮处充分接受光照
南宁方特主题乐园一日游玩攻略
女方要求离婚怎么保护自己的权益
国米枪手赢强强对决,西甲巴萨逆转追平皇马登顶,大巴黎19分领先
深度解析:B端产品如何做好业务调研
葡萄酒是怎么酿制的?从葡萄到美酒的奇妙变化
矿物鉴定入门:从颜色到光泽的系统认识
怀孕时口味怎么调整才能减少呕吐?
无犯罪记录证明公证需要什么材料?(办理指南)
电商平台客服沟通技巧全攻略
很多人不知道 螃蟹这4个地方真不建议吃→
眼的解剖结构和生理功能
未名湖名字的由来!
自救互救技能如何快速掌握?有多重要?
孕妈妈们,主食“粗细搭配”做对了吗?这样吃可以控糖
如何深入研究期权投资的创新模式?这些模式的应用前景如何?
23种设计模式的应用场景分别是哪些