Как отследить, какой идентификатор белка связан с каким идентификатором гена с помощью Rentrez

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

У меня есть следующий код R:

library(rentrez)
Prot_ids <- c("XP_012370245.1","XP_004866438.1","XP_013359583.1")
links <- entrez_link(dbfrom="protein", db="nuccore", id=Prot_ids, by_id = TRUE)

И затем я использовал эту команду, чтобы "сопоставить" идентификаторы белка с идентификаторами CDS:

lapply(links, function(x) x$links$protein_nuccore_mrna)

[[1]]
[1] "820968283"

[[2]]
[1] "861491027"

[[3]]
[1] "918634580"

Однако, как вы можете видеть, аргумент 'by_id=TRUE' просто составляет список из трех объектов elink, но теперь я потерял идентификаторы белка.

Я хотел бы что-то вроде:

Идентификатор белка XP_012370245.1 XP_004866438.1 XP_013359583.1

Идентификатор CDS XM_004866381.2 XM_012514791.1 XM_013504129.1

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

1 ответ

Решение
library(rentrez)
Prot_ids <- c("XP_012370245.1","XP_004866438.1","XP_013359583.1")
links <- entrez_link(dbfrom="protein", db="nuccore", id=Prot_ids, by_id = TRUE)
linkids <- sapply(links, function(x) x$links$protein_nuccore_mrna)
##Get the summary for the gi record
linkNuc <- entrez_summary(id = linkids, db = "nuccore")

df <- data.frame(ProtIDs = Prot_ids[rep(sapply(links, function(x) length(x$links$protein_nuccore_mrna)))], 
                 linkids, 
                 NucID=sapply(strsplit(sapply(linkNuc, "[[", "extra"), split = "\\|"), "[", 4))

#                 ProtIDs   linkids          NucID
#820968283 XP_012370245.1 820968283 XM_012514791.1
#861491027 XP_012370245.1 861491027 XM_004866381.2
#918634580 XP_012370245.1 918634580 XM_013504129.1
Другие вопросы по тегам