一种DNA测序用条形码识别算法的硬件加速装置
技术领域
本发明涉及多路复用测序技术领域,更具体涉及一种DNA测序用条形码识别算法的硬件加速装置。
背景技术
作为最重要的分子生物学分析方法之一,DNA测序不仅能为遗传信息的揭示和基因表达调控等基础生物学研究提供重要数据,而且在基因诊断和基因治疗等应用研究中也发挥着重要的作用。随着科学的发展,传统的Sanger测序技术的局限性日益突出。一方面,该技术依赖于毛细管电泳,不仅费时,而且测序反应数也受到限制;另一方面,该技术基于酶法测序,成本较高。而随着以Roche公司的454技术、Illumina公司的Solexa技术和ABI公司的SOLiD技术为标志的高通量测序技术相继诞生。目前,高通量测序方法已经在很大程度上取代了传统的Sanger测序方法,成为生物研究的新的重要工具。与Sanger测序技术相比,高通量测序技术能够同时对数百万个DNA分子进行分析,因此又称为下一代测序技术(nextgeneration sequencing,NGS)或大规模平行测序(massively parallel sequencing)。这一测序能力在过去的几年中增长了几十倍,并且还在持续快速增长。然而,对于诸如miRNA的表达分析之类的较低复杂度样本的研究,单个样本所需的测序数据量只占新一代测序仪通量的很小一部分,此时超高通量的NGS技术就显得效率低下且不经济。这种情况在将来会随着测序仪读取吞吐量的增加而变得更加严重。因此,为了缓解NGS技术的高通量测序能力与低复杂样品的低通量需求之间的不匹配,多路复用测序应用而生,即将多个不同的DNA样本混合在一起进行单次上机测序。但仅仅简单的混合无法分辨检测到的序列片段来自于哪个样本。为了在测序后对混合在一起的属于不同DNA样本的序列进行分离,在测序前需要在属于每个样本的序列片段的末尾加上一个特殊的“身份标签”,即DNA测序条形码,之后再对样本进行混合并上机测序。这种多样本复用的测序方式实现了测序成本的进一步降低,并且有效利用了当前测序平台超高通量的测序能力。
与传统的Sanger测序相比,虽然下一代测序技术有着高通量、低成本的特点,但是它们的缺点是,在测序中会产生大量的短序列数据,并且存在较高的测序错误率。这一特性同样会反映在多路并行测序过程中所使用的测序条形码上。因此,高质量的DNA测序条形码是多样本测序研究得以成功进行的关键因素。没有经过系统性设计的测序条形码很容易引起序列的错误分配并造成数据集交叉污染,从而严重影响后续的数据分析和数据挖掘。例如,一些二代测序平台,包括Illumina公司的Genome Analyzer IIx、HiSeq X Ten以及NovaSeq测序平台,ABI公司的SOLiD 3和SOLiD 4测序平台,在混样上机测序时会出现测序条形码(或称为索引)的“错误分配”或“索引污染”问题,并且其测序后的样本错误分配率可以达到0.2%~6%;对于PCR-free文库,即使采用双索引策略,其平均污染率也只能降到0.08%。在实际的测序过程中,这种程度的测序错误率已经足以影响到之后对序列数剧的处理和分析。然而,索引污染是测序过程中不可避免的问题,在许多情况下,包括实验操作、PCR错误、测序错误以及寡核苷酸合成错误等过程都会引入插入、删节和替代错误。最常见的DNA合成错误是单碱基的删节(Deletion),删节错误对译码尤其具有挑战性,因为它会在下游测序中引起移码;而在大规模寡核苷酸合成期间,替代和插入错误也时有发生。而且,高通量测序本身同样存在10-3~10-4的错误率。此外,对于某些三代测序平台,包括PacificBiosciences公司的单分子实时(Single Molecule Real-Time,SMRT)测序和OxfordNanopore Technology公司的纳米孔测序技术,其DNA测序片段都相当长,因此,插入、删节和替代的错误率很高。例如,SMRT测序中大约有11%的测序错误率,其中主要是插入/删节错误,只有1%左右的替代错误。纳米孔测序中有15.1%左右的测序错误率,其中插入/删节为主要的错误类型(10%),其次是替代错误(5.1%)。因此,设计能对抗插入、删节与替代错误的高鲁棒性DNA测序用条形码,并通过纠正测序用条形码上的插入、删节和替代错误,增加正确识别的样本总数,对提高整体的测序效率具有非常重要的意义。
目前,就如何设计自带纠错能力的DNA测序条形码以及如何提高测序条形码的鲁棒性,国内外研究者已经提出了许多不同的理论和方法。例如,2008年,Hamady等人在Nature Method发表的论文中首次提出了基于二进制汉明码的测序用条形码;随后Krishnan等人对Hamady提出的测序条形码进行了改进,进一步提出了具有更大的码字间最小距离和更高的纠错能力的基于BCH码的测序用条形码。虽然上述两种基于汉明距离构造的测序条形码仅针对测序中的替代错误,不能纠正插入/删节错误,但是却开创了基于纠错码构造测序用条形码理论的先河。之后,Adey与Morrison首次提出了基于Levenshtein距离的贪心算法生成一组可纠正预定错误数目的条形码集。论文中构造的条形码长度为6bp,最小莱恩斯特距离为3,即条形码集中的任意两个条形码之间的莱恩斯特距离为3,允许纠正1个插入/删节/替代错误;Buschmann和Bystrykh将传统的Levenshtein距离度量进行改进,提出一种“Sequence-Levenshtein”码,将其作为测序用条形码。具体地,通过截短条形码A来匹配条形码B的长度,或者延长条形码A来匹配条形码B的长度,使其在测序条形码嵌入DNA文本时,仍能够纠正预定数目的插入、删节和替代错误。该方法能够检测并恢复损坏的条形码的边界,并且平均校正比传统的Levenshtein或汉明码更多的随机突变。最近,Chen和Wang等人提出了一种新的基于循环分组码和伪随机序列结合的测序条形码构造方法,并进一步提出了一种基于动态规划法的测序条形码识别方法,该方案首先利用循环移位和动态规划结合的方法标记插入/删节错误位置;然后根据标记的位置修正损坏码字;最后执行纠错纠删译码纠正剩余错误。仿真结果表明,这一新的测序条形码识别算法不仅可以灵活构造不同长度、不同纠错能力的测序条形码,而且对于包含各类错误较多的长条形码具有高鲁棒性。
上述方法的提出是多路复用测序在大规模生物样本研究中应用的重大突破。然而,随着下一代测序技术向着更高通量、更低成本的方向快速发展,新一代测序平台在每轮测序中产生的基因组数据量正在成指数增长。事实上,当前测序仪器的生物数据产出能力已经超过了摩尔定律的增长速率。例如,一台Illumina公司的HiSeq X Ten高通量测序机每天能对45个基因组进行测序,一次运行时间就能产生近2Tb的序列数据;随后短短6~7个月的时间,Illumina公司就推出了运行速度更快和通量更高的NovaSeq系列测序平台,其通量是HiSeq X Ten系列的3.3倍,而测序时间反而缩短了,这就意味着将在更短的时间内产生更多的序列数据。对于多路复用测序而言,意味着在单次并行上机测序后产生的测序读段同样呈指数规模增长。因此,如何在短时间内利用测序条形码识别算法区分来自不同样本的测序读段,从而快速对测序条形码的各类错误纠错,成为目前多样本并行测序技术亟待解决的新问题。
发明内容
本发明所要解决的技术问题在于如何在短时间内利用测序条形码识别算法区分来自不同样本的测序读段,从而快速对测序条形码的各类错误纠错。
本发明通过以下技术手段实现解决上述技术问题的:一种DNA测序用条形码识别算法的硬件加速装置,包括控制逻辑单元、解映射单元、循环移位单元、内解码器以及外解码器,控制逻辑单元分别连接解映射单元、循环移位单元、内解码器和外解码器,解映射单元和循环移位单元连接,内解码器和外解码器连接,
控制逻辑单元用于各单元电路之间的协调;
解映射单元用于将可能带有插入/删节/替代的条形码序列r解映射为损坏的伪随机序列s和循环码码字d;
循环移位单元用于对损坏的伪随机序列s、循环码码字d以及输入的预定伪随机序列p分别执行移位操作,得到移位序列s(l)、d(l)及p(k);
内解码器用于根据移位序列s(l)和移位序列p(k)间的对应关系,基于动态规划算法利用线性脉动式阵列结构对移位序列d(l)进行编辑距离的并行计算并执行插入/删节/替代错误识别得到纠正后的码字dc (l);
外解码器用于对纠正后的码字dc (l)移位并对移位后得到的循环码码字dc执行剩余错误译码,并选择满足译码判决即伴随式为0的译码码字c作为最终输出的译码结果否则返回循环移位单元继续执行移位操作。
本发明根据测序条形码纠错的不同阶段涉及的不同算法,将硬件加速装置划分为多个并行执行的子模块,基于动态规划算法利用线性脉动式阵列结构实现了内解码器中编辑距离的并行计算以及插入/删节/替代错误识别,降低时间复杂度,减少区分来自不同样本的测序读段的时间,快速对测序条形码的各类错误纠错。
进一步地,所述控制逻辑单元包括计数比较器、第一计数器、第二计数器以及第三计数器,所述第一计数器的计数值作为所述计数比较器的输入,当加速器工作使能置高电平时,第一计数器始计数,计数比较器在第一计数器的计数值为0-(2n-1)时,将条形码输入使能、内解码器工作使能和外解码器工作使能置为1,其中2n为条形码序列r的长度;
所述第二计数器的计数值l的计数范围为0-(n-1),所述第三计数器的计数值L的计数范围为0-(n-1),当循环移位使能置高电平时,第二计数器和第三计数器进行计数,同时循环移位单元中损坏的伪随机序列s和循环码码字d向左移动l次,预定伪随机序列p向左移位L次。
更进一步地,所述解映射单元包括输入数据寄存器、第一移位寄存器和第二移位寄存器;
所述输入数据寄存器用于当条形码输入使能信号为高电平时,在同步时钟控制下,将条形码序列r写入输入数据寄存器中,并发送到第一移位寄存器和第二移位寄存器;
所述第一移位寄存器在每个时钟周期产生一次寄存器移位,并将输入数据寄存器在偶数位上的数据写入第一移位寄存器中,得到损坏的伪随机序列s;
所述第二移位寄存器在每个时钟周期产生一次寄存器移位,并将输入数据寄存器在奇数位上的数据写入第二移位寄存器中,得到循环码码字d。
更进一步地,所述循环移位单元具体用于:
当循环移位使能置高电平时,如果控制逻辑单元中第二计数器的计数值为l,损坏的伪随机序列s对应的第一移位寄存器和循环码码字d对应的第二移位寄存器均向左循环移位l次,分别得到移位序列d(l)、s(l);
当循环移位使能置高电平时,如果控制逻辑单元中第三计数器的计数值为L,预定伪随机序列p对应的第三移位寄存器向左循环移位L次,得到移位序列p(L)。
进一步地,所述内解码器包括第一控制电路、编辑距离计算模块、第一RAM存储器、回溯错误位置模块、第四移位寄存器以及纠正插入/删节/替代模块,
所述第一控制电路在内解码工作使能为高电平时控制内解码器内部各个模块的并行工作;
所述编辑距离计算模块,用于实现移位序列p(L)与移位序列s(l)之间最小编辑距离D[n][n]的计算,建立完整的二维动态矩阵D;
所述第一RAM存储器,用于存储编辑距离计算模块计算过程的中间结果;
所述回溯错误位置模块,用于根据二维动态矩阵D回溯最优路径的同时,标记损坏的伪随机序列s(l)发生插入/删节/替代的位置;
所述第四移位寄存器,用于存储回溯错误位置模块输出的位置信息;
所述纠正插入/删节/替代模块,用于接收回溯错误位置模块输出的位置信息,根据回溯错误位置模块标记出的错误位置信息对移位序列d(l)进行修正。
更进一步地,所述编辑距离计算模块根据迭代公式
构建用于计算二维动态矩阵D中单个单元格值的核心模块,并将其映射为处理单元,其中,表示插入权重,表示删节权重,w(x,y)表示替代权重;
利用动态规划算法中的波前特性,将上述多个处理单元组成线性的脉动阵列结构,实现编辑距离的并行计算。
更进一步地,所述线性的脉动阵列结构包括n+1个顺序级联的处理单元,分别为处理单元PE0至处理单元PEn,还包括分别一一对应的与处理单元PE0至处理单元PEn连接的第二RAM存储器至第n+2RAM存储器。
更进一步地,所述利用动态规划算法中的波前特性,将上述多个处理单元组成线性的脉动阵列结构,实现编辑距离的并行计算,包括:
对于移位序列s(l),第j个处理单元PEj,从左侧的处理单元PEj-1接收移位序列s(l)中第j个序列比特s(l)[j],并在下一个时钟将其输出到右侧的处理单元PEj+1;
对于移位序列p(L),第j个处理单元PEj对应移位序列p(L)中第j个序列比特p(L)[j]是恒定的,只在编辑距离的并行计算过程开始时被读取;
第K个时钟周期时,第j个处理单元PEj的输入D[i-1][j]是第j个处理单元PE j在第K-1个时钟周期时的输出结果,第j个处理单元PEj的输入D[i][j-1]和D[i-1][j-1]分别是其左侧的处理单元PEj-1在第K-1和第K-2个时钟周期时的输出结果。
更进一步地,所述回溯错误位置模块具体用于:
从二维动态矩阵D右下角单元格[n][n]开始,以[i][j]为基准单元,判断其左侧[i][j-1]、上方[i-1][j]以及左上方[i-1][j-1]单元格中距离值的最小值,若有相同最小值的单元格,则按照左上方、上方以及左侧的优先级顺序进行选择;
根据最小值所在单元格判断损坏的伪随机序列s在当前位置比特发生的操作;
将取得最小值的单元格作为下一个基准单元,按照前两步中的规则继续执行,直到遍历到单元格[0][0]为止也即遍历完所有单元格为止。
更进一步地,所述根据最小值所在单元格判断损坏的伪随机序列s在当前位置比特发生的操作,包括:
若[i][j-1]为最小值所在单元格,说明损坏的伪随机序列s的位置i-1到i发生一个插入错误,此时第四移位寄存器移位并写入2’b01;
若[i-1][j]为最小值所在单元格,说明损坏的伪随机序列s的位置i-1到i发生一个删节错误,此时第四移位寄存器移位并写入2’b10;
若[i-1][j-1]为最小值所在单元格,且D[i-1][j-1]=D[i][j],说明损坏的伪随机序列s的位置i-1到i正确传输,此时第四移位寄存器移位并写入2’b00;
若[i-1][j-1]为最小值所在单元格,且D[i-1][j-1]≠D[i][j],说明损坏的伪随机序列s的位置i-1到i发生一个替代错误,此时第四移位寄存器移位并写入2’b11。
更进一步地,所述纠正插入/删节/替代模块,用于:
在同步时钟下,假设第四移位寄存器向低位方向移动一次后输出的数据为2’b00或2’b11,此时存入移位序列d(l)的移位寄存器向低位方向移出一位数据作为存入码字dc (L)的移位寄存器向高位方向移动一位后写入的数据;
在同步时钟下,假设第四移位寄存器向低位方向移动一次后输出的数据为2’b01,此时存入移位序列d(l)的移位寄存器向低位方向移动两次后输出的数据将作为存入码字dc (L)的移位寄存器向高位方向移动一位后写入的数据;
在同步时钟下,假设第四移位寄存器向低位方向移动一次后输出的数据为2’b10,此时存入移位序列d(L)的移位寄存器不发生移位,存入码字dc (L)的移位寄存器向高位方向移动一位后写入“1”或“0”。
进一步地,所述外解码器按照伴随式计算、关键方程求解以及Chien搜索三个步骤分解为伴随式计算模块、关键方程求解模块以及Chien搜索模块,并在各个子模块之间插入中间寄存器,实现并行工作;
所述伴随式计算模块对码字dc (l)移位并对移位后得到的循环码码字dc计算伴随式因子;
所述关键方程求解模块根据求得的伴随式因子计算错误位置多项式;
所述Chien搜索模块通过计算错误位置多项式的根来确定错误位置,并纠正循环码码字dc上的替代错误得到译码码字c,当译码码字c满足译码判决即伴随式因子为0的条件时,输出译码结果否则将循环移位使能置为高电平,控制循环移位单元继续执行移位操作。
本发明的优点在于:本发明根据测序条形码纠错的不同阶段涉及的不同算法,将硬件加速装置划分为多个并行执行的子模块,基于动态规划算法利用线性脉动式阵列结构实现了内解码器中编辑距离的并行计算以及插入/删节/替代错误识别,降低时间复杂度,减少区分来自不同样本的测序读段的时间,快速对测序条形码的各类错误纠错。
附图说明
图1为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置的结构框图;
图2为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置中控制逻辑单元的结构示意图;
图3为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置中内解码器的结构示意图;
图4为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置中编辑距离计算模块的结构示意图;
图5为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置中编辑距离模块中第j列PE的结构示意图;
图6为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置中回溯错误位置模块的结构示意图;
图7为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置中纠正插入/删节/替代模块的结构示意图;
图8为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置中外解码器的结构示意图;
图9为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置中关键方程求解模块的结构示意图;
图10为本发明实施例所提供的一种DNA测序用条形码识别算法的硬件加速装置用于测序条形码BCH(15,5,3)时,在加入1个插入、1个删节和若干替代错误以及2个插入、2个删节和若干替代错误时,硬件实现和软件实现方式关于误帧率与错误数目关系的比较曲线图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提出了一种DNA测序用条形码识别算法的硬件加速装置,该装置包括:控制逻辑单元1、解映射单元2、循环移位单元3、内解码器4以及外解码器5。控制逻辑单元1分别连接解映射单元2、循环移位单元3、内解码器4和外解码器5,控制逻辑单元1用于这些单元电路之间的协调工作;解映射单元2用于将可能带有插入/删节/替代的输入条形码序列r解映射为损坏的伪随机序列s和循环码码字d;循环移位单元3用于对损坏的伪随机序列s、循环码码字d以及输入的预定伪随机序列p分别执行移位操作;内解码器4根据移位序列s(l)和移位序列p(L)间的对应关系,利用动态规划算法对移位后的移位序列d(l)执行插入/删节错误识别得到纠正后的码字dc (l);最后,外解码器5对纠正后的码字dc (l)移位并对移位后得到的循环码码字dc执行剩余错误译码,并选择满足译码判决即伴随式为0的译码码字c作为最终输出的译码结果否则返回循环移位单元继续执行移位操作。
参见图2,本发明中提出的控制逻辑单元1的结构如下所述,所述控制逻辑单元1包括一个计数比较器104和三个计数器,即第一计数器101、第二计数器102和第三计数器103。本实施例中,当加速器工作使能为高电平时,第一计数器101开始计数,同时第一计数器101输出的计数值作为计数比较器104的输入,计数比较器104在第一计数器101的计数值为0-(2n-1)时,将条形码输入使能、内解码器工作使能和外解码器工作使能置1,其中2n为测序条形码r的长度;同时,当循环移位使能置高电平时,第二计数器102和第三计数器103开始计数,且循环移位单元开始根据计数值执行相应的移位,其中,第二计数器102的计数值l的计数范围为0-(n-1),第三计数器103的计数值L的计数范围为0-(n-1)。
继续参阅图1,解映射单元2包括输入数据寄存器、第一移位寄存器和第二移位寄存器;所述输入数据寄存器用于当条形码输入使能信号为高电平时,在同步时钟控制下,将条形码序列r写入输入数据寄存器中,并发送到第一移位寄存器和第二移位寄存器;
所述第一移位寄存器在每个时钟周期产生一次寄存器移位,并将输入数据寄存器在偶数位上的数据写入第一移位寄存器中,得到损坏的伪随机序列s;
所述第二移位寄存器在每个时钟周期产生一次寄存器移位,并将输入数据寄存器在奇数位上的数据写入第二移位寄存器中,得到循环码码字d。
继续参阅图1,循环移位单元3具体用于当循环移位使能置高电平时,如果控制逻辑单元中第二计数器的计数值为l,损坏的伪随机序列s对应的第一移位寄存器和循环码码字d对应的第二移位寄存器均向左循环移位l次,分别得到移位序列d(l)、s(l);
当循环移位使能置高电平时,如果控制逻辑单元中第三计数器的计数值为L,预定伪随机序列p对应的第三移位寄存器向左循环移位L次,得到移位序列p(L)。
参见图3,本发明中提出的内解码器的结构如下所述,所述内解码器4包括第一控制电路41、编辑距离计算模块42、第一RAM存储器43、回溯错误位置模块44、第四移位寄存器45以及纠正插入/删节/替代模块46。
本实施例中,第一控制电路41在内解码工作使能为高电平时控制内解码器内部各个模块的并行工作;编辑距离计算模块42作为第一级流水线,其输入为移位序列s(l)和移位序列p(L),在编辑距离计算使能为高电平时,随时钟信号完成移位序列s(l)和移位序列p(L)之间最小编辑距离值的计算,并将计算过程的中间结果写入数据位宽为k,深度为(n+1)×(n+1)的第一RAM存储器43中;回溯错误位置模块44作为第二级流水线,其输入连接第一RAM存储器43的输出,在回溯使能为高电平时随时钟信号完成插入/删节错误位置的标记,并将输出的位置信息写入第四移位寄存器45中,纠正插入/删节/替代模块46作为第三级流水线,其输入连接第四移位寄存器45的输出,在纠错使能为高电平时随时钟信号完成移位序列d(l)上插入/删节错误的纠正。
参见图4,本发明中提出的编辑距离计算模块42根据迭代公式
构建用于计算二维动态矩阵D中单个单元格值的核心模块,并将其映射为处理单元中,其中,表示插入权重,表示删节权重,w(x,y)表示替代权重,利用动态规划算法中的波前特性,将上述多个处理单元组成线性的脉动阵列结构,实现编辑距离的并行计算。具体的,本发明中提出的编辑距离计算模块42的结构如下所述,所述编辑距离计算模块42由n+1个处理单元(PE)和n+1个RAM存储器构成。
本实施例中,处理单元PE0 421负责编辑距离矩阵中第0列单元格的计算,在编辑距离计算使能为高电平时随时钟信号完成从0开始的累加运算,并将每次的计算结果写入第二RAM存储器425中,其余n个处理单元PE1422~PEn 424,在时钟同步下,每一个PE所需数据均可以从组成流水线的其他PE中获取,并将计算的中间数据分别写入第三RAM存储器426~第n+2RAM存储器428中,其中第二RAM存储器425~第n+2RAM存储器428的深度为n+1,存入的数据位宽为k。
以处理单元PE1 422为例,在编辑距离计算使能为高电平时,处理单元PE1 422的输入端Sin在每个时钟周期依次接收移位序列s(l)的一个比特,并在下一个时钟周期将其从输出端Sout发送到处理单元PE2423,而移位序列p(L)输入到PE1422的比特是固定的,只在过程开始时读取一次,处理单元PE1422的输入端Din所需数据由处理单元PE0421在上一个时钟周期计算完成,其输出端Dout产生的数据一方面作为自身输入端口Dbuf和处理单元PE2423在下一个时钟周期的输入,另一方面将写入第三RAM存储器426中作为回溯阶段的读取数据。
参见图5,本发明中提出的编辑距离计算模块42中处理单元PE1的电路结构如下所述,所述处理单元PE1 422包括一个异或门4221、一个第一寄存器4222、两个加法器以及两个选择器,分别为第一加法器4224、第二加法器4225、第一选择器4223、第二选择器4226。在实施实例中具体操作为,异或门4221的输入为Sin和p(L)[0],二者异或得到z,第一加法器4224的输入为寄存器4222中缓存的数据和z,二者相加得Xout,第一选择器4223的输入为Dbuf和Din,二者取最小值作为输出,输出为Vout,第二加法器4225的输入为Vout和1,二者相加得Yout,第二选择器4226的输入为Xout和Yout,二者取最小值作为输出,输出用Dout表示。
参见图6,本发明中提出的回溯错误位置模块44的电路结构如下所述,所述回溯错误位置模块44包括1个数值比较器445、一个地址生成器448、2个数据选择器和4个寄存器,分别为第三选择器446、第四选择器447、第二寄存器441、第三寄存器442、第四寄存器443、第五寄存器444。
第二寄存器441中写入第一RAM存储器43中存储单元地址为[i][j]时的值P00,即编辑距离矩阵中单元格在[i][j]处的值;第三寄存器442中写入第一RAM存储器43中存储单元地址为[i-1][j-1]时的值P11,即矩阵中单元格在[i-1][j-1]处的值;第四寄存器443中写入第一RAM存储器43中存储单元地址为[i][j-1]时的值P01,即矩阵中单元格在[i][j-1]处的值;第五寄存器444中写入第一RAM存储器43中存储单元地址为[i-1][j]时的值P10,即矩阵中单元格在[i-1][j]处的值;
比较器445的输入为P11和P00,输出为z,二者相等时z为0,不等时z为1;第三选择器446的输入为P10、P01和P11,按照优先级为P11、P01和P10的顺序选择其中的最小值作为输出,输出为Pout;地址生成器448的输入连接Pout,其内部包含两个计数器,分别为计数器i和计数器j,两个计数器的计数值均为n~0,当Pout为P10时,计数器i减1,计数器j保持不变;当Pout为P01时,计数器i保持不变,计数器j减1,当Pout为P11时,计数器i减1,计数器j减1,对应的从第一RAM存储器43中读取的存储单元的地址发生相应的变化;
第四选择器447的输入为Pout、z、0、1、2和3,根据Pout和z从{0、1、2、3}中选择一个值作为输出,输出用Imark表示,其中,Pout为P10时,表示发生一个插入错误,输出为1;Pout为P01时,表示发生一个删节错误,输出为2;Pout为P11且z=1时,表示发生一个替代错误,输出为3;Pout为P11且z=0时,表示未发生错误,输出为0;第四移位寄存器45的输入为Imark,其中第四移位寄存器45输入输出的数据位宽为2,深度为T,这里的T可用公式T=n+N表示,其中,n表示序列长度,N表示发生插入/删节的个数;
参见图7,本发明中提出的纠正插入/删节/替代模块46的结构如下所述,所述纠正插入/删节/替代模块46包括第五移位寄存器461、缓存器462、第五选择器463、第六移位寄存器464。
本实施例中,第四移位寄存器45的输出连接第五选择器463的地址选择端,当第四移位寄存器45输出不同的Imark时,选择器463将选择不同的数据输入到第六移位寄存器464中;
当第四移位寄存器45输出的Imark值为2’b01时,第五移位寄存器461不发生移位,此时第五选择器463选择随机的1比特数值0或1作为输出,第六移位寄存器464向低位方向移动一位,并写入第五选择器463输出的数据;
当第四移位寄存器45输出的Imark的值为2’b00或2’b11时,第五移位寄存器461向低位方向移出一位数据,此时第五选择器463输出的数据为第五移位寄存器461移出的一位数据,第六移位寄存器464向低位方向移动一位,并写入第五选择器463输出的数据;
当第四移位寄存器45输出的Imark的值为2’b10时,第五移位寄存器461向低位方向移出一位数据输入至缓存器462,第六移位寄存器464不发生移位,即不输入任何数据。下个时钟周期到来时,第五移位寄存器461不发生移位,此时第五选择器463选择缓冲器462中的数据作为输出,第六移位寄存器464向低位方向移动一位,并写入第五选择器463输出的数据。
参见图8,本发明中提出的外解码器5的结构如下所述,为实现硬件加速,本发明对外解码器5采用三级流水线结构设计,所述外解码器5包括第二控制电路51、第六移位寄存器52、伴随式计算模块53、第一寄存器组54、关键方程求解模块55、第二寄存器组56以及Chien搜索模块57。
本实施例中,第二控制电路51在外解码器工作使能置高电平时控制整个外解码器模块开始工作,此时作为存入码字dc (L)的第六移位寄存器52首先向右循环移位L次,随后,伴随式计算模块53作为第一级流水线,在伴随式计算使能为高电平时随时钟信号下完成码字dc的校正子计算,并将计算的校正子写入数据位宽为k,深度为2t的寄存器组52中,其中t为BCH码的纠错能力,关键方程求解模块55作为第二级流水线,在关键方程求解使能为高电平时随时钟信号完成错误位置多项式的各项系数的计算,并将其写入数据位宽为k,深度为2t第二寄存器组56中,Chien搜索模块57作为第三级流水线,在Chien搜索使能为高电平时随时钟信号完成码字dc的纠错纠删译码,并将译码后的码字输入后续的输出缓存单元中。
参见图9,本发明中关键方程求解模块55的结构如下所述,所述关键方程求解模块55包括两个加法器、两个选择器、三个乘法器和六个寄存器,分别为第三加法器551、第四加法器552、第六选择器553、第七选择器554、第一乘法器555、第二乘法器556、第三乘法器557、第六寄存器558、第七寄存器559、第八寄存器5510、第三寄存器组5511、第四寄存器组5512以及第五寄存器组5513。
修正项δ(i+1)的计算公式为:δ(i+1)=μ0 (i)S1+i+μ1 (i)Si++μj (i)S1+i-j。在实施实例中的具体操作为,第一乘法器555的输入为伴随式S1+i-j和二者相乘得到其中j和i分别由计数器j和计数器i控制;第三加法器551的输入为和二者相加得到δ(i+1),若j不满足退出条件,则将输出写入第六寄存器558,继续执行由计数器j控制的迭代,否则将输出写入第七寄存器559,退出迭代;
错误多项式μ(i+1)(x)的计算公式为:μ(i+1)(x)=γ(i)μ(i)(x)+δ(i+1)xλ(i)(x)。在实施实例中的具体操作为,第二乘法器556的输入为δ(i+1)和λ(i),二者相乘得到其中δ(i+1)从第七寄存器559中读取,λ(i)由输入输出的数据位宽为k,深度为2t的第三寄存器组5511移位输出;第三乘法器557的输入为γ(i)和μ(i),二者相乘得到μ1 (i+1),其中γ(i)从第八寄存器5510中读取,μ(i)由输入输出的数据位宽为k,深度为2t的第四寄存器组5512移位输出;第四加法器552的输入为和二者相加得到μ(i+1),将μ(i+1)写入输入输出的数据位宽为k,深度为2t第五寄存器组5513中;
错误多项式μ(i+1)(x)中各项系数的更新公式为:当δ(i+1)=0或l(i)>i/2时,λ(i+1)(x)=xλ(i)(x)且γ(i+1)=γ(i),否则λ(i+1)(x)=μ(i)(x)且γ(i+1)=δ(i+1)。在实施实例中的具体操作为,第六选择器553的输入为μ(i)和λ(i),根据条件选择其中之一作为输出写入第三寄存器组5511中,完成λ(i+1)(x)的更新;第七选择器554的输入为δ(i+1)和γ(i),根据条件选择其中之一作为输出写入第八寄存器5510中,完成γ(i+1)的更新。
以下通过具体应用实例详细介绍本发明的实施效果:本发明提出的硬件电路采用现场可编程门阵列(Field Programmable Gate Array,FPGA)实现。说明书附图3中的第一RAM存储器43可采用FPGA芯片中集成的RAM模块实现。本发明以码长为n,信息序列长度k,纠错能力为t的BCH(n,k,t)码与预定的伪随机序列构造的长度为2n的测序用条形码为例,介绍本专利提出的一种DNA测序用条形码识别方法的硬件实现装置的实施效果。
首先使用MATLAB软件将生成的25个BCH(15,5,3)码与预定的伪随机序列逐比特组合成比特对,并按照映射规则{(00)→A,(01)→T,(10)→G,(11)→C},得到碱基序列b,然后将序列b输入到测序信道模型中得到包含不同错误的接收序列r,接收序列存放在r.txt文件中,最后使用QuartusⅡ软件编写testbench文件将r.txt文件中的数据读入到条形码识别装置中,给识别装置的工作使能置为高电平,使其开始工作。
测序条形码识别装置内部工作时可划分为4个关联的子模块,其中解映射单元2首先对文件中输入的条形码序列r进行缓存并解映射得到可能损坏的伪随机序列s和循环码码字d,循环移位单元3对损坏的伪随机序列s、循环码码字d和预定序列p执行移位操作后得到移位序列s(l),由内解码器4完成对循环码码字d的插入/删节纠错,得到修正后的码字并将其输出到移位寄存器中,然后外解码器5从移位寄存器中读取码字dc,并对其执行纠错纠删译码,最后将满足译码判决即伴随式为0的译码码字作为输出码字否则,返回循环移位单元3继续执行移位。
对解映射单元2进行分析,输入的长度为2n=30比特的测序条形码,经过15个时钟周期的解映射过程,将解映射得到的伪随机序列s和循环码码字d分别存入两个移位寄存器中。对循环移位单元进行分析,每次循环移位的时钟周期均由此次循环移位的次数决定,而考虑到循环移位的次数与插入/删节的位置相关,位置不同的插入/删节错误所需的移位次数亦是不同。因此,循环移位单元的最终时钟周期随条形码上插入/删节位置的变化而变化。
对内解码器4内部进行分析,首先需要经过29个时钟周期完成对预定随机序列p和接收随机序列s之间最小编辑距离值的计算,然后经过15个时钟周期完成序列s上插入/删节/替换位置的标记,最后经过15个时钟周期完成对接受码字d的插入/删节纠正。由于本发明中内解码器4采用并行实现,因此,内解码器4最终所需时钟周期由最大的关键路径长度决定,即设计时经过29个时钟周期就能完成对码字d的插入/删节纠正。
对外解码器5内部进行分析,首先需要经过15个时钟周期完成伴随式的计算,然后经过6(也即2t,t取3)个时钟周期完成错误多项式系数的计算,最后经过15个时钟周期完成对码字dc上替代错误的纠正,由于本发明中外解码器5内部采用完全的流水线实现,因此,外解码器5所需时钟周期由最大的关键路径长度决定,即设计时经过15个时钟周期就能完成对码字dc的译码。
由于整个条形码识别装置,内解码器4与外解码器5采用并行结构设计,因此从读入数据开始,到输出正确的译码码字为止,装置所需的时钟周期由最大的关键路径长度决定,即理论上由内解码器4所需的29个时钟周期与循环移位单元最终移位次数的乘积决定。然而,考虑到电路中组合逻辑存在的延迟以及时钟输出存在的延迟,条形码识别装置实际工作时的时钟周期要大于支持的最小工作周期。
本实施实例中所采用的FPGA器件为Cyclone IV GX系列的EP4CGX150DF27C7,设计在不违反硬件的建立时间和保持时间的约束下所能达到的最大频率为87.66MHz。并使用QuartusⅡ对设计的接收机进行了逻辑综合,综合报告中显示本发明所设计的接收机的综合资源使用情况如表1所示。
表1接收机综合资源使用情况
本发明通过软件程序实现的结果验证了硬件实现的仿真结果的正确性。图9中给出了基于两种实现方式时,在两种不同错误情形下:(i)随机加入1个插入,1个删节和若干替代错误;(ii)随机加入2个插入,2个删节和若干替代错误,利用条形码处理方案得到的误帧率与错误数目关系图。从测试结果可以看出,软硬件实现的条形码处理方案在随机发生1个插入、1个删节和若干替代错误以及随机发生2个插入,2个删节和若干替代错误的情形下均具有良好的纠正插入、删节和替代错误的能力。
本发明分别使用软硬件验证了由BCH(15,5,3)码构造的测序用条形码的识别方法,其中对于长度为15的测序条形码,可以并行测序的样本数量为32,测序这32个代表不同样本的测序条形码所需运用时如表2所示。其中,软件实现的程序采用C语言编写,运行在主频为3.0GHz的通用Inter Core i3-3120M PC上,开发平台为Visual C++6.0。而在FPGA上做硬件实现时采用的时钟工作频率为50MHz。
表2软件实现和硬件实现的测试结果
综上所述,本发明实施例提出了一种高鲁棒性的DNA测序用条形码识别方法的硬件实现,通过将识别过程划分为不同的处理模块,并采用多级流水线结构,实现了条形码识别过程的并行化处理。仿真结果表明,该发明对混合测序中测序条形码的各类错误均保持良好纠错能力。同时,在运行时间上,基于硬件实现的条形码处理方案比用软件实现要快2个数量级,具有明显的速度优势,且占用较少的硬件资源。如果使用更高级别的FPGA芯片,系统的最大运行时钟频率还可以进一步提升,从而获得更高的运行速度。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。