代谢组数据分析(十四):代谢物组间网络分析(spearman coefficient)

文摘   2024-07-15 17:14   中国香港  

介绍

在代谢物网络分析领域,研究者采用斯皮尔曼系数来定量评估代谢物之间的相关性。该系数作为一种有效的非参数统计工具,能够揭示代谢物间潜在的关联模式,不受它们分布特性的限制。通过计算所有代谢物配对间的斯皮尔曼系数,研究者能够构建出反映代谢物相互关系的网络。

进一步地,基于特定的分组标准,例如不同的生物学状态或样本类别,研究者能够分别构建各个分组的代谢物网络。通过细致地比较这些网络,可以观察到代谢物相互作用模式在不同分组间的变化,进而识别特定条件下代谢途径的调控差异或代谢物的异常表达行为。

此外,对两个代谢网络进行差异性分析,有助于深入理解不同生物学条件下代谢过程的动态变化,为揭示代谢调控机制提供重要线索。这种分析方法不仅增强了我们对代谢网络结构和功能的理解,也为代谢相关疾病的诊断和治疗提供了新的视角。

加载R包

导入所需要的R包,在导入前需要用户自己安装。

library(tidyverse)
library(SummarizedExperiment)
library(patchwork)

# rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 1000 * 1024^2)

grp_names <- c("None", "Mild", "Moderate", "Severe")
grp_colors <- c("#7DD06F", "#844081", "#688EC1", "#C17E73")

导入数据

所需的数据集来自数据预处理差异分析。请确保在后续的数据处理过程中正确配置文件路径,以便顺利访问和使用这些数据。

百度网盘链接: https://pan.baidu.com/s/16aqVYAnjQAqHEV_Ofv-wGQ

提取码: 请关注WX公zhong号_生信学习者_后台发送 代谢组数据 获取提取码

se_norm <- readRDS("./data/Zeybel-2022/result/QC/se_norm.RDS")
se_norm

datSignif <- data.table::fread("./data/Zeybel-2022/result/DA/Metabolites_FC_VIP_ttest.tsv")
class: SummarizedExperiment 
dim: 671 55
metadata(0):
assays(1): ''
rownames(671): Chem_100002945 Chem_100002356 ... Chem_1004 Chem_100015836
rowData names(13): metabolitesID BIOCHEMICAL ... KEGG SampleIDHMDBID
colnames(55): P101001 P101003 ... P101095 P101096
colData names(47): PatientID Gender ... Right_leg_fat_free_mass Right_leg_total_body_water

数据预处理

根据LiverFatClass("None vs Severe")筛选差异的代谢物以及对应的分组指标合并成数据集。

  • 筛选LiverFatClass("None vs Severe")差异的代谢物(t-test: AdjustedPvalue; RawData: Log2FoldChange)

signif_meta <- datSignif %>%
dplyr::filter(AdjustedPvalue < 0.5) %>%
dplyr::filter(abs(Log2FoldChange) > 0)

metadata <- SummarizedExperiment::colData(se_norm) %>%
data.frame()
profile <- SummarizedExperiment::assay(se_norm) %>%
data.frame()

mdat <- metadata %>%
dplyr::filter(LiverFatClass %in% c("None", "Severe")) %>%
dplyr::select(all_of(c("PatientID", "LiverFatClass"))) %>%
dplyr::inner_join(profile %>%
t() %>%
as.data.frame() %>%
dplyr::select(all_of(signif_meta$metabolitesID)) %>%
tibble::rownames_to_column("PatientID"),
by = "PatientID") %>%
tibble::column_to_rownames("PatientID")

head(mdat[, 1:6])

LiverFatClassChem_100015755Chem_503
P101001Severe0.0015186890.001777131
P101003None0.0014850790.001791011
P101007Severe0.0015295290.001746805
P101011Severe0.0015278000.001763077
P101012Severe0.0015027390.001766207
P101021None0.0014801000.001779325

构建网络

生信学习者
生信教程分享,专注数据分析和科研绘图方向欢迎大家关注,也可一起探讨生信问题