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

基于基因匹配关联通路并筛选的R语言生物信息数据处理需求

解决方案

步骤概述

  1. 预处理通路数据:为每个基因保留P.DE值最小的通路条目
  2. 将GRanges对象转换为数据框进行匹配操作
  3. 匹配基因与通路,过滤无匹配的行,最终转回GRanges(可选)

代码实现

首先加载所需依赖包:

library(GenomicRanges)
library(dplyr)

1. 过滤通路数据(保留每个基因的最小P.DE通路)

# 按基因分组,筛选每组中P.DE最小的通路;若有多个相同最小值,取第一行
gst_filtered <- gst.region.bp.hyper %>%
  group_by(SigGenesInSet) %>%
  filter(P.DE == min(P.DE)) %>%
  slice(1) %>%
  ungroup() %>%
  select(SigGenesInSet, TERM)

2. 处理GRanges对象并匹配通路

# 将GRanges转换为数据框,方便后续匹配
dmrcate_df <- as.data.frame(dmrcate.granges.hyper)

# 匹配基因与通路,过滤无匹配结果的行,重命名列名为Pathway
dmrcate_df_processed <- dmrcate_df %>%
  left_join(gst_filtered, by = c("overlapping.genes" = "SigGenesInSet")) %>%
  filter(!is.na(TERM)) %>%
  rename(Pathway = TERM)

# 转换回GRanges对象(如果需要保持原数据类型)
dmrcate.granges.hyper_processed <- makeGRangesFromDataFrame(
  dmrcate_df_processed, 
  keep.extra.columns = TRUE
)

特殊情况处理

如果overlapping.genes是包含多个基因的字符串(例如逗号分隔格式),需要先拆分再匹配:

library(tidyr)

# 拆分多基因字符串并展开数据框
dmrcate_df <- dmrcate_df %>%
  separate_rows(overlapping.genes, sep = ",") %>%
  # 匹配通路数据
  left_join(gst.region.bp.hyper, by = c("overlapping.genes" = "SigGenesInSet")) %>%
  # 按原基因组区间分组,保留每组中P.DE最小的通路
  group_by(seqnames, start, end, strand) %>%
  filter(P.DE == min(P.DE, na.rm = TRUE)) %>%
  slice(1) %>%
  ungroup() %>%
  filter(!is.na(TERM)) %>%
  rename(Pathway = TERM)

# 转回GRanges对象
dmrcate.granges.hyper_processed <- makeGRangesFromDataFrame(
  dmrcate_df, 
  keep.extra.columns = TRUE
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 21:00:14