・お題:ヒト遺伝子のマウスホモログを探してみたい。
・共通祖先由来の遺伝子や形態をホモログと呼ぶらしい。また、種分化の際に分岐したホモログをオルソログと呼ぶらしい。言葉の定義がややこしい。以下参考。
・ヒトでいう●●という遺伝子のマウス版が★★だ、という場合、★★は●●のホモログ(厳密にはオルソログっぽいが、自信がないのでホモログと呼ぶ)になるらしい。なんとなくbiomaRtを使えば調べられそうだと思ってググってみると、確かにできるっぽい。
・試すとエラーが出た。
> human <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")
Ensembl site unresponsive, trying asia mirror
Ensembl site unresponsive, trying useast mirror
> mouse <- useMart("ensembl", dataset = "mmusculus_gene_ensembl")
> getLDS(attributes = c("hgnc_symbol", "chromosome_name", "start_position"),
+ filters = "hgnc_symbol",
+ values = "TP53",
+ mart = human,
+ attributesL = c("chromosome_name", "start_position"),
+ martL = mouse)
Error: biomaRt has encountered an unexpected server error.
Consider trying one of the Ensembl mirrors (for more details look at ?useEnsembl)
・このエラーはQAサイトで報告されており、解決しているらしい。useMart関数でhostを指定すると動くらしい。
> human <- useMart("ensembl", dataset = "hsapiens_gene_ensembl", host = "https://dec2021.archive.ensembl.org/")
> mouse <- useMart("ensembl", dataset = "mmusculus_gene_ensembl", host = "https://dec2021.archive.ensembl.org/")
> getLDS(attributes = c("hgnc_symbol", "chromosome_name", "start_position"),
+ filters = "hgnc_symbol",
+ values = "TP53",
+ mart = human,
+ attributesL = c("chromosome_name", "start_position"),
+ martL = mouse)
・確かに動いたので、複数の遺伝子でやってみる。
> getLDS(attributes = c("external_gene_name"),
+ filters = "external_gene_name",
+ values = c("SPIB", "CD86", "TNF", "LFNG", "PIM1", "TLR1", "BCL6", "ARHGAP11B"),
+ mart = human,
+ attributesL = c("external_gene_name"),
+ martL = mouse)
・この一番下のARHGAP11Bという遺伝子は、ヒトにしかない遺伝子として知られている。正確には、マウスにも存在するRHGAP11Aという遺伝子から派生されてできた遺伝子らしい。最初のホモログ参考サイトでいうところの、パラログ(?)に相当すると考えられる。ホモログを検索したいという意味ではあっていたのだけれど、私のイメージ的には厳密にはオルソログを調べたかった。
・先のトラブルシューティングのQAサイトの下の方に、biomaRtを使わないオルソログの調べ方がついていたので、そっちでやってみたい。各ライブラリのインストールは割愛。
> library(Orthology.eg.db)
> library(org.Hs.eg.db)
> library(org.Mm.eg.db)
> fun <- function(gns){
+ egs <- mapIds(org.Hs.eg.db, gns, "ENTREZID", "SYMBOL")
+ mapped <- select(Orthology.eg.db, egs, "Mus.musculus", "Homo.sapiens")
+ mapped$MUS <- mapIds(org.Mm.eg.db, as.character(mapped$Mus.musculus), "SYMBOL", "ENTREZID")
+ mapped
+ }
> genes <- c("SPIB", "CD86", "TNF", "LFNG", "PIM1", "TLR1", "BCL6", "ARHGAP11B")
> fun(genes)
'select()' returned 1:1 mapping between keys and columns
'select()' returned 1:1 mapping between keys and columns
・こちらではイメージ通りの結果が返ってきた。
・パッケージの特徴や原理を知り、用途に応じたパッケージを選択することが求められる。うーーーーーーーーーーーーーむ…。。
おわり