CN111028897A - 一种基于Hadoop的基因组索引构建的分布式并行计算方法 - Google Patents
一种基于Hadoop的基因组索引构建的分布式并行计算方法 Download PDFInfo
- Publication number
- CN111028897A CN111028897A CN201911281411.1A CN201911281411A CN111028897A CN 111028897 A CN111028897 A CN 111028897A CN 201911281411 A CN201911281411 A CN 201911281411A CN 111028897 A CN111028897 A CN 111028897A
- Authority
- CN
- China
- Prior art keywords
- index
- value
- data
- genome
- mer
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16C—COMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
- G16C20/00—Chemoinformatics, i.e. ICT specially adapted for the handling of physicochemical or structural data of chemical particles, elements, compounds or mixtures
- G16C20/90—Programming languages; Computing architectures; Database systems; Data warehousing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Crystallography & Structural Chemistry (AREA)
- Chemical & Material Sciences (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于Hadoop的基因组索引构建的分布式并行计算方法,包括以下步骤:步骤1:数据输入,将区间起止索引值作为输入数据;步骤2:Map映射,每个Map任务接收一个区间段的起止索引值,Map映射对索引范围内的每个索引代表的基因组后缀计算k‑mer值;步骤3:数据分区,采用数据分区算法根据k‑mer值将健值对分为与Reduce任务数量相同的多个数据分区;步骤4:数据混洗,将k‑mer值相同的键值对合并;步骤5:数据规约,对每个k‑mer值相同的数据集合进行局部排序;步骤6:任务清理,按数据分区的顺序依次合并Reduce的输出文件;本发明基于Hadoop平台实现了基因组索引构建的分布式并行计算,在分布式集群上将基因组索引构建的耗时大幅缩短,速度高于同配置集群上其他方法。
Description
技术领域
本发明涉及基因组索引构建方法,具体涉及一种基于Hadoop的基因组索引构建的分布 式并行计算方法。
背景技术
基因组索引是生物信息分析中的重要数据结构,构建基因组索引可大幅提高基因比对、 映射、查找等计算的速度。但因为基因组数据规模大,构建索引对计算环境要求高,且耗时 较长。目前普遍采用的基因组索引构建方法是单机串行执行的方法,如BMA软件提供了 BWT-SW和IS算法,Bowtie软件提供了bowtie-build命令,Hisat提供了Hisat-build命令等, 用这些方法在普通的PC机上,对人类基因组构建索引通常需要若干小时的时间。
在并行的基因组索引构建方法中,高性能计算的方法是速度最快的,但这种方法需要依 赖计算性能强大的高性能集群;基于到线程的基因组索引构建方法可将计算任务在单台计算 机上并行执行。但受限于单节点的处理能力,其运算速度提高是有限的。基于GPU的基因组 索引构建方法利用GPU并行计算能力强的特点,能将计算速度提高到同级别CPU速度的2 倍左右,单这种方法需要特定硬件的支持,不具有普遍性。
发明内容
本发明针对现有技术存在的问题提供一种能够使用较少计算资源快速完成基因组索引构 建的基于Hadoop的基因组索引构建的分布式并行计算方法。
本发明采用的技术方案是:一种基于Hadoop的基因组索引构建的分布式并行计算方法, 包括以下步骤:
步骤1:数据输入,将基因组原序列索引分割为与Map任务数量相同地多个区间,将区 间起止索引值作为输入数据;
步骤2:Map映射,每个Map任务接收一个区间段的起止索引值,Map映射对索引范围内的每个索引代表的基因组后缀计算k-mer值,以k-mer值为key,索引值为value输出;
步骤3:数据分区,采用数据分区算法根据k-mer值将健值对分为与Reduce任务数量相 同的多个数据分区;
步骤4:数据混洗,将数据分区内的健值对按k-mer值排序,再将k-mer值相同的键值对 合并;
步骤5:数据规约,对每个k-mer值相同的数据集合进行局部排序,将排序结果依次写入 文件;
步骤6:任务清理,按数据分区的顺序依次合并Reduce的输出文件,得到基因组索引。
进一步的,所述步骤3中的数据分区算法过程如下:
S11:用基因组后缀总数除以分区数量计算每个分区平均后缀数量,累加和变量sum清 零;
S12:遍历每个k-mer值的后缀数量数组suffixCount,将其中的后缀数量按顺序依次累加 到sum中;
S13:若累加和sum超过平均后缀数量,则将k-mer计入分割点数组p[],并将sum清零, 否则转向步骤S14;
S14:若suffixCount数组遍历结束,则执行步骤S15,否则转向步骤S12;
S15:遍历分割点数组p[],若待分区健值对k-mer值小于分割点p[i],则i为所求分区编 号,否则转向步骤S16;
S16:若分割点数组尚未遍历完毕,则转向步骤S15,否则返回i值。
进一步的,所述步骤5中的局部排序算法过程如下:
S21:初始化递归调用变量,索引数组indexArray、数组低指针low、数组高指针heigh、 索引偏移量d;
S22:若low<heigh,则1t=low,gt=heigh,i=low+1,读取缓冲区中indexArray[low]+d 位置的碱基字符存入v中,作为分组基准字符,否则递归调用结束;
S23:若i≤gt则依次读取缓冲区中indexArray[i]+d位置的碱基字符存入t中,否则转向 步骤S25;
S24:若t小于基准字符v则交换1t和gt位置的元素,并将1t和i值加1;若t大于基准字符v则交换i与gt位置的元素,并将gt值减1,;若t等于基准字符v则i值加1;
S25:以(indexArray,low,1t-1,d)递归调用本流程;
S26:若v≥0,则以(indexArry,1ow,1t-1,d+1)递归调用本流程,否则转入步骤S27;
S27:以(indexArry,gt+1,high,d)递归调用本流程。
进一步的,所述基因组采用NIO与序列压缩的方法进行压缩,具体采用4-bit编码的方 法压缩基因序列。
进一步的,所述步骤5中读取压缩基因组的算法如下:
S31:将压缩基因组整体映射入缓冲区buffer,输入要读取的基因组位置索引index;
S32:检查index是否超越缓冲区边界,若是则返回-1,流程结束,否则转向步骤S33;
S33:将index除以2取整作为位置索引读取缓冲区中一个字节存入b中;
S34:若index为偶数索引则返回b字节中的高4位,若为奇数索引则返回b字节中的低4位,流程结束。
本发明的有益效果是:
(1)本发明基于Hadoop平台实现了基因组索引构建的分布式并行计算,在分布式集群 上将基因组索引构建的耗时大幅缩短,速度远高于同配置单机的计算速度,相比同类型的并 行计算方法的计算速度也有一定的优势;
(2)本发明不依赖于计算性能强大的高配置分布式集群,消耗较少的计算资源便可完成 基因组索引构建的并行计算任务。
附图说明
图1为本发明流程示意图。
图2为本发明中二级桶排序思想示例图。
图3为本发明中数据分区算法流程示意图。
图4为本发麻中压缩基因组缓冲区读取流程示意图。
图5为本发明中局部排序算法流程示意图。
图6为本发明实施例中实验耗时对比图。
图7为本发明实施例中并行计算加速对比图。
图8为本发明实施例中并行计算效率对比图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步说明。
如图1所示,一种基于Hadoop的基因组索引构建的分布式并行计算方法,包括以下步 骤:
步骤1:数据输入,将基因组原序列索引分割为与Map任务数量相同地多个区间,将区 间起止索引值作为输入数据;
以参考序列后缀的索引范围作为输入,后缀的数量与参考序列的长度相等,如果参考序 列的长度为length,那么后缀的索引范围是(0,length-1)。索引范围被分割为多个区间,区 间数量与Map任务数相同,可通过集群配置计算也可由用户指定。以每个区间占一行的格式 写入HDFS文件。
步骤2:Map映射,每个Map任务接收一个区间段的起止索引值,Map映射对索引范围内的每个索引代表的基因组后缀计算k-mer值,以k-mer值为key,索引值为value输出;
以每行一个数据片的格式读取HDFS文件形成一个Map任务,计算范围内的每个索引的 k-mer值,以(k-mer值,索引值)健值对的形式输出,k值由用户设定。
步骤3:数据分区,采用数据分区算法根据k-mer值将健值对分为与Reduce任务数量相 同的多个数据分区;分区数量与Reduce任务数相同,可通过集群配置计算也可由用户指定。
步骤4:数据混洗,将数据分区内的健值对按k-mer值排序,再将k-mer值相同的键值对 合并;合并形成一个集合,以(k-mer值,索引集合的)的形式输出。
步骤5:数据规约,对每个k-mer值相同的数据集合进行局部排序,将排序结果依次写入 文件;排序依据是索引对应的后缀,排序结果按索引集合的顺序写入HDFS文件。
步骤6:任务清理,按数据分区的顺序依次合并Reduce的输出文件,得到基因组索引。
步骤2至3属于Mapreduce的Map阶段,步骤4至6属于Reduce阶段。二阶桶排序思 想的一级分桶工作在步骤2至3中完成,二级分桶工作由步骤4完成。桶内排序工作在步骤 5中完成,二级桶结果合并在步骤5中完成,一级桶结果合并由步骤6完成。
桶排序算法的基本原理是将待排序的数据分发到有限数量的桶内,再对桶内数据进行独 立排序,最后按桶的顺序将数据依次取出得到有序序列。在桶排序算法的基础上设计一种二 级桶排序,对基因组后缀按关键字所属的范围进行一次分桶,然后在桶内将每个关键字作为 一个桶对数据二次分割。分割后的桶内只有同一个关键字的后缀,再在一级桶间合并,形成 最终的排序结果。二级桶排序思想在Hadoop平台上的实现,是将排序思想与Mapreduce的 工作原理相结合,在Mapreduce的处理流程中融入排序算法,能够最大程度发挥算法的优势。 一级分桶的过程由Map阶段的Partitioner完成,二级分桶由Reduce阶段shuffle过程完成, 桶内排序由Reduce函数完成,二级桶间的合并在Reduce函数内完成,一级桶间的合并在 cleanup函数内完成。
在生物信息分析中用到一种描述固定长度基因序列片段的概念k-mer,其中k是根据需求 指定的值。例如5-mer指对一段基因序列从头至尾依次提取长度为5的字串,形成的集合。 基于这个概念可以定义一种用于字符串分桶的可量化的关键字。对DNA序列进行数字编码, A=0,C=1,G=2,T=3,N=4,那么DNA序列就可以表示为一个五进制数,将其对应的十进 制值定义为k-mer值,就可以实现DNA序列的量化表示。例如序列CGATACTN的8-mer值 表示为:
8-mer=120301345
8-mer=8-1*57+2*56+0*55+3*54+0*53+1*52+3*51+4*50
8-mer=11129410
如果k值固定,k-mer值就是一个固定范围内的整数,例如k=8,那么0≤8-mer≤390624。 对所有的后缀计算8-mer值,就可以依据此值分桶,桶的数量可以是任意值,只需将[0,390624] 划分为指定数量的区间段。相似k-mer值的后缀具有相似的字典序。k-mer值属于同一个区间 段的后缀的排序位置也是相近的。根据k-mer值分桶可以保证桶之间是有序的。相等的k-mer 值只能保证后缀的排序是相近的。因为k-mer值仅取后缀开头的k个字符。具体的排序位置 还需根据k个字符之后的字符字典序决定,因此分桶之后需要通过字符串排序算法确定后缀 的最终排序位置。
在二级桶排序思想中结合k-mer值分桶的方法,排序过程如图2所示。假设以3-mer值 作为分桶关键字,依次计算序列的所有后缀的3-mer值,DNA序列3-mer值的取值范围是[0,124]。依次按照各后缀的3-mer值所属的区间段将后缀分入相应的一级桶中。一级分桶完 成后,将各桶内后缀按3-mer值排序,为每个3-mer值创建一个独立的分桶,称为二级桶。二级桶内再用字符串排序算法进行局部排序,图2的各二级分桶中只有1个后缀,无需启动局部排序算法。直接将二级桶的后缀顺次取出合并为一级桶排序结果,最后按一级桶的排序 将排序结果合并,得到最终的排序结果。
数据输入阶段,将基因组后缀总数划分为多个区间段,每个区间段作为一个数据分片传 递给一个Map任务,将大幅减轻数据输入的压力,因为每个Map任务只需读取一对标识起 止范围内的索引值。Mapreduce的API中有NLineInputFormat的文件输入格式,可设置Map 任务每次读取文件中的一行数据,将一对起止索引置于文件中的一行便能实现作业Map任务 数的控制。以人类基因组HG19为例,后缀总数为3199905909,假设集群能支持的最大并发 Map任务数为32,那么输入文件的内容是0-99997059,99997060-1999941188,…,3099908850-3199905908,其中每一对索引占一行。
Map阶段,每一个Map函数会读取一个数据分片,而一个数据分片内只存储了一对索引 范围。Map映射的任务是将指定范围内的所有索引映射为该索引位置上的后缀的k-mer值, 以k-mer值为key,索引值为value的健值对输出。
在数据分区阶段,Map函数的输出结果会被传递给Partitioner行数据分区。Partitioner接 收一个健值对和数据分区的总数,返回一个所属分区的编号。其中分区的总数与Reduce任务 的总数相等,可以根据集群中的资源配置计算得到。二级桶排序思想中的一级桶要求将k-mer 值相近的键值对分到同一个桶中,需要将k-mer的所有取值划分为与分区总数相等的区间段, 再用健值对中的key值计算出所属的k-mer值区间段,即分区编号。因为同一区间的k-mer 值是相近的。一定能保证映射到该区间的后缀的排序也是相近的,一个分区中的最大后缀一 定小于下一个分区的最小后缀。第一级分桶的实现要重新定义分区类,按k-mer值分桶的方 法进行数据分区。采用平均分区算法,将k-mer值的取值范围平均分割,计算健值对的归属, 执行流程如图3所示。例如对图2的例子按3-mer值分区,3-mer值取值范围是[0,124],等分 为3个区间是(0,[0,41])、(1,[42,82])、(2,[83,124])。
考虑负载均衡的数据分区方法是,首先计算出每个k-mer值下后缀的数量,存储于数组 suffixCount中,将其作为分区算法的输入。在分区计算时要遍历suffixCount数组,依次累加 后缀数量存储于sum中,直至达到一个分区应该具有的后缀数量,记录下k-mer值的分割点, 再继续下一个分区的计算,如图3所示。
数据混洗阶段的第一环节就是从相应的分区拉取数据进行Shuffle处理。Shuffle处理的主 要任务是对分区内的数据进行排序和合并,排序依据是健值对中的key值,其值是在Map映 射时写入的k-mer值,排序后k-mer值相等的键值对被放置到相邻的区域。此时分区内的数 据宏观上形成了有序排列,k-mer值相等的索引相邻,但所有索引并不完全有序,k-mer值相 等索引之间还是无序的。排序后,继续进行合并操作以减少键值对的数量,为后续的Reduce 函数减轻负担。合并操作会将具有相同的k-mer值的索引聚合到一个集合中,形成一个k-mer 对应一组索引的键值对。这样的健值对在后续的流程中将被有序的传递给Reduce函数,只要 在Reduce函数中完成同一k-mer值的所有索引的局部排序,就能得到完全有序的索引序列。 例如图2中,第一个一级桶中包含(35,0)、(15,2)、(8,4)三个键值对,经过Shuffle按 key值排序后变为(8,4)、(15,2)、(35,0)。
Reduce函数会有序的收到来自Shuffle的经过合并的键值对,一个键对应的值中包含了 k-mer值相等但无序的索引,Reduce函数的主要任务是依次对一个键对应的索引集合排序。 在一个Reduce任务中,对一个数据分区的各索引集合的顺序执行的,但不同的Reduce任务 是并行执行的。Reduce函数的算法输入是k-mer值和索引结合,输出是有序索引,算法内容 就是本地字符串排序算法。二级桶排序思想中的桶内局部排序由Reduce函数的算法完成, 桶内排序结果的合并也在Reduce阶段完成。由于Reduce函数收到的索引集合之间是有序的, 所以按照索引集合的顺序依次将局部排序结果写入输入文件就完成了二级桶排序结果的合并。 一级桶排序结果的合并则是在Reduce的清理阶段完成,Reduce中提供了cleanup方法。在所 有Reduce任务完成后会被调用,在此方法中按照数据分区的顺序即一级桶的顺序将二级桶合 并的结果再次合并便形成了最终的排序结果,也就是全序列的后缀数组,二级桶排序流程至 此结束。
在二级桶排序算法中排序的对象是后缀索引,排序的依据却是后缀本身,仅靠索引值是 无法完成排序的。因此在步骤2和步骤5中,都需要访问原序列来取得后缀的内容。步骤2 中的访问方式是顺序访问,步骤5中则是随机访问。一般需要创建索引的原序列都比较大, 如果将原序列整体载入每个工作节点的内存,能提供最高效的访问,但这种方式对内存的消 耗量巨大,需要集群有庞大的内存支持。如果采用共享内存的方式,在每个工作节点上仅载 入原序列的一部分,所有工作节点上的部分序列共同组成了原序列。这样可以有效的节省内 存空间,集群中节点数量越多,每个节点分担的内存消耗就越小。但在排序过程中势必会出 现跨节点访问数据的情况,并行排序时在节点间就会有大量的网络流量。因此这种方式适用 于高性能计算集群,而不适合分布式集群。适合于分布式集群的方式是原序列的本地访问, 那么就要解决如何利用有限的内存实现大规模数据的随机访问的问题,才能使算法可以运行 在低配置的分布式集群上。在二级桶排序算法中设计了NIO与序列压缩的方法解决了使用少 量内存实现原序列本地访问的问题。
二级桶排序算法中设计了4-bit编码的方法来压缩基因序列,即用4位编码表示一个碱基。 A、C、G、T、N的编码分别是0000、0001、0010、0011、0100,编码的顺序为碱基的字典序,编码的值是计算k-mer所需的五进制值。这种编码虽然冗余较大,但因为计算简单能达到较快的速度。压缩后的文件中,一个字节能存储2个碱基,所以压缩文件只有原文件的1/2. 能满足常用基因组内存映射的需要。在Mapreduce过程中,无论是k-mer值计算,还是局部 排序都不需要整体重构原始序列,压缩文件仍以Byte为单位进行读取操作,通过简单计算便 能得到指定碱基在压缩文件中的位置。在Map阶段,当读取压缩文件进行k-mer值计算时, 不再需要将碱基字符转化为五进制值,因为压缩编码的值就是五进制值。在Reduce阶段,当 读取压缩文件进行碱基比较时,可直接比较读取到的压缩编码值,无需转为碱基字符进行比 较,因为压缩编码的顺序就是字典序。4-bit编码的压缩算法较简单,依次按行读取参考序列 中的内容,行中每个字符按照编码表转化为4位编码,然后每8位编码按字节写入压缩文件。 解码的过程不需要对压缩文件整体重构,只需要将压缩文件映射入内存,按指定索引解码单 个字符。4-bit编码的方法的压缩比为1/2,所以压缩索引和原索引的关系也是1/2,压缩文件 中一个字符存储了原序列中的两个字符,也包含了两个原序列索引,如果某字符在原序列中 的索引为index,则index/2就是该字符在压缩文件中所在的字节。若index为奇数索引则目 标字符在该字节的低4位。若index为偶数索引则目标字符在该字节的高4位。按照这种关 系定义了单字符解码算法用于压缩文件中的字符读取,如图4所示。
三向快速排序是一种基于比较、交换运算的递归排序算法,为适应基因后缀的特点,采 用改进的三向快速排序算法实现桶内局部排序。算法流程如图5所示,算法输入为待排序后 缀索引数组,输出为有序的后缀索引数组,基本运算为索引值的交换,效率高于以字符串交 换为基本运算的排序算法。参考序列的随机访问,采用NIO结合序列压缩的方法将参考序列 整体映射入内存,从映射缓冲区中读取单个字符使用改进的charAt方法。方法接收参数类型 为内存映射缓冲区buffer和位置索引index,返回值是碱基对应的五进制值,其中index和d 的关系是index=p+d,p是后缀s在原序列中的位置索引。
实施例
采用本发明方法在Hadoop平台上进行索引构建,实验集群是由1个Namenode和8个Datanode组成的Hadoop集群。Hadoop版本是hadoop-2.7.3。集群各节点是配置相同VMware虚拟机,单节点配置是Intel(R)Xeon(R)CPUE7-4820 v2 2.00GHz 8核CPU,8G物理内 存,1T硬盘,操作系统是Red Hat Enterprise Linux 6.5。实验数据选择了5个常见基因组,如 下表所示。
分别以五组及一组数据作为输入,用基于Maprduce的基因组索引构建分布式计算模型构 建索引,首先确认实验结果的准确性。将所构建的索引与BWA软件构建的索引进行比较, 然后测试模型的性能,同一计算任务分别运行在实验集群的2、4、8个Datanode上,测试计 算耗时并计算加速比与效率。
为方便比较分布式计算模型在不同数据集间以及不同规模的集群之间的性能,以BWA 软件的index工具对五个基因组分别在实验集群的单个节点上的计算耗时为基准。与分布式 计算模型的计算耗时相比较,分别计算并行计算加速比和效率。对于同一任务的加速比随节 点数量的增加而增加,其中用8节点的集群执行HG19的索引构建任务加速比最高,达到5.51。 说明集群规模越大计算模型的加速效果越好,因为计算资源充裕有利于计算速度的提高。纵 向比较相同节点的集群执行不同规模的任务,加速比随着数据集的增大而提高,说明计算模 型对大数据集的运算效率高于小数据集,节点数相同的集群管理开销是类似的。相似的开销 对于小数据集来说计算成本更高。并行计算效率都不能达到100%,因为分布式计算中数据分 割、传输、结果合并都有开销,并非所有的资源都用于计算。随着节点数增加这部分开销越 来越大,因此效率降低,对于小数据集来说这部分开销所占的比重更大,因此效率降低。对 于小数据集来说这部分开销所占的比重更大,故效率较低,对大数据集的效率略高,用8节 点的集群执行HG19的索引构建任务效率达到最高值69%。
图6反映了各数据集在不同规模集群上执行时间的对比关系,对同一数据集节点数越多 速度越快,相同规模的集群上小数据集计算耗时短。图7反映了分布式计算加速比的变化趋 势,所有任务随计算节点的增加加速比增加,相同规模的集群上大数据集的加速比高于小数 据集的加速比。图8反映了分布式计算效率的变化趋势,所有任务的效率随计算节点数增加 而减小,相同规模的集群上大数据集的效率高于小数据集的效率。计算耗时随数据规模变化 趋势,反映了分布式计算耗时随数据集规模的变化趋势,在任意规模的集群上计算耗时随数 据集的增加而增加。
本发明在分布式集群上将基因组索引构建的耗时大幅缩短,速度远高于同配置单机的运 算速度,相比同类型的并行计算方法本发明方法的计算速度也有一定的优势。可运行在低配 置的廉价Hadoop分布式集群上,不依赖于计算性能强大的高配置分布式集群,消耗较少的 计算资源便可完成基因组索引构建的并行计算任务。
Claims (5)
1.一种基于Hadoop的基因组索引构建的分布式并行计算方法,其特征在于,包括以下步骤:
步骤1:数据输入,将基因组原序列索引分割为与Map任务数量相同地多个区间,将区间起止索引值作为输入数据;
步骤2:Map映射,每个Map任务接收一个区间段的起止索引值,Map映射对索引范围内的每个索引代表的基因组后缀计算k-mer值,以k-mer值为key,索引值为value输出;
步骤3:数据分区,采用数据分区算法根据k-mer值将健值对分为与Reduce任务数量相同的多个数据分区;
步骤4:数据混洗,将数据分区内的健值对按k-mer值排序,再将k-mer值相同的键值对合并;
步骤5:数据规约,对每个k-mer值相同的数据集合进行局部排序,将排序结果依次写入文件;
步骤6:任务清理,按数据分区的顺序依次合并Reduce的输出文件,得到基因组索引。
2.根据权利要求1所述的一种基于Hadoop的基因组索引构建的分布式并行计算方法,其特征在于,所述步骤3中的数据分区算法过程如下:
S11:用基因组后缀总数除以分区数量计算每个分区平均后缀数量,累加和变量sum清零;
S12:遍历每个k-mer值的后缀数量数组suffixCount,将其中的后缀数量按顺序依次累加到sum中;
S13:若累加和sum超过平均后缀数量,则将k-mer计入分割点数组p[],并将sum清零,否则转向步骤S14;
S14:若suffixCount数组遍历结束,则执行步骤S15,否则转向步骤S12;
S15:遍历分割点数组p[],若待分区健值对k-mer值小于分割点p[i],则i为所求分区编号,否则转向步骤S16;
S16:若分割点数组尚未遍历完毕,则转向步骤S15,否则返回i值。
3.根据权利要求1所述的一种基于Hadoop的基因组索引构建的分布式并行计算方法,其特征在于,所述步骤5中的局部排序算法过程如下:
S21:初始化递归调用变量,索引数组indexArray、数组低指针low、数组高指针heigh、索引偏移量d;
S22:若low<heigh,则1t=low,gt=heigh,i=low+1,读取缓冲区中indexArray[low]+d位置的碱基字符存入v中,作为分组基准字符,否则递归调用结束;
S23:若i≤gt则依次读取缓冲区中indexArray[i]+d位置的碱基字符存入t中,否则转向步骤S25;
S24:若t小于基准字符v则交换1t和gt位置的元素,并将1t和i值加1;若t大于基准字符v则交换i与gt位置的元素,并将gt值减1,;若t等于基准字符v则i值加1;
S25:以(indexArray,low,1t-1,d)递归调用本流程;
S26:若v≥0,则以(indexArry,1ow,1t-1,d+1)递归调用本流程,否则转入步骤S27;
S27:以(indexArry,gt+1,high,d)递归调用本流程。
4.根据权利要求1所述的一种基于Hadoop的基因组索引构建的分布式并行计算方法,其特征在于,所述基因组采用NIO与序列压缩的方法进行压缩,具体采用4-bit编码的方法压缩基因序列。
5.根据权利要求4所述的一种基于Hadoop的基因组索引构建的分布式并行计算方法,其特征在于,所述步骤5中读取压缩基因组的算法如下:
S31:将压缩基因组整体映射入缓冲区buffer,输入要读取的基因组位置索引index;
S32:检查index是否超越缓冲区边界,若是则返回-1,流程结束,否则转向步骤S33;
S33:将index除以2取整作为位置索引读取缓冲区中一个字节存入b中;
S34:若index为偶数索引则返回b字节中的高4位,若为奇数索引则返回b字节中的低4位,流程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911281411.1A CN111028897B (zh) | 2019-12-13 | 2019-12-13 | 一种基于Hadoop的基因组索引构建的分布式并行计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911281411.1A CN111028897B (zh) | 2019-12-13 | 2019-12-13 | 一种基于Hadoop的基因组索引构建的分布式并行计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111028897A true CN111028897A (zh) | 2020-04-17 |
CN111028897B CN111028897B (zh) | 2023-06-20 |
Family
ID=70208528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911281411.1A Active CN111028897B (zh) | 2019-12-13 | 2019-12-13 | 一种基于Hadoop的基因组索引构建的分布式并行计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111028897B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112037874A (zh) * | 2020-09-03 | 2020-12-04 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112233727A (zh) * | 2020-10-29 | 2021-01-15 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN115662523A (zh) * | 2022-10-21 | 2023-01-31 | 哈尔滨工业大学 | 面向群体基因组索引表示与构建的方法及设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010104608A2 (en) * | 2009-03-13 | 2010-09-16 | Life Technologies Corporation | Computer implemented method for indexing reference genome |
CN103699819A (zh) * | 2013-12-10 | 2014-04-02 | 深圳先进技术研究院 | 基于多步双向De Bruijn图的变长kmer查询的顶点扩展方法 |
CN103761453A (zh) * | 2013-12-09 | 2014-04-30 | 天津工业大学 | 一种基于簇图结构的并行基因拼接算法 |
CN106295250A (zh) * | 2016-07-28 | 2017-01-04 | 北京百迈客医学检验所有限公司 | 二代测序短序列快速比对分析方法及装置 |
CN106778079A (zh) * | 2016-11-22 | 2017-05-31 | 重庆邮电大学 | 一种基于MapReduce的DNA序列k‑mer频次统计方法 |
KR20170074418A (ko) * | 2015-12-22 | 2017-06-30 | 주식회사 코아아이티 | 서열의 유사도 측정을 위한 k-mer 변환 장치 및 방법 |
CN108287983A (zh) * | 2017-01-09 | 2018-07-17 | 朱瑞星 | 一种用于对基因组进行压缩和解压缩的方法和装置 |
CN110070911A (zh) * | 2019-04-12 | 2019-07-30 | 内蒙古农业大学 | 一种基于Hadoop的基因序列并行比对方法 |
CN110299187A (zh) * | 2019-07-04 | 2019-10-01 | 南京邮电大学 | 一种基于Hadoop的并行化基因数据压缩方法 |
WO2019228833A1 (en) * | 2018-05-31 | 2019-12-05 | Koninklijke Philips N.V. | System and method for allele interpretation using a graph-based reference genome |
-
2019
- 2019-12-13 CN CN201911281411.1A patent/CN111028897B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010104608A2 (en) * | 2009-03-13 | 2010-09-16 | Life Technologies Corporation | Computer implemented method for indexing reference genome |
CN103761453A (zh) * | 2013-12-09 | 2014-04-30 | 天津工业大学 | 一种基于簇图结构的并行基因拼接算法 |
CN103699819A (zh) * | 2013-12-10 | 2014-04-02 | 深圳先进技术研究院 | 基于多步双向De Bruijn图的变长kmer查询的顶点扩展方法 |
KR20170074418A (ko) * | 2015-12-22 | 2017-06-30 | 주식회사 코아아이티 | 서열의 유사도 측정을 위한 k-mer 변환 장치 및 방법 |
CN106295250A (zh) * | 2016-07-28 | 2017-01-04 | 北京百迈客医学检验所有限公司 | 二代测序短序列快速比对分析方法及装置 |
CN106778079A (zh) * | 2016-11-22 | 2017-05-31 | 重庆邮电大学 | 一种基于MapReduce的DNA序列k‑mer频次统计方法 |
CN108287983A (zh) * | 2017-01-09 | 2018-07-17 | 朱瑞星 | 一种用于对基因组进行压缩和解压缩的方法和装置 |
WO2019228833A1 (en) * | 2018-05-31 | 2019-12-05 | Koninklijke Philips N.V. | System and method for allele interpretation using a graph-based reference genome |
CN110070911A (zh) * | 2019-04-12 | 2019-07-30 | 内蒙古农业大学 | 一种基于Hadoop的基因序列并行比对方法 |
CN110299187A (zh) * | 2019-07-04 | 2019-10-01 | 南京邮电大学 | 一种基于Hadoop的并行化基因数据压缩方法 |
Non-Patent Citations (6)
Title |
---|
CLAUSEN, PHILIP T. L. C. ET AL.: "Rapid and precise alignment of raw reads against redundant databases with KMA", 《BMC BIOINFORMATICS》 * |
UMBERTO FERRARO PETRILLO ET AL.: "Informational and linguistic analysis of large genomic sequence collections via efficient Hadoop cluster algorithms", 《BIOINFORMATICS》 * |
X.L. FENG ET AL.: "Gene Sequences Parallel Alignment Model Based on Multiple Inputs and Outputs", 《INTERNATIONAL JOURNAL OF COMPUTERS COMMUNICATIONS & CONTROL》 * |
冯晓龙 等: "基于Spark的基因短序列比对模型", 《计算机仿真》 * |
包永红: "基于Hadoop的基因组分析平台构建", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
王春宇: "生物高通量测序片段拼接与分子标记识别算法研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112037874A (zh) * | 2020-09-03 | 2020-12-04 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112037874B (zh) * | 2020-09-03 | 2022-09-13 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112233727A (zh) * | 2020-10-29 | 2021-01-15 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN112233727B (zh) * | 2020-10-29 | 2024-01-26 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN115662523A (zh) * | 2022-10-21 | 2023-01-31 | 哈尔滨工业大学 | 面向群体基因组索引表示与构建的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111028897B (zh) | 2023-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lemire et al. | Consistently faster and smaller compressed bitmaps with roaring | |
CN111028897B (zh) | 一种基于Hadoop的基因组索引构建的分布式并行计算方法 | |
Bender et al. | Don't thrash: How to cache your hash on flash | |
Davidson et al. | Efficient parallel merge sort for fixed and variable length keys | |
KR101196566B1 (ko) | 멀티 프로세서 시스템 및 그 정보처리방법 | |
CN110299187B (zh) | 一种基于Hadoop的并行化基因数据压缩方法 | |
EP3072076B1 (en) | A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure | |
CN109189995B (zh) | 基于mpi的云存储中数据消冗方法 | |
JPWO2003091872A1 (ja) | 並列マージソート処理装置及び方法並びにプログラム | |
CN111292805B (zh) | 一种三代测序数据重叠检测方法及系统 | |
CN110852046B (zh) | 一种文本后缀索引的分块归纳排序方法及系统 | |
Sirén | Burrows-Wheeler transform for terabases | |
CN110837584A (zh) | 一种分块并行构造后缀数组的方法及系统 | |
WO2019076177A1 (zh) | 基因测序数据压缩预处理、压缩、解压方法、系统及计算机可读介质 | |
RU2633178C2 (ru) | Способ и система базы данных для индексирования ссылок на документы базы данных | |
Liu et al. | GPU-accelerated BWT construction for large collection of short reads | |
Goswami et al. | Gpu-accelerated large-scale genome assembly | |
Marchet et al. | Scalable sequence database search using partitioned aggregated Bloom comb trees | |
CN110704424A (zh) | 一种应用于数据库的排序方法、装置及相关设备 | |
CN113268459A (zh) | 基于fastq基因大数据的批量分布式压缩方法 | |
JP6239273B2 (ja) | 圧縮水平順序付けエッジシーケンス符号化のためのシステム及び方法 | |
Danciu et al. | Topology-based sparsification of graph annotations | |
CN107077481B (zh) | 信息处理装置、信息处理方法和计算机可读存储介质 | |
Ediger et al. | Computational graph analytics for massive streaming data | |
CN117116367A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |