祖源探索"三步曲"

最近探索了一下祖源的分析,从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