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

如何基于键值数据框提取同一复合物内基因的相关性?

问题描述

现有两个数据需要处理:

  1. 基因-基因相关矩阵:尺寸为1484×1484,矩阵中每个单元格对应I、J基因间的相关系数;
  2. 键值型数据框:包含复合物名称与Protein_ID的对应关系,示例如下:
Complex            Protein_ID
1                      BCL6-HDAC4 complex       Bcl6
125                    BCL6-HDAC5 complex      Hdac5
249                    BCL6-HDAC7 complex       Bcl6
373 Multisubunit ACTR coactivator complex      Ep300
497                   Condensin I complex       Smc2
621                                BLOC-3       Hps4

需要提取同一复合物所属基因间的相关性值,生成以复合物名称、相关性值为列的新数据框,目标格式示例如下:

# this is a simulated data.frame

                    Complex                                Correlation values
                    BCL6-HDAC4 complex                     0.64
                    BCL6-HDAC4 complex                     -0.25
                    Multisubunit ACTR coactivator complex  0.31
                    Multisubunit ACTR coactivator complex  0.30
实现方法(基于R语言)

以下是具体的代码实现步骤:

# 加载必要的包
library(dplyr)
library(tidyr)

# 假设相关矩阵名为cor_matrix,键值数据框名为complex_proteins

# 步骤1:按复合物分组,获取每个复合物的蛋白质列表,过滤仅含单个蛋白的复合物
complex_groups <- complex_proteins %>%
  group_by(Complex) %>%
  summarise(proteins = list(Protein_ID)) %>%
  filter(lengths(proteins) >= 2)

# 步骤2:生成蛋白两两组合,提取对应相关系数并整理格式
result <- complex_groups %>%
  mutate(pairs = map(proteins, ~ combn(.x, 2, simplify = FALSE))) %>%
  unnest(pairs) %>%
  mutate(cor_value = map_dbl(pairs, ~ cor_matrix[.x[1], .x[2]])) %>%
  select(Complex, `Correlation values` = cor_value)

# 查看结果
head(result)

代码说明:

  • group_by + summarise(list(...)):将同一复合物的Protein_ID聚合成列表
  • filter(lengths(proteins)>=2):排除无法生成配对的单蛋白复合物
  • combn(..., 2):生成蛋白列表的所有两两非重复组合
  • map_dbl:从相关矩阵中提取每对蛋白的相关系数
  • select:重命名列并保留所需字段

注:确保相关矩阵的行名、列名与Protein_ID的取值完全匹配,矩阵格式或data.frame格式均可直接使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:26:22