CN110070911A - 一种基于Hadoop的基因序列并行比对方法 - Google Patents
一种基于Hadoop的基因序列并行比对方法 Download PDFInfo
- Publication number
- CN110070911A CN110070911A CN201910293732.7A CN201910293732A CN110070911A CN 110070911 A CN110070911 A CN 110070911A CN 201910293732 A CN201910293732 A CN 201910293732A CN 110070911 A CN110070911 A CN 110070911A
- Authority
- CN
- China
- Prior art keywords
- data
- gene
- value
- hadoop
- key
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 116
- 108090000623 proteins and genes Proteins 0.000 title claims abstract description 115
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 20
- 238000005192 partition Methods 0.000 claims abstract description 15
- 108700005084 Multigene Family Proteins 0.000 claims abstract description 4
- 230000004807 localization Effects 0.000 claims abstract description 4
- 230000007246 mechanism Effects 0.000 claims description 12
- 239000003550 marker Substances 0.000 claims description 7
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 238000009825 accumulation Methods 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 abstract description 12
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 9
- 238000002864 sequence alignment Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013144 data compression Methods 0.000 description 4
- 230000006837 decompression Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000015654 memory Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B20/00—ICT specially adapted for functional genomics or proteomics, e.g. genotype-phenotype associations
- G16B20/30—Detection of binding sites or motifs
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
Landscapes
- Life Sciences & Earth Sciences (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Engineering & Computer Science (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Analytical Chemistry (AREA)
- Chemical & Material Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Theoretical Computer Science (AREA)
- Genetics & Genomics (AREA)
- Molecular Biology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于Hadoop的基因序列并行比对方法,包括以下步骤:步骤1:在Hadoop集群中,将基因对比软件、参考序列和任务脚本部署到各工作节点;步骤2:进行数据输入,同时读入多个数据文件,形成键值对;步骤3:在Map函数中对输入的键值对进行所属端的标记;步骤4:对数据进行分区,分区数据分发到Hadoop集群的工作节点上;步骤5:在Reduce函数中将分区数据本地化然后传递给比对算法;步骤6:收集分布到各节点上的结果文件,合并统一后存储于HDFS中,即完成基因序列的比对。本发明在分布式计算环境下实现了对基因数据的格式化输入和多路输入输出以及基于这两个特征的并行计算方法,简化了基因序列比对任务的计算流程,提高了计算效率。
Description
技术领域
本发明涉及基因序列的并行对比方法,具体涉及一种基于Hadoop的基因序列并行比对方法。
背景技术
生物信息计算问题通常具有数据规模大、计算量大、计算耗时长等特点;现有的采用Hadoop实现基因序列并行比对的方法中均需要第三方工具配合;众多的工具会使得计算任务的执行流程变得复杂且不方便应用,也影响了计算效率的提高。
如基于Hadoop改进BWA算法,需要预先使用工具改变输入数据的原有格式;这就使得计算模型整体不具有统一性,也在一定程度上限制了计算效率的提高。基因短序列比对的任务是将测序所得的大量短读序列映射到参考基因组上,然后进行后续的生物学意义分析。基因短序列比对算法的输入是短读序列文件和参考序列文件,输出是映射结果文件。传统的串行比对算法通常由于数据量巨大计算耗时较长。并且现有的基因比对软件通常是单机串行执行的,无法实现计算任务分布式并行化。
发明内容
本发明提供一种可在不使用其他工具的前提下,在Hadoop平台中独立完成基因序列并行比对,计算效率高的基于Hadoop的基因序列并行比对方法。
本发明采用的技术方案是:一种基于Hadoop的基因序列并行比对方法,包括以下步骤:
步骤1:在Hadoop集群中,将基因对比软件、参考序列和任务脚本部署到各工作节点,短读序列存储到HDFS中;
步骤2:采用多路输入的方法进行数据输入,同时读入多个数据文件,形成以位置偏移量为key,序列内容为value的键值对;
步骤3:在Map函数中对输入的键值对进行所属端的标记;
步骤4:通过分区算法按照键值对中的key值对数据进行分区,分区数据分发到Hadoop集群的工作节点上,一个数据分区对应一个工作节点;
步骤5:在Reduce函数中通过多路输出的方法将分区数据本地化然后传递给比对算法,在各工作节点上分别调用比对算法;实现各数据分区的分布式计算;
步骤6:收集分布到各节点上的结果文件,合并统一后存储于HDFS中,即完成基因序列的比对。
进一步的,所述步骤2输入过程中对数据文件中的短读序列进行格式化读取,方法如下:
定义用于基因格式化输入的类,在该类中包含用于创建基因记录的方法;
定义基因记录类,用于对基因记录格式的抽象和基因记录的格式化读取;
定义用于缓存控制的类,使Hadoop中缓存控制机制适应基因记录的格式化读取;缓存控制机制由基因记录格式化读取方法触发;
定义基因数据读取的辅助类,用于配合新的缓存控制机制协同工作。
进一步的,所述数据读取过程采用的基因记录的格式化读取方法如下:
S11:初始化变量;
S12:累积读取数据行,判断数据行是否为有效行;若是则提取新行特征并更新旧行内容;否则转入步骤S13;
S13:判断是否符合基因记录的首行特征,若是则更改缓存清空标记,否则转入步骤S14;
S14:判断是否符合基因记录的尾行特征,若是则单条基因记录读取完毕;否则转入步骤S12。
进一步的,所述数据读取过程采用的基因记录的格式化读取方法如下:
循环读取指定行数的数据行作为一条基因记录,在此过程中记录首行读取前更新缓存,记录首行读取后停止更新缓存,直至一条基因记录的所有数据行读取完毕。
进一步的,所述步骤2中的基因序列的多路输入通过Hadoop中的FileInputFormat类实现,通过其提供的addInputPath将输入文件的多个路径以数组的形式传入。
进一步的,所述步骤3中的Map函数如下:
S21:输入键值对(key,value);
S22:判断value是否为双端序列;若是则转入步骤S23,若否则转入步骤S24;
S23:判断value是否为左端序列,若是则为value添加左端标记,若否则添加右端标记;
S24:对value不做标记;
S25:输出标记完成的键值对。
进一步的,所述步骤4中数据分区按照以下过程进行:
通过输入文件的大小和数据分区的数量将位置偏移量等分为与节点数量相等的区间段,以键值对中的key值所属区间段确定其数据分区编号;对数据混洗、排序、分组,具有相同key值的键值对被分配到同一数据分区。
进一步的,所述步骤5中Reduce函数如下:
S31:遍历步骤4中的value集合;
S32:判断value是否具有双端序列标记,若否则将其写入本地文件;若是则转入步骤S33;
S33:value是否具有右端标记,若是则将其多路输出至右端文件,若否则将其多路输出至左端文件;
S34:判断是否value集合遍历完毕,若否则转入步骤S32,若是则结束遍历。
S35:所有集合遍历完毕后,在工作节点启动基因比对任务。
本发明的有益效果是:
(1)本发明采用Hadoop API完成基因序列比对任务的数据输入、数据分发、分布式计算和结果处理的全部过程;
(2)本发明通过对基因序列的格式化输入,省去了使用第三方工具进行数据预处理的步骤,直接以FASTQ格式的多个序列文件作为输入,减少了计算过程中格式处理的开销,从而减少了计算耗时;
(3)本发明中输出数据处理也无需借助工具完成,计算任务自动执行,计算过程无需干预;
(4)本发明简化了基因序列对比的计算流程,计算效率高。
附图说明
图1为本发明流程示意图。
图2为本发明实施例中基因序列格式化读取方法1的流程示意图。
图3为本发明实施例中基因序列格式化读取方法2的流程示意图。
图4为本发明实施例中Map函数流程示意图。
图5为本发明实施例中数据分区方法流程示意图。
图6为本发明实施例中Reduce函数流程示意图。
图7为本发明实施例1中计算耗时对比图。
图8为本发明实施例1中并行计算加速比对比图。
图9为本发明实施例1中并行计算效率对比图。
图10为本发明实施例1中本发明方法加速比与线性加速比对比图。
图11为本发明实施例1中本发明方法与BWA多线程模式计算耗时对比图。
图12为本发明实施例2中本发明方法与现有计算方法计算加速比对比图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步说明。
如图1所示,一种基于Hadoop的基因序列并行比对方法,包括以下步骤:
步骤1:在Hadoop集群中,将基因对比软件、参考序列和任务脚本部署到各工作节点,短读序列存储到HDFS中;
步骤2:采用多路输入的方法进行数据输入,同时读入多个数据文件,形成以位置偏移量为key,序列内容为value的键值对;
步骤3:在Map函数中对输入的键值对进行所属端的标记;
步骤4:通过分区算法按照键值对中的key值对数据进行分区,分区数据分发到Hadoop集群的工作节点上,一个数据分区对应一个工作节点;
步骤5:在Reduce函数中通过多路输出的方法将分区数据本地化然后传递给比对算法,在各工作节点上分别调用比对算法;实现各数据分区的分布式计算;
步骤6:收集分布到各节点上的结果文件,合并统一后存储于HDFS中,即完成基因序列的比对。
本发明在Hadoop平台的编程规范下设计计算模型,输入数据和计算结果的存储都使用HDFS,方便在Hadoop平台中实现分发共享;首先在分布式任务提交之前完成预部署工作,即将比对所需参考序列和比对软件提前部署到每个工作节点上,短读序列则存储到HDFS中,方便运算过程中的分布式部署。在数据输入环节采用Hadoop输入API直接读取多个基因序列文件,不需数据预处理。其中单端序列输入则视为多路输入的一种特殊情况;多路输入的键值对在Map函数中完成左端序列left-end或右端序列right-end端的标识。然后使用自定义分区算法按照键值对中的key值对数据进行分区,分区数据被分发到集群的工作节点上。在Reduce函数中采用多路输出的方法将分区数据本地化后传递给比对算法,在工作节点上调用比对算法,实现各数据分区的分布式计算。最后将各节点的计算结果收集到HDFS完成结果合并。
基因数据的特点包括,数据文件是由ASCII字符构成的文本文件;文件每行字符数量不固定;文件内容中没有可供识别的key,value特征值;文件由多条基因序列构成,一条基因序列由多行内容构成;一条基因序列应整体处理不可分割。而Hadoop平台没有提供直接处理这中数据的手段,其中的InputFormat接口提供了对输入数据的切分方法,这种方法是以行为单位进行数据切分的,切分后的每个分片对应一个Map任务,从而完成所有数据的Map处理。因此需要更改Hadoop的源码,在遵守其编程规范的前提下改变原有功能,使其能够适应基因数据的处理。
Hadoop源码中的TextInputFormat类继承自FileInputFormat类,覆写了父类中的createRecordReader()方法,用于创建记录,方法中返回LineRecordReader类的对象。而LineRecordReader类是RecordReader的子类,其中一个重要的数据成员in为SplitLineReader类型,该成员可以调用readLine()方法实现文本文件的按行读取,此方法在SplitLineReader类中并没有被覆写,而是继承自其父类LineReader。
本发明中根据基因序列的格式特点,改变文本文件按行读取的方式为按基因格式多行读取,具体设计内容如下:
定义用于基因格式化输入的类GeneRecordFormat,此类继承自Hadoop源码中的文件输入的类;在此类中设计创建基因记录的方法createRecordReader,调用这个方法可以创建一个基因记录对象并返回给调用者。
定义基因记录类GeneRecordReader,此类是对特定格式的基因数据文件中数据格式的抽象,一个基因记录对象代表基因数据文件中一条完整的基因序列。在Hadoop源码中数据记录的读取是通过调用nextKeyValue方法实现的,其工作模式是按行读取,不能满足基因记录读取的要求。在所定义的GeneRecordReader类中重新设计nextKeyValue方法专门针对基因记录的格式完成读取;基因读取方法可以采用方法1和方法2进行,如图2和图3所示。
基因读取方法1,图2如下:
S11:初始化变量;
S12:累积读取数据行,判断数据行是否为有效行;若是则提取新行特征并更新旧行内容;否则转入步骤S13;
S13:判断是否符合基因记录的首行特征,若是则更改缓存清空标记,否则转入步骤S14;
S14:判断是否符合基因记录的尾行特征,若是则单条基因记录读取完毕;否则转入步骤S12。
该方法建立在数据记录特征可识别的基础上,例如FASTQ格式文件中一条基因序列或记录有明确的可识别特征,首行以“@”开头,尾行以“!”开头。算法中定义了标记变量flag,其值为真时清空缓存,反之则不清空。其初始值为true,当一条记录首行读取完成后flag置为false,以保证记录内容的累积。一条记录的内容是在value变量中不断累加形成的,为了识别新行的特征,定义了lastvalue变量用来记录value累加前的值。方便定位value中新读取的部分,同时也能有效的解决重复行或空行问题。一条记录的多行读取是通过循环调用readLine方法实现的,循环的起止正是通过首尾行的特征的识别来控制的,因此即使每条记录的行数不相等,算法也能很好的识别,如图2所示。
基因读取方法2,图3如下:
循环读取指定行数的数据行作为一条基因记录,在此过程中记录首行读取前更新缓存,记录首行读取后停止更新缓存,直至一条基因记录的所有数据行读取完毕。
这种读取方法是建立在数据文件格式统一的基础上,循环读取指定行数的内容作为一条记录;能有效解决数据记录特征不明显的数据读取问题,单是如果数据文件中存在空行或格式不统一的内容则会发生读取错误,其缓存控制机制同方法1,记录首行读取前更新缓存,记录首行读取完成后停止更新缓存。
定义用于缓存控制的类GeneLineReader,此类作用在于改变Hadoop原有的按行读取模式中的缓存控制机制,使得缓存的清空按照基因记录的格式来执行。具体由控制缓存清空的布尔型标记变量来实现,标记变量为真值清空缓存,反则不清空。这种缓存机制由nextKeyValue方法触发,即读取算法控制标记变量值的变化,每次读取数据前都要确定缓存是否需要清空。
为适应新的缓存控制机制,需重新定义数据输入的辅助类,包括基因数据读取类、用于数据压缩和解压缩的类。定义基因数据读取类的子类GeneSplitLineReader,缓存控制机制的变化导致存在继承关系的子类都要与父类保持一致,Hadoop源码中的数据读取类的子类不再适应现有的数据读取方式,需要重新定义这个子类。定义用于数据压缩和解压缩的类GeneCompressedSplitLineReader和GeneUncompressedSplitLineReader,缓存机制的变化也导致数据压缩和解压缩工作需要根据缓存是否清空而变化,在这两个类的方法中均允许传入flag标记变量,使得数据压缩和解压缩依据此标记变量的值进行。
基因格式化输入算法还需要遵守以下约束:
1、格式化读取算法在GeneRecordReader类的nextKeyValue()方法中实现;
2、nextKeyValue()被调用一次读取一条记录;
3、读取新记录前先清空缓存,读取一条记录中的各行时不得清空缓存;
4、调用一次nextKeyValue()需多次调用readLine()读取一条记录的多行;
5、数据记录的行数为固定值或可通过特征识别。
基因数据的多路输入通过Hadoop中的FileInputFormat类实现,通过其提供的addInputPath将多个数据文件的路径以数组的形式传入。作业启动后,数据输入来自多个不同的数据源,程序会通过数据的内容识别其来源使数据有序的进入后续的处理流程,输入后的基因序列均形成以位置偏移量为key,序列内容为value的键值对。多路输入的方法有效的避免了数据输入局限于单个数据源的模式,也避免了借助工具进行数据预处理才能达到运算要求。
在Map函数中,对双端序列通过序列内容识别其为左端还是右端序列并加以标记,单端序列视为多路输入的一种特殊情况,不对序列进行标记,Map函数如图4所示:
S21:输入键值对(key,value);
S22:判断value是否为双端序列;若是则转入步骤S23,若否则转入步骤S24;
S23:判断value是否为左端序列,若是则为value添加左端标记,若否则添加右端标记;
S24:对value不做标记;
S25:输出标记完成的键值对。
此标记是后续实现数据分区约束和数据多路输出的关键依据,Map函数处理后,一条双端序列的左端序列和右端序列形成具有相同key值的键值对;因为在双端序列文件中同一序列在两个文件中具有相同的位置偏移量。
Hadoop平台提供的数据分发的手段不适合双端序列分发,需要自定义数据分区方法满足以下要求,每个分区中左端序列和右端序列的数量需相同、分区中序列的位置相对于序列文件中的位置保持不变、一条双端序列的左端序列和右端序列必须被分配到同一分区中。分区算法如图5所示。首先通过输入文件的大小和数据分区的数量将位置偏移量等分为若干区间段,然后以键值对中的key为依据进行分区计算,key代表了一个序列在序列文件中的位置,判断key所属的区间段得到其分区编号。双端序列文件中相同位置上的序列具有相同的key值,因此会被分到同一数据分区。
Merge是Hadoop提供的功能,根据key值对数据分区内的数据进行混洗、排序和分组,处理的结果是具有相同key值的序列会被合并到同一集合中。对双端序列来说一个键值对中既包含其左端序列又包含其右端序列,键值对如(K,V’[]),且所有序列在分区内是有序的,可保证分区内的序列的相对位置不变。
在Reduce函数中,输入的是一个分区的基因序列,且以key聚合后的集合。如果输入是单端序列则将分区中的序列逐条写入本地文件,如果输入是双端序列则通过Map函数中加入的序列标识识别其所属端,多路输出到不同的本地文件中,其算法如图6所示。
Reduce函数如下:
S31:遍历步骤4中的value集合;
S32:判断value是否具有双端序列标记,若否则将其写入本地文件;若是则转入步骤S33;
S33:value是否具有右端标记,若是则将其多路输出至右端文件,若否则将其多路输出至左端文件;
S34:判断是否value集合遍历完毕,若否则转入步骤S32,若是则结束遍历。
S35:所有集合遍历完毕后,在工作节点启动基因比对任务。
本地数据文件生成后,在Reducer的cleanup函数中启动序列比对任务,任务通过shell调用的方式执行。将序列比对要调用的软件、参数等信息组织到Shell脚本中,脚本启动后节点上的比对任务开始自动执行。在预部署阶段比对所需的参考序列、shell脚本和比对软件均已部署到工作节点,具备了比对工作所需的条件,因此比对任务可在集群中的各节点上并行执行,对单端序列启动单端序列比对算法,对双端序列启动双端序列比对算法,输出是该节点上的数据分区的比对结果,结果生成后上传到HDFS中,当所有节点的比对任务均完成后,将HDFS中的结果文件合并到统一的文件中。
节点上的计算任务通过shell调用方式执行,使得计算模型更有灵活性,不仅可以通过编辑脚本来调整比对软件的版本,而且还可以根据比对工作的需要随时调整参数配置。
为了说明本发明的有益效果,采用本发明方法对基因比对任务进行计算。
实验数据选用1000 Genome Projects的基因数据,参考基因组大小为3.3G,短读序列选用D1:ERR000589和D2:SRR062634两个数据集。实验集群为1个namemode和8个datanode的Hadoop集群,单节点配置为8核CPU,8G内存,1T硬盘的VMware虚拟机。Hadoop版本是Hadoop-2.7.3。操作系统版本为Red Hat Enterprise Linux6.5。
实施例1
采用本发明方法在Hadoop平台上进行计算;分别以D1和D2数据集作为输入与参考基因组执行BWA比对任务,相同的计算任务分别运行在1,2,4,6,8个工作节点的Hadoop集群上,计算各任务的实验耗时、并行计算加速比与效率。
图7为计算耗时对比图,图8为并行计算加速比对比图,图9为并行计算效率对比图,图10为本方法加速比与线性加速比对比图。从实验结果看,本发明方法具有较好的可靠性与稳定性的同时将计算性能大幅提高。
从图7中可以看出,针对不同规模的数据集本发明方法的计算耗时随着集群中节点数量的增加而减少。这说明本发明方法在分布式计算环境下具有良好的扩展性,只要有条件增加集群节点的数量,便可以将计算耗时降低到较低水平。从图8、9和10可以看出并行计算加速比随着节点数量的增加而增加,但未达到线性加速,并行计算效率随节点数量增加而降低,但在可接受的范围;说明当集群中节点数量增加时,用于集群本身管理的开销也大,用于计算任务调度、资源管理开销也加大,导致资源的利用率下降,计算不能达到线性加速。说明本发明方法针对不同规模的数据集以及不同的比对算法均可大幅降低计算耗时,具有较好的加速比和并行计算效率。
实施例2
采用本发明方法在Hadoop平台上进行计算;以D1和D2数据集作为输入与参考基因组执行BWA比对任务,以多线程并发的模式运行在同配置的单个节点上,分别以2,4,6,8路线程执行计算任务与Hadoop集群上2,4,6,8个节点分布式计算进行性能比较。
图11为本发明方法(A)与BWA软件多线程模式(B)计算耗时对比图。从图中可以看出计算耗时均随节点数量增加或线程数量增加而减少;从图中可以看出其变化趋势,BWA多线程模式从4路线程开始以后计算耗时降幅放缓;而本发明方法在4节点以后计算耗时仍保持较好的降幅。可以看出BWA多线程模式受到单节点内存和处理能力的影响,不能通过一味增加线程数量的方法提高运算速度,不具有可扩展性。而本发明方法具有较好的扩展性,只要具有足够数量的节点,计算耗时可降低到较低水平。
实施例3
对相同的计算任务与相同的数据集,分别以现有的先进计算方法SEAL、pBWA、BigBWA与本发明方法进行计算,比较各种方法的并行计算加速比。
图12为本发明方法与现有计算方法计算加速比对比图,其中SEAL、pBWA、BigBWA为国际上现有的比较先进的基因序列并行比对方法,从图中可以看出本发明方法在相同节点数量的集群上并行计算加速比比其他方法具有一定优势。本发明方法不仅节省了数据预处理的时间还减轻了MapReduce计算模型的负担,省去了在计算模型中处理格式所用的时间,从而使得其计算加速比优于其他算法。
本发明方法中的多路输入输出方法能有效处理基因数据中的单端序列和双端序列,使得基因序列的操作不再局限于单个文件,避免了在基因序列并行比对的计算中多次使用第三方工具。基于多路输入输出的基因序列比对并行计算方法通过使用Hadoop API完成基因序列的比对任务的数据输入、数据分发、分布式计算和结果处理的完整计算过程,保证了应用的统一性。
本发明方法中的基因序列的格式化输入方法,对基因数据无需预处理,直接以FASTQ格式的单端或双端序列文件作为输入,减少了格式处理的开销;输出数据也无需借助工具完成,计算任务自动执行,计算过程无需干预;简化了基因序列对比的计算流程,提高了计算效率。
本发明方法中基于多路输入输出和格式化输入特征的计算方法使得基因序列比对任务在分布式集群上可扩展,相对单机执行计算任务,相同任务的计算耗时明显降低,相比多线程并行方法和其他基因数据并行计算方法都具有明显的优势。
Claims (8)
1.一种基于Hadoop的基因序列并行比对方法,其特征在于,包括以下步骤:
步骤1:在Hadoop集群中,将基因对比软件、参考序列和任务脚本部署到各工作节点,短读序列存储到HDFS中;
步骤2:采用多路输入的方法进行数据输入,同时读入多个数据文件,形成以位置偏移量为key,序列内容为value的键值对;
步骤3:在Map函数中对输入的键值对进行所属端的标记;
步骤4:通过分区算法按照键值对中的key值对数据进行分区,分区数据分发到Hadoop集群的工作节点上,一个数据分区对应一个工作节点;
步骤5:在Reduce函数中通过多路输出的方法将分区数据本地化然后传递给比对算法,在各工作节点上分别调用比对算法;实现各数据分区的分布式计算;
步骤6:收集分布到各节点上的结果文件,合并统一后存储于HDFS中,即完成基因序列的比对。
2.根据权利要求1所述的一种基于Hadoop的基因序列并行比对方法,其特征在于,所述步骤2输入过程中对数据文件中的短读序列进行格式化读取,方法如下:
定义用于基因格式化输入的类,在该类中包含用于创建基因记录的方法;
定义基因记录类,用于对基因记录格式的抽象和基因记录的格式化读取;
定义用于缓存控制的类,使Hadoop中缓存控制机制适应基因记录的格式化读取;缓存控制机制由基因记录格式化读取方法触发;
定义基因数据读取的辅助类,用于配合新的缓存控制机制协同工作。
3.根据权利要求2所述的一种基于Hadoop的基因序列并行比对方法,其特征在于,所述数据读取过程采用的基因记录的格式化读取方法如下:
S11:初始化变量;
S12:累积读取数据行,判断数据行是否为有效行;若是则提取新行特征并更新旧行内容;否则转入步骤S13;
S13:判断是否符合基因记录的首行特征,若是则更改缓存清空标记,否则转入步骤S14;
S14:判断是否符合基因记录的尾行特征,若是则单条基因记录读取完毕;否则转入步骤S12。
4.根据权利要求2所述的一种基于Hadoop的基因序列并行比对方法,其特征在于,所述数据读取过程采用的基因记录的格式化读取方法如下:
循环读取指定行数的数据行作为一条基因记录,在此过程中记录首行读取前更新缓存,记录首行读取后停止更新缓存,直至一条基因记录的所有数据行读取完毕。
5.根据权利要求1所述的一种基于Hadoop的基因序列并行比对方法,其特征在于,所述步骤2中的基因序列的多路输入通过Hadoop中的FileInputFormat类实现,通过其提供的addInputPath将输入文件的多个路径以数组的形式传入。
6.根据权利要求1所述的一种基于Hadoop的基因序列并行比对方法,其特征在于,所述步骤3中的Map函数如下:
S21:输入键值对(key,value);
S22:判断value是否为双端序列;若是则转入步骤S23,若否则转入步骤S24;
S23:判断value是否为左端序列,若是则为value添加左端标记,若否则添加右端标记;
S24:对value不做标记;
S25:输出标记完成的键值对。
7.根据权利要求1所述的一种基于Hadoop的基因序列并行比对方法,其特征在于,所述步骤4中数据分区按照以下过程进行:
通过输入文件的大小和数据分区的数量将位置偏移量等分为与节点数量相等的区间段,以键值对中的key值所属区间段确定其数据分区编号;对数据混洗、排序、分组,具有相同key值的键值对被分配到同一数据分区。
8.根据权利要求1所述的一种基于Hadoop的基因序列并行比对方法,其特征在于,所述步骤5中Reduce函数如下:
S31:遍历步骤4中的value集合;
S32:判断value是否具有双端序列标记,若否则将其写入本地文件;若是则转入步骤S33;
S33:value是否具有右端标记,若是则将其多路输出至右端文件,若否则将其多路输出至左端文件;
S34:判断是否value集合遍历完毕,若否则转入步骤S32,若是则结束遍历。
S35:所有集合遍历完毕后,在工作节点启动基因比对任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910293732.7A CN110070911A (zh) | 2019-04-12 | 2019-04-12 | 一种基于Hadoop的基因序列并行比对方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910293732.7A CN110070911A (zh) | 2019-04-12 | 2019-04-12 | 一种基于Hadoop的基因序列并行比对方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110070911A true CN110070911A (zh) | 2019-07-30 |
Family
ID=67367533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910293732.7A Pending CN110070911A (zh) | 2019-04-12 | 2019-04-12 | 一种基于Hadoop的基因序列并行比对方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110070911A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111028897A (zh) * | 2019-12-13 | 2020-04-17 | 内蒙古农业大学 | 一种基于Hadoop的基因组索引构建的分布式并行计算方法 |
CN112052260A (zh) * | 2020-09-29 | 2020-12-08 | 武汉理工大学 | 一种基于多进程数据流的海量虚实数据比对方法 |
CN112233727A (zh) * | 2020-10-29 | 2021-01-15 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN112764922A (zh) * | 2021-01-12 | 2021-05-07 | 中国人民解放军国防科技大学 | 基于负载均衡的并行序列比对方法、装置和计算机设备 |
CN113921083A (zh) * | 2021-10-27 | 2022-01-11 | 云舟生物科技(广州)有限公司 | 自定义序列的分析方法、计算机存储介质及电子设备 |
CN115862740A (zh) * | 2022-12-06 | 2023-03-28 | 中国人民解放军军事科学院军事医学研究院 | 一种面向大规模病毒基因组数据的快速分布式多序列比对方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740332A (zh) * | 2016-01-22 | 2016-07-06 | 北京京东尚科信息技术有限公司 | 数据排序方法和装置 |
US20160321310A1 (en) * | 2015-04-30 | 2016-11-03 | Hamoud ALSHAMMARI | Enhanced hadoop framework for big-data applications |
CN106778079A (zh) * | 2016-11-22 | 2017-05-31 | 重庆邮电大学 | 一种基于MapReduce的DNA序列k‑mer频次统计方法 |
CN107704728A (zh) * | 2017-09-26 | 2018-02-16 | 华南理工大学 | 一种基因序列比对的云计算加速方法 |
CN108763869A (zh) * | 2018-04-25 | 2018-11-06 | 江苏理工学院 | 一种测序数据高效处理方法 |
-
2019
- 2019-04-12 CN CN201910293732.7A patent/CN110070911A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160321310A1 (en) * | 2015-04-30 | 2016-11-03 | Hamoud ALSHAMMARI | Enhanced hadoop framework for big-data applications |
CN105740332A (zh) * | 2016-01-22 | 2016-07-06 | 北京京东尚科信息技术有限公司 | 数据排序方法和装置 |
CN106778079A (zh) * | 2016-11-22 | 2017-05-31 | 重庆邮电大学 | 一种基于MapReduce的DNA序列k‑mer频次统计方法 |
CN107704728A (zh) * | 2017-09-26 | 2018-02-16 | 华南理工大学 | 一种基因序列比对的云计算加速方法 |
CN108763869A (zh) * | 2018-04-25 | 2018-11-06 | 江苏理工学院 | 一种测序数据高效处理方法 |
Non-Patent Citations (1)
Title |
---|
黄芝准: "组学大数据环境下的基因信息并行处理与分析方法研究", 《中国优秀硕士学位论文全文数据库基础科学辑》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111028897A (zh) * | 2019-12-13 | 2020-04-17 | 内蒙古农业大学 | 一种基于Hadoop的基因组索引构建的分布式并行计算方法 |
CN111028897B (zh) * | 2019-12-13 | 2023-06-20 | 内蒙古农业大学 | 一种基于Hadoop的基因组索引构建的分布式并行计算方法 |
CN112052260A (zh) * | 2020-09-29 | 2020-12-08 | 武汉理工大学 | 一种基于多进程数据流的海量虚实数据比对方法 |
CN112052260B (zh) * | 2020-09-29 | 2024-01-26 | 武汉理工大学 | 一种基于多进程数据流的海量虚实数据比对方法 |
CN112233727A (zh) * | 2020-10-29 | 2021-01-15 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN112233727B (zh) * | 2020-10-29 | 2024-01-26 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN112764922A (zh) * | 2021-01-12 | 2021-05-07 | 中国人民解放军国防科技大学 | 基于负载均衡的并行序列比对方法、装置和计算机设备 |
CN112764922B (zh) * | 2021-01-12 | 2022-09-16 | 中国人民解放军国防科技大学 | 基于负载均衡的并行序列比对方法、装置和计算机设备 |
CN113921083A (zh) * | 2021-10-27 | 2022-01-11 | 云舟生物科技(广州)有限公司 | 自定义序列的分析方法、计算机存储介质及电子设备 |
CN115862740A (zh) * | 2022-12-06 | 2023-03-28 | 中国人民解放军军事科学院军事医学研究院 | 一种面向大规模病毒基因组数据的快速分布式多序列比对方法 |
CN115862740B (zh) * | 2022-12-06 | 2023-09-12 | 中国人民解放军军事科学院军事医学研究院 | 一种面向大规模病毒基因组数据的快速分布式多序列比对方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110070911A (zh) | 一种基于Hadoop的基因序列并行比对方法 | |
CN106663010B (zh) | 执行基于图的程序规范 | |
CN107077364B (zh) | 基于特定数据端口连接的识别使用图组件的自动聚类的基于图的程序规范的编译 | |
US10831547B2 (en) | Accelerator control apparatus for analyzing big data, accelerator control method, and program | |
US9753751B2 (en) | Dynamically loading graph-based computations | |
CN106687919B (zh) | 用于控制多个组件的执行的方法、系统和计算机可读介质 | |
US20090007116A1 (en) | Adjacent data parallel and streaming operator fusion | |
CN106605209B (zh) | 控制数据处理任务 | |
CN104317928A (zh) | 一种基于分布式数据库的业务etl方法及系统 | |
CN107015853A (zh) | 多阶段任务的实现方法和装置 | |
CN110134646B (zh) | 知识平台服务数据存储与集成方法及系统 | |
AU2014262225A1 (en) | Dynamically loading graph-based computations | |
CN116368494A (zh) | 一种神经网络编译优化方法和相关装置 | |
CN115185818A (zh) | 一种基于二进制集合的程序依赖簇检测方法 | |
US20100122241A1 (en) | Executable template | |
Gupta et al. | Map-based graph analysis on MapReduce | |
CN112800425B (zh) | 一种基于图计算的代码分析的方法和装置 | |
Feng et al. | Gene sequences parallel alignment model based on multiple inputs and outputs | |
CN112527460A (zh) | 一种控制区块链底层资产数据状态一致性的方法及系统 | |
CN110222018A (zh) | 数据汇总执行方法及装置 | |
CN114546623B (zh) | 一种基于大数据系统的任务调度方法和系统 | |
Feng et al. | Gene Sequence Input Formatting and MapReduce Computing. | |
CN114091111B (zh) | 一种区块链智能合约的存储方法及装置 | |
Xiao et al. | Cloudgt: A high performance genome analysis toolkit leveraging pipeline optimization on spark | |
CN117851505A (zh) | 一种区块分片方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190730 |