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

如何构建包含基因互作与疾病关联的基因-疾病网络?

构建基因-疾病关联互作网络的实现方案

我们可以用R语言的igraph包快速构建包含基因互作、基因-疾病关联的混合网络,以下是针对你提供的示例数据的完整实现流程:

1. 加载依赖包

library(igraph)

2. 数据预处理(含示例数据)

先处理示例数据,若你的数据是本地文件,替换为read.csv/read.table读取即可:

# 基因互作列表(示例数据)
first_column = c("ENSG00000142192", "ENSG00000140575", "ENSG00000165588", "ENSG00000165588", "ENSG00000213551", "ENSG00000213551","ENSG00000197153")
second_column = c("ENSG00000074800", " ENSG00000115966", "ENSG00000186908", "ENSG00000135446", "ENSG00000273983", "ENSG00000274267","ENSG00000213551")
df2 = data.frame(first_column, second_column, stringsAsFactors = FALSE)
# 清理基因ID中可能存在的空格
df2$second_column = trimws(df2$second_column)

# 基因-疾病关联列表(示例数据)
first_column = c("ENSG00000213551","ENSG00000165588","ENSG00000213551")
second_column = c("Malignant neoplasm of breast","Malignant neoplasm of breast","Schizophrenia")
df1 = data.frame(first_column, second_column, stringsAsFactors = FALSE)

# 合并边表并标记边类型
gene_gene_edges = df2
colnames(gene_gene_edges) = c("from", "to")
gene_gene_edges$type = "基因-基因互作"

gene_disease_edges = df1
colnames(gene_disease_edges) = c("from", "to")
gene_disease_edges$type = "基因-疾病关联"

all_edges = rbind(gene_gene_edges, gene_disease_edges)

3. 创建网络对象并设置属性

# 创建无向图(若为有向互作,将directed设为TRUE)
g = graph_from_data_frame(all_edges, directed = FALSE)

# 标记节点类型:区分基因(含ENSG前缀)和疾病
V(g)$node_type = ifelse(grepl("ENSG", V(g)$name), "基因", "疾病")

# 设置节点颜色:基因用蓝色,疾病用红色
V(g)$color = ifelse(V(g)$node_type == "基因", "#619CFF", "#F8766D")

# 设置边颜色:基因互作用黑色,基因-疾病关联用灰色
E(g)$color = ifelse(E(g)$type == "基因-基因互作", "black", "gray")

4. 可视化网络

# 用KK布局绘制网络,可替换为layout_nicely/layout_with_fr等布局
plot(g, 
     vertex.size = 12,          # 节点大小
     vertex.label.cex = 0.8,    # 标签字号
     vertex.label.color = "black",
     edge.width = 1.5,          # 边宽度
     layout = layout_with_kk)

# 添加图例说明
legend("bottomright", 
       legend = c("基因", "疾病", "基因-基因互作", "基因-疾病关联"),
       col = c("#619CFF", "#F8766D", "black", "gray"),
       pch = c(19, 19, NA, NA),
       lty = c(NA, NA, 1, 1),
       bty = "n",
       cex = 0.8)

额外说明

  • 若节点数量过多导致标签重叠,可缩小vertex.label.cex或设置vertex.label = NA隐藏标签,用tkplot(g)打开交互式窗口查看细节。
  • 可根据需求调整节点颜色、边样式、布局算法,优化网络可视化效果。

内容的提问来源于stack exchange,提问作者TNAU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:01:13