LoginSignup
3
2

More than 3 years have passed since last update.

RでEnsembl gene IDからEntrez Gene ID (NCBI Gene ID)に変換する

Last updated at Posted at 2020-04-08

目的

たとえばEnsemblのGTFをつかってでてきたRNA-seqからのDEGのリストがあって、GOstatsなどでGO解析をしたいのでEntrez Gene ID (NCBI Gene ID; 以下EG)に変換したい。

準備

ヒトならBioconductorにあるorg.Hs.eg.dbをインストールしておく。
マウスならorg.Mm.eg.dbになる。

※ちなみに以下はR version 3.5.1 (2018-07-02)でやっています

library(org.Hs.eg.db)
ENSEMBL <- c( "ENSG00000162591","ENSG00000162745","ENSG00000178882","ENSG00000285347")
ENTREZ <- as.vector(unlist(as.list(org.Hs.egENSEMBL2EG)[ENSEMBL]))

EGが重複している可能性はあるので、ここではしていないけどsortしたりuniqueしたりしておくといいかも。
結果は以下のようにこうなっているはず。

# 実行例

> ENTREZ
[1] "1953"      "25903"     "144347"    "100533183"

# ENSG0000017888 に相当するEGが2つでてきて、ENSG00000285347 に相当するEGが出てきていないことに注意

<注意>

  • ENSG00000178882のように、リストのなかに2つ以上のEntrez Gene IDがある場合でも展開してくれるけど、かわりにそれぞれにnames属性があらたに作成される。
  • ENSG00000285347のようにそもそもエントリがないものは、なにもなかったように扱われる。

as.vecter()をつけずに下記のようにつかっても元々vectorとして返ってくるけど、「ENSG00000178882」にはEGとして「144347」と「100533183」があるので、それぞれにuniqueなIDとして末尾に12が付加されて「ENSG0000017888*1*」と「ENSG0000017888*2* 」がnames属性としてついている。ので後々間違えやすいので、names(x) <- NULLなどをしてnamesを消しておくかas.vector()をかませておく。

# 実行例

> as.list(org.Hs.egENSEMBL2EG)["ENSG00000178882"]
$ENSG00000178882
[1] "144347"    "100533183"

> as.list(org.Hs.egENSEMBL2EG)["ENSG00000285347"]
$<NA>
NULL

> unlist(as.list(org.Hs.egENSEMBL2EG)[TEST])

ENSG00000162591  ENSG00000162745 ENSG000001788821 ENSG000001788822
         "1953"          "25903"         "144347"      "100533183"

# ENSG0000017888 が2つでてきて、ENSG00000285347 がなくなっていることに注意

名前が2EG表記のデータであれば同様にできるので、org.Hs.egENSEMBL2EGだけでなくorg.Hs.egSYMBOL2EG, org.Hs.egREFSEQ2EG, org.Hs.egENSEMBLTRANS2EG, org.Hs.egENSEMBLPROT2EG, org.Hs.egACCNUM2EG, org.Hs.egOMIM2EGなどでもできる。

逆にもちろん応用すればEGからほかのIDの参照もできる。(org.Hs.egENSEMBLorg.Hs.egACCNUMorg.Hs.egSYMBOLなどなど)

使えそうなのは以下で調べてみる。

ls("package:org.Hs.eg.db")
# 実行例
> ls("package:org.Hs.eg.db")
 [1] "org.Hs.eg"                "org.Hs.eg_dbconn"
 [3] "org.Hs.eg_dbfile"         "org.Hs.eg_dbInfo"
 [5] "org.Hs.eg_dbschema"       "org.Hs.eg.db"
 [7] "org.Hs.egACCNUM"          "org.Hs.egACCNUM2EG"
 [9] "org.Hs.egALIAS2EG"        "org.Hs.egCHR"
[11] "org.Hs.egCHRLENGTHS"      "org.Hs.egCHRLOC"
[13] "org.Hs.egCHRLOCEND"       "org.Hs.egENSEMBL"
[15] "org.Hs.egENSEMBL2EG"      "org.Hs.egENSEMBLPROT"
[17] "org.Hs.egENSEMBLPROT2EG"  "org.Hs.egENSEMBLTRANS"
[19] "org.Hs.egENSEMBLTRANS2EG" "org.Hs.egENZYME"
[21] "org.Hs.egENZYME2EG"       "org.Hs.egGENENAME"
[23] "org.Hs.egGO"              "org.Hs.egGO2ALLEGS"
[25] "org.Hs.egGO2EG"           "org.Hs.egMAP"
[27] "org.Hs.egMAP2EG"          "org.Hs.egMAPCOUNTS"
[29] "org.Hs.egOMIM"            "org.Hs.egOMIM2EG"
[31] "org.Hs.egORGANISM"        "org.Hs.egPATH"
[33] "org.Hs.egPATH2EG"         "org.Hs.egPFAM"
[35] "org.Hs.egPMID"            "org.Hs.egPMID2EG"
[37] "org.Hs.egPROSITE"         "org.Hs.egREFSEQ"
[39] "org.Hs.egREFSEQ2EG"       "org.Hs.egSYMBOL"
[41] "org.Hs.egSYMBOL2EG"       "org.Hs.egUCSCKG"
[43] "org.Hs.egUNIGENE"         "org.Hs.egUNIGENE2EG"
[45] "org.Hs.egUNIPROT"

付記

この方法を覚えておくと、RNA-seqなり他のプラットフォームなりで解析したあと、GOstatsなどをつかってGO解析したいときに、それぞれで必要なbackgroundのIDセットも変わる筈なので、そういうbackgroundのIDセットを用意するときにも利用できる。

(具体的には単純にもともとのGTFに含まれているもののみをbackgroundにしないと、backgroundが大きすぎてFDRなどの多重検定の補正で過小評価されるのを避けたい)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2