Проверьте, содержит ли вектор строк слова, созданные из двух других слов - PullRequest
0 голосов
/ 05 ноября 2018

У меня очень-очень длинный вектор нитей (пептидов).

head(unique(pseq_list))
#[1] "GPPNHHMGPMSER"  "SLSGQCHHHGENLR" "HSSGQDKPHETYR"    
#"DHDKPHQQSDK"    "AHMESDK"        "HISESHEK"  

Я хочу проверить, есть ли в этом векторе пептиды, созданные двумя другими пептидами. Например, если есть "AHMESDK", "AHME" и "SDK", я хочу это знать. Я попробовал grepl функцию, но, вероятно, мой вектор слишком длинный (?). Кроме того, как сохранить такие результаты?

Если было бы слишком сложно проверить, существует ли "AHMESDK" = "AHME" + "SDK", было бы неплохо узнать хотя бы, есть ли в векторе пептиды, содержащие другие (например, "HISESHEK" и "SES").


Контекст предоставлен @ Quant в комментариях:

В качестве заметки для всех без биологического фона.

Пептиды - это макромолекулы. Наше тело может составлять эти макромолекулы, "склеивая" разные аминокислоты вместе. Последовательность склеенных вместе аминокислот называется первичной структурой пептида, и в биоинформатике часто используется однобуквенный код, см. rpepti.com , используемый для представления первичной структуры.

Таким образом, AHMESDK просто означает пептид, состоящий из аланина, гистидина и т. Д.

1 Ответ

0 голосов
/ 05 ноября 2018

Данные:

pseq<-c("GPPNHHMGPMSER", "SLSGQCHHHGENLR", "HSSGQDKPHETYR", "DHDKPHQQSDK", "AHMESDK", "AHME", "SES", "HISESHEK")

Два подхода:

Подход 1:

peplist<-sapply(pseq,grep, pseq, value=TRUE)

Результат:

$GPPNHHMGPMSER
[1] "GPPNHHMGPMSER"

$SLSGQCHHHGENLR
[1] "SLSGQCHHHGENLR"

$HSSGQDKPHETYR
[1] "HSSGQDKPHETYR"

$DHDKPHQQSDK
[1] "DHDKPHQQSDK"

$AHMESDK
[1] "AHMESDK"

$AHME
[1] "AHMESDK" "AHME"   

$SES
[1] "SES"      "HISESHEK"

$HISESHEK
[1] "HISESHEK" 

Это дает вам список, где для каждого элемента вы получаете список элементов, в которых он существует. Затем мы можем создать список только тех пептидов, которые присутствуют в других пептидах:

peplist[sapply(peplist,length)>1]

Подход 2:

pepcombs<-expand.grid(pseq,pseq) %>%
  apply(1,paste0,collapse="")
pseq[pseq %in% pepcombs]

Это даст вам список пептидов, которые могут быть сконструированы путем объединения двух других пептидов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...