跨物種同源基因轉(zhuǎn)換(biomaRt和homologene)2022-06-17

適用背景

當(dāng)我們進(jìn)行跨物種比較分析時(shí)會(huì)發(fā)現(xiàn)基因名對(duì)不上陡蝇,或者找不到基因锁荔,這時(shí)候就需要進(jìn)行物種間的同源基因轉(zhuǎn)換棺蛛。最常用的工具就是Ensembl的biomaRt,另外還查到NCBI的一個(gè)工具h(yuǎn)omologene别厘,因此本文將詳細(xì)講解這兩個(gè)包。

方法一 biomaRt

biomaRt是基于Ensembl數(shù)據(jù)庫(kù)的R包拥诡,當(dāng)然也可以在網(wǎng)頁(yè)查詢同源基因触趴,但如果基因較多,物種較多渴肉,網(wǎng)頁(yè)版就比較麻煩冗懦。需要注意的是,biomaRt包需要聯(lián)網(wǎng)才能正常使用仇祭。

  • 先安裝包
    BiocManager::install("biomaRt")
  • 加載包
    library(biomaRt)
  • 查看數(shù)據(jù)庫(kù)列表
> listMarts()
               biomart                version
1 ENSEMBL_MART_ENSEMBL      Ensembl Genes 106
2   ENSEMBL_MART_MOUSE      Mouse strains 106
3     ENSEMBL_MART_SNP  Ensembl Variation 106
4 ENSEMBL_MART_FUNCGEN Ensembl Regulation 106
  • 查看特定數(shù)據(jù)庫(kù)的數(shù)據(jù)集披蕉,'ensembl'表示使用所有數(shù)據(jù)庫(kù),可以看到所有可用數(shù)據(jù)庫(kù)里共有215個(gè)數(shù)據(jù)集乌奇。
> umart = useMart('ensembl')
> datalist = listDatasets(umart)
> head(datalist)
                       dataset                           description
1 abrachyrhynchus_gene_ensembl Pink-footed goose genes (ASM259213v1)
2     acalliptera_gene_ensembl      Eastern happy genes (fAstCal1.2)
3   acarolinensis_gene_ensembl       Green anole genes (AnoCar2.0v2)
4    acchrysaetos_gene_ensembl       Golden eagle genes (bAquChr1.2)
5    acitrinellus_gene_ensembl        Midas cichlid genes (Midas_v5)
6    amelanoleuca_gene_ensembl       Giant panda genes (ASM200744v2)
      version
1 ASM259213v1
2  fAstCal1.2
3 AnoCar2.0v2
4  bAquChr1.2
5    Midas_v5
6 ASM200744v2
> dim(datalist)
[1] 215   3
  • 模糊搜索數(shù)據(jù)庫(kù)里的數(shù)據(jù)集
> searchDatasets(mart = umart, pattern = "Mouse")
                   dataset                  description  version
107  mmurinus_gene_ensembl Mouse Lemur genes (Mmur_3.0) Mmur_3.0
108 mmusculus_gene_ensembl         Mouse genes (GRCm39)   GRCm39
  • 構(gòu)建數(shù)據(jù)集
mouse <- useMart('ensembl',dataset = "mmusculus_gene_ensembl")
macaque <- useMart('ensembl',dataset = "mfascicularis_gene_ensembl")

如果需要獲取單個(gè)物種的某些基因信息没讲,getBM可以實(shí)現(xiàn),但需要指定輸入的格式和輸出的格式礁苗。

getBM(attributes, filters = "", values = "", mart, curl = NULL, 
checkFilters = TRUE, verbose = FALSE, uniqueRows = TRUE, bmHeader = FALSE,
quote = "\"", useCache = TRUE)
  • 獲取某個(gè)物種全部基因
    不指定 filters參數(shù)爬凑,只使用attributes參數(shù),mmusculus_gene_ensembl是小鼠的數(shù)據(jù)集寂屏。
g1 <- getBM(attributes = c("external_gene_name"),mart = useEnsembl("ensembl",dataset = 'mmusculus_gene_ensembl', host = "https://dec2021.archive.ensembl.org/"),uniqueRows = T)
  • 輸入 filters
    filters參數(shù)可以指定基因的信息類型贰谣,用的最多的當(dāng)然是基因名,但也可以給定基因在染色體位置迁霎,基因ID等其它信息吱抚。簡(jiǎn)單來(lái)說(shuō)filters就指定了類型,例如"external_gene_name"考廉,values則是具體的值秘豹,例如基因Gad1,Sst昌粤。
    listFilters可以列出所有輸入基因信息的類型既绕,而searchFilters還可以搜尋相關(guān)類型的名稱啄刹。可以看到剛剛構(gòu)建的小鼠數(shù)據(jù)集可以輸入400種基因信息類型凄贩。
