You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R的igraph为带组织信息的蛋白互作数据构建无向图

问题解答

数据结构选择结论

优先选择边列表作为输入结构,完全可以保留所有组织特异性标注信息,不推荐使用邻接矩阵,原因如下:

  • 邻接矩阵单单元格仅能存储单一数值,无法同时存储多个组织的二元标注,若按组织单独构建邻接矩阵,组织数量较多时管理成本极高
  • 20万条互作对应的蛋白节点数量通常在数千到数万级别,邻接矩阵会产生极高的稀疏度,内存占用是边列表的数十到上百倍,运行效率极低
  • 边列表支持直接绑定自定义边属性,可直接将所有组织标注作为边属性存储在igraph对象中,后续按组织筛选、统计都更便捷

具体实现代码示例

# 加载依赖包
library(igraph)
library(dplyr)

# 假设df为通过DBI/RMySQL从MySQL读取的原始互作数据表
# 提取所有组织列的列名
tissue_cols <- setdiff(colnames(df), c("symbol1", "symbol2"))

# 预处理:过滤所有组织标注均为0的无效互作行
df_clean <- df %>%
  filter(rowSums(across(all_of(tissue_cols))) > 0)

# 基于边列表构建无向图,所有组织列自动转为边属性存储
ppi_graph <- graph_from_data_frame(df_clean, directed = FALSE)

常用操作示例

如果需要提取单组织的特异性PPI子网络,直接按边属性筛选即可:

# 提取骨组织(bone)的特异性互作子网络
bone_ppi <- subgraph.edges(ppi_graph, which(E(ppi_graph)$bone == 1))

# 提取肾上腺(adrenal_gland)的特异性互作子网络
adrenal_ppi <- subgraph.edges(ppi_graph, which(E(ppi_graph)$adrenal_gland == 1))

内容的提问来源于stack exchange,提问作者bi.nb21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:09:01