biomaRt

BioMart は Ensembl、Uniprot や HapMap などの主要なデータベースにアクセするためのインターフェースを提供している。統一されたインターフェースで様々なデータベースからほしいデータを検索することができる。また、データの検索のみならず ID マッピングもできる。例えば、RefSeq ID から Ensembl ID に変換できたりする。 R / Bioconductor の biomaRt パッケージは、R を利用してデータベースに対して検索を行えるようにした。

biomaRt で利用できるデータベースや属性

BioMart には 50 以上のデータベースが用意されている。データベースの名前とその説明を listMarts 関数を利用して確認できる。listMarts で調べた結果の 1 列目がデータベースの名前であり、 biomaRt の useMart 関数でデータベースを指定する際に利用する。

head(listMarts())
##               biomart                             version
## 1             ensembl        ENSEMBL GENES 79 (SANGER UK)
## 2                 snp    ENSEMBL VARIATION 79 (SANGER UK)
## 3          regulation   ENSEMBL REGULATION 79 (SANGER UK)
## 4                vega                VEGA 59  (SANGER UK)
## 5       fungi_mart_26           ENSEMBL FUNGI 26 (EBI UK)
## 6 fungi_variations_26 ENSEMBL FUNGI VARIATION 26 (EBI UK)

データベースを選択したら、そのデータベース中で利用可能なデータを調べることができる。例えば、Ensembl データベースを利用する場合、Ensembl データベース中にはどのような生物種のデータが含まれているかなどを調べることができる。

db <- useMart("ensembl")
head(listDatasets(db))
##                          dataset                                description version
## 1         oanatinus_gene_ensembl     Ornithorhynchus anatinus genes (OANA5)   OANA5
## 2        cporcellus_gene_ensembl            Cavia porcellus genes (cavPor3) cavPor3
## 3        gaculeatus_gene_ensembl     Gasterosteus aculeatus genes (BROADS1) BROADS1
## 4         lafricana_gene_ensembl         Loxodonta africana genes (loxAfr3) loxAfr3
## 5 itridecemlineatus_gene_ensembl Ictidomys tridecemlineatus genes (spetri2) spetri2
## 6        choffmanni_gene_ensembl        Choloepus hoffmanni genes (choHof1) choHof1
#### 32          hsapiens_gene_ensembl             Homo sapiens genes (GRCh38.p2)  GRCh38.p2

1 列目には Ensembl データベースで利用可能なデータセットの名前が表示される。例えば、ヒトのデータを利用したい場合は以下のように指定する。

hg <- useDataset("hsapiens_gene_ensembl", mart = db)

biomaRt の検索式の作り方

biomaRt を利用してデータベースに対して検索する場合は getBM 関数を利用する。getBM を利用する上で、4 つのオプションを与える必要がある。4 つのオプションはそれぞれ value, filter, attributes, mart である。

  • value - 検索条件(検索キーワード)
  • filters - データベース検索の際に、条件で制限したい属性を指定する。value で指定したキーワードの属性。
  • attributes - データベース検索の結果のうち、受け取りたい属性を指定する。
  • mart - useMart で作成したオブジェクトを与える。

filters と attributes にどのような属性を指定できるかを調べるには listFilterslistAttributes 関数を利用する。

head(listFilters(hg))
##              name     description
## 1 chromosome_name Chromosome name
## 2           start Gene Start (bp)
## 3             end   Gene End (bp)
## 4      band_start      Band Start
## 5        band_end        Band End
## 6    marker_start    Marker Start

head(listAttributes(hg))
##                    name           description
## 1       ensembl_gene_id       Ensembl Gene ID
## 2 ensembl_transcript_id Ensembl Transcript ID
## 3    ensembl_peptide_id    Ensembl Protein ID
## 4       ensembl_exon_id       Ensembl Exon ID
## 5           description           Description
## 6       chromosome_name       Chromosome Name

では、実際にいくつかの Ensembl ID を与えて、その染色体名、遺伝子の開始位置と終了位置を検索してみる。

ensid <- c("ENSG00000000003", "ENSG00000000457", "ENSG00000000938",
           "ENSG00000006327", "ENSG00000011405", "ENSG00000001497")

db <- useMart("ensembl")
hg <- useDataset("hsapiens_gene_ensembl", mart = db)

