基于R和gephi做宏基因组与代谢组等多组学联合network相关性网络图

本文主要是介绍基于R和gephi做宏基因组与代谢组等多组学联合network相关性网络图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面

拿到多组学的数据后一直在找合适的方法将二者进行关联,比如我这里是三种体液的代谢组与一种体液的宏基因组。需求是对多组学进行关联分析,直到最近看到不少文章里利用Gephi将相关性表格进行可视化的图,效果还不错,于是写个过程记录自用。这里演示的是属水平的差异菌群相对丰度(宏基因组结果)与代谢组鉴定到的差异代谢物进行关联。

主要分为两个部分:

  • 先是计算相关性生成graphml格式文件
  • 使用Gephi软件进行可视化

数据准备

主要就是两个需要关联的表格

  • 差异代谢物表格
    image-20231011195243243

  • 差异菌属的相对丰度表格
    image-20231011195214637

这里注意:原文件如果是新建的excel,默认有3个sheet,一定记得只保留一个sheet后另存为制表符分隔的txt文件,这一点很重要,不然下面分析的时候会从读取就开始报错!

image-20231011195341323

R包Hmisc计算相关性并用igraph包生成graphml

用到Hmisc包和igraph包

这里就直接放代码吧,遇到相关的报错先仔细检查数据,一般是数据格式和内容本身的问题。不行就上网找解决办法。

###微生物和代谢物的相关性网络
##计算微生物类群丰度和代谢物鉴定强度的相关系数
setwd('F:\\Analysis\\RA_Sanhe cow\\Microgenome\\Network_Gephi module_Pretreat\\RE group\\M_metabolites_genus')
library(Hmisc)
MAG <- read.delim('differ_genus.txt',row.name = 1, check.names = FALSE)
Enzyme <- read.delim('milk_differ_metabolites_inform.txt',row.name = 1, check.names = FALSE)
MAG<-t(MAG)
Enzyme<-t(Enzyme)#计算群落组成与功能的相关性,以 spearman 相关系数为例
MAG_Enzyme_corr <- rcorr(as.matrix(MAG), as.matrix(Enzyme), type = 'spearman')#相关系数 r 值和显著性 p 值矩阵
r <- MAG_Enzyme_corr$r
p <- MAG_Enzyme_corr$P#只保留微生物丰度-功能基因丰度的相关系数
#去除微生物-微生物、功能基因-功能基因之间的相关系数
r <- r[colnames(MAG),colnames(Enzyme)]
p <- p[colnames(MAG),colnames(Enzyme)]#阈值筛选
#将 spearman 相关系数低于 0.7 的关系剔除,即 r>=0.7
#该模式下,一定要注意负值的选择是否是合适的,因为很多情况下可能负相关无意义
r[abs(r) < 0.7] <- 0#选取显著性 p 值小于 0.05 的相关系数,即 p<0.05
# p <- p.adjust(p, method = 'BH')    #可选 p 值校正,这里使用 BH 法校正 p 值
p[p>=0.05] <- -1
p[p<0.05 & p>=0] <- 1
p[p==-1] <- 0#根据上述筛选的 r 值和 p 值保留数据
z <- r * p#再转换为对称矩阵,igraph 只能识别这种样式的邻接矩阵类型
z1 <- MAG_Enzyme_corr$r
z1[z1 != 0] <- 0
z1[rownames(z),colnames(z)] <- z
z1[colnames(z),rownames(z)] <- t(z)#write.table(data.frame(z1, check.names = FALSE), 'MAG_Enzyme_corr.matrix.txt', col.names = NA, sep = '\t', quote = FALSE)##获得网络
library(igraph)#将邻接矩阵转化为 igraph 网络的邻接列表
#构建含权的无向网络,权重代表了微生物丰度和功能基因丰度间的 spearman 相关系数
g <- graph.adjacency(z1, weighted = TRUE, mode = 'undirected')
g#孤立节点的删除(删除度为 0 的节点)
g <- delete.vertices(g, names(degree(g)[degree(g) == 0]))#该模式下,边权重代表了相关系数
#由于权重通常为正值,因此最好取个绝对值,相关系数重新复制一列
E(g)$correlation <- E(g)$weight
E(g)$weight <- abs(E(g)$weight)#查看网络图
plot(g)#graphml 格式,可使用 gephi 软件打开并进行可视化编辑
write.graph(g, 'network.graphml', format = 'graphml')

