Как выбрать гены из файла FASTA на основе списка имен в формате CSV? - PullRequest
0 голосов
/ 25 января 2019

Я ищу решение R для извлечения нескольких последовательностей из файла FASTA на основе совпадения со списком идентификаторов заголовков в отдельном файле (.csv).

Я новичок в 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

Я ожидаю вывода нового файла FASTA, содержащего только последовательности заголовочных идентификаторов (в .csv), и отбрасываю остальные, идентификаторы которых я не предоставил. Спасибо

1 Ответ

0 голосов
/ 25 января 2019

Вы можете сравнить вектор со списком параметров, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...