1

多くの化学者が直面している厄介な問題は、化合物の CAS 登録番号 (容易にアクセスできない商用データベースに保存されている) を Pubchem 識別子 (公開されている) に変換することです。Pubchem は 2 つの間の変換をサポートしていますが、手動の Web インターフェイスを介してのみサポートされており、公式の PUG REST プログラム インターフェイスはサポートされていません。

Ruby でのソリューションは、e- utilitiesインターフェイスに基づいてここに示されています。with-ruby/

これがどのようにRに変換されるか知っている人はいますか?

編集:以下の回答に基づいて、最もエレガントなソリューションは次のとおりです。

library(XML)
library(RCurl)

CAStocids=function(query) {
  xmlresponse = xmlParse( getURL(paste("http://www.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pccompound&retmax=100&term=",query,sep="") ) )
  cids = sapply(xpathSApply(xmlresponse, "//Id"), function(n){xmlValue(n)})
  return(cids)
}

> CAStocids("64318-79-2")
[1] "6434870" "5282237"

乾杯、トム

4

2 に答える 2

6

これは、R に変換された Ruby コードがそれを行う方法であり、 and を使用RCurlXMLます。

> xmlresponse = xmlParse( getURL("http://www.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pccompound&retmax=100&term=64318-79-2") )

Id ノードを抽出する方法は次のとおりです。

> sapply(xpathSApply(xmlresponse, "//Id"), function(n){xmlValue(n)})
 [1] "6434870" "5282237"

それをすべて関数にラップします....

 convertU = function(query){
    xmlresponse = xmlParse(getURL(
       paste0("http://www.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pccompound&retmax=100&term=",query))) 
    sapply(xpathSApply(xmlresponse, "//Id"), function(n){xmlValue(n)})
 }

> convertU("64318-79-2")
[1] "6434870" "5282237"
> convertU("64318-79-1")
list()
> convertU("64318-78-2")
list()
> convertU("64313-78-2")
[1] "313"

見つからない場合は、おそらくテストが必要です。

于 2014-02-04T12:32:24.607 に答える