Упорядочение символов по более длинной последовательности символов (для упорядочения пептидов по последовательности белка) - PullRequest
1 голос
/ 21 сентября 2019

Я работаю с данными протеома и хотел бы показать экспрессию пептида в соответствии с фактической последовательностью белка.В настоящее время они упорядочены в соответствии с их использованием в количественном выражении (= случайный).Я полагаю, вы можете сделать это с помощью регулярных выражений / stringr & rebus (желательно), но я не могу понять, как.

Вот пример данных, большое спасибо за вашу помощь!

peptides <- data.frame(peptide = c(1,2,3,4),
                   sequence = c("PRDPDPASRTH", "MTLGRRLACLF", "RRARPHAWP", "APNFVMSAAH"),
                   log2quant = c(21, 12, 17, 18))

protein_sequence <- c("MTLGRRLACLFLACVLPALLLGGTALASEIVGGRRARPHAWPFMVSLQLRGGHFCGATLIAPNFVMSAAHCVANVNVRAVRVVLGAHNLSRREPTRQVFAVQRIFENGYDPVNLLNDIVILQLNGSATINANVQVAQLPAQGRRLGNGVQCLAMGWGLLGRNRGIASVLQELNVTVVTSLCRRSNVCTLVRGRQAGVCFGDSGSPLVCNGLIHGIASFVRGGCASGLYPDAFAPVAQFVNWIDSIIQRSEDNPCPHPRDPDPASRTH")


expected_result <- data.frame(peptide = c(1,2,3,4),
                   sequence = c("PRDPDPASRTH", "MTLGRRLACLF", "RRARPHAWP", "APNFVMSAAH"),
                   log2quant = c(21, 12, 17, 18),
                   order = c(4, 1, 2, 3))

ПоследовательностьЯ копирую / вставляю из Uniprot (это белок ELANE).Остальные данные получены из результатов MassSpec.Было бы здорово найти решение для этого, большое спасибо!

1 Ответ

2 голосов
/ 21 сентября 2019

Мы можем использовать str_locate из stringr, чтобы получить местоположение начала (или конца) шаблона в строке protein_sequence и использовать rank, чтобы получить его порядок.

peptides$order <- rank(stringr::str_locate(protein_sequence,peptides$sequence)[, 1])

peptides
#  peptide    sequence log2quant order
#1       1 PRDPDPASRTH        21     4
#2       2 MTLGRRLACLF        12     1
#3       3   RRARPHAWP        17     2
#4       4  APNFVMSAAH        18     3

Убедитесь, что peptides$sequence является символом, а не factor, прежде чем использовать его в str_locate.

...