res <- getBM(attributes = c("ensembl_gene_id", "start_position", "end_position"),
             filters = "ensembl_gene_id", 
             values = ensid,
             mart = hg)
res
##   ensembl_gene_id start_position end_position
## 1 ENSG00000000003      100627109    100639991
## 2 ENSG00000000457      169849631    169894267
## 3 ENSG00000000938       27612064     27635277
## 4 ENSG00000001497       65512582     65534775
## 5 ENSG00000006327        3018445      3022383
## 6 ENSG00000011405       17077730     17207983

Ensembl ID から GO term を検索する

biomaRt を利用して、Ensembl ID から GO term accession を検索する例。


ensid <- c("ENSG00000000003", "ENSG00000000457", "ENSG00000000938",
           "ENSG00000006327", "ENSG00000011405", "ENSG00000001497")

db <- useMart("ensembl")
hg <- useDataset("hsapiens_gene_ensembl", mart = db)

res <- getBM(attributes = c("ensembl_gene_id", "go_id"),
             filters = "ensembl_gene_id", 
             values = ensid,
             mart = hg)

head(res)
##   ensembl_gene_id      go_id
## 1 ENSG00000011405 GO:0005524
## 2 ENSG00000011405 GO:0005634
## 3 ENSG00000011405 GO:0005737
## 4 ENSG00000011405 GO:0005794
## 5 ENSG00000011405 GO:0005829
## 6 ENSG00000011405 GO:0005886

tail(res)
##     ensembl_gene_id      go_id
## 189 ENSG00000000003 GO:1901223
## 190 ENSG00000000003 GO:0005575
## 191 ENSG00000000003 GO:0005576
## 192 ENSG00000000003 GO:0043226
## 193 ENSG00000000003 GO:0008150
## 194 ENSG00000000003 GO:0003674

Ensembl ID から Entrez 遺伝子 ID を検索する

biomaRt を利用して、Ensembl ID から GO term accession と Entrez ID の両方を同時に検索する例。

ensid <- c("ENSG00000000003", "ENSG00000000457", "ENSG00000000938",
           "ENSG00000006327", "ENSG00000011405", "ENSG00000001497")

db <- useMart("ensembl")
hg <- useDataset("hsapiens_gene_ensembl", mart = db)

res <- getBM(attributes = c("ensembl_gene_id", "entrezgene", "go_id"),
             filters = "ensembl_gene_id", 
             values = ensid,
             mart = hg)

head(res)
##   ensembl_gene_id entrezgene      go_id
## 1 ENSG00000011405       5286 GO:0005524
## 2 ENSG00000011405       5286 GO:0005634
## 3 ENSG00000011405       5286 GO:0005737
## 4 ENSG00000011405       5286 GO:0005794
## 5 ENSG00000011405       5286 GO:0005829
## 6 ENSG00000011405       5286 GO:0005886

tail(res)
##     ensembl_gene_id entrezgene      go_id
## 189 ENSG00000000003       7105 GO:1901223
## 190 ENSG00000000003       7105 GO:0005575
## 191 ENSG00000000003       7105 GO:0005576
## 192 ENSG00000000003       7105 GO:0043226
## 193 ENSG00000000003       7105 GO:0008150
## 194 ENSG00000000003       7105 GO:0003674

シロイヌナズナの遺伝子 ID を取得

遺伝子を表す ID として、Entrez ID, Ensembl ID, RefSeq mRNA や遺伝子名などがある。これらの ID を一括に取得することができる。また、ここではこれらの ID と合わせて、 この場合、filtersvalues 引数を省略する。

db <- useMart("plants_mart_26")
ta <- useDataset("athaliana_eg_gene", mart = db)

res <- getBM(attributes = c("ensembl_gene_id", "entrezgene", "tair_symbol", "tair_locus"), mart = ta)

dim(res)
## [1] 34486     4

head(res)
##   ensembl_gene_id entrezgene tair_symbol tair_locus
## 1       AT3G18710     821402       PUB29  AT3G18710
## 2       AT4G25880     828694       APUM6  AT4G25880
## 3       AT1G71695     843498              AT1G71695
## 4       AT1G32045         NA              AT1G32045
## 5       AT5G41480     834149        EMB9  AT5G41480
## 6       AT5G15008    6240278              AT5G15008