structure23中文使用手册Word文档格式.docx
《structure23中文使用手册Word文档格式.docx》由会员分享,可在线阅读,更多相关《structure23中文使用手册Word文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
这份资料描述软件的使用和解释,并补充发表的文章,这些文章提供了对方法的更正式的描述和评价。
1.1概述
软件包Structure由几个部分组成。
程序的计算部分用C语言编写。
我们发布源码和用于各种平台(目前有苹果机,Windows,Linux,Sun)的可执行文件。
C可执行文件读取用户提供的一个数据文件。
还有一个Java前端为用户提供各种有帮助的工具,包括对输出的简单的处理。
你也可以从命令行调用Structure而不是使用前端。
这份资料包括关于怎样格式化数据文件、怎样选择合适的模型、以及怎样解释结果的信息。
它也有关于使用两种界面(命令行和前端)的细节以及各种用户定义的参数的汇总。
1.2在2.3版中有哪些更新?
2.3版(2009年4月发布)引入了新的模型用于改进数据集结构的推论,其中
(1)数据对于通常的结构模型来说信息不够,不足以提供准确的推论,但是
(2)抽样的地点与群体归属关系(populationmembership)相关。
在这种情形下,通过明确利用抽样地点信息,我们使结构得到改善,经常允许性能提高很多(Hubiszetal.,2009)。
我们希望在下几个月释放更进一步的改进。
表1:
实例数据文件。
这里MARKERNAMES=1,LABEL=1,POPDATA=1,NUMINDS=7,NUMLOCI=5,MISSING=-9,POPFLAG=0,LOCDATA=0,PHENOTYPE=0,EXTRACOLS=0。
第2列显示个体的地理取样位置。
我们也可以把数据存储为每个个体一行(ONEROWPERIND=1),在这种情况下第一行为“George1-9-9145-96664009294”。
Loc_a
Loc_b
Loc_c
Loc_d
Loc_e
乔治
1
-9
145
66
92
64
94
保拉
106
142
68
148
马修
2
110
鲍勃
108
Anja
112
114
彼得
卡斯坦
62
2数据文件的格式
基因型数据的格式显示在表2中(表1显示一个例子)。
基本上,整个数据集被作为一个矩阵安排在单个文件里,其中个体的数据在行里,位点在列里。
用户能对格式做出若干选择,大多数这些数据(除基因型外!
)是可选择的。
对于一个二倍体生物,每个个体的数据可以是作为连续的2行被储存,其中每个位点在一列,或者在一行中,其中每个位点在连续的两列。
除非你打算使用连锁模型(见下面),否则单个个体的等位基因的次序并不重要。
预基因型(pre-genotype)数据列(见下面)对每个体记录两次。
(更一般地,对于n倍体生物来说,每个个体的数据被储存在n个连续的行中,除非ONEROWPERIND选项被使用。
)
2.1数据文件的组成部分:
输入文件的要素如下所列。
如果给出,它们一定按以下顺序,然而大多数是可选的并且可以被完全删除。
用户必须指明哪些数据被给出,或者在前端里(frontend),或者(当从命令行运行Structure时)在一个单独的文件mainparams里。
同时,用户也要指定个体和位点的数目。
2.2行
1.标记名称(可选择;
字符串)文件的第一行可以包含数据集里的每个标记的标识符的一个列表。
这一行包含整数或字母的L个字符串,其中L是位点的数目。
2.隐性等位基因(仅用于有显性的标记数据;
整数)SNP或者微卫星数据一般将不包括这一行。
但是如果选项RECESSIVEALLELES被设置为1,则程序要求有这一行来表明每个标记上哪个等位基因(如果有的话)是隐性的。
关于更多的信息请参阅第4.1节。
该选项用于象AFLP那样的数据,以及用于多倍体的情形,其中基因型可能是含糊的。
3.标记之间的距离(可选择;
实数)文件里的下一行是一个标记之间距离的集合,供有连锁的位点使用。
这些应该是遗传距离(例如,厘摩),或者是这种距离的一些替代,基于(例如)物理距离。
如果标记距离(粗略地)与重组率成正比,则距离的实际单位不是那么重要。
前端从数据估计一个合适的尺度,但是命令行版本的用户必须在文件extraparams里设置LOG10RMIN、LOG10RMAX和LOG10RSTART。
标记必须按照连锁群中的图谱次序排列。
当连续的标记来自不同的连锁群(例如,不同的染色体)时,这应该用数值-1注明。
第一个标记也被赋值为-1。
所有其他的距离都是非负的。
这一行包含L个实数。
4.连锁相信息(可选择;
仅用于二倍体数据;
在围[0,1]的实数)。
这只供连锁模型使用。
这是L个概率的一行,出现在每个个体的基因型数据之后。
如果连锁相是完全知道的,或者没有连锁相信息可用,则这些行是不必要的。
当有来自家系数据的部分连锁相信息,或者当来自雄性的单倍体X染色体数据和二倍体常染色体数据被一起输入时,它们可能是有用的。
对于连锁相信息有两种可选择的表示:
(1)个体的两行数据被假设为分别与父本的和母本的相对应。
连锁相行表明当前标记上的排序正确的概率(设置MARKOVPHASE=0);
(2)连锁相行表明与以前的等位基因有关的一个等位基因的连锁相是正确的概率(设置MARKOVPHASE=1)。
第一项应该填入0.5,以便把这行填写到L项。
例如下列数据输入表示来自一个男性的信息,有5个连锁相未知的常染色体微卫星位点,后面是3个X染色体位点,使用母本/父本相模型:
102156165101143105104101
100148163101143-9-9-9
0.50.50.50.50.51.01.01.0
其中-9表示“缺失数据”,这里缺失是由第二X染色体缺乏造成的,0.5表明常染色体位点的连锁相是未知的,1.0表明X染色体位点由母本遗传的概率为1.0,因此其连锁相是已知的。
相同的信息可以用markovphase模型来描述。
这样的话输入文件将读为:
102156165101143105104101
100148163101143-9-9-9
0.50.50.50.50.50.51.01.0
这里,21.0s表明那个第1和第2,其次和第3个X染色体位点彼此完全同相。
注意站点以站点产量在这些2模式下将不同。
在第一例子中,Structure将输出母亲和父亲染色体的任务可能发生的事件。
在第2个情况下,它将输出在输入文件里列举的每等位基因的可能发生的事件。
5.个体/基因型数据(必需的)取样的每一个个体的数据象在下面描述的那样安排成一行或多行。
2.3个体/基因型数据
个体数据的每一行包含下列要素。
这些形成数据文件里的列。
1.Label(标签)(可选择;
字符串)一串整数或者字母,用来指明样本中的每个个体。
2.PopData(可选择;
整数)一个整数,指明一个用户定义的群体,从其中获得个体(例如这些整数可以指明个体取样的地理位置)。
在默认的模型中,这个信息不被聚类算法使用,但是能用来帮助组织输出(例如,将来自相同的预定义群体的个体彼此紧挨着绘图)。
3.PopFlag(可选择;
0或者1)一个布尔标签,表明使用学习样本时是否使用PopData(见USEPOPINFO,在下面)。
(注:
布尔(Boolean)变量(标签)是取值为TRUE或FALSE的变量,在这里分别用整数1(使用PopData)和0(不使用PopData)表示。
4.LocData(可选择;
整数)一个整数,为每个个体指明一个用户定义的取样地点(或者其他特性,例如一个分享的表现型)。
当LOCPRIOR模型被打开时,这个信息用来帮助聚类。
如果你仅仅希望使用LOCPRIOR模型的PopData,那么你可以省略LocData列,并设置LOCISPOP=1(这告诉程序使用PopData来设置地点)。
5.Phenotype(可选择;
整数)一个整数,为每个个体指明一个所关心的表现型的值(表中的(i))。
(表现型信息实际上没有用于Structure。
这里用来允许与关联作图程序STRAT有一个平滑的接口。
6.ExtraColumns(可选择;
字符串)用户把被程序忽略的附加数据包括在输入文件里可能是方便的。
这些数据就在这里输入,可以是由整数或字符组成的串。
7.GenotypeData(必需的;
整数)一个给定位点上的每个等位基因应该由一个独特的整数来编码(例如微卫星重复得分)。
2.4缺失的基因型数据
缺失数据应该用没在数据中的其他地方出现过的一个数字来标明(按照惯例经常使用-9)。
这个数字也可以用于有单倍体和二倍体数据混合的地方(例如男性中的X和常染色体位点)。
缺失数据值是与描述数据集特性的其它参数一起被设置的。
2.5格式化的错误。
我们已经进行了相当仔细的错误检查,以保证数据集的格式正确,并且程序将试图提供一些关于存在的任何问题的性质的提示。
前端要求在每行的结束回车,不允许在行回车;
Structure的命令行版本以与处理空格或制表符(Tab)同样的方式处理回车。
可能出现的一个问题是,在将数据导入Structure之前用来组装数据的编辑程序可能引入隐藏的格式化字符,经常在行的末尾,或者在文件的末尾。
前端能自动除去大多数这些错误,但是当数据文件好像处于正确的格式时,这类问题可能对错误负责。
如果你正在把数据导入到一个Unix系统,dos2unix功能可能对彻底清理这些错误有帮助。
3用户的建模决策
3.1祖先模型
个体的祖先有4个主要模型:
(1)非混合模型(个体离散地来自一个群体或者另一个群体);
(2)混合模型(每个个体从K个群体中的每一个抽取他/她的基因组的一部分);
(3)连锁模型(象混合模型一样,但是连锁的位点更可能来自相同的群体);
(4)有先验信息的模型(允许Structure使用关于取样地点的信息:
或者帮助用弱的数据进行的聚类,发现迁移者,或者预定义一些群体)。
关于模型1、2、4的详情见Pritchard等(2000a)和Hubisz等(2009),关于模型3的详情见Falush等(2003a)。
1.非混合模型。
每个体完全来自K个群体之一。
输出报告个体i来自群体k的后验概率。
每个群体的先验概率是1/K。
这个模型适合于研究完全离散的群体,并且经常比混合模型在检测微妙的结构方面更强有力。
2.混合模型。
个体可能具有混合的祖先。
这可以表述为个体i从群体k中的祖先那里继承了他的/她的基因组的一部分。
输出记录这些比例的后验平均估计值。
以祖先向量q(i)为条件,每个等位基因的起源是独立的。
我们推荐这个模型作为大多数分析的起始点。
这是处理真实群体的大多数复杂性的一个相当灵活的模型。
混合是真实数据的一个普通特征,如果你使用非混合模型,你或许不会发现它。
混合模型也能以一种自然的方式处理混合的区域(hybridzones)。
表2:
数据文件的格式,为两行的格式。
大多数这些组成部分是可选的(欲了解详细信息,参见正文)。
Ml是标记l的标识符。
rl表明哪个等位基因,如果有的话,在每个标记上是隐性的(仅针对显性的基因型数据)。
Di,i+1是标记i和i+1之间的距离。
ID(i)是个体i的标签,g(i)是个体i的一个预先定义的群体索引(PopData);
f(i)是一个被用来合并学习样品的标签(PopFlag);
l(i)是个体i的取样地点(LocData);
(i)可以储存个体i的表现型;
y1(i),...,yn(i)用于储存额外的数据(这些数据会被程序忽略);
(xli,1,xli,2)储存个体i在位点l上的基因型。
pi(l)是个体i中的标记l的连锁相的信息。
3.连锁模型。
这实质上是将混合模型推广,来处理“混合连锁不平衡”,即,在最近混和的群体中的连锁标记之间出现的相关性。
Falush等(2003a)描述了该模型和更详细的计算。
基本的模型是,过去的t个世代,有一次混合事件,将K个群体混合了。
如果你考虑单个染色体,它由一系列“块(chunk)”组成,这些“块”是从混合时的祖先那里作为离散的单位遗传来的。
出现混合LD是因为连锁的等位基因经常在相同的块上,因此来自相同的祖先群体。
块的大小被假设为独立的指数随机变量,具有平均长度1/t(以摩尔根为单位)。
在实践中我们估计“重组率”r,所用的数据对应于从现在的块切换到新的块的比率。
个体i里的每个块以概率qk(i)独立地来自群体k,其中qk(i)是那个个体的祖先来自群体k的比例。
总起来,新模型保留了混合模型的主要要素,但是在单个块上的全部等位基因必须来自相同的群体。
新的MCMC算法结合了可能的块大小和断点。
它对于每个体报告总的祖先,考虑连锁,并且也能报告染色体的每一点儿的起源的可能性,如果用户想要的话。
当使用连锁的位点来研究混合的群体时,这个新模型表现得比原先的混合模型更好。
它得到对祖先向量的更准确的估计,并且能从数据中抽出更多的信息。
这对混合作图应该是有用的。
该模型不是用于处理非常紧密连锁的标记之间的背景LD的。
显然,这个模型是大多数混合群体的复杂现实的大大的简化。
不过,混合的主要的效应是在连锁的标记之间建立长远的相关性,因此我们这里的目的是在一个相当简单的模型中将那个特征包括进来。
计算比混合模型的要慢一点,特别对于大的K和不知道连锁相的数据。
不过,它们对于数千个位点和个体以及多个群体来说还是切实可行的。
如果有关于标记的相对位置的信息(通常是一遗传图谱),则只能使用该模型。
4.使用先验的群体信息。
Structure的默认模式只使用遗传学的信息来了解群体结构。
不过,经常有可以与聚类相关的附加信息(例如,取样的个体的物理特性或者取样的地理位置)。
目前,Structure可以用3种方式使用这种信息:
•LOCPRIOR模型:
利用取样位置作为先验信息来辅助聚类——用于结构信号比较弱的数据集。
有一些数据集,其中有真实的群体结构(例如,取样位置之间的显著的FST),但是信号太弱,标准的Structure模型不能发现。
对于标记很少、个体很少或者非常弱的Structure,经常是这样的情况。
在这种情形下,为了提高性能,Hubisz等(2009)发展了新模型,利用地点信息来辅助聚类。
对于这样的数据集,其中结构的信号太弱以致使用标准的Structure模型不能被发现,新模型经常能提供群体结构和个体祖先的准确的推断。
简言之,LOCPRIOR模型的基本原理如下。
通常,Structure假定个体的所有部分都大约是先验等可能的。
因为可能的部分的数目非常巨大,对于Structure来说,需要信息非常丰富的数据来断定个体的任何特定的部分被聚类到群具有强的统计支持。
相反,LOCPRIOR模型认为实际上,来自相同的取样位置的个体经常来自相同的群体。
因此,建立LOCPRIOR模型以期望取样的位置可能关于祖先是信息丰富的。
如果数据表明位置是信息丰富的,那么LOCPRIOR模型允许Structure使用这种信息。
Hubisz等(2009)发展了一对LOCPRIOR模型:
一种用于没有混合的情况,一种用于有混合的情况。
在两种情况中,在的模型(以及似然函数)与标准版本相同。
关键的差别是允许structure使用地点信息来帮助聚类(即,通过修改先验信息来得到与位置有关的更偏爱的聚类解决方案)。
LOCPRIOR模型具有合乎需要的特性:
(i)当不存在结构时,它们不倾向于发现结构;
(ii)当个体的祖先与取样位置不相关时,他们能够忽视取样的信息;
(iii)当群体结构的信号非常强大时,旧模型和新模型基本上给出相同的答案。
因此,我们建议在大多数数据数量非常有限的情形下使用新模型,特别是当标准的Structure模型不提供一个Structure的清晰信号时。
但是,因为现在已经积累了标准的Structure模型的很多经验,我们建议对于信息非常丰富的数据集将基本模型作为默认(Hubisz等等,2009)。
为了运行LOCPRIOR模型,用户必须首先为每个个体指定“取样地点”,作为一个整数编码。
即,我们假定样品是在一组分离的位置收集的,并且我们不使用关于地点的任何空间信息。
(我们认识到,在一些研究中,每个个体可能在一个不同的地点收集,因此将个体塞进一套更小的分离的地点可能不是对数据的理想的代表。
)“地点”也可以代表一个表现型、生态型(ecotype)或者民族团体(ethnicgroup)。
地点被键入到输入文件中,要么在PopData列(设置LOCISPOP=1)中,要么作为一个单独的LocData列(参阅第2.3节)。
为了使用LOCPRIOR模型,你必须首先指定或者用混合模型用非混合的模型。
如果你使用的是图形用户界面版本,则勾选“usesamplinglocationsasprio”(用取样位置作为先验信息)框。
如果你使用的是命令行版本,则设置LOCPRIOR=1。
(注意,LOCPRIOR与连锁模型不兼容。
我们迄今的经验是当不存在结构时,LOCPRIOR模型不偏向于检测到假的结构。
你可以把相同的诊断用于是否有真的结构,当你没使用LOCPRIOR时。
另外查看r的值可能有帮助,它确定由位置携带的信息的数量。
r的值接近1,或者<
1,表明位置是信息丰富的。
r的更大的值表明或者没有群体结构,或者结构不依赖位置。
USEPOPINFO模型:
使用取样位置来对移居者或者杂交种进行检验——供信息非常丰富的数据数据集使用。
在一些数据集里,用户可能发现预确定的组(例如取样位置)几乎正好与结构聚类相对应,除了少数似乎被错误归类的个体以外。
Pritchard等(2000a)提出了正式的Bayesian检验,用于评价是否在这个样品的任何个体是他们认为的群体的移民,或者具有新近的移民祖先。
注意这个模型假定被预先规定的群体通常是正确的。
它采用十分强大的数据来克服先验的错误分类。
在使用USEPOPINFO模型之前,你也应该在没有群体信息的情况下运行程序,以保证预确定的群体与遗传学的信息粗略一致。
为了使用这模型,把USEPOPINFO设置为1,并且选择MIGRPRIOR的一个值(在Pritchard等(2000a)中它是v)。
你可以在0.001到0.1的围为v选择一个值。
每个个体的预确定的群体被设置在输入数据文件中(见PopData)。
用这种方式,在输入文件里被分配到群体k的个体在Structure算法中将被分配到群k。
因此,被预先规定的群体应该是在1和MAXPOPS(K)之间的整数。
如果任何个体的PopData超出这个围,它们的q将按正常的方式被更新(即没有先验的群体信息,根据将被使用的模型,如果USEPOPINFO被关上的话。
)
预先指定一些个体的起源的群体来帮助未知起源的个体的祖先估计。
使用USEPOPINFO模型的第二个方法是定义“学习样本”(learningsamples),它被预定义为来自特定的群。
然后用Structure来聚类剩下的个体。
注意:
在前端里,这个选项使用“UpdateallelefrequenciesusingonlyindividualswithPOPFLAG=1”选项被打开,位于“AdvancedTab”标签下。
学习样品是利用数据文件里的PopFlag列实现的。
预先规定的群体被用于那些个体,它们的PopFlag=1(并且它们的PopData在(1...K)中)。
对于PopFlag=0的个体,PopData值被忽略。
如果数据文件里没有PopFlag列,那么当USEPOPINFO被开启时,PopFlag被为全部个体设置为1。
具有PopFlag=0的或者PopData不在(1...K)中的个体的祖先,根据混合或者没有混合的模型被更新,象由用户指定的那样。
如上所述,如果有很少的个体没有预先规定的群体,将设置成一个明智的值来可能是有帮助的。
USEPOPINFO的应用可能在几个方面有帮助。
例如,可能有一些个体的来源是已知的,我们的目标是对未知来源的另外的个体进行归类。
例如,我们可能从一群已知品种(编号为1...K)的狗中收集数据,然后使用Structure为未知的(也许是杂交种)起源的另外的狗估计祖先。
通过预先设置群体数目,我们可以保证Structure聚类对应于预先确定的品种,这使输出更可解释,并且能改进推论的准确性。
(当然,如果两个预先确定的品种在遗传上是相同的,那么未知起源的狗可能被推断为具有混合的祖先。
USEPOPINFO的另一种用途是用于这样一种情况:
用户想要只使用个体的一个子集来更新等位基因频率。
通常,Structure分析使用全部可得到的个体来更新等位基因频率估计值。
但