/* 本来是准备发微信公众号biodata的,但因为今天凌晨发了一篇闲扯的,今天配额没了。所以先发知因吧,明天再发BioData公众号 */
我并不是专业的群体进化研究者,本文所有内容基于23andme的公开资料以及个人的理解,欢迎各位读者吐槽交流。
0、 摘要
23andme和Ancestry.com以祖源分析为主要服务项目,累计收集了近160万份DNA样品,并对每份样品完成了不少于60万个SNP位点的分型。本文根据23andme公开发表的内容,介绍了23andme祖源成分分析系统的构建和运行,并尝试探讨如何在中国人群中构建类似的系统。
1、概述
23andme提供了丰富的祖源分析内容,其中最容易理解并被广泛分享的是Ancestry Composition。这项功能利用用户在23andme测得的近60万个SNP位点,推测用户的祖源成分,并以百分比的形式给出结果。知因社区中分享的“纯”中国人就是Chinese组份为100%的检测结果。
根据23andme的博客文章,及其在ASHG 2012上发表的poster,其祖源分析系统分为四个组件:
Phasing:判断allel的来源,推断出两条单体型; 分类:将单体型换分为大小为100个标记位点的窗口,逐个用SVM分类,判断祖源;平滑:对于SVM在每个单体型上的分类结果利用HMM做平滑,得到每个窗口的各种祖源结果的概率;校准:利用模拟数据的分析结果校准分类结果聚合和报告:选取保守程度的阈值,给出最终的祖源成分报告。
SVM、HMM以及用于Phasing的算法都是统计学习方法,需要训练数据。构建这个流程所需的数据包括:
参考数据集:祖源成分较为单一的参考数据集,用于构建SVM的训练集,以及生成用于校准的模拟数据集;Phased data:已经做好phasing的数据集,主要是千人基因组项目数据,用于Phasing;群体结构:如何划分人群的结构,这通常是一个树状结构。
下面分别说说这些东西。
2、数据准备
2-0 参考数据集
23andme在构建参考数据集时利用了千人基因组等公开数据,但最主要的数据还是源自其用户。
在23andme的网站中有一个关于祖源的调查,邀请用户填写祖源信息,包括自己的出生地、父母的出生地、爷爷奶奶姥姥姥爷的出生地等信息。如果在爷爷奶奶这一辈的四位都出生于同一个没有大量移民和殖民地历史的国家,则认为这个用户的祖源成分是比较单一的,将其纳入参考数据集。血缘关系紧密的用户只保留一个。同时删除每个群体的异常值——这有可能是填错了。最终构建了一个有10418个样本,超过20000条染色的参考数据集。
2-1 Phased Data
没有特别说明,应该就是千人基因组和Hapmap项目的数据。
2-2 群体结构
用户在填写出生地信息是根据现在一般意义上的国家填写的,同时根据地理区域的划分构建起全球的群体结构。但很多现代国家之间的差异很小,很难区分。因此,23andme通过对参考数据集做主成分分析,将一些差异很小的国家和地区合并,例如"British and Irish"。最终得到一个树状的全球群体结构。从机器学习的角度来看,就是一组分类标签。
3、Phasing
23andme选用了被广泛使用的Phasing软件beagle。Beagle一般被用于科研,因此在程序运行时要求所有需要分析的数据都准备好,但这显然不符合23andme的情况——用户是不断涌入的。于是他们修改了Beagle,使其可以不断添加数据,而无需重新运行程序。
4、分类、平滑和校准
这是最关键的一部,分类。Phase后的被测者和参考数据集的每条染色体都被划分为由100个标记物组成的无重叠的窗口。利用参考数据集,为每一个窗口训练出一个SVM多分类器,并将其应用到被测者的数据上。从而得到被测者每个窗口的祖源成分分类结果。
这里窗口的大小是个很重要的参数。这个窗口必须足够小,才能确保窗口内的区域都源自都一个祖先的概率足够高;这个窗口又不能太小,太小会使得分类器无法工作。于是,23andme选了100个。在23andme的平台上,每条染色体上得标记物数量介于5000到40000之间,因此每条染色体有50到400个窗口。
但因为单体型推断出错的概率是很高的,因此在最每个窗口都做完分类后,23andme用HMM模型对分类结果做平滑。没有找到这个HMM模型构建的具体信息。我猜测是用参考数据集生成模拟数据得到模型,然后再应用到SVM分类器产生的分类结果序列上,得到每个窗口属于各个祖源成分的可信度。
为了验证这些结果是否正确,23andme模拟了一些个人,对其进行测试。发现这个系统对Scandinavian和Balkans人群的分类准确性比较差,因此做了一个简单校正。校正方法没有详述,可能就是调整了一下判断阈值之类的。
5、聚合和报告
现在得到了每个窗口上每个祖源成分的概率,接下来是输出最终结果。
23andme选取了70%的可信度作为阈值输出结果。当一个窗口中的某个祖源成分的可信度高于70%就直接作为结果输出。如果所有的祖源成分都没有达到70%,就需要做聚合。例如,在某个窗口中,中国人是40%,日本人是20%,韩国人是20%,中亚人是18%,其他2%。在输出的时候就把中国人、日本人和韩国人聚合成东亚人,这样就变成了东亚人80%,中亚人18%,其他2%,输出东亚人。
在得到每个窗口的输出结果后,就可以计算百分比得到大家在23andme网站看到的那个结果。
这里的阈值70%是可以调整的,这个阈值越高,结果正确性越高,但粒度越粗;调低阈值,粒度变细,但准确性会下降。
6、在中国
虽然还有些细节不明确,但23andme这个系统的整体逻辑很清楚:分单体型、分类、聚合。
要实现这样的一个针对中国人群的系统在开发方面似乎没有什么难以逾越的困难,麻烦在于23andme自己在初期攒出来的那10418个带祖源信息的样本。及时是按中华八芯片算,这也是一千多万的投入。有没有可能降低初始的要求?
有,同时把祖源成分的颗粒度加大即可。先不要分到较小的区域,按照类似东北汉族,华北汉族,南方汉族,甚至更粗的分类方法来构建这个初始系统,再逐步细化。当然,这个种群结构的树状结构需要专业人士的意见。
除了出身地,民族成分和姓氏溯源也可以通过这个系统来完成。
/*后记
昨晚发出预告后,跟朋友讨论是否可以通过众筹的方式获得100个左右的样本和上述信息完成这个系统的初始化。我觉得是有可能的。每人人做一个中华八或外显子或全基因组测序,尽可能准确地提交上述信息,参与者可以获得1)自己的测序数据,2)随着用户增长不断精细的祖源分析结果,3)基于外显子测序结果的疾病风险、体征等方面解读报告, 4)甚至可以像基云惠康那样放出一些类似股份的噱头——说不定这个项目就上市了呢?
对于已经有数据的用户,支付一些费用支持系统的开发和运行,提交数据直接参加项目。都不用等测序结果~
Agai优艾设计网_PS问答n,欢迎吐槽。*/
精彩评论