> head(listFilters(mouse))
             name              description
1 chromosome_name Chromosome/scaffold name
2           start                    Start
3             end                      End
4      band_start               Band Start
5        band_end                 Band End
6          strand                   Strand
> dim(listFilters(mouse))
[1] 400   2
> searchFilters(mart = mouse, 'gene_name')
                 name                           description
53 external_gene_name             Gene Name(s) [e.g. mt-Tf]
98      wikigene_name WikiGene name(s) [e.g. 0610005C13Rik]
  • 輸出 attributes
    類似的誓军,指定輸出類型使用attributes參數(shù),用listAttributes函數(shù)查看可輸出的類型疲扎,searchAttributes模糊查詢可輸出的類型昵时。可以看到可以輸出2987種類型椒丧。
> dim(listAttributes(mouse))
[1] 2987    3
> head(listAttributes(mouse))
                           name                  description         page
1               ensembl_gene_id               Gene stable ID feature_page
2       ensembl_gene_id_version       Gene stable ID version feature_page
3         ensembl_transcript_id         Transcript stable ID feature_page
4 ensembl_transcript_id_version Transcript stable ID version feature_page
5            ensembl_peptide_id            Protein stable ID feature_page
6    ensembl_peptide_id_version    Protein stable ID version feature_page
> searchAttributes(mart = mouse, 'ensembl_gene_id')
                        name            description         page
1            ensembl_gene_id         Gene stable ID feature_page
2    ensembl_gene_id_version Gene stable ID version feature_page
183          ensembl_gene_id         Gene stable ID    structure
184  ensembl_gene_id_version Gene stable ID version    structure
223          ensembl_gene_id         Gene stable ID     homologs
224  ensembl_gene_id_version Gene stable ID version     homologs
2884         ensembl_gene_id         Gene stable ID          snp
2885 ensembl_gene_id_version Gene stable ID version          snp
2942         ensembl_gene_id         Gene stable ID    sequences
2943 ensembl_gene_id_version Gene stable ID version    sequences
  • 使用示例
> getBM(attributes = c("ensembl_gene_id","external_gene_name"),filters = "external_gene_name", values = c("Gad1","Sst"),mart = mouse,uniqueRows = T)
     ensembl_gene_id external_gene_name
1 ENSMUSG00000070880               Gad1
2 ENSMUSG00000004366                Sst

以下來(lái)自另一篇博主簡(jiǎn)書(shū)的用法

### 根據(jù)entrez ID號(hào)來(lái)找
entrzID=c("672","1") ##定義entrez ID
getBM(attributes=c("entrezgene","external_gene_name","gene_biotype"), filters = "ensembl_gene_id_version", values =entrzID, mart=human,uniqueRows=TRUE)
### 通過(guò)染色體及起始終止坐標(biāo)來(lái)挑選基因
getBM(c('affy_hg_u133_plus_2','ensembl_gene_id'), filters = c('chromosome_name','start','end'), values=list(16,1100000,1250000), mart=human)
###根據(jù)染色體位置(6p21.1)查找所有位于其上的基因
getBM(c('entrezgene','hgnc_symbol', 'transcript_biotype', 'chromosome_name','start_position','end_position', 'band'), filters = c('chromosome_name','band_start','band_end'), values=list(6,'p21.1','p21.1'), mart=human)

獲取不同物種的同源基因

  • 使用函數(shù)getLDS
getLDS(attributes, filters = "", values = "", mart, attributesL,
filtersL = "", valuesL = "", martL, verbose = FALSE, uniqueRows = TRUE, 
bmHeader=TRUE)

getBM類似壹甥,參考物種還是原來(lái)的參數(shù),而查詢物種則需要在原參數(shù)名加上L壶熏,例如參考物種是attributes句柠,則查詢物種是attributesL
使用示例

gene.mo2ma <- getLDS(attributes = c("external_gene_name"),filters = "external_gene_name",values = c("Gad1","Sst"),mart = mouse,attributesL = c("external_gene_name","chromosome_name"),martL = macaque,uniqueRows = T)
> gene.mo2ma <- getLDS(attributes = c("external_gene_name"),filters = "external_gene_name",values = c("Gad1","Sst"),mart = mouse,attributesL = c("external_gene_name","chromosome_name"),martL = macaque,uniqueRows = T)
> head(gene.mo2ma)
  Gene.name Gene.name.1 Chromosome.scaffold.name
1       Sst         SST                        2
2      Gad1        GAD1                       12
  • 小插曲
    我運(yùn)行上面的腳本時(shí)出現(xiàn)下面的報(bào)錯(cuò):
