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 にどのような属性を指定できるかを調べるには listFilters
と listAttributes
関数を利用する。
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 と合わせて、
この場合、filters
と values
引数を省略する。
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