2017-05-23 4 views
1

Ich habe eine Reihe von Protein-IDs und ich möchte die entsprechenden codierenden Sequenzen (CDS) holen, ohne die Protein-ID zu verlieren. Ich habe es geschafft, die entsprechenden CDS herunterzuladen, aber CDSs IDs sind leider sehr verschieden von Protein IDs in NCBI.Wie zu verfolgen, welche Protein-ID mit welcher Gen-ID mit Rentrez verbunden ist

Ich habe folgende R-Code:

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

Und dann verwendet, ich diesen Befehl "Übereinstimmung" Protein-IDs mit CDS-IDs:

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

[[1]] 
[1] "820968283" 

[[2]] 
[1] "861491027" 

[[3]] 
[1] "918634580" 

Doch wie Sie das Argument sehen 'by_id = TRUE' mach einfach eine Liste von drei elink-Objekten, aber jetzt habe ich die Protein-IDs verloren.

Ich möchte so etwas wie:

Protein ID XP_.1 XP_004866438.1 XP_013359583.1

CDS ID XM_004866381.2 XM_012514791.1 XM_013504129.1

Jeder Vorschlag ist sehr willkommen, danke !!

+0

bitte ein reproduzierbares Beispiel. Z.B. Woher kommt 'links2'? – emilliman5

+1

Sie können immer 'Namen (Links) <- Prot_ids' machen, wenn die Länge und Reihenfolge beibehalten wird. – Osdorp

+0

Oh, tut mir leid, ist nur 'links', es sollte' lapply (links, funktion (x) x $ links $ protein_nuccore_mrna) 'sein. Ich werde es reparieren. Vielen Dank! – Santiago

Antwort

1
library(rentrez) 
Prot_ids <- c("XP_.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_.1 820968283 XM_012514791.1 
#861491027 XP_.1 861491027 XM_004866381.2 
#918634580 XP_.1 918634580 XM_013504129.1 
+0

Genau das habe ich gesucht, vielen Dank! – Santiago

Verwandte Themen