plot包出的图

image-20231011200630160

Gephi软件可视化

下载地址:The Open Graph Viz Platform,支持中文

可参考 B站:Gephi可视化进阶:教你绘制一个漂亮的网络图

进一步对上面生成的network.graphml文件用Gephi可视化

  • 导入图形文件
    在这里插入图片描述

  • 导入后初始布局
    image-20231012091637492

  • 更改布局,等节点的位置没有移动变化即可停止
    在这里插入图片描述

  • 计算平均度与模块化

在这里插入图片描述

  • 模块化上色在这里插入图片描述

  • 调整节点大小
    在这里插入图片描述

  • 添加节点标识,去界面左上角数据资料处替换节点名字
    在这里插入图片描述

  • 预览图,这里根据需要可以自行摸索调整,红框圈出了我调整的部分

image-20231011205821998

  • 导出保存

image-20231011210001552

效果展示

结果图细节修改:在AI中嵌入上面导出的pdf格式结果后补充图例细节即可,下方是效果展示

image-20231012092212749

这篇关于基于R和gephi做宏基因组与代谢组等多组学联合network相关性网络图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/220087

相关文章

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

C和指针:结构体(struct)和联合(union)

结构体和联合 结构体 结构体包含一些数据成员,每个成员可能具有不同的类型。 数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问成员。 结构声明 在声明结构时,必须列出它包含的所有成员。 struct tag {member-list} variable-list ; 定义一个结构体变量x(包含

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

深度学习--对抗生成网络(GAN, Generative Adversarial Network)

对抗生成网络(GAN, Generative Adversarial Network)是一种深度学习模型,由Ian Goodfellow等人在2014年提出。GAN主要用于生成数据,通过两个神经网络相互对抗,来生成以假乱真的新数据。以下是对GAN的详细阐述,包括其概念、作用、核心要点、实现过程、代码实现和适用场景。 1. 概念 GAN由两个神经网络组成:生成器(Generator)和判别器(D

AMEsim和Simulink联合仿真生成新的.mexw64液压模型文件

AMEsim和Simulink进行联合仿真非常重要的就是AMEsim经过第四阶段Simulation会在相同文件下面生成一个与AMEsim液压模型相同名字的.mexw64文件,在Simulink进行联合仿真的S-Function需要找的也就是这个文件,只不过输入的时候除了液压模型名字之外,后面有一个短下划线。 简而言之: AMEsim和Simulink联合仿真, 首先是需要AMEsim软

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒 若您觉得内容有价值,还请评论告知一声,以便更多人受益。 转载请注明出处,尊重原创,从我做起。 👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜 在这里,您将

Matlab/Simulink和AMEsim联合仿真(以PSO-PID算法为例)

目录 安装软件和配置环境变量 Matlab/Simulink和AMEsim联合仿真详细流程 非常重要的一点 Simulink模型和AMEsim模型用S-Function建立连接 从AMEsim软件打开Matlab Matlab里的设置 Matlab的.m文件修改(对于PSO-PID算法) 运行程序 我印象中好像做过Matlab/Simulink和AMEsim联合仿真的分享似的

2015多校联合训练第三场Work(hdu5326)

题意: a是b的上司,b是c的上司,则a是c的上司,问构成一个树种,有多人是 k个人的上司 思路: 先找出root,然后dfs一下就行 #include <bits/stdc++.h>#define LL long longusing namespace std;const int MAXN = 1e6;int f[105];int n, k;int mp[101][101];

2015年多校联合训练第三场RGCDQ(hdu5317)

题意: f(i)代表i数中有的素数的种数,给出区间[l,r],求区间内max(gcd(f(i))), 由于i最大是1e6,2*3*5*7*11*13*17>1e6,故最多不超过7种素数, 先打表打出1e6内的素数种数表,然后用sum[i][j]代表1-i个数中,还有j个素数的个数,最后用sum[r][j] - sum[l-1][j]求出区间内含有j个素数的数的个数,暴力找出1,2,3,4,5