1、Structure 2.3中文使用手册Jonathan K. PritchardaXiaoquan WenaDaniel Falushb 1 2 3a芝加哥大学人类遗传学系b牛津大学统计学系软件来自http:/pritch.bsd.uchicago.edu/structure.html 2010年2月2日1我们在Structure项目中的其他的同事有Peter Donnelly、Matthew Stephens和Melissa Hubisz。2开发这个程序的第一版时作者(JP、MS 、PD)在牛津大学统计系。3关于Structure的讨论和问题请发给在线的论坛上:structure-。 在邮递
2、问题之前请查对这个文档并搜索以前的讨论。1 引言程序Structure使用由不连锁的标记组成的基因型数据实施基于模型的聚类方法来推断群体结构。这种方法由普里查德(Pritchard)、斯蒂芬斯(Stephens)和唐纳利(Donnelly)( 2000a)在一篇文章中引入,由Falush 、斯蒂芬斯(Stephens)和普里查德(Pritchard)(2003a ,2007)在续篇中进行了扩展。我们的方法的应用包括证明群体结构的存在,鉴定不同的遗传群体,把个体归到群体,以及鉴定移居者和掺和的个体。简言之,我们假定有K个群体(这里 K可能是未知的)的一个模型,每个群体在每个位点上由一组等位基因频
3、率来刻画。样本内的个体被(按照概率)分配到群体,或共同分配到两个或更多个群体,如果它们的基因型表明它们是混和的。假定在群体内,位点处于哈迪-温伯格平衡和连锁平衡。不精确地讲,个体被按达到这一点那样的方法指定到群体。我们的模型不假定一个特别的突变过程,并且它可以应用于大多数通常使用的遗传标记,包括微卫星(microsatellites)、SNP和RFLP 。模型假定在亚群体内标记不处于连锁不平衡(LD ),因此我们不能处理极其靠近的标记。从 2.0版开始,我们现在能够处理弱连锁的标记。虽然这里实现的计算方法是相当强有力的,但是为了保证明智的答案,在运行程序的过程中还是需要谨慎。例如,不可能从理论
4、上确定合适的运行长度(时间),这需要用户自己做一些实验。这份资料描述软件的使用和解释,并补充发表的文章,这些文章提供了对方法的更正式的描述和评价。1.1 概述软件包Structure由几个部分组成。程序的计算部分用C 语言编写。我们发布源码和用于各种平台(目前有苹果机,Windows ,Linux ,Sun)的可执行文件。C可执行文件读取用户提供的一个数据文件。还有一个Java前端为用户提供各种有帮助的工具,包括对输出的简单的处理。你也可以从命令行调用Structure而不是使用前端。这份资料包括关于怎样格式化数据文件、怎样选择合适的模型、以及怎样解释结果的信息。它也有关于使用两种界面(命令行
5、和前端)的细节以及各种用户定义的参数的汇总。1.2 在 2.3 版中有哪些更新?2.3版(2009年4月发布)引入了新的模型用于改进数据集结构的推论,其中(1)数据对于通常的结构模型来说信息不够,不足以提供准确的推论,但是(2)抽样的地点与群体归属关系(population membership)相关。在这种情形下,通过明确利用抽样地点信息,我们使结构得到改善,经常允许性能提高很多(Hubisz et al., 2009)。我们希望在下几个月释放更进一步的改进。表1:实例数据文件。这里MARKERNAMES = 1, LABEL = 1, POPDATA = 1, NUMINDS = 7, N
6、UMLOCI = 5, MISSING = -9, POPFLAG = 0, LOCDATA = 0, PHENOTYPE = 0, EXTRACOLS = 0。第2列显示个体的地理取样位置。我们也可以把数据存储为每个个体一行(ONEROWPERIND = 1),在这种情况下第一行为 “George 1 -9 -9 145 -9 66 64 0 0 92 94”。Loc_a Loc_b Loc_c Loc_d Loc_e 乔治 1 -9 145 66 0 92乔治 1 -9 -9 64 0 94保拉 1 106 142 68 1 92保拉 1 106 148 64 0 94马修 2 110 1
7、45 -9 0 92马修 2 110 148 66 1 -9 鲍勃 2 108 142 64 1 94鲍勃 2 -9 142 -9 0 94Anja 1 112 142 -9 1 -9 Anja 1 114 142 66 1 94彼得 1 -9 145 66 0 -9 彼得 1 110 145 -9 1 -9 卡斯坦 2 108 145 62 0 -9 卡斯坦 2 110 145 64 1 922 数据文件的格式基因型数据的格式显示在表2中(表1显示一个例子)。基本上,整个数据集被作为一个矩阵安排在单个文件里,其中个体的数据在行里,位点在列里。用户能对格式做出若干选择,大多数这些数据(除基因型
8、外!)是可选择的。对于一个二倍体生物,每个个体的数据可以是作为连续的2行被储存,其中每个位点在一列,或者在一行中,其中每个位点在连续的两列。除非你打算使用连锁模型(见下面),否则单个个体的等位基因的次序并不重要。预基因型(pre-genotype)数据列(见下面)对每个体记录两次。(更一般地,对于n倍体生物来说,每个个体的数据被储存在n个连续的行中,除非ONEROWPERIND 选项被使用。) 2.1 数据文件的组成部分:输入文件的要素如下所列。如果给出,它们一定按以下顺序,然而大多数是可选的并且可以被完全删除。用户必须指明哪些数据被给出,或者在前端里(front end),或者(当从命令行运
9、行Structure时)在一个单独的文件mainparams 里。同时,用户也要指定个体和位点的数目。2.2 行1. 标记名称(可选择;字符串) 文件的第一行可以包含数据集里的每个标记的标识符的一个列表。这一行包含整数或字母的L个字符串,其中L是位点的数目。2. 隐性等位基因(仅用于有显性的标记数据;整数)SNP或者微卫星数据一般将不包括这一行。但是如果选项RECESSIVEALLELES被设置为1,则程序要求有这一行来表明每个标记上哪个等位基因(如果有的话)是隐性的。关于更多的信息请参阅第4.1节。该选项用于象AFLP那样的数据,以及用于多倍体的情形,其中基因型可能是含糊的。3. 标记之间的
10、距离(可选择;实数)文件里的下一行是一个标记之间距离的集合,供有连锁的位点使用。这些应该是遗传距离(例如,厘摩),或者是这种距离的一些替代,基于(例如)物理距离。如果标记距离(粗略地)与重组率成正比,则距离的实际单位不是那么重要 。前端从数据估计一个合适的尺度,但是命令行版本的用户必须在文件extraparams里设置LOG10RMIN、 LOG10RMAX和LOG10RSTART。标记必须按照连锁群中的图谱次序排列。当连续的标记来自不同的连锁群(例如,不同的染色体)时,这应该用数值-1注明。第一个标记也被赋值为-1。所有其他的距离都是非负的。这一行包含L 个实数。4. 连锁相信息(可选择;仅
11、用于二倍体数据;在范围0, 1内的实数)。这只供连锁模型使用。这是L个概率的一行,出现在每个个体的基因型数据之后。如果连锁相是完全知道的,或者没有连锁相信息可用,则这些行是不必要的。当有来自家系数据的部分连锁相信息,或者当来自雄性的单倍体X染色体数据和二倍体常染色体数据被一起输入时,它们可能是有用的。对于连锁相信息有两种可选择的表示:(1)个体的两行数据被假设为分别与父本的和母本的相对应。连锁相行表明当前标记上的排序正确的概率(设置MARKOVPHASE = 0);(2)连锁相行表明与以前的等位基因有关的一个等位基因的连锁相是正确的概率(设置MARKOVPHASE = 1)。第一项应该填入0.
12、5 ,以便把这行填写到L项。例如下列数据输入表示来自一个男性的信息,有5个连锁相未知的常染色体微卫星位点,后面是3个X染色体位点,使用母本/父本相模型:102 156 165 101 143 105 104 101100 148 163 101 143 -9 -9 -90.5 0.5 0.5 0.5 0.5 1.0 1.0 1.0其中-9表示“缺失数据”,这里缺失是由第二 X染色体缺乏造成的, 0.5表明常染色体位点的连锁相是未知的,1.0表明X 染色体位点由母本遗传的概率为1.0,因此其连锁相是已知的。相同的信息可以用markovphase模型来描述。这样的话输入文件将读为:102 156
13、165 101 143 105 104 101 100 148 163 101 143 -9 -9 -9 0.5 0.5 0.5 0.5 0.5 0.5 1.0 1.0这里,2 1.0 s 表明那个第1 和第2,其次和第3 个X染色体位点彼此完全同相。注意站点以站点产量在这些2 模式下将不同。在第一例子中,Structure将输出母亲和父亲染色体的任务可能发生的事件。在第2 个情况下,它将输出在输入文件里列举的每等位基因的可能发生的事件。5. 个体/ 基因型数据(必需的)取样的每一个个体的数据象在下面描述的那样安排成一行或多行。2.3 个体/ 基因型数据个体数据的每一行包含下列要素。这些形成数
14、据文件里的列。1. Label(标签) (可选择;字符串) 一串整数或者字母,用来指明样本中的每个个体。2. PopData(可选择;整数)一个整数,指明一个用户定义的群体,从其中获得个体(例如这些整数可以指明个体取样的地理位置)。在默认的模型中,这个信息不被聚类算法使用,但是能用来帮助组织输出(例如,将来自相同的预定义群体的个体彼此紧挨着绘图)。3. PopFlag(可选择;0或者1)一个布尔标签,表明使用学习样本时是否使用PopData(见USEPOPINFO,在下面)。(注:布尔(Boolean)变量(标签)是取值为TRUE或FALSE的变量,在这里分别用整数1(使用PopData)和0
15、(不使用PopData)表示。) 4. LocData(可选择;整数)一个整数,为每个个体指明一个用户定义的取样地点(或者其他特性,例如一个分享的表现型)。当LOCPRIOR模型被打开时,这个信息用来帮助聚类。如果你仅仅希望使用LOCPRIOR模型的PopData,那么你可以省略LocData列,并设置 LOCISPOP = 1(这告诉程序使用 PopData来设置地点)。5. Phenotype(可选择;整数) 一个整数,为每个个体指明一个所关心的表现型的值(表中的 (i))。(表现型信息实际上没有用于Structure。这里用来允许与关联作图程序STRAT有一个平滑的接口。) 6. Ext
16、ra Columns(可选择;字符串) 用户把被程序忽略的附加数据包括在输入文件里可能是方便的。这些数据就在这里输入,可以是由整数或字符组成的串。7. Genotype Data(必需的;整数) 一个给定位点上的每个等位基因应该由一个独特的整数来编码(例如微卫星重复得分)。2.4 缺失的基因型数据缺失数据应该用没在数据中的其他地方出现过的一个数字来标明(按照惯例经常使用-9)。这个数字也可以用于有单倍体和二倍体数据混合的地方(例如男性中的X和常染色体位点)。缺失数据值是与描述数据集特性的其它参数一起被设置的。2.5 格式化的错误。我们已经进行了相当仔细的错误检查,以保证数据集的格式正确,并且程
17、序将试图提供一些关于存在的任何问题的性质的提示。前端要求在每行的结束回车,不允许在行内回车;Structure的命令行版本以与处理空格或制表符(Tab )同样的方式处理回车。可能出现的一个问题是,在将数据导入Structure之前用来组装数据的编辑程序可能引入隐藏的格式化字符,经常在行的末尾,或者在文件的末尾。前端能自动除去大多数这些错误,但是当数据文件好像处于正确的格式时,这类问题可能对错误负责。如果你正在把数据导入到一个Unix系统,dos2unix 功能可能对彻底清理这些错误有帮助。3 用户的建模决策3.1 祖先模型个体的祖先有4个主要模型:(1) 非混合模型(个体离散地来自一个群体或者
18、另一个群体);(2)混合模型(每个个体从K 个群体中的每一个抽取他/她的基因组的一部分);(3)连锁模型(象混合模型一样,但是连锁的位点更可能来自相同的群体);(4)有先验信息的模型(允许Structure 使用关于取样地点的信息:或者帮助用弱的数据进行的聚类,发现迁移者,或者预定义一些群体)。关于模型1、2 、 4的详情见Pritchard等(2000a )和Hubisz 等(2009),关于模型 3的详情见Falush等(2003a)。1. 非混合模型。每个体完全来自K 个群体之一。输出报告个体i来自群体k的后验概率。每个群体的先验概率是1 / K。这个模型适合于研究完全离散的群体,并且经
19、常比混合模型在检测微妙的结构方面更强有力。2. 混合模型。个体可能具有混合的祖先。这可以表述为个体i从群体k中的祖先那里继承了他的/她的基因组的一部分。输出记录这些比例的后验平均估计值。以祖先向量q (i)为条件,每个等位基因的起源是独立的。我们推荐这个模型作为大多数分析的起始点。这是处理真实群体的大多数复杂性的一个相当灵活的模型。混合是真实数据的一个普通特征,如果你使用非混合模型,你或许不会发现它。混合模型也能以一种自然的方式处理混合的区域(hybrid zones)。表2:数据文件的格式,为两行的格式。大多数这些组成部分是可选的(欲了解详细信息,参见正文)。M l是标记l 的标识符。r l
20、表明哪个等位基因,如果有的话,在每个标记上是隐性的(仅针对显性的基因型数据)。D i,i+1是标记i 和i + 1之间的距离。ID (i)是个体 i的标签,g (i)是个体i 的一个预先定义的群体索引(PopData );f (i)是一个被用来合并学习样品的标签(PopFlag);l (i)是个体i的取样地点(LocData);(i)可以储存个体 i的表现型;y 1(i), ., yn(i)用于储存额外的数据(这些数据会被程序忽略);(x li,1, xli,2)储存个体i 在位点l上的基因型。p i(l)是个体i中的标记l的连锁相的信息。3. 连锁模型。这实质上是将混合模型推广,来处理“混合
21、连锁不平衡”,即,在最近混和的群体中的连锁标记之间出现的相关性。Falush等(2003a)描述了该模型和更详细的计算。基本的模型是,过去的t个世代,有一次混合事件,将 K个群体混合了。如果你考虑单个染色体,它由一系列“块(chunk)”组成,这些“块”是从混合时的祖先那里作为离散的单位遗传来的。出现混合LD是因为连锁的等位基因经常在相同的块上,因此来自相同的祖先群体。块的大小被假设为独立的指数随机变量,具有平均长度1/t (以摩尔根为单位)。在实践中我们估计“重组率”r,所用的数据对应于从现在的块切换到新的块的比率。个体i里的每个块以概率 qk(i)独立地来自群体k,其中q k(i)是那个个
22、体的祖先来自群体k的比例。总起来,新模型保留了混合模型的主要要素,但是在单个块上的全部等位基因必须来自相同的群体。新的MCMC算法结合了可能的块大小和断点。它对于每个体报告总的祖先,考虑连锁,并且也能报告染色体的每一点儿的起源的可能性,如果用户想要的话。当使用连锁的位点来研究混合的群体时,这个新模型表现得比原先的混合模型更好。它得到对祖先向量的更准确的估计,并且能从数据中抽出更多的信息。这对混合作图应该是有用的。该模型不是用于处理非常紧密连锁的标记之间的背景LD的。显然,这个模型是大多数混合群体的复杂现实的大大的简化。不过,混合的主要的效应是在连锁的标记之间建立长远的相关性,因此我们这里的目的
23、是在一个相当简单的模型中将那个特征包括进来。计算比混合模型的要慢一点,特别对于大的K和不知道连锁相的数据。不过,它们对于数千个位点和个体以及多个群体来说还是切实可行的。如果有关于标记的相对位置的信息(通常是一张遗传图谱),则只能使用该模型。4. 使用先验的群体信息。Structure的默认模式只使用遗传学的信息来了解群体结构。不过,经常有可以与聚类相关的附加信息(例如,取样的个体的物理特性或者取样的地理位置)。目前,Structure可以用3种方式使用这种信息: LOCPRIOR模型:利用取样位置作为先验信息来辅助聚类用于结构信号比较弱的数据集。有一些数据集,其中有真实的群体结构(例如,取样位
24、置之间的显著的F ST),但是信号太弱,标准的Structure 模型不能发现。对于标记很少、个体很少或者非常弱的Structure,经常是这样的情况。在这种情形下,为了提高性能,Hubisz等(2009)发展了新模型,利用地点信息来辅助聚类。对于这样的数据集,其中结构的信号太弱以致使用标准的Structure模型不能被发现,新模型经常能提供群体结构和个体祖先的准确的推断。简言之,LOCPRIOR 模型的基本原理如下。通常,Structure假定个体的所有部分都大约是先验等可能的。因为可能的部分的数目非常巨大,对于Structure来说,需要信息非常丰富的数据来断定个体的任何特定的部分被聚类到
25、群具有强的统计支持。相反,LOCPRIOR 模型认为实际上,来自相同的取样位置的个体经常来自相同的群体。因此,建立LOCPRIOR 模型以期望取样的位置可能关于祖先是信息丰富的。如果数据表明位置是信息丰富的,那么LOCPRIOR模型允许Structure使用这种信息。Hubisz等(2009)发展了一对 LOCPRIOR模型:一种用于没有混合的情况,一种用于有混合的情况。在两种情况中,内在的模型(以及似然函数)与标准版本相同。关键的差别是允许structure使用地点信息来帮助聚类(即,通过修改先验信息来得到与位置有关的更偏爱的聚类解决方案)。LOCPRIOR模型具有合乎需要的特性:(i)当不
26、存在结构时,它们不倾向于发现结构;(ii)当个体的祖先与取样位置不相关时,他们能够忽视取样的信息;(iii )当群体结构的信号非常强大时,旧模型和新模型基本上给出相同的答案。因此,我们建议在大多数数据数量非常有限的情形下使用新模型,特别是当标准的Structure模型不提供一个Structure的清晰信号时。但是,因为现在已经积累了标准的Structure模型的很多经验,我们建议对于信息非常丰富的数据集将基本模型作为默认(Hubisz 等等,2009)。为了运行LOCPRIOR 模型,用户必须首先为每个个体指定“取样地点”,作为一个整数编码。即,我们假定样品是在一组分离的位置收集的,并且我们不
27、使用关于地点的任何空间信息。(我们认识到,在一些研究中,每个个体可能在一个不同的地点收集,因此将个体塞进一套更小的分离的地点可能不是对数据的理想的代表。) “地点”也可以代表一个表现型、生态型(ecotype)或者民族团体(ethnic group)。地点被键入到输入文件中,要么在PopData列(设置LOCISPOP = 1)中,要么作为一个单独的LocData 列(参阅第 2.3节)。为了使用LOCPRIOR 模型,你必须首先指定或者用混合模型用非混合的模型。如果你使用的是图形用户界面版本,则勾选“use sampling locations as prio”(用取样位置作为先验信息)框。如果你使