CN103258145B - 一种基于De Bruijn图的并行基因拼接方法 - Google Patents
一种基于De Bruijn图的并行基因拼接方法 Download PDFInfo
- Publication number
- CN103258145B CN103258145B CN201310176240.2A CN201310176240A CN103258145B CN 103258145 B CN103258145 B CN 103258145B CN 201310176240 A CN201310176240 A CN 201310176240A CN 103258145 B CN103258145 B CN 103258145B
- Authority
- CN
- China
- Prior art keywords
- node
- strand
- processor
- debruijn
- parallel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及基因测序技术领域,提供了一种基于De Bruijn图的并行基因拼接方法,包括:S1、并行构建分布式De Bruijn图;S2、剔除错误路径;S3、基于深度图遍历方法对De Bruijn图进行化简;S4、合并contig,生成scaffold;S5、输出scaffold。本发明基于集群***,并行构造De Bruijn图,解决了大基因组拼接时由于其数据量太大,传统单机串行的基因拼接算法无法构图和无法进一步处理的问题;同时,在化简过程中,进行基于深度图遍历的并行化简,图化简过程简单,并行度高,拼接速度快。
Description
技术领域
本发明涉及基因测序技术领域,特别是涉及一种基于DeBruijn图的并行基因拼接方法。
背景技术
基因测序是现代生物信息领域中最重要的问题之一。随着现代生物的发展,基因测序已经越来越广泛地应用于社会的各个领域中,比如基因诊断、基因治疗、药物设计等。基因测序中很重要的一步就是基因拼接。
随着基因测序的广泛应用,一方面,它需要对大量大基因组的生物进行测序。在对大基因组进行测序时,其数据量非常大;另一方面,这也要求基因拼接的算法越来越快。
基因序列拼接算法主要有两类。第一类是基于overlap图的算法。在overlap图中,每一个短序列read(DNA分子被随机打断成很多小片段,每个小片段被称为read)都被当作一个顶点,如果两个read之间存在重叠且重叠的长度超过一定阈值,那么就有一条有向边相连。因此,序列拼接问题转换为在overlap图中寻找一条经过每个顶点的Hamilton路径,这是NP-Hard问题。第二类是基于DeBruijn图的算法。在DeBruijn图中,每一个read被切分成长度为k的小片段,称为k-mer。每一个k-mer为一个顶点。如果存在read,使两个k-mers相邻且重叠k-1个字符,那么它们之间存在一条有向边。这样每个read被映射成图中的一条路径。因此,序列拼接问题变成了在DeBruijn图中寻找一条包含所有read的路径。测序仪在测序时会引入错误,下一代高通量测序仪错误率在1%左右,同时原始序列中存在不同长度的重复片段,这两个问题使得序列拼接问题更加复杂。
早期基于Sanger测序法(自动化桑格测序法)得到的序列片段,长度可以达到1000BP(碱基对)。基于overlap图的拼接算法比较有效,但测序成本比较高。比如通过第一代测序技术完成的人类基因组计划,花费了30亿美元,耗时三年。当第二代测序技术(又称为下一代测序技术)如Solexa、454、SOLID技术出现后,基因测序才开始真正进入大规模应用。第二代测序技术有三个显著的特点,高通量,短序列,高覆盖。高通量,是测序仪一次可以同时测定大量的read序列,极大降低了测序成本。短序列,是序列长度一般在25-500base之间。高覆盖,是因为序列短,为了保证信息的完整性,需要极大的提高DNA的覆盖度(即coverage)。但随着覆盖度的提高,read数量成倍的增加,如果继续采用基于overlap图的算法,图的规模也会成倍的增长。如果采用基于DeBruijn图的算法,图的规模与DNA长度呈线性关系。对同一基因组而言,其规模几乎不变。因此,面对第二代基因测序技术的大规模应用,DeBruijn图的基因拼接算法有很大的优势。其相关的算法有Euler、ALLPATHS、Velvet、IDBA、SOAPdenovo、分布式的ABySS和分布式的YAGA。其中Euler、ALLPATHS、Velvet、IDBA算法是串行算法,适用于小数据集的拼接,SOAPdenovo是基于SMP大型机的多线程拼接算法,可以拼接大型数据集如人类基因组,但最快拼接时间也需要40多个小时。
在基于DeBruijn图的拼接过程中,最为消耗内存的步骤是构建DeBruijn图,尤其是对大基因组生物,其构造的DeBruijn图非常大,现有的单机串行的拼接算法,无法完成构图。同时,对DeBruijn图的化简需要占用最多的处理时间。现有的并行拼接算法,其拼接速度仍然无法达到大规模应用的要求,主要的难点就是化简过程的并行度不高。
综上所述,现有技术中,传统单机串行的基因拼接算法无法对大基因组的海量数据进行拼接,而现行的并行基因拼接算法不能快速对大基因组进行拼接。
发明内容
本发明提供一种基于DeBruijn图的并行基因拼接方法,旨在解决现有技术中传统单机串行的基因拼接算法无法对大基因组的海量数据进行拼接,现行的并行基因拼接算法不能快速对大基因组进行拼接的技术问题。
本发明采用如下技术方案:
一种基于DeBruijn图的并行基因拼接方法,包括:
S1、并行构建分布式DeBruijn图;
S2、剔除错误路径;
S3、基于深度图遍历方法对DeBruijn图进行化简;
S4、合并contig,生成scaffold;
S5、输出scaffold。
优选地,所述步骤S1具体包括:
S11、所有的处理器并行读取原始的短序列文件,每个处理器读取短序列文件的一部分;
S12、每个处理器对读取的短序列进行切分,每个短序列被切分成长度为k的小片段k-mer,获取所述k-mer,把每个k-mer构造成一个节点;
S13、按照哈希规则,对所有的节点进行重分布。
优选地,所述步骤S2具体为:
对步骤S1构建的所述分布式DeBruijn图进行并行去错。
优选地,在所述步骤S2中,对步骤S1构建的所述分布式DeBruijn图中的Tips、Bubble和SpuriousLink三种结构进行剔除。
优选地,所述步骤S3具体包括:
S31、初始化,将DeBruijn图分布存储在每个处理器的locationMap中,同时新建一个subGraphMap;
S32、所有处理器并行从本地的locationMap中的端节点出发遍历单链;
S33、将所有的单链进行化简;
S34、判断是否有未访问的端节点,若有,返回执行步骤S32,否则,执行步骤S35;
S35、图化简完成,生成contig。
优选地,所述步骤S32具体为:
处理器从端节点出发访问单链节点;如果所述链节点是第一次被访问,则记录本次访问的端节点ID号;如果处理器访问了单链的所有链节点直到另一个端节点都没有遇到冲突,则将所述单链分配给所述处理器;
如果处理器在访问第一个链节点时发现该单链已被访问过,则回退,继续访问下一条单链;
如果处理器访问的非第一个单链节点的链节点同时也被另外一个处理器访问,则比较自己端节点ID号与对方端节点ID号的大小,如果自己端节点ID号小,则继续访问,反之,则放弃,继续访问下一条单链。
优选地,所述步骤S33具体为:
将单链节点全部删除,节点信息合并到端节点中,并将端节点***subGraphMap中。
优选地,所述步骤S4具体为:
利用测序获得的pair-end信息,合并步骤S3得到的contig,生成scaffold,所述scaffold为更长的contig。
本发明基于集群***,并行构造DeBruijn图,解决了大基因组拼接时由于其数据量太大,传统单机串行的基因拼接算法无法构图和无法进一步处理的问题;同时,在化简过程中,进行基于深度图遍历的并行化简,图化简过程简单,并行度高,拼接速度快。
附图说明
图1为本发明实施例基于DeBruijn图的并行基因拼接方法流程图;
图2为本发明实施例中并行构建分布式DeBruijn图的方法流程图;
图3为本发明实施例中基于深度图遍历方法对DeBruijn图进行化简的方法流程图;
图4为本发明实施例中深度图遍历寻找单链过程的示意图;
图5为本发明实施例中Yeast数据集的时间开销图;
图6为本发明实施例中C.elegans数据集的时间开销图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提供了一种基于DeBruijn图的并行基因拼接方法,该方法包括下述步骤:
步骤S1:并行构建分布式DeBruijn图。
本实施例中,通过如下步骤进行分布式DeBruijn图的并行构建,如图2所示:
步骤S11、初始化,所有的处理器并行读取原始的read短序列文件,每个处理器读取read短序列文件的一部分。根据处理器的编号,根据read文件的大小,每个处理器读取文件的不同块。假设文件的长度为L,有n个处理器,那么第i个处理器读取从((i-1)*L)/n到(i*L)/n。
步骤S12、每个处理器对读取的read短序列进行切分,每个read短序列被切分成长度为k的小片段k-mer,获取k-mer,把每个k-mer构造成一个节点。
步骤S13、按照哈希规则(处理器号=hash(ID)),对所有的节点进行重分布。该步骤完成后,任何处理器都能根据相同规则直接定位任何一个节点,这为后续处理中单链遍历和图的化简提供了便利。
步骤S2:剔除错误路径。
由于测序时引入了错误,DeBruijn图构建完成后,图中有大量错误路径。错误有三类:Tips、Bubble和SpuriousLink。因此,本步骤对步骤S1构造的分布式DeBruijn图进行并行去错,主要是对构造的分布式DeBruijn图中的Tips、Bubble和SpuriousLink三种结构进行剔除。去错后,图可看作由error-free数据构成的图,这时的图非常稀疏,存在大量的单链。下一步需进行单链化简。
步骤S3:基于深度图遍历方法对DeBruijn图进行化简。
化简的目的就是找出所有的单链。本实施例中,通过如下步骤对DeBruijn图进行化简,如图3所示:
步骤S31、初始化,将DeBruijn图分布存储在每个处理器的locationMap中,同时新建一个subGraphMap。
每个处理器上有两个Map。一个是locationMap,存储图化简前的节点。另一个是subGraphMap,存储图化简后的节点。初始化时,subGraphMap为空,在化简过程中,会不断地***单链合并后剩下的节点。
步骤S32、所有处理器并行从本地的locationMap中的端节点出发遍历单链。
本步骤中,如果不加限制,那么遍历单链时存在如下三种情况:同一条链,同一个处理器先后访问;同一条链,两个处理器先后访问;同一条链,两个处理器同时访问。为了减少节点的重复访问,节点中增加一个endNodeID变量,存放访问过它的端节点的ID号。根据这个端节点的ID号来判断当前遍历是否继续或者退出。
下面先对几个概念进行定义:1度节点是指度为1的节点。链节点是指度为2且能通过的节点。分叉节点是指度大于2的节点或度为2但不能通过的节点。单链是指由链节点构成的没有分叉的链。端节点是指单链两端的节点。端节点是分叉节点或1度节点,虽然不属于单链,但是可以通过其遍历得到整个单链。由链节点构成的单链是化简的对象。
(1)、处理器从端节点出发访问单链节点,如果链节点是第一次被访问,则记录本次访问的端节点ID号;如果处理器访问了单链的所有链节点直到另一个端节点都没有遇到冲突,则将单链分配给该处理器(参见图4中的1、2);
(2)、如果处理器在访问第一个链节点时发现该单链已被访问过(查看endNodeID值),则回退,继续访问下一条单链(参见图4中的3);
(3)、如果处理器访问的链节点(非第一个单链节点)同时也被另外一个处理器访问,则比较自己端节点ID号与对方端节点ID号的大小,如果自己端节点ID号小,则继续访问,反之,则放弃,继续访问下一条单链(参见图4中的4、5)。
步骤S33、将所有的单链进行化简。
本步骤中,将单链节点全部删除,节点信息合并到端节点中,并将端节点***subGraphMap中。
步骤S34、判断是否有未访问的端节点,若有,返回执行步骤S32,否则,执行步骤S35。
步骤S35、图化简完成,生成contig。
当没有未访问的端节点时,化简完成。
步骤S4:合并contig(重叠群),生成scaffold(基因组支架)。
利用测序获得的pair-end信息,合并步骤S3得到的contig,生成更长的contig(即scaffold)。
步骤S5:输出scaffold。
本步骤输出scaffold到指定文件。
本发明实施例基于集群***,并行构造DeBruijn图,解决了大基因组拼接时由于其数据量太大,传统单机串行的基因拼接算法无法构图和无法进一步处理的问题;同时,在化简过程中,进行基于深度图遍历的并行化简,图化简过程简单,并行度高,拼接速度快。
实验:
本发明已经经过实验验证。
用C++、MPI实现了该基因拼接算法。实验平台包括10台曙光5000的高性能计算机,用InfiniBand网络互联。每台机器的配置为16核、32G共享内存。实验选取了Yeast,C.elegans两个基因组,使用Perl脚本自动生成了50倍Yeast测试数据,该数据包括17,007,362read;50倍C.elegans测试数据,该数据包括140,396,108read。read的长度从36bp到50bp不等,错误率为0。实验的目标是验证DeBruijn图的构建和化简算法的扩展性。
首先,测试了Yeast数据集,运行过程被分为三个阶段:并行文件I/O,构图,图的化简。对三个阶段分别计时。第一阶段,从一个分布式文件***读入文件。第二阶段,构建一个DeBruijn图。第三阶段,对DeBruijn图进行化简。第三阶段的时间开销有很大一部分是网络传输的时间开销。该算法中大部分节点只需移动一次,这对第三阶段的优化效果明显。如图5所示,其实验结果表明该算法有比较好的扩展性。当处理器的数目从8增加到128时,总时间从最开始的490s减少为63s,平均加速比为8倍。
然后,测试了C.elegans数据集。C.elegans数据集是Yeast数据集的10倍,运行时间见图6。当处理器的数目从8增加到128时,总时间从最开始的3844s减少为375s,平均加速比为10倍。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于DeBruijn图的并行基因拼接方法,其特征在于,包括:
S1、并行构建分布式DeBruijn图;
S2、剔除错误路径;
S3、基于深度图遍历方法对DeBruijn图进行化简;所述步骤S3具体包括:S31、初始化,将DeBruijn图分布存储在每个处理器的locationMap中,同时新建一个subGraphMap;S32、所有处理器并行从本地的locationMap中的端节点出发遍历单链;S33、将所有的单链进行化简;S34、判断是否有未访问的端节点,若有,返回执行步骤S32,否则,执行步骤S35;S35、图化简完成,生成contig;
S4、合并contig,生成scaffold;
S5、输出scaffold。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1具体包括:
S11、所有的处理器并行读取原始的短序列文件,每个处理器读取短序列文件的一部分;
S12、每个处理器对读取的短序列进行切分,每个短序列被切分成长度为k的小片段k-mer,获取所述k-mer,把每个k-mer构造成一个节点;
S13、按照哈希规则,对所有的节点进行重分布。
3.根据权利要求1所述的方法,其特征在于,所述步骤S2具体为:
对步骤S1构建的所述分布式DeBruijn图进行并行去错。
4.根据权利要求3所述的方法,其特征在于,在所述步骤S2中,对步骤S1构建的所述分布式DeBruijn图中的Tips、Bubble和SpuriousLink三种结构进行剔除。
5.根据权利要求1所述的方法,其特征在于,所述步骤S32具体为:
处理器从端节点出发访问单链节点;如果所述链节点是第一次被访问,则记录本次访问的端节点ID号;如果处理器访问了单链的所有链节点直到另一个端节点都没有遇到冲突,则将所述单链分配给所述处理器;
如果处理器在访问第一个链节点时发现该单链已被访问过,则回退,继续访问下一条单链;
如果处理器访问的非第一个单链节点的链节点同时也被另外一个处理器访问,则比较自己端节点ID号与对方端节点ID号的大小,如果自己端节点ID号小,则继续访问,反之,则放弃,继续访问下一条单链。
6.根据权利要求1所述的方法,其特征在于,所述步骤S33具体为:
将单链节点全部删除,节点信息合并到端节点中,并将端节点***subGraphMap中。
7.根据权利要求1所述的方法,其特征在于,所述步骤S4具体为:
利用测序获得的pair-end信息,合并步骤S3得到的contig,生成scaffold,所述scaffold为更长的contig。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310176240.2A CN103258145B (zh) | 2012-12-22 | 2013-05-14 | 一种基于De Bruijn图的并行基因拼接方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210563019 | 2012-12-22 | ||
CN2012105630198 | 2012-12-22 | ||
CN201210563019.8 | 2012-12-22 | ||
CN201310176240.2A CN103258145B (zh) | 2012-12-22 | 2013-05-14 | 一种基于De Bruijn图的并行基因拼接方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103258145A CN103258145A (zh) | 2013-08-21 |
CN103258145B true CN103258145B (zh) | 2016-06-29 |
Family
ID=48962057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310176240.2A Active CN103258145B (zh) | 2012-12-22 | 2013-05-14 | 一种基于De Bruijn图的并行基因拼接方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103258145B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761453B (zh) * | 2013-12-09 | 2017-10-27 | 天津工业大学 | 一种基于簇图结构的并行基因拼接方法 |
CN103714263B (zh) * | 2013-12-10 | 2017-06-13 | 深圳先进技术研究院 | 双向多步De Bruijn图的错误双向边识别与去除方法 |
CN103699818B (zh) * | 2013-12-10 | 2017-04-05 | 深圳先进技术研究院 | 基于多步双向De Bruijn图的变长kmer查询的双向边扩展方法 |
CN103699819B (zh) * | 2013-12-10 | 2016-09-07 | 深圳先进技术研究院 | 基于多步双向De Bruijn图的变长kmer查询的顶点扩展方法 |
CN104750765B (zh) * | 2013-12-30 | 2017-10-03 | 中国科学院天津工业生物技术研究所 | 一种基因组测序数据序列组装方法 |
EP3204522A4 (en) * | 2014-10-10 | 2018-06-20 | Invitae Corporation | Methods, systems and processes of de novo assembly of sequencing reads |
CN104951672B (zh) * | 2015-06-19 | 2017-08-29 | 中国科学院计算技术研究所 | 一种第二代、三代基因组测序数据联用的拼接方法及*** |
CN107841542A (zh) * | 2016-09-19 | 2018-03-27 | 深圳华大基因科技服务有限公司 | 一种基因组重叠群二代序列组装方法和*** |
CN108959853B (zh) * | 2018-05-18 | 2020-01-17 | 广州金域医学检验中心有限公司 | 一种拷贝数变异的分析方法、分析装置、设备及存储介质 |
CN108718314B (zh) * | 2018-06-01 | 2021-09-07 | 北京兰云科技有限公司 | 一种网络报文的完整性检测方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430742A (zh) * | 2008-12-12 | 2009-05-13 | 深圳华大基因研究院 | 一种短序列组装中构建图的方法及*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100063742A1 (en) * | 2008-09-10 | 2010-03-11 | Hart Christopher E | Multi-scale short read assembly |
CN103080333B (zh) * | 2010-09-14 | 2015-06-24 | 深圳华大基因科技服务有限公司 | 一种基因组结构性变异检测方法和*** |
-
2013
- 2013-05-14 CN CN201310176240.2A patent/CN103258145B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430742A (zh) * | 2008-12-12 | 2009-05-13 | 深圳华大基因研究院 | 一种短序列组装中构建图的方法及*** |
Non-Patent Citations (3)
Title |
---|
DNA序列拼接中de Bruijn图结构的研究;王东阳,任世军,王亚东;《智能计算机与应用》;20110831;第1卷(第2期);20-30 * |
DNA序列拼接中欧拉超路算法的新并行策略;郑纬民,林皎,罗水华;《计算机学报》;20060131;第29卷(第1期);139-144 * |
Parallel de novo assembly of large genomes from high-throughput short reads;B.G. Jackson et al.;《Parallel & distributed Processing(IPDPS),2010 IEEE international symposium on》;20101231;第1-10页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103258145A (zh) | 2013-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103258145B (zh) | 一种基于De Bruijn图的并行基因拼接方法 | |
Sundquist et al. | Whole-genome sequencing and assembly with high-throughput, short-read technologies | |
Li et al. | Fast and accurate short read alignment with Burrows–Wheeler transform | |
Li et al. | Fast and accurate long-read alignment with Burrows–Wheeler transform | |
Assadi et al. | Massively parallel algorithms for finding well-connected components in sparse graphs | |
Pattengale et al. | Uncovering hidden phylogenetic consensus in large data sets | |
CN104794371B (zh) | 检测逆转座子***多态性的方法和装置 | |
Flick et al. | A parallel connectivity algorithm for de Bruijn graphs in metagenomic applications | |
Roberts | Ambiguous fragment assignment for high-throughput sequencing experiments | |
McMillan | Trace theoretic verification of asynchronous circuits using unfoldings | |
US20230282309A1 (en) | Systems and methods for grouping and collapsing sequencing reads | |
Wei et al. | Probabilistic and systematic coverage of consecutive test-method pairs for detecting order-dependent flaky tests | |
Cairo et al. | The hydrostructure: a universal framework for safe and complete algorithms for genome assembly | |
Chapman et al. | Meraculous2: fast accurate short-read assembly of large polymorphic genomes | |
Jain | Coverage-preserving sparsification of overlap graphs for long-read assembly | |
KR20160039386A (ko) | Itd 검출 장치 및 방법 | |
CN103699819B (zh) | 基于多步双向De Bruijn图的变长kmer查询的顶点扩展方法 | |
Chikhi et al. | Localized genome assembly from reads to scaffolds: practical traversal of the paired string graph | |
Nguyen et al. | Real-time resolution of short-read assembly graph using ONT long reads | |
Marić | Long read RNA-seq mapper | |
Tahir et al. | Review of genome sequence short read error correction algorithms | |
Yang et al. | Large-scale metagenomic sequence clustering on map-reduce clusters | |
CN103699818B (zh) | 基于多步双向De Bruijn图的变长kmer查询的双向边扩展方法 | |
Chikhi | Computational methods for de novo assembly of next-generation genome sequencing data | |
Das et al. | Optimal haplotype assembly via a branch-and-bound algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |