2017-05-23 2 views
1

私はタンパク質IDの束を持っており、タンパク質IDを失うことなく対応するコード配列(CDS)を取得したいと思います。私は対応するCDSをダウンロードすることができましたが、残念ながら、CDS IDはNCBIのタンパク質IDと大きく異なります。どのタンパク質IDがどの遺伝子IDにリンクされているのかをrentrez

私は、次のRコードがあります。

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) 

をそして、私はCDSのIDが「一致」タンパク質IDに、このコマンドを使用:

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

[[1]] 
[1] "820968283" 

[[2]] 
[1] "861491027" 

[[3]] 
[1] "918634580" 

をただし、引数を見ることができるように'by_id = TRUE'は3つのelinkオブジェクトのリストを作成するだけですが、今はタンパク質IDを失いました。

私が望むようなもの:

プロテインID XP_.1 XP_004866438.1 XP_013359583.1

CDS ID XM_004866381.2 XM_012514791.1 XM_013504129.1

任意の提案ありがとう!

+0

再現可能な例を作成してください。例えば。 'links2'はどこから来たのですか? – emilliman5

+1

長さと順序が維持されている場合は、常に '名前(リンク)< - Prot_ids'を実行できます。 – Osdorp

+0

ああ申し訳ありません、 'links'だけです、' lapply(links、function(x)x $ links $ protein_nuccore_mrna) 'でなければなりません。私はそれを修正します。ありがとう! – Santiago

答えて

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

これはまさに私が探していたものです、ありがとう! – Santiago

関連する問題