一种对多序列bwt索引构建进行并行加速的方法_2

文档序号:8922843阅读:来源:国知局
t;Suffix2<~<SuffixmXk。
[0025] 步骤7:依次取SuffiXl,Suffix2,. ..,SuffixmXk的BWT字符,连接起来得到R的 BWT索引。
[0026] 步骤8:将BWT索引输出。
[0027] 本发明的有益效果是,设计了一种BWT索引构建的并行加速方法,从而有效提高 多序列BWT索引的构建过程,减少全基因组组装所需时间约90%。而且该方法还可利用到 其他涉及大规模排序的应用中,易于移植和推广。
【附图说明】:
[0028] 图1是本发明总体流程图。
【具体实施方式】:
[0029] 下面结合附图1,以在每个节点64GB内存的机群上构建10亿条长度为100的DNA 序列的BWT索引为例(以下简称本例),对本发明进行进一步的详细说明。DNA序列的字母 表 2 = {A,C,G,T},大小为 4,即 〇 = 4。
[0030] 如图1所示,本发明提出的新型BWT索引并行加速算法主要包括8个步骤。
[0031] 步骤1 :根据序列规模和处理器内存大小确定对后缀分块时所用分隔字符串的长 度 1,取
对于本例,m= 109,k= 100,〇 = 4,M= 64X23°,计算 得到 / =「3.1439^ = 4。
[0032] 步骤2 :计算得到〇 ^ 4 4= 256,我们来配备含有256个处理器(CPU)的机群系 统,分别编号为PuP2, . . .,P256。
[0033] 步骤3 :在机群系统内存中开辟〇 256个桶,标号依次为1到256,初始大小为 109X10〇V(4X256)字节,约为10GB,分别用来存放以AAAA到TTTT开头的后缀。
[0034] 步骤4 :扫描10亿条长度为100的DNA序列的所有后缀(一共有109X100 = 1011 条后缀),检查各后缀的前4个字符。
[0035] 步骤 4. 1 :置i= 1 ;
[0036] 步骤4. 2 :对第i条序列的后缀进行分区。
[0037] 步骤 4. 2. 1 :置j= 1 ;
[0038] 步骤4. 2. 2 :检查第i条序列的后缀Si[j,100]的前4个字符Si[j,j+3]进行分区。 对于DNA,字母表 2 = {A,C,G,T},所以Cl=,A',c2=,C',c3=,G',c4= 'T'。字符'A' 的顺序号为1,字符'C'的顺序号为2,字符'G'的顺序号为3,字符'T'的顺序号为4。对 于长度不足4的后缀,在其末尾添加字符'A'直至长度达到4。以AAAA开头的后缀放到h =(1-1)X43+(l-l)X42+(l-l)Xf+d-l)X4°+l= 1 号桶,以AAAC开头的后缀放到h= (1-1)X43+(l-l)X42+(l-l)X4i+(2-l)X4°+l= 2 号桶,依次类推,以TTTT开头的后缀 放到h= (4-1)X43+(4-l)X42+(4-l)X4i+(4-l)X4°+l= 256 号桶。若桶中内存空间不足 以存放新的后缀,则将其内存空间扩展l〇9X10〇V(16X256)字节,约2. 5GB。
[0039] 步骤 4. 2. 3 :置j=j+1 ;
[0040] 步骤4. 2. 4 :若j彡100,则转步骤4. 2. 2,否则转步骤4. 3.
[0041] 步骤 4. 3 :置i=i+1 ;
[0042] 步骤4. 4 :若i彡109,则转步骤4. 2,否则转步骤5.
[0043] 步骤5 :在256个处理器并行地对256个桶中的后缀进行排序,具体方式为第t号 处理器pt对第t号桶中的后缀进行排序,1 <t< 256。
[0044] 步骤6 :按从1号桶到256号桶的顺序将排序的结果拼接起来,得到所有后缀的次 序。对于1〇9条长100的序列集合,m= 109,k= 100,其后缀一共有109X100 = 1011条,设 其字典序为SuffiXl<Suffix2<~<Suffix1(111。
[0045] 步骤 7 :依次取SuffiXl,Suffix2,. . .,Suffix1(ll^BWT字符,连接起来组成 10 亿 条
[0046] DNA序列的BWT索引。
[0047] 步骤8 :将BWT索引输出。
【主权项】
1. 一种对多序列BWT索引构建进行并行加速方法,其特征在于包括以下步骤: 步骤1:根据序列规模和处理器内存大小确定对后缀分块时所用分隔字符串的长度1 ; 令2 = {〇1,〇2,...,〇。}为一个有限的字母表,满足〇1〈〇 2〈~〈〇。,其中'〈'表示字典序,〇表 示字母表Σ中的字符个数;令S = S1S2-Sn1Sk为一个有限的字符串,其中S k= 为字符串结束标志,SiE Σ,1彡i〈k ;S[i,j] = s iSi+1. . . Sj表示S的从第i个字符到第j个 字符构成的子串,其中1彡i彡j彡k ;形如S[j,k]的子串称作S的后缀,其中1彡j彡k ; 称s[j-l]为后缀S[j,k]的BWT字符,其中l〈j彡k ;令后缀S[l,k]的BWT字符为' $' ;令 R = (S1, S2,. . .,SJ表示字母表Σ上的m条字符串,长度为k且S i [k] = ' $' ;对于处 理器内存大小为M字节的情形,I = [(log。(mkV(2M)))]; 步骤2:构建含有〇 1个处理器的机群系统,依次编号为A,A,···,Pfji ; 步骤3:在机群系统主存中开辟σ1个动态桶,初始大小为mkVG。1)字节,标号依次 为1到σ S桶为内存分块; 步骤4:对序列集合R中包含的m*k条后缀进行分区, 步骤4. 1 :置i = 1 ; 步骤4. 2 :对第i条序列的后缀进行分区, 步骤 4. 2. 1 :置 j = 1 ; 步骤4. 2. 2 :检查第i条序列的后缀Si [ j,k]的前1个字符Si [ j,j+1-l],对于长度不足 1的后缀,在其末尾添加字符(^直至达到1长度,c i e Σ ;若S i [j,j+1-1] = cnci2··· Cil,则 将后缀SiU, k]放入编号为h的桶中,其中h = (i「l)* σ H+h-l)* σ K+ -" + (ifl)* σ 14+1,11,12,一,11分别是31[」,」+1-1]中包含的1个字符在字母表2 = {〇1,(:2,...'。}中 的顺序号,若桶中内存空间不足以存放新的后缀,则将其内存空间扩展mkVae。1)字节; 步骤 4. 2. 3 :置 j = j+Ι ; 步骤4. 2. 4 :若j彡k,则转步骤4. 2. 2,否则转步骤4. 3 ; 步骤 4. 3 :置 i = i+Ι ; 步骤4. 4 :若i彡m,则转步骤4. 2,否则转步骤5 ; 步骤5:在ο1个处理器上并行地对〇1个桶内的后缀分别进行字典序排序,处理器pt对编号为t的桶内的后缀进行排序,K t < σ S 步骤6:按照编号从1到σ1的顺序将各个桶内已排好序的后缀拼接起来,得到R中所 有后缀的次序(字典序),序列集合R中包含m条序列,每条序列有k个后缀,序列集合R中 一共包含m*k条后缀,设这些后缀的字典序为SufTiXl〈SufTix2〈…〈Suffix- 步骤7:依次取Suff iXl,Suff ix2,…,Suff丨1_的BWT字符,连接起来得到R的BWT索 引; 步骤8:将BWT索引输出。2. 根据权利要求1所述的一种对多序列BWT索引构建进行并行加速方法,其特征在于 步骤2中所述的ο1个处理器指〇1ACPl
【专利摘要】本发明公开了一种多序列BWT索引构建的并行加速方法,目的是解决现有大规模序列集合BWT索引构建中对序列集合进行分块排序,然后通过两两合并再排序的方式不断递归合并排序的过程,造成BWT索引构建速度较慢,效率低下的问题。采用的技术方案是首先遍历序列集合R中各序列的所有后缀,检查各后缀的前l个字符,把具有相同前l个字符的后缀划分到同一个内存分块;之后并行地在各个分块内部独立地对该分块所包含的后缀进行排序;然后将各排好序的分块拼接起来,得到序列集合R中所有后缀的次序;最后按字典序从小到大的顺序依次取各后缀的BWT字符连接起来得到序列集合R的BWT索引。有益效果是有效提高多序列BWT索引的构建过程,减少全基因组组装所需时间约90%。
【IPC分类】G06F19/22
【公开号】CN104899476
【申请号】CN201510328718
【发明人】彭绍亮, 朱小谦, 王恒, 卢宇彤, 杨灿群, 吴诚堃, 崔英博, 刘欣, 王海强, 程乾, 夏徐伟
【申请人】中国人民解放军国防科学技术大学
【公开日】2015年9月9日
【申请日】2015年6月15日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1