今天我們主要基因R語(yǔ)言借助Biomart包來實(shí)現(xiàn)物種同源性轉(zhuǎn)化。首先,我們先去看一下什么是物種的同源性。同源性是比較生物學(xué)中的一個(gè)概念。同源,最基本的意義就是具有共同祖先。當(dāng)然這里不是說人和鼠有相同的祖先,我們這里的分子水平的同源性。從分子水平講則是指兩個(gè)核酸分子的核苷酸序列或兩個(gè)蛋白質(zhì)分子的氨基酸序列間的相似程度,那我們就說二者同源,就是說可以相互轉(zhuǎn)化的基因具有一定的序列相似性,那么二者的基因便可以成為同源基因。通過檢索百度百科,給了我們一個(gè)明確的定義:許多不同的物種間都具有同源性?,F(xiàn)代分子生物學(xué)中的同源性描述的是基因與基因之間相似關(guān)系,它表明的是兩個(gè)相比較的序列之間的匹配程度。一般來說,如果兩條基因序列相似性達(dá)80% ,就可以把它們稱為“同源基因(homologousgene)”。
下面我們正式開始主題:
1之前我們ID轉(zhuǎn)換第一講,就告訴大家包的下載與安裝,如果之前的沒有看到,可以執(zhí)行下面的命令:

2 選擇目標(biāo)數(shù)據(jù)庫(kù)和數(shù)據(jù)集,這里選擇人和小鼠的

注解:useMart一般后面跟兩個(gè)參數(shù),第一個(gè)參數(shù)是借助ensemble數(shù)據(jù)庫(kù),第二個(gè)參數(shù)是告訴選擇哪個(gè)物種的數(shù)據(jù)集。
- 測(cè)試基因集
我選擇了兩個(gè)小鼠基因"Zfp286", "Tmx2",接著把他們構(gòu)造成一個(gè)向量
genes = c("Zfp286", "Tmx2")

4.小鼠基因同源映射到人

這里面最關(guān)鍵的就是getLDS函數(shù),
attributes屬性參數(shù): 代表我們所要檢索的數(shù)據(jù)集的屬性參數(shù),比如這里我們用的是mgi_symbol,代表的就是小鼠的基因的symbol名字??梢允褂胠istAttributes函數(shù)檢索可能的屬性列表。如下:

Filter參數(shù)過濾器 應(yīng)在查詢中使用的過濾器。這些過濾器將應(yīng)用于主數(shù)據(jù)集??梢允褂煤瘮?shù)listFilters檢索可能的過濾器列表。
Value 代表我們想要輸入的數(shù)據(jù)集,就是輸入我們構(gòu)造的要查詢的向量。
Mart 指的是輸入數(shù)據(jù)的Mart對(duì)象,由于輸入數(shù)據(jù)是小鼠的基因,自然選擇的Mart對(duì)象為小鼠。
attributesL 代表的是我們需要同源轉(zhuǎn)化的另外一個(gè)數(shù)據(jù)庫(kù),這里我們自然是由小鼠轉(zhuǎn)為人,選擇的就是需要連接到的人的Mart對(duì)象,在屬性參數(shù)里面我們填寫了三個(gè)參數(shù),分別是gene_symbol ,染色體位置,基因起始位點(diǎn)。
useMartL 參數(shù)是代表我們需要鏈接的Mart對(duì)象,這里自然就是人的。
5.結(jié)果展示:

從上面結(jié)果可以看出,Zfb286同源轉(zhuǎn)化到人的ZNF286A和ZNF286B ,這自然是很正常的,因?yàn)橥崔D(zhuǎn)化的原理就是序列相似性呀,同時(shí)看到ZNF286A在17號(hào)染色體上,起始位點(diǎn)為15688692,當(dāng)然我們也可以返回其截止位點(diǎn),修改代碼如下:

可以看到ZNF286A的截止位點(diǎn)為15744778,這樣你還可以計(jì)算基因的長(zhǎng)度了。
6. 我們可以寫一個(gè)小的封裝函數(shù)

7.測(cè)試該函數(shù):

可以看到我們的代碼可以完美運(yùn)行,說明代碼沒問題。
接著我們提供完整代碼如下,方便各位小伙伴動(dòng)手操作哦。Ok,下次再見!
完整代碼如下:
library(biomaRt)
human = useMart("ensembl", dataset = "hsapiens_gene_ensembl")
class(human)
mouse = useMart("ensembl", dataset = "mmusculus_gene_ensembl")
class(mouse)
genes = c("Zfp286", "Tmx2")
genes = getLDS(attributes = c("mgi_symbol"), filters = "mgi_symbol",
values = genes ,mart = mouse,
attributesL = c("hgnc_symbol","chromosome_name", "start_position"),
martL = human,
uniqueRows=T)
genes
# Basic function to convert mouse to human gene names
convertMouseGeneList <- function(x){
require("biomaRt")
human = useMart("ensembl", dataset = "hsapiens_gene_ensembl")
mouse = useMart("ensembl", dataset = "mmusculus_gene_ensembl")
genesV2 = getLDS(attributes = c("mgi_symbol"),
filters = "mgi_symbol",
values = x , mart = mouse,
attributesL = c("hgnc_symbol"),
martL = human, uniqueRows=T)
#humanx <- unique(genesV2[, 2])
# Print the first 6 genes found to the screen
#print(head(genes))
return(genesV2)
}
convertMouseGeneList(genes)