Ensemblが返すNCBI Gene IDが一意じゃなかった件について
でまとめた通り、NCBI Gene IDは、Ensemblを経由すると一意なIDではなくなってしまう。
ただし、これは管理している組織も国もポリシーも違うのでしょうがないのかもしれない。
BiomartやbiomaRtパッケージが便利すぎるから使っていたが、
NCBI側が作ったIDを使う以上は、NCBIに検索をかけるのが筋だとも思い直したので、
rentrezパッケージを使って、NCBI Gene IDからGene Symbolの取得を試みた。
ただし、biomaRtほど便利ではなく、数年ぶりにXMLのパースなんてことをやった。
以下のように、Xpath式で階層を下っていけば、目的のGene Symbolにたどり着けた。
install.packages("rentrez", repos="http://cran.r-project.org")
install.packages("XML", repos="http://cran.r-project.org")
library("rentrez")
library("XML")
geneid <- c("6013", "6019")
rln <- entrez_fetch(db="gene", id=geneid, rettype="xml")
rln <- xmlInternalTreeParse(rln)
symbol <- xpathSApply(rln, "//Entrezgene-Set/Entrezgene/Entrezgene_gene/Gene-ref/Gene-ref_locus", xmlValue)
data.frame(
external_gene_name=symbol,
entrezgene=geneid)
# external_gene_name entrezgene
# 1 RLN1 6013
# 2 RLN2 6019
これにより、少なくとも同じNCBI Gene IDに、複数のGene Symbolが着くなんて事はなさそう。