祖源探索"三步曲"

最近探索了一下祖源的分析,從R語言程式碼分析所有染色體的祖源成分,到Y染色體和線粒體,大概是三步,和大家分享一下:

  • 一、R語言程式碼分析所有染色體的祖源成分

除了祖上有不間斷的詳細族譜的人(這畢竟是少數大家望族才能有的待遇),想必每個人都會對自己的祖上來自哪裡充滿了好奇,這也是許多人做基因檢測的主要目的,探索未知是人類的天性,於是我來探索以下祖源是怎麼得出來的。 一直一來,很好奇祖源分析是怎麼做的,還嘗試過使用一款SPA(Spatial Ancestry analysis)這個軟體嘗試進行分析,結果差強人意,祖源定位地點總是在海上。。。(在搜索基因型填充時無意中搜到了這個軟體,由幾個作者寫成,第一作者還是華人,有點驕傲,可惜沒有針對中國人或者東亞人的模型,只有世界和歐洲人的模型,瞬間又覺得有點失落,好在許多中國公司在積累了幾萬以上的數據後也開始進行中國人自己的模型構建,而且做得還不錯)。

1.先來看看這個R包的效果

這裡主要使用的是github上wegene的一個R語言包,ps,不是廣告,偶爾翻到的,純屬意外。使用自己的aff的snp晶片數據測試了一下這個程式碼倉庫中的數據集的結果情況,順便學習以下裡邊的參考文獻。倉庫地址在這:https://github.com/wegene-llc/radmixture

程式碼基本上是從這個倉庫的readme上複製下來的。

#install.packages("radmixture")  library(radmixture)  genotype <- read.table(file = '0D-180208-oIDS.txt')  #download.file(url = 'http://github.com/wegene-llc/radmixture/raw/master/data/globe4.alleles.RData', destfile = 'globe4.alleles.RData')  #download.file(url = 'http://github.com/wegene-llc/radmixture/raw/master/data/globe4.4.F.RData', destfile = 'globe4.4.F.RData')  # Use K4  load('globe4.alleles.RData')  load('globe4.4.F.RData')  res <- tfrdpub(genotype, 4, globe4.alleles, globe4.4.F)  ances <- fFixQN(res$g, res$q, res$f, tol = 1e-4, method = "BR", pubdata = "K4")  ances$q    # Use K7b  load('K7b.alleles.RData')  load('K7b.7.F.RData')  res <- tfrdpub(genotype, 7, K7b.alleles, K7b.7.F)  ances <- fFixQN(res$g, res$q, res$f, tol = 1e-4, method = "BR", pubdata = "K7b")  ances$q    # Use world9  load('world9.alleles.RData')  load('world9.9.F.RData')  res <- tfrdpub(genotype, 9, world9.alleles, world9.9.F)  ances <- fFixQN(res$g, res$q, res$f, tol = 1e-4, method = "BR", pubdata = "World9")  ances$q    # Use E11  load('e11.alleles.RData')  load('e11.11.F.RData')  res <- tfrdpub(genotype, 11, e11.alleles, e11.11.F)  ances <- fFixQN(res$g, res$q, res$f, tol = 1e-4, method = "BR", pubdata = "E11")  ances$q    # Use K12b  load('K12b.alleles.RData')  load('K12b.12.F.RData')  res <- tfrdpub(genotype, 12, K12b.alleles, K12b.12.F)  ances <- fFixQN(res$g, res$q, res$f, tol = 1e-4, method = "BR", pubdata = "K12b")  ances$q    # Use K13  load('globe13.alleles.RData')  load('globe13.13.F.RData')  res <- tfrdpub(genotype, 13, globe13.alleles, globe13.13.F)  ances <- fFixQN(res$g, res$q, res$f, tol = 1e-4, method = "BR", pubdata = "K13")  ances$q  

為了好看,只保留了主要成分:

Use K4 Asian 0.95971

Use K7b Siberian East_Asian 0.18018 0.81019

Use world9 East_Asian Siberian 0.82437 0.1657

Use E11

Use K12b Siberian Southeast_Asian East_Asian

0.04038 0.34015 0.60959

Use K13 Siberian East_Asian 0.19514 0.78607

從結果來看,還是比較靠譜的,大體上看,手上的這個樣本主要是東亞人,然後有一定的西伯利亞血統,猜測應該是當年成吉思汗橫掃歐亞大陸時的結果。

2.學習以下兩篇文獻

