版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用dna测序片段数据确定个体单体型问题
1snps和单体型为了彻底消除人类遗产信息,人类基金会于20世纪90年代开始了人类疾病研究计划。2000年6月,人类疾病样本的图纸被绘制,2003年4月人类疾病的地图基本完成。在此之前,人类疾病的共同特征被揭示,但不同的人具有不同的外表和身体、不同的抗逆能力和不同的药物敏感性。遗传上,不同的个体(除同生卵胎外)的基因不完全相同。两组之间的dna差异约为组的0.1%。单个氨基酸含量的synps是人类染色体特定点的碱基变化。将synps广泛分布在人类疾病基因中,预计将有数百个synps。单核苷酸多态性是一个物种中不同个体表型的主要遗传来源.识别SNPs对基因的精确定位、了解基因功能很有帮助,对遗传病等疾病的诊断和药物研究有重要作用,SNPs可用于个体识别、亲子鉴定,亦可用于人类各群体的遗传关系分析.Stephens等利用单体型研究人类313个基因中的3899个SNPs,然后进行连锁不平衡分析,其结果支持了人类群体在近代扩张的说法.Horikawa等根据SNPs进行关联分析在墨西哥裔美国人中把2型糖尿病基因定位在2号染色体长臂,并发现CAPN10基因的3个SNPs和2型糖尿病相关.一个SNP位点指的是在一个物种的基因组DNA序列中不同个体可能出现不同碱基的位置.在一条染色体SNP位点上的碱基序列叫做单体型(haplotype).人类等二倍体生物的染色体是成对存在的,都有一对单体型.图1中的一对单体型分别是“ATACG”和“GCATG”.单体型在SNPs的上述应用中扮演着重要的角色,不幸的是在当前的实验技术下,把个体的一对染色体分开,独立测定每一条染色体上的单体型既费钱又费时间,因此利用计算机技术来确定个体的单体型具有极其重要的现实意义.本文研究如何利用个体的DNA测序片断数据,根据不同的优化准则确定该个体的单体型.本文第2节介绍个体单体型问题的抽象模型和当前的研究现状;第3节阐述基于无空隙片断数据的参数化算法,分析其复杂度;第4节给出实验结果;最后进行总结和展望.2dna片段和snp矩阵人类等双倍体生物的DNA序列是按染色体成对出现的.对于任意一个SNP位点来说,2条染色体上的碱基可以是相同的,这种现象叫纯合(homozygous);也可以是不同的,这种现象叫做杂合(heterozygous).这样一条染色体在SNP位点的投影序列即单体型(haplotype)可以用字符集{A,B}上的字符序列来表示,不必用真正的碱基字符,其中‘A’通常表示人群在该位点上常见的SNP值,这样图1中的一对单体型则可表示为一对字符串“ABAAB”和“BAABB”.基于直接测定单体型的技术困难性和单体型在遗传分析上的重要性,Lancia等提出了直接利用个体的DNA测序片断数据来确定该个体的一对单体型,这个计算问题就是个体单体型问题(individualhaplotypingproblem).对基因组进行测序时,因为技术上的限制,只能直接对较短的DNA片断进行测序,这些片断来自一对染色体的不同单体,测序过程中不可避免地会发生一些错误.给定某个个体一组已测序的DNA片断数据,个体单体型问题就是要去掉最小数量的数据,以便能发现一对单体型与剩下的数据兼容.去掉最小数量的数据可以是去掉最少的片断或最少的SNP位点.n个SNP位点按在染色体上的次序从左到右记作S:{1,2,…,n},m个片断记作F:{1,2,…,m}.任意SNP位点应该被某些DNA片断覆盖,任意片断在它所覆盖的SNP位点的取值为{A,B,-},其中‘-’为空值,表示片断在该位点的取值未知.DNA片断的数据集可以表示为在{A,B,-}上的一个m×n的矩阵,叫做SNP矩阵M.图2是一个8×8的SNP矩阵.SNP矩阵的列表示SNP位点,行表示片段在对应的SNP位点上的取值,Mij表示第i个片断在第j个SNP位点上的取值.为了行文简洁,下面引入与SNP矩阵M相关的几个定义.定义1.如果(∃k(Mik≠‘-’)∧(k≤j))∧(∃r(Mir≠‘-’)∧(j≤r))),则称行i覆盖列j.行i覆盖列j就是行i在列j上取值非空,或在列j前至少有一列,在列j后也至少有一列,使得行i在这两列上的取值均非空.在图2中行2覆盖列2~7.如果某一行覆盖某一列,但是该行在该列上的取值为空,则称该行在该列上有个洞(hole).图2中行2在列5上有个洞.如果M的所有行都没有洞,则称M为无空隙的SNP矩阵.定义2.如果两行在某一列上的值都不是空值,且这两行在该列上的值不相等,那么这两行在该列上冲突.如果两行在所有的列上均不冲突,则这两行兼容.如果测序过程没有任何错误,代表来自于同一染色体的片段的行必定两两兼容.定义3.对于M的两列j1和j2,如果M的所有行都可以划分到两个子集中,使得划分在同一个子集中的任意两行在列j1和j2上均不冲突,则列j1和j2兼容,满足上述条件的划分叫做在列j1和j2上兼容的划分;如果不存在着在列j1和j2上兼容的划分,则列j1和j2冲突.在图2中,如果要在列3上不冲突,行2,3,6必须划分到同一子集中,行4,5则必须划分到另一子集中;但是这样划分的话,行6与行2在列4上冲突,由此可见,列3和4冲突.对于列1和列2而言,把行2和3分到一个子集中,行4和5分到另一个子集中的任意划分都是在列1和2上兼容的划分,所以列1和列2兼容.定理1.对于一个SNP矩阵M,只有‘A’或‘B’值的任意列不会和其它列冲突.对于既有‘A’又有‘B’值的列j1,j2,列j1,j2冲突当且仅当存在着两行i1、i2:i1≠i2,有Mi1j1,Mi1j2,Mi2j1,Mi2j2均不为空值,且这4个值之中有3个相同、1个不同.证明.不失一般性,令列j1只有‘A’值,对其它任意列j2,M中的所有行均可如下划分:在列j2上取A值的行划分到第一个集合中,在列j2上取B值的行划分到第2个集合中,其它的行随机划分到这两个集合中,容易验证,这样划分到同一个集合中的任意两行在列j1和j2上不会冲突.因此如果一列只有‘A’或‘B’值,该列不会和其它任何列冲突.对于既有‘A’又有‘B’值的列j,如果要使划分在同一个子集中的行在列j上不冲突,则在列j上取值为‘A’的所有行必须划分在同一子集中,在列j上取值为‘B’的行必须划分在另一个子集中.对于既有‘A’又有‘B’值的两列j1,j2,如果存在着两行i1,i2,有Mi1j1,Mi1j2,Mi2j1,Mi2j2均不为空值,且这4个值之中有3个相同、1个不同,不失一般性,令Mi1j1=Mi2j1=Mi1j2=‘A’、Mi2j2=‘B’,那么按列j1上的取值,行i1和i2应该划分到同一个子集中;而按列j2上的取值,行i1和i2应该划分到不同的子集中,这相互矛盾,说明不存在列j1和j2上兼容的划分.因此列j1,j2冲突.反过来,对于既有‘A’又有‘B’值的两列j1,j2,如果列j1,j2不冲突,那么存在着一个划分使M的所有行划分到两个子集中,使得相同子集中的任意两行在列j1和j2上不冲突.这样对任意两行i1,i2,如果有Mi1j1,Mi1j2,Mi2j1,Mi2j2均不为空值,即不是‘A’值就是‘B’值,那么如果这两行被划分到同一个子集中,则这两行在列j1上的值相等,在列j2上的值也应相等;如果这两行被划分到不同的子集中,则这两行在列j1上的值不相等,在列j2上的值也应不相等.这样这4个值之中就不可能有3个相同、1个不同的情况.定理得证.证毕.定义4.如果SNP矩阵M的所有行可以分成2个不相交的子集,每个子集中的所有行都相互兼容,则M是可行的.如果M是可行的,则很容易找到一个划分,使划分在同一个子集中的所有行都兼容,进而通过同一个子集中的行很容易重建与这些行兼容的单体型.如果测序过程没有任何错误,测序片段数据对应的SNP矩阵必定是可行的,那么通过DNA测序片段数据很容易得出个体的一对单体型.可是由于测序过程的错误是不可避免的,因此实验室测得的片段数据对应的SNP矩阵通常是不可行的.Lancia等最先讨论对SNP矩阵进行处理使其可行的计算模型,引入了下面的个体单体型优化问题:问题1.MFR(MinimumFragmentRemoval,最少片断删除).给定一个SNP矩阵M,删除最少的行使M可行.问题2.MSR(MinimumSNPRemoval,最少SNP删除).给定一个SNP矩阵M,删除最少的列使M可行.不进行任何处理,图2所示的SNP矩阵是不可行的.当去掉第6行后,行1,4,5和8相互兼容,构成一个子集,进而得出一个单体型为“BABBABAB”;行2,3和7相互兼容,构成另一个子集,进而得出另一个单体型为“ABAABABA”.或者不去掉行,则去掉列4后,行1,4,5和8相互兼容,构成一个子集,进而得出一个单体型为“BAB-ABAB”;行2,3,6和7相互兼容,构成另一个子集,进而得出另一个单体型为“ABA-BABA”(去掉的列所代表SNP位点的值为空值).Lancia等证明了在DNA片断数据有洞(hole)的情况下,MFR是NP-hard;如果片断上洞的个数超过一个,则MSR是NP-hard;并且在这些情况下,MSR和MFR问题都是APX-hard.在DNA片断数据中无洞的情况下,Lancia等证明了MFR和MSR是多项式时间可解的.Bafna等对这些问题进行了深入的研究,对于m个DNA片断,n个SNP位点的无空隙的SNP矩阵的MSR和MFR问题,提出了时间复杂度为O(mn2)和O(m2n+m3)、空间复杂度为O(mn+n2)和O(mn+m3)的多项式算法.人有24条不同的染色体,染色体的平均长度约为150000000个碱基1,SNP的分布密度约为0.1%,这样一条染色体上的SNP位点数约为150000.当从shotgun全基因组测序所得到的序列数据推出个体的单体型时,能直接测序的片段长度约为1000个碱基,一个碱基大约被10个不同的片段覆盖,因此得到的片断数约为1500000(150000,000×10/1000).在这种情况下,即使DNA片断数据无空隙,解决MSR和MFR的这些算法的时间复杂度仍然太大,推断染色体一个区域的单体型时情况也是如此.因而根据目前基因组测序的技术现状,针对DNA测序数据和个体单体型问题的特点提出更高效的算法具有重要的现实意义.3参数化条件:k1,k1,k目前最流行的SNP探测方法是DNA直接测序,这种方法48h可分析近百万个碱基对,杂合的SNPs探测率达95%以上,SNP联盟(SNPConsortium)用这种方法测得了上百万SNPs.当前DNA测序的主导方法是Sanger双脱氧链终止法.采用Sanger双脱氧链终止法测序,一次能测定的DNA序列的长度仅为800~1200个碱基.各大测序中心使用的第三代测序仪如MageBACE等可测片断长度约为1000碱基2,而SNPs的平均分布密度约为1/1000,虽然SNPs在整个染色体上的分布很不均匀,从已有的数据来看,一个长度1000bp的片断上的SNP位点是极其有限的,通常在10个以内.另外出于测序的时间和代价的考虑,基因组测序的DNA片断对SNP位点的覆盖度(覆盖一个SNP位点的片段数)是有限的.在目前的shotgun实验测序中,覆盖度约为10.当需要测定某个体在一条染色体上的单体型时,覆盖一个SNP位点的DNA片断数远小于shotgun法测得的片断总数.因此,在DNA测序实验中,一个片断覆盖的SNP位点数(小于10)和覆盖一个SNP位点的片断数(约为10)与通常要探测的SNP位点数(n)及DNA片断总数(m)相比,均是很小的数.基于以上事实,我们提出以下参数化条件.定义5.(k1,k2)参数化条件:k1,k2是正整数,(k1,k2)参数化条件定义为片段覆盖的SNP位点数不超过k1,覆盖任意SNP位点的片段数不超过k2.对一个无空隙的SNP矩阵M而言,(k1,k2)参数化条件等价为矩阵M的每一行最多只有一块连续非‘-’字符序列,该字符序列长度不超过k1个;矩阵M每一列最多有k2个行的取值为非‘-’字符.下面本文深入研究无空隙的SNP矩阵M的MSR和MFR算法.对于任意无空隙的SNP矩阵M,很容易得出它的(k1,k2)参数值,因此为了行文简洁,除了特别声明外,以下的SNP矩阵都是指满足(k1,k2)参数化条件的无空隙SNP矩阵.首先对MSR问题和MFR问题参数化.问题3.P_MSR(ParameterizedMinimumSNPRemoval).给定一个SNP矩阵M,满足(k1,k2)参数化条件,P_MSR问题是要求删除最少的列,也就是保留最多的列使M可行.问题4.P_MFR(ParameterizedMinimumFragmentRemoval).给定一个SNP矩阵M,满足(k1,k2)参数化条件,P_MFR问题是要求删除最少的行,也就是保留最多的行使M可行.本文中,一个SNP矩阵M的P_MSR解指的是使M可行能保留下来的最多的列数,用P_MSR(M)来表示;一个SNP矩阵M的P_MFR解指的是使M可行能保留下的最多的行数,用P_MFR(M)来表示.函数left和right分别用来表示M中的行覆盖的最左边和最右边的列号,即行i覆盖的最左边的列是left(i),覆盖的最右边的列是right(i).M的前i行构成的SNP矩阵记作M(i,:).在求解问题3和问题4时,先对SNP矩阵M进行如下预处理:1.排序.调整M中各行的次序,使各行按其left值进行非降序排列.同时对于任意列j,计算出覆盖该列的行的序号的有序集,记作rowset(j).对于一个满足(k1,k2)参数化条件的SNP矩阵M,排序后如图3所示.2.去掉冗余列.对M的每一列j,如果rowset(j)中的所有行在该列的取值中没有出现‘A’或没有出现‘B’,那么该列就是冗余列,标记该列.最后去掉所有标记的列,调整剩下列的序号,修改对应行的left和right函数值.3.去掉冗余行:对M的每一行i,如果该行在剩下的列上的取值均为空,则该列就是冗余行,标记该行.最后去掉所有标记的行,修改受影响的列的rowset集.令M采用如下数据结构;对每一行i,记下该行覆盖的最左边和最右边的列号,即left(i)和right(i),记录该行从列left(i)到列right(i)的各列上的值.预处理时间复杂度分析:排序所需的时间为O(mlogm),对排好序的行扫描一遍可得到各列的rowset有序集,这样步1所需时间为O(mlogm+mk1);去掉冗余列所需时间为O(nk2),修改left和right值所需时间为O(mk1),这样步2所需的时间为O(nk2+mk1);去掉冗余行所需时间为O(mk1),修改rowset有序集所需时间为O(nk2),这样步3所需的时间为O(mk1+nk2).所以整个预处理所需的时间为O(mlogm+nk2+mk1).定理2.一个满足(k1,k2)参数化条件的SNP矩阵M经过以上预处理后仍然满足(k1,k2)参数化条件.证明.排序、去掉冗余列和冗余行的预处理显然不会增加某一行覆盖的列数和覆盖某一列的行数.证毕.定理3.一个SNP矩阵M经过以上预处理后得到的SNP矩阵记作M′,去掉的冗余列集和冗余行集分别记作X和Y,则M的P_MSR解等于M′的P_MSR解与X的列数之和,M的P_MFR解等于M′的对应解与Y的行数之和.证明.首先证明M的P_MSR解等于M′的P_MSR解与X的列数之和.因为去掉的列在所有的行上的取值只含有‘A’或‘B’,所以M的任意一行均不会在去掉的列上和其它行冲突.令S是M′的一些或全部列构成的集合,容易看出,如果保留S中的所有列可使M′可行,那么保留S∪X中的所有列也可使M可行.由此可证M的P_MSR解等于M′的P_MSR解与X的列数之和.同理Y中的行不会与其它任何行冲突,因此M′的P_MFR解中所保留下的行加上Y中的行所形成的SNP矩阵肯定是可行的,因此可以证明M的P_MFR解等于M′的P_MFR解与Y的行数之和.证毕.从定理3可知,求解一个SNP矩阵的P_MSR和P_MFR解可以归结为求其预处理后的SNP矩阵的对应解.对于行列数为0的SNP矩阵,易知其P_MSR和P_MFR解均为0.为了叙述的简洁,下面讨论的SNP矩阵M均指预处理后的SNP矩阵,该矩阵具有如下特点:行列数m,n>0;任何一个列总有一些行的值是‘A’,还有一些行的值为‘B’;对于行i≤j,有left(i)≤left(j).3.1基于pmsr的无孔隙snp矩阵m的最优模型由文献的定理3可知一个无空隙的SNP矩阵M是可行的当且仅当其任意两列均不冲突,因此P_MSR问题等价于保留最多的列,使保留的列中的任意两列均不冲突.令C是M一个列的子集,如果C中的列彼此兼容,且C中的列的最大列号为j,则C称为列j的兼容列集.对于列j的任意兼容列集C,容易看出保留C中的所有列可使M可行.令K(j)表示列j的最大兼容列集.显然:K(1)={1}(1)由文献的引理2可知对于一个无空隙的SNP矩阵M的任意3列j1<j2<j3,如果j1与j2兼容,j2与j3兼容,则一定有j1与j3兼容.因此对于任意两列r、j:r<j,如果列r和j兼容,则K(r)∪{j}一定是列j的兼容列集,由此容易证明Κ(j)={j}∪maxr∶1≤r<j,列r和j兼容Κ(r),其中对集合进行的max运算是取元素最多的集合,即maxr∶1≤r<j,列r和j兼容Κ(r)为满足1≤r<j且列r和j兼容的所有K(r)中的最大集合,如果没有满足这些条件的K(r),则为空集Ø,下文也是如此.对于列j和它前面的列r,下面判断列j是否和r相容:Case1.r≤j-k1:因为M满足(k1,k2)参数化条件,所以M的任一行覆盖的列数不会超过k1,这样就不可能存在着两行i1、i2:i1≠i2,Mi1j1,Mi1j2,Mi2j1,Mi2j2均不为空值.根据定理1,列r与j兼容.Case2.r>j-k1:因为M经过了预处理,所以任意一列上既有‘A’又有‘B’.根据定理1,只需对在列r与j上取值均非空的行进行观察,这些行的个数不大于k2.如果这些行在这两列上的取值只有“AA”、“BB”两种类型,或只有“AB”、“BA”两种类型,那么列r与j兼容;否则就不兼容.令A(j)表示K(1)到K(j)的最大值,如果j<0,规定A(j)=Ø;令OK(j)={r|j>r>j-k1且列r与j兼容}.由上面的讨论,易知下面的公式成立:Κ(j)={j}∪max(A(j-k1),maxr∈ΟΚ(j)(Κ(r)))(2)由P_MSR问题的定义可知:P_MSR(M)=max(|A(n-k1)|,|K(n-k1+1)|,…,|K(n)|)(3)在式(1)~(3)的基础上,可得到求解无空隙SNP矩阵M的P_MSR问题的动态规划算法,如图4所示.定理4.对于一个m×n满足(k1,k2)参数化条件的无空隙SNP矩阵M,P_MSR算法是正确的,加上预处理其时间复杂度为O(nk1k2+mlogm+mk1),空间复杂度为O(mk1+nk1).证明.P_MSR算法的正确性由式(1)~(3)的正确性来保证,而式(1)~(3)的正确性在引入的时候已经得到了证明.下面分析其复杂度.时间复杂度分析.步1中扫描M得到k1和k2所需的时间为O(mk1);步2.2.1中判断列r与j是否兼容所需时间为O(k2),步2.2.1最多执行nk1次,由此可知步2的时间复杂度为O(nk1k2);步3的时间复杂度为O(1);步4的时间复杂度为O(k1).这样加上预处理的时间整个算法的时间复杂度为O(nk1k2+mlogm+mk1).空间复杂度分析.SNP矩阵所需的空间为O(mk1),计算K(j)只需要A(j-k1),K(j-k1+1),…,K(j-1)的值,因此A和K均可采用大小为k1的循环队列,需要的空间为O(nk1),所以整个算法的空间复杂度为O(mk1+nk1).定理得证.证毕.3.2多兼容行集的要求考虑m×n的SNP矩阵M的前i行构成的矩阵M(i,:),令R为M(i,:)的行的子集,如果保留R中的所有行能使M(i,:)可行,那么R就称为M(i,:)的一个兼容行集.如果R是M(i,:)的一个兼容行集,则必定可以把R划分成两个子集R1和R2,使得划分在同一子集的行彼此兼容.对于Rj:j=1,2,找出具有以下特性的行rj作其代表:(1)rj∈Rj;(2)对于任意行r∈Rj,有right(r)<right(rj),或者right(r)=right(rj)且r≤rj.在“right(r1)<right(r2)”或“right(r1)=right(r2)且r1<r2”的情况下,R叫做行r1,r2代表的M(i,:)的兼容行集;否则R叫做行r2,r1代表的M(i,:)的兼容行集.划分得来的子集在极端情况下可能是空集,为了上述概念的完整性,规定空集的代表行为0,而且left(0)=-1,right(0)=-2,行0与所有其它行均兼容.显然空集也应是M(i,:)的一个兼容行集,所以进一步规定空集是行0,0代表的M(i,:)的兼容行集.令R(d,k,i)表示以行d,k为代表的M(i,:)的最大兼容行集.易知R(0,0,1)=Ø;R(0,1,1)={1}(4)令R(*,k,i)表示所有满足right(d)<left(i+1)的最大R(d,k,i),即R(*,k,i)=maxd:right(d)<left(i+1)R(d,k,i).令R(*,*,i)表示所有满足right(k)<left(i+1)的最大R(*,k,i),即R(*,*,i)=maxk:right(k)<left(i+1)R(*,k,i).这样就有R(*,0,1)=Ø;R(*,1,1)={1};R(*,*,1)={{1},right(1)<left(2)∅,否则(5)为了使R(*,k,i)、R(*,*,i)在i=m时有意义,引入行m+1,规定left(m+1)=n+1.这样,根据P_MFR的定义,显然有P_MFR(M)=|R(*,*,m)|(6)即R(*,*,m)中的行数.定理5.对于一个预处理后的无空隙SNP矩阵M,行i+1与R(d,k,i)中以行d(或k)为代表的子集中所有行兼容当且仅当行i+1与行d(或k)兼容.证明.如果行i+1与R(d,k,i)中以行d(或k)为代表的子集中所有行兼容,那么显然行i+1与行d(或k)兼容.下面证明如果行i+1与行d兼容,则行i+1与R(d,k,i)中以行d为代表的子集中所有行兼容:对于R(d,k,i)中以行d为代表的子集中任意一行r,必有right(r)≤right(d),且行r与d在列max(left(r),left(d))到列right(r)中的任一列上取值必定非空(无空隙),而且相等.由于M是经过排序的,且r,d≤i+1,所以max(left(r),left(d))≤left(i+1).由于M是无空隙的SNP矩阵,且行i+1与行d兼容,所以行i+1与行d在列left(i+1)到列min(right(i+1),right(d))中的任一列上取值必定相等,而且非空.这样行i+1与行r在列left(i+1)到列min(right(i+1),right(r))中的任一列上取值必定相等,而在其它的列,总有一行在该列的值为空,因此行i+1与行r在任意列上均不冲突,行i+1与行r兼容.同样可以证明如果行i+1与行k兼容,则行i+1与R(d,k,i)中以行k为代表的子集中所有行兼容.定理得证.证毕.为了行文简洁,满足下列2个条件的行k的集合记作Sk(i):(1)k≤i;(2)right(k)≥left(i).满足下列4个条件的(d,k)的集合记作Sdk(i):(1)d,k<i;(2)right(d)≥left(i);(3)right(k)≥left(i);(4)“right(d)<right(k)”或“right(d)=right(k)且d<k”.令C(i)={r|r∈Sk(i),且行r与i兼容}.下面讨论对于行i:2≤i≤m,在R(*,*,i-1)、所有的R(*,k,i-1):k∈Sk(i)和所有的R(d,k,i-1):(d,k)∈Sdk(i)都已知的条件下,如何求出R(*,*,i)、所有可能的R(*,k,i)(k∈k(i+1))和所有的R(d,k,i)((d,k)∈Sdk(i+1)).首先对于所有的(d,k)∈Sdk(i),计算R(d,k,i):R(d,k,i-1)显然是一个以行d,k为代表的M(i,:)的兼容行集,而M(i,:)比M(i-1,:)多的行只有行i,易知R(d,k,i)比R(d,k,i-1)最多只会增加一个元素,增加的元素只可能是行i.在满足“i与d兼容,right(i)<right(d)”或“i与k兼容,right(i)<right(k)”的条件下,根据定理5,{i}∪R(d,k,i-1)显然是一个以行d,k为代表的M(i,:)的兼容行集,所以有R(d,k,i)={i}∪R(d,k,i-1)(7)否则,必定有R(d,k,i)=R(d,k,i-1)(8)这是因为如下事实:条件“i与d兼容,right(i)≤right(d)”得不到满足,则行i如果划分到行d代表的子集中,那么或者d所在的子集中的行不再相互兼容,或者d所在的子集的代表不再是d而应该是i.而条件“i与k兼容,right(i)≤right(k)”得不到满足,那么或者k所在的子集中的行不再相互兼容,或者k所在的子集的代表不再是k而应该是i.这两个条件都得不到满足,则行i必定不能在以d,k为代表的M(i,:)的兼容行集之中.对于所有的r∈Sk(i):如果right(r)≤right(i),有下面的公式成立(证明见定理6):R(r,i,i)={i}∪max(R(*,r,i-1),maxd:d∈C(i),(d,r)∈Sdk(i)R(d,r,i-1),maxk:k∈C(i),(r,k)∈Sdk(i),right(k)≤right(i)R(r,k,i-1))(9)否则,即right(r)>right(i),有下面的公式成立(证明见定理6):R(i,r,i)={i}∪max(R(*,r,i-1),maxd:d∈C(i),(d,r)∈Sdk(i),right(d)≤right(i)R(d,r,i-1))(10)对于所有的k∈Sk(i),计算R(*,k,i):令I表示maxd:right(d)<left(i)R(d,k,i),Ιdk(i)表示Sdk(i)∪{(i,k)|k∈Sk(i),right(k)>right(i)}.根据R(*,k,i)的定义:R(*,k,i)=max(Ι,maxd:left(i)≤right(d)<left(i+1)R(d,k,i))=max(Ι,maxd:(d,k)∈Ιdk(i),right(d)<left(i+1)R(d,k,i)).对于所有的d≤left(i),如果k与i兼容且right(k)>right(i),有R(d,k,i)=R(d,k,i-1)∪{i}(理由与式(7)相同),Ι=maxd:right(d)<left(i)R(d,k,i-1)∪{i}={i}∪R(*,k,i-1);否则有R(d,k,i)=R(d,k,i-1)(理由与式(8)相同),Ι=maxd:right(d)<left(i)R(d,k,i-1)=R(*,k,i-1).因此有下面公式成立:如果k与i兼容且right(k)>right(i):R(*,k,i)=max(R(*,k,i-1)∪{i},maxd:(d,k)∈Ιdk(i),right(d)<left(i+1)R(d,k,i))(11)否则,必定有R(*,k,i)=max(R(*,k,i-1),maxd:(d,k)∈Ιdk(i),right(d)<left(i+1)R(d,k,i))(12)最后计算R(*,i,i)和R(*,*,i)(证明见定理6):R(*,i,i)=max({i}∪R(*,*,i-1),{i}∪maxk:k∈C(i),right(k)≤right(i)R(*,k,i-1),maxd:d∈Sk(i),right(d)≤right(i),right(d)<left(i+1)R(d,i,i))(13)R(*‚*‚i)=max(R(*‚*‚i-1),maxk:k∈Sk(i)∪{i},right(k)<left(i+1)R(*,k,i))(14)由于Sk(i+1)与Sk(i)的差集或者是空或者是{i},Sdk(i+1)与Sdk(i)的差集最多是{(d,i)|d∈Sk(i),right(d)≤right(i)}∪{(i,k)|k∈Sk(i),right(i)≤right(k)},所以通过式(7)~(14)可以求出R(*,*,i)、所有可能的R(*,k,i)(k∈Sk(i+1))和所有的R(d,k,i)((d,k)∈Sdk(i+1)).根据式(4)~(14),可得出下面的P_MFR动态规划算法,如图5所示.定理6.对于一个预处理后满足(k1,k2)参数化条件的无空隙m×nSNP矩阵M,P_MFR算法是正确的,加上预处理,其时间复杂度为O(mk22+mk1k2+mlogm+nk2),空间复杂度为O(mk1+mk22).证明.P_MFR算法的正确性取决于式(4)~(14)的正确性.式(4)~(8)、(11)和(12)的证明在公式的引入时已经给出,下面证明其它公式.在式(9)中,显然只有当right(r)≤right(i)时,R(r,i,i)才会有意义.令I1表示R(*,r,i-1),I2表示maxd:d∈C(i),(d,r)∈Sdk(i)R(d,r,i-1),I3表示maxk:k∈C(i),(r,k)∈Sdk(i),right(k)≤right(i)R(r,k,i-1).首先证明{i}∪I1,{i}∪I2,{i}∪I2都是以r,i为代表的M(:,i)的兼容行集.根据定义,I1即R(*,r,i-1)存在着一个划分,使得划分在同一个子集中的行彼此兼容,且其中一个子集的代表是行r,另一个子集的代表为行d且right(d)≤left(i).显然行i与行d没有共同覆盖的列,所以行i与d兼容,进而根据定理5,行i与d所代表的子集中的所有行均兼容.这样行i加入到d所在的子集后,行i将取代d作为该子集的代表,这样{i}∪I1就是一个以r,i为代表的M(:,i)的兼容行集.对于任意(d,r)∈Sdk(i),同样存在着R(d,r,i-1)的一个划分,使得划分在同一个子集中的行彼此兼容,且其中一个子集的代表行是r,另一个子集的代表为行d.如果d∈C(i),即行i与d兼容,那么根据定理5,行i与d所代表的子集中的所有行均兼容.行i加入到d所在的子集后,由于right(d)≤right(r)≤right(i),行i将取代d作为该子集的代表,显然{i}∪R(d,r,i-1)是一个以r,i为代表的M(:,i)的兼容行集,因此{i}∪I2也是.同理,对于任意(r,k)∈Sdk(i),R(r,k,i-1)存在着一个划分,使得划分到同一个子集中的行彼此兼容,且其中一个子集的代表是行r,另一个为k.如果k∈C(i),即行i与k兼容,根据定理5,行i与k代表的子集中的所有行均兼容.行i加入到k所在的子集后,如果right(k)≤right(i),行i将取代k作为该子集的代表行,这样{i}∪R(r,k,i-1)就是一个以r,i为代表的M(:,i)的兼容行集,因此{i}∪I3也是.现在证明{i}∪max(I1,I2,I2)是一个以r,i为代表的M(:,i)的最大兼容行集.采用反证法,假设{i}∪max(I1,I2,I3)不是M(:,i)的一个以r,i为代表的最大兼容行集,这就是说R(r,i,i)中的行数比{i}∪I1、{i}∪I2和{i}∪I3中的行数都要多.根据定义,R(r,i,i)中的行可以划分成两个子集,同一个子集的行互相兼容,且这两个子集中的行的代表分别是r,i.令i所在的子集去掉行i后的代表行为l,显然l与i兼容.如果right(l)≤left(i),则R(r,i,i)去掉行i后得到的行集R(r,i,i)-{i}是以l,r为代表的M(:,i-1)的一个兼容行集,如果假设成立,则R(r,i,i)-{i}比I1大,这与R(*,r,i-1)的定义矛盾.如果right(l)≥left(i),那么或者(l,r)∈Sdk(i)或者(r,l)∈Sdk(i)(因为r∈Sk(i)).如果(l,r)∈Sdk(i),则R(r,i,i)-{i}是以l,r为代表的M(:,i-1)的一个兼容行集.如果假设成立,则R(r,i,i)-{i}比I2大,这与R(l,r,i-1)的定义矛盾;如果(r,l)∈Sdk(i),则R(r,i,i)-{i}是以r,l为代表的M(:,i-1)的一个兼容行集.如果假设成立,则R(r,i,i)-{i}比I3大,这与R(r,l,i-1)的定义矛盾.由此式(9)对于所有满足right(r)≤right(i)的(r,i)都成立,用同样的方法可以证明式(10)成立.式(13)的证明:令I1表示maxd:right(d)<left(i)R(d,i,i)‚I2表示maxd:d∈Sk(i),right(d)≤right(i),right(d)<left(i+1)R(d,i,i).根据定义,R(*,,i,i)=max(I1,I2),这样证明式(13)只需证明Ι1=max({i}∪R(*‚*‚i-1),{i}∪maxk:k∈C(i),right(k)≤right(i)R(*,k,i-1))={i}∪max(R(*‚*‚i-1),maxk:k∈C(i),right(k)≤right(i)R(*,k,i-1)).对于满足条件“right(d)≤left(i)”的任意d,用证明式(9)的方法可以证明下式成立:R(d,i,i)={i}∪max(R(*,d,i-1),maxk:k∈C(i),right(k)≤right(i)R(d,k,i-1))‚因此Ι1={i}∪max(maxd:right(d)<left(i)R(*,d,i-1),maxk:k∈C(i),right(k)≤right(i)(maxd:right(d)<left(i)R(d,k,i-1)))={i}∪max(R(*‚*‚i-1),maxk:k∈C(i),right(k)≤right(i)R(*,k,i-1)).式(13)成立.式(14)的证明:令I1代表maxk:right(k)<left(i)R(*,k,i)‚I2代表maxk:k∈Sk(i)∪{i},right(k)<left(i+1)R(*,k,i).根据定义,R(*,*,i)=max(I1,I2).对于满足right(k)≤left(i)的任意R(d,k,i)而言,有right(d)≤right(k)≤left(i),因此有R(d,k,i)=R(d,k,i-1)(理由同式(8)),所以Ι1=maxk:right(k)<left(i)(maxd:right(d)<left(i)R(d,k,i))=maxk:right(k)<left(i)(maxd:right(d)<left(i)R(d,k,i-1))=maxk:right(k)<left(i)R(*,k,i-1)=R(*‚*‚i-1).式(14)成立.算法的时间复杂度:算法的主体部分是步3.由于M经过了预处理,那么k≤i意味着left(k)≤left(i),这时如果还有right(k)≥left(i),则可以肯定行k覆盖列left(i),所以Sk(i)中的元素个数|Sk(i)|不会超过覆盖列left(i)的行数.由于M满足(k1,k2)参数化条件,所以|Sk(i)|≤k2.这样步3.1循环不超过(m-1)k2次,在步3.1.3中,判断两行是否兼容只需检查两行在它们共同覆盖的列上是否冲突,步3.1.3执行一次所需时间为O(k1),所以步3.1所需时间为O(mk1k2);可以看出Sdk(i)中的元组个数不会超过k22,所以步3.3和步3.5循环不超过(m-1)k22次,所需时间为O(mk22);剩下的步3.4、步3.6和步3.7所需时间为O(mk1).因此加上预处理,整个算法的时间复杂度为O(mk22+mk1k2+mlogm+nk2).算法的空间复杂度:SNP矩阵所需的空间为O(mk1),记录所有的R(d,k,i)需要的空间O(mk22)(只需记录相邻的两组R值,即i-1和i),所以算法的空间复杂度为O(mk1+mk22).定理得证.证毕.4模拟数据生成器测试与分析我们用C++语言实现了MFR(从文献作者的源程序Fasthare中移植过来)、MSR、P_MFR和P_MSR算法(源程序可通过E-mail向本文作者索取),在一台Linux服务器(4个IntelXeon3.6GHzCPU,4GBRAM)上对MSR和P_MSR、MFR和P_MFR算法的运行时间(Runningtime)和单体型重建率(Reconstructionrate)进行了比较.单体型重建率指的是算法重建出的单体型中正确的SNP位点数与总的SNP位点数的比值.实验中的单体型采用2种方式得到,第1种与文献相同,采用来自公开数据库的真实的单体型,本文实验采用的真实单体型数据来自于国际人类基因组单体型图计划2006年7月发布的数据文件genotypes_chr1_CEU_r21_nr_fwd_phased.gz3,该文件中包含了CEPH样本(祖籍是北欧或西欧的美国犹他州人)中60个个体的单体型,每个单体型有SNP位点193333个,本文实验随机选择一个个体指定长度的一对单体型.第2种与文献一样用计算机模拟生成,即首先随机生成指定长度的单体型,根据指定的两个单体型的差异率来随机生成另一个单体型,本文采用差异率与文献一样,为20%.由于原始的DNA片段测序数据很难得到,在得到一对单体型的基础上,上述文献均根据指定的参数利用计算机来随机生成片段数据集.实验室中,Sanger双脱氧链终止法的DNA测序误差约为1%,片段的覆盖度约为10.为了使模拟生成的片段数据能很好地反映真实情况,与文献一样,本文采用著名的shotgun测序模拟数据生成器Celsim.下面的实验采用的测序误差为1%,单体型长度,即SNP位点数,在一个区间内变化,生成片段的最小长度为3,片段的最大长度和覆盖度在没有特别说明的情况下分别为7和10,生成的片段数则按(单体型长度×片段覆盖度/片段平均长度)设置.模拟数据生成器的详细情况请参照文献.图6~图11的每一个点均为100次重复测试的平均值.下面各图中,图(a)均为在真实单体型数据上的实验结果,图(b)均为在模拟的单体型数据上的实验结果.因为在模拟的单体型数据上的实验结果与在真实单体型数据上的实验结果基本相同,所以下面主要讨论在真实单体型数据上的实验结果.每个子图中,左边的Y轴表示算法的重构精度,右边的Y轴表示算法的运行时间.图6和图7显示算法性能随SNP位点数(对应SNP矩阵的列数)变化的情况.图6(a)中,当位点数为500时,P_MSR和MSR算法的单体型重构率分别是84.62%和84.54%,运行时间为0.0001s和0.191s;当位点数增加到3500时,P_MSR和MSR算法的单体型重构率分别是82.76%和83.18%,运行时间分别是0.004s和63.82s.图7(a)中,当位点数为80时,P_MFR和MFR算法的单体型重构率分别是91.40%和91.55%,运行时间分别是0.009s和0.67s;当位点数增加到260时,P_MFR和MFR算法的单体型重构率分别是88.68%和88.10%,运行时间分别是0.055s和146.05s.从图6和图7可以看出,随着SNP位点数的增加,算法的单体型重构精度有下降趋势;MFR和MSR运行时间显著增长,这是因为当SNP位点数增加,覆盖度不变时,片断数也随着增加,所以MFR和MSR运行时间的增长速度是位点数增长速度的3次方,而P_MFR和P_MSR的时间则基本成线性增长.在片段数和其它参数保持不变的条件下,图8和图9通过改变片段的最大长度和SNP位点数来比较各算法的性能.图8的片段数保持4000不变.图8(a)中,在片段最大长度为6、SNP位点数为1800时,P_MSR和MSR算法的单体型重构率分别是84.6%和84.7%,运行时间分别是0.001s和9.5s;当片段最大长度为9、SNP位点数为2400时,P_MSR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年药物化学结构与性质习题集及答案
- 人教版初中三年级英语第8章单元测试卷及答案
- 2026年陕西省交通安全法规知识点巩固习题及答案
- 供应商关系优化培训降低成本专项练习题及答案
- 2026年广东省交通安全法规及常识测试卷及答案
- 2026秋小学人教版数学六年级上册《分数应用题》(分数和份数、比混合)易错题专项练习附答案
- 拒绝踩坑!2026正规靠谱企业邮箱服务商清单
- 2026批量查询快递进度哪个软件靠谱?亲身使用分享
- 烟草专卖经营管理手册
- 海南省三亚2026-2027学年物理八年级第一学期期末经典试题含解析
- 《“诺曼底号”遇难记》课件
- 人教PEP四年级英语上册阅读理解专项30篇(含答案)
- 2026年秋季开学中秋诗词赏析课件
- 2026临汾市侯马市招聘乡(街道)消防协管员考试备考试题及答案详解
- 2026秋学期人教版小学数学六年级上册(新教材)教学计划附进度表
- 2026年秋季学期小学四年级上册英语(人教版PEP新教材)教学计划
- 自来水生产工岗前专项能力考核试卷含答案
- 2026教科版六年级科学上册第一单元《健康生活》全部教案
- 2026年山东青岛市中考历史试题(附答案)
- 江西省人才发展集团有限公司2026年春季集中招聘专题【11人】建设笔试备考题库及答案解析
- 2026年重庆市九龙坡区辅警人员招聘考试试卷及答案
评论
0/150
提交评论