【问题标题】:How to select genes from FASTA file based on names list in CSV format?如何根据 CSV 格式的名称列表从 FASTA 文件中选择基因?
【发布时间】:2019-01-25 06:20:13
【问题描述】:

我正在寻找一种 R 解决方案,以根据与单独文件 (.csv) 中标头 ID 列表的匹配从 FASTA 文件中提取多个序列。

我是 R 新手,正在尝试找到一种方法: 获取一个包含将在 fasta 标头中的字符串的文件

header_ID_strings 文件如下所示: CAP357_2030、CAP357、CAP3571等……

我的 fasta 文件示例如下所示:

CAP357_2030
GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGG
CAP357
GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT
CAP3571
GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT
CAP357_2040_011wpi_v1v3_1_004_00001_000.2
GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT
CAP357_2050_013wpi_v1v3_1_047_00002_000.4
GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT

我希望输出一个仅包含 header_ID 序列(在 .csv 中)的新 FASTA 文件,并丢弃我未提供的其他 ID。谢谢

【问题讨论】:

  • 我怀疑这是否与一般子集问题不同(因为它是一个 csv 文件)。将文件读入 R 并按 ID 列中的值对其进行子集化。
  • 你能澄清一下输出格式,它是在一个连续的字符串中,还是在序列之后有换行符?

标签: r dataframe fasta


【解决方案1】:

您可以使用filter%in% 将向量与选项列表进行比较:

library(dplyr)

dat <- "CAP357_2030 GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGG CAP357 GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT CAP3571 GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT CAP357_2040_011wpi_v1v3_1_004_00001_000.2 GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT CAP357_2050_013wpi_v1v3_1_047_00002_000.4 GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT"
ids_in_file <- c("CAP357_2030", "CAP357_2050_013wpi_v1v3_1_047_00002_000.4")

vec <- strsplit(dat, " ")[[1]]
df <- tibble(header_id_strings = vec[seq(1, length(vec),2)],
             sequence = vec[seq(2, length(vec),2)])

df %>%
  filter(header_id_strings %in% ids_in_file) %>%
  apply(1, paste, collapse = " ") %>%
  paste(collapse = "\n") %>%
  cat()

给予:

CAP357_2030 GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGG
CAP357_2050_013wpi_v1v3_1_047_00002_000.4 GTAAAATTAACCCCACTCTGTGTCACTCTAAATTGTACAACTGCAAAGGGT

【讨论】:

  • 如果有更好的方法将字符串拆分为 2 列 df,我很高兴得到纠正!
  • 嗨,谢谢,我刚刚解决了这个问题 down=read.csv("down.csv") up=read.csv("up.csv") library("seqinr") allgene
  • 没问题,如果您认为这是解决您问题的最佳方案,请up-vote and accept我的回答。
猜你喜欢
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
相关资源
最近更新 更多