這兩篇文獻都是發表與2009年的,雖然已經有十年之久,但是估計演算法還沒有更新更好的出來,所以一直在用。 1.D.H. Alexander, J. Novembre, and K. Lange. Fast model-based estimation of ancestry in unrelated individuals. Genome Research, 19:1655–1664, 2009. 2.H. Zhou, D. H. Alexander, and K. Lange. A quasi-Newton method for accelerating the convergence of iterative optimization algorithms. Statistics and Computing, 2009. 3.http://software.genetics.ucla.edu/admixture/index.html 4.http://www.biotrainee.com/thread-955-1-1.html 當然作為一個數學不怎麼好的人,原理基本上是看不懂的,特別是滿是公式的論文,那就簡單掃盲一下。

  • 二、Y染色體父系祖源

大概對許多人來說,基因檢測很大一部分是檢測一下自己的祖源,這樣想更多的知道自己生物學意義上來自哪裡。當然,從家譜上是可以看到姓氏來自哪裡,如果有數千年不間斷的族譜的話,你可以知道你的姓氏來自哪裡,儘管可能有過繼等的存在。

最近對祖源比較感興趣,於是想找點資源來探索一下我的祖源情況,公司福利,給檢測了ASA晶片,拿到數據後便迫不及待地開始我的探索之路,找了各種資源,終於找到一個能分析出結果的Y染色體父系祖源,記錄一下我的探索過程。

1.首先,把我用的資源放在這: 1)https://ytree.morleydna.com/

這個網站可以把23andme那種原始格式的數據進行提取,提取出Y染色體的snp位點,然後根據這些位點推算出haplogroup。 2)我的結果: O3a2c1~1, O-CTS11192 (O-CTS11459, O-CTS2643) 按照2015年以後的命名規則,應該是O2a2b1,M134? 又在yfull上找到了這個:O2a2b1a2a1a1a1 – M175+M122+P201+M134+F444(Y20)+F79(Y12)+F46(CTS2643)+F48(F275)+F14411(CTS1011)+F152+F2505+ https://www.familytreedna.com/public/SamuraiDNA?iframe=ycolorized

詳細突變結果放在最後面。

2.過程

把晶片數據整理成23andme的格式,然後上傳到這個網頁,然後按你的數據格式的具體情況來選擇相關選項,提交就可以了。比如我的數據是這樣選擇的

選擇箭頭所指方向的鏈接

這樣,就得到了結果

  • 三、線粒體母系祖源

對於一個不提供太多分析,而可以提供原始數據的消費級基因檢測,我們可以做許多探索,來滿足自己的好奇心,以及對自己了解更多。這或許是未來一個生物極客的必備素質。前面簡單探索了一下Y單體型,今天探索一下線粒體祖源的情況,眾所周知,和Y染色體的父系遺傳相對應,線粒體是母系遺傳的,只有母親會傳給孩子,所以,這會一步步追溯到最早的母親。 工具的獲得在這個網站:https://isogg.org/wiki/MtDNA_tools

不得不說這個網站真的是一個很好的網站,從名字來看它是一個專門研究家譜學(genealogy)的網站,還發表了論文,是由一個非營利組織創辦,我覺得應該是和開源軟體是一個精神的。還發現中國有個類似的網站,但是活躍度沒這個給力,而且主要是關於Y染色體遺傳方面的。http://www.ranhaer.com/forum.php

這個軟體推薦的首選工具是中國台灣的黎先生開發的一個網頁工具,https://dna.jameslick.com/mthap ,是支援23andme這種格式的原始數據的。但我測試下來的結果是,網頁可以正常打開,上傳數據不工作,提示網頁無響應,只好作罷,還發了郵件求助,但是沒回應。

然後,繼續尋找一個可以實現線粒體分型的工具,發現https://haplogrep.uibk.ac.at/ 這個工具可以實現23andme格式數據的分型,不過要稍做處理,轉換成vcf格式的。這裡我發現在github上有好幾個可以實現這個功能的小工具,用下來發現我前面用的這個最方便https://github.com/acflewis/23andme_to_VCF ,其他的不是失敗,就是要下很大的數據集。方便也是有代價的,這個工具只包含23andme的晶片數據,所以會損失一定數據的點,對於我的線粒體來說,損失了200個,1/5的樣子,不過還好,沒有影響結果的得出,當然,可能影響準確性。

一個簡單的命令後,就得出了結果:

祖源是一門學科,當然不是一個軟體就能了解的,需要長時間的學習和知識積累,今天,是我的起步。附上其他後面感性趣的可以繼續探索的網址: https://isogg.org/wiki/Autosomal_DNA_tools https://isogg.org/wiki/Raw_DNA_data_tools https://www.cog-genomics.org/plink2/input#23file