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

R语言:如何筛选仅含topological domain的RNAseq序列数据集?

筛选仅含topological domain的序列记录

问题背景

RNAseq分析后得到数据集,其中Sequence Name对应两种类型:topological domain和transmembrane region。需要筛选出仅包含topological domain的序列,移除同时存在两种类型的序列。

原代码尝试用dplyr::filter()筛选类型,但无法处理同一序列对应多类型的情况:

TMHMM_filter <- filter(TMHMM.df, TMHMM.df$Type %in% c("topological domain", "transmembrane domain")) 
head(TMHMM_filter)

这段代码仅移除了transmembrane region记录,但保留了同时包含两种类型的Sequence Name对应的topological domain条目,不符合需求。

原始数据集示例:

Name  Sequence Name                 Type Minimum Maximum Length # Intervals
1   Cytoplasmic (potential) XP_009600001.1   topological domain       1     743    743           1
2   Cytoplasmic (potential) XP_009600003.1   topological domain       1     623    623           1
3   Cytoplasmic (potential) XP_009600004.1   topological domain     360     475    116           1
4 Transmembrane (potential) XP_009600004.1 transmembrane region     339     359     21           1
5 Extracellular (potential) XP_009600004.1   topological domain     155     338    184           1
6 Transmembrane (potential) XP_009600004.1 transmembrane region     134     154     21           1

期望输出:

Name  Sequence Name                 Type Minimum Maximum Length # Intervals
1   Cytoplasmic (potential) XP_009600001.1   topological domain       1     743    743           1
2   Cytoplasmic (potential) XP_009600003.1   topological domain       1     623    623           1

解决方案

核心思路:先找出所有从未出现过transmembrane region类型的Sequence Name,再筛选这些序列对应的topological domain记录。

方法1:分步实现

library(dplyr)

# 1. 筛选出仅含topological domain的序列名称
valid_seq_names <- TMHMM.df %>%
  group_by(`Sequence Name`) %>%
  summarise(has_transmembrane = any(Type == "transmembrane region")) %>%
  filter(!has_transmembrane) %>%
  pull(`Sequence Name`)

# 2. 提取目标记录
TMHMM_filter <- TMHMM.df %>%
  filter(`Sequence Name` %in% valid_seq_names, Type == "topological domain")

head(TMHMM_filter)

方法2:链式紧凑写法

library(dplyr)

TMHMM_filter <- TMHMM.df %>%
  group_by(`Sequence Name`) %>%
  filter(!any(Type == "transmembrane region"), Type == "topological domain") %>%
  ungroup()

代码说明

  • 分组统计:按Sequence Name分组后,用any(Type == "transmembrane region")判断该序列是否存在跨膜区域类型。
  • 筛选有效序列:保留无跨膜区域的序列,再提取这些序列对应的topological domain条目。
  • 链式写法直接在分组内完成筛选,无需单独提取序列名称列表,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:51:16