> gene.mo2ma <- getLDS(attributes = c("external_gene_name"),filters = "external_gene_name",values = c("Gad1","Sst"),mart = mouse,attributesL = c("external_gene_name","chromosome_name"),martL = macaque,uniqueRows = T)
錯(cuò)誤: biomaRt has encountered an unexpected server error.
Consider trying one of the Ensembl mirrors (for more details look at ?useEnsembl)

查了谷歌后發(fā)現(xiàn)是網(wǎng)頁(yè)自身的問(wèn)題棒假,在構(gòu)建數(shù)據(jù)集的時(shí)候需更換2021年版本的一個(gè)網(wǎng)頁(yè)才能正常運(yùn)行溯职,估計(jì)是2022年版本的bug。
解決辦法是是用host參數(shù)指定2021年版本網(wǎng)頁(yè)淆衷。

macaque <- useMart("ensembl", dataset = "mfascicularis_gene_ensembl", host = "https://dec2021.archive.ensembl.org/") 

方法二 homologene

biomaRt不同缸榄,homologene是基于NCBI HomoloGene數(shù)據(jù)庫(kù)的一個(gè)包,感興趣可以進(jìn)官網(wǎng)了解一下此數(shù)據(jù)庫(kù)祝拯,因此甚带,兩者做出來(lái)的結(jié)果會(huì)有差異,建議可以互為補(bǔ)充佳头。
HomoloGene最新更新時(shí)間是2014-04-09鹰贵,只有21個(gè)物種,可能還是biomaRt更完善一些康嘉。

  • 安裝包
    BiocManager::install("homologene")
  • 加載包
    library(homologene)
    這個(gè)包比較簡(jiǎn)單碉输,但是可提取信息也比較少,就一個(gè)函數(shù)就可以查詢同源基因亭珍,只需傳入三個(gè)參數(shù)敷钾,genelist是基因列表,inTax 是參考物種的Taxonomy ID肄梨,outTax是查詢物種的Taxonomy ID阻荒。例如小鼠是10090,人是9606众羡。
> genelist=c('Gad','Sst')
> homologene(genelist, inTax = 10090, outTax = 9606)
  10090 9606 10090_ID 9606_ID
1   Sst  SST    20604    6750
  • 常用物種的Taxonomy ID(來(lái)自這篇文章):
10090   Mus musculus
10116   Rattus norvegicus
28985   Kluyveromyces lactis
318829  Magnaporthe oryzae
33169   Eremothecium gossypii
3702    Arabidopsis thaliana
4530    Oryza sativa
4896    Schizosaccharomyces pombe
4932    Saccharomyces cerevisiae
5141    Neurospora crassa
6239    Caenorhabditis elegans
7165    Anopheles gambiae
7227    Drosophila melanogaster
7955    Danio rerio
8364    Xenopus (Silurana) tropicalis
9031    Gallus gallus
9544    Macaca mulatta
9598    Pan troglodytes
9606    Homo sapiens
9615    Canis lupus familiaris
9913    Bos taurus   

小結(jié)與補(bǔ)充

總的來(lái)說(shuō)biomaRt更加完善侨赡,功能更強(qiáng)大,所以更推薦biomaRt。但是只能對(duì)兩個(gè)物種進(jìn)行轉(zhuǎn)換羊壹,如果是多個(gè)物種進(jìn)行轉(zhuǎn)換蓖宦,該怎么做呢?下一篇文章試試寫(xiě)一下2個(gè)及以上物種的轉(zhuǎn)換函數(shù)吧油猫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稠茂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子情妖,更是在濱河造成了極大的恐慌主慰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲫售,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡该肴,警方通過(guò)查閱死者的電腦和手機(jī)情竹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)匀哄,“玉大人秦效,你說(shuō)我怎么就攤上這事∠呀溃” “怎么了阱州?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)法梯。 經(jīng)常有香客問(wèn)我苔货,道長(zhǎng),這世上最難降的妖魔是什么立哑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任夜惭,我火速辦了婚禮,結(jié)果婚禮上铛绰,老公的妹妹穿的比我還像新娘诈茧。我一直安慰自己,他們只是感情好捂掰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布敢会。 她就那樣靜靜地躺著,像睡著了一般这嚣。 火紅的嫁衣襯著肌膚如雪鸥昏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天疤苹,我揣著相機(jī)與錄音互广,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惫皱,可吹牛的內(nèi)容都是我干的像樊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼旅敷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼生棍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起媳谁,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤涂滴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后晴音,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柔纵,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年锤躁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搁料。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡系羞,死狀恐怖郭计,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情椒振,我是刑警寧澤昭伸,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站澎迎,受9級(jí)特大地震影響庐杨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嗡善,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一辑莫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罩引,春花似錦各吨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至剔桨,卻和暖如春屉更,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洒缀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工瑰谜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留欺冀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓萨脑,卻偏偏與公主長(zhǎng)得像隐轩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渤早,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容