如何构建包含基因互作与疾病关联的基因-疾病网络?
构建基因-疾病关联互作网络的实现方案
我们可以用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
相关产品推荐
相关产品推荐

