Как сохранить Protein ID при получении кодирующих последовательностей с помощью Rentrez

У меня есть несколько идентификаторов белков, и мне нужно получить соответствующие кодирующие последовательности (CDS). Мне удалось получить CDS, но имена каждой последовательности меняются с XP* на XM*, и мне нужно сохранить заголовок XP* для каждой последовательности.

В основном это выглядит так:

library(renters)
search1 <- entrez_search(db="protein", term="XP_012370245[Accn]")
links <- entrez_link(dbfrom="protein", db="nuccore", id=search1$ids)
rec <- entrez_fetch(db="nuccore", rettype="fasta", id=links$links$protein_nuccore_mrna[1])

И вывод выглядит так:

> rec
[1] ">XM_012514791.1 PREDICTED: Octodon degus Hermansky-Pudlak syndrome 6 (Hps6), mRNA
\nATGCAGAGGAAAAACTTTATGTCATTCTTCACAGGCTTCCTGGAGAAGCGGGCCTGGCCGGAGGCCCGCG\nCCGCGCCGCTGGACGCCTTCTTCCTGGCGTGGCCGGCGCAGCCCGCGGTGGCGCTGGTGTGGGAGAGCGG (...)

Есть ли способ сохранить идентификатор белка (XP_012370245) вместо идентификатора нуклеотида (XM_012514791.1)? Что-то вроде:

> rec
[1] ">XP_012370245
 \nATGCAGAGGAAAAACTTTATGTCATTCTTCACAGGCTTCCTGGAGAAGCGGGCCTGGCCGGAGGCCCGCG\nCCGCGCCGCTGGACGCCTTCTTCCTGGCGTGGCCGGCGCAGCCCGCGGTGGCGCTGGTGTGGGAGAGCGG (...)

Я сделал это с пакетом BioMart R (biomaRt), но с Rentrez, кажется, сложнее.

Любое предложение очень приветствуется, спасибо!

1 ответ

Решение

Это ответ Дэвида Винтера из репозитория rentrez github:

Я не думаю, что есть какой-либо способ сделать это на конце NCBI (нуклеотидные записи имеют идентификаторы нуклеотидов).

Вы, вероятно, можете что-то приготовить, чтобы заменить идентификаторы через stringr или функции манипулирования базовой строкой. Это работает для вашего примера (хотя вы, вероятно, захотите добавить некоторые проверки, чтобы убедиться, что вы действительно находите последовательности CDS и т. Д.):

fetch_cds <- function(prot_acc){
    search1 <- entrez_search(db="protein", term=paste0(prot_acc, "[Accn]"))
    links <- entrez_link(dbfrom="protein", db="nuccore", id=search1$ids)
    rec <- entrez_fetch(db="nuccore", rettype="fasta", id=links$links$protein_nuccore_mrna[1])
    sub("XM_\\d+\\.\\d", prot_acc, rec)    
}

cat(substr(fetch_cds("XP_012370245"), 1, 500), "\n")

>XP_012370245 PREDICTED: Octodon degus Hermansky-Pudlak syndrome 6 (Hps6), mRNA
ATGCAGAGGAAAAACTTTATGTCATTCTTCACAGGCTTCCTGGAGAAGCGGGCCTGGCCGGAGGCCCGCG
CCGCGCCGCTGGACGCCTTCTTCCTGGCGTGGCCGGCGCAGCCCGCGGTGGCGCTGGTGTGGGAGAGCGG
CCTGGCGGAGCTCTGGGGTGCCGACCTGGGGTCCGCCTGGAGGCGGCTTCACGCCACCGAACTGTGTCCG
CGCGGCGCAGTCCGCGTGGTGGCAGCGGTGGCGCCGCGGGGCCGCCTGGTGTGGTGCGAGGAGCGCCCGG
GCGCGGGCGGACGCCGCGTGTGCGTCCGCACCCTAGAGCCTGGCGGCGAGACTGGTGCCCGCCTGGGCCG
CACGCACGTCCTGCTGCACCACTGCCCGCCCTTCCACCTGCTGGCCTCGCGCAAGGACGTCTTCC
Другие вопросы по тегам