[发明专利]一种基于Hadoop的并行化基因数据压缩方法有效
申请号: | 201910597641.2 | 申请日: | 2019-07-04 |
公开(公告)号: | CN110299187B | 公开(公告)日: | 2022-03-22 |
发明(设计)人: | 季一木;方厚之;尧海昌;李奎;刘尚东;陈帅;刘强 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G16B50/50 | 分类号: | G16B50/50 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 彭雄 |
地址: | 210000 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于Hadoop的并行化基因数据压缩方法,事先从待压缩基因序列中选取并通过k‑mer构建Hash表编码参考序列,并将参考序列存储为索引文件。启动Hadoop集群,将配置、索引和待压缩文件传到HDFS上,配置MapReduce任务,在Map任务中读取待压缩序列的所有信息,使用Combiner与Partitioner对Map结果优化。在Reduce任务中进行待压缩序列与参考序列的匹配去重,最后将结果压缩输出。本发明使用分布式计算方式可以在读取单个基因实现并行化并提高效率,还可以实现多条基因序列的并行处理,以实现处理压缩大批量基因文件的加速。 | ||
搜索关键词: | 一种 基于 hadoop 并行 基因 数据压缩 方法 | ||
【主权项】:
1.一种基于Hadoop的并行化基因数据压缩方法,其特征在于,包括以下步骤:步骤1,读取并编码参考序列,上传待压缩序列到分布式集群环境中;参考序列中只需提取ACGT字符信息和小写字符位置信息,记录参考序列小写字符位置信息,将参考序列的小写字符转化成大写字符,将这些大写字符信息按照{A=0;C=1;G=2;T=3}的方式进行数字编码,ACGT字符信息使用数组进行存储,小写字符信息使用<在序列中与上一个二元组的偏移位置Position,长度Length>的二元组形式存储,并将其上传到分布式文件系统上;步骤2,使用k‑mer算法读取编码后参考序列计算Hash值并创建Hash表;以所有的k‑mer算法计算的Hash值来索引k‑mer序列;统计出的信息包含转化后的大写字符和小写字符向量,将信息存储在一个文件里,将其作为索引文件,通过分布式缓存DistributedCache分发到每一台处理节点上,对其直接进行本地调用会提高处理效率与减少网络传输的压力,为之后Reduce阶段的匹配做准备,在运行MapReduce的时候使用DistributedCache上传到从属节点作为缓存;步骤3,读取待压缩序列;对于许多个待压缩序列会被分配到许多DataNode计算节点之中,使用Map任务对其进行读取;对于待压缩序列需要提取它的全部信息,首先是它的序列名称信息,将其暂存于数组中,之后将其作为MapReduce输出的key中的一部分来输出到下一步骤;其次是序列中的ACGT字符信息与小写字符位置信息、N字符位置信息、特殊字符信息和换行符信息,其中大写字符信息使用数组存储,小写字符位置信息与N字符信息使用<偏移位置Position,长度Length>的二元组形式存储,特殊字符信息按照<特殊字符,偏移位置>的二元组形式存储,换行符信息使用数字来表示它在序列的位置;在处理完之后,Map任务需要通过Stdout标准输出流将这些信息按照一行<key,value>信息的形式发送到Reduce节点作下一步处理;按行读取待压缩序列并按行输出其不同字符信息的<key,value>对,其中,key规划为{序列名称信息.字符种类},两个名称之间用标识符隔开,value根据不同信息来规划不同的输出,其中二元组信息使用自定义标识符隔开,以便之后处理;步骤4,使用Map任务输出端的配置调优来优化输出;由于一个Slave节点往往需要处理大量的基因数据,故会产生大量的输出,而Map任务对此输出有固定的缓存区域,若满则只有溢出至硬盘;要避免多次的硬盘读写来获得最大效能,需要通过合理设置mapreduce.task.io.sort.*属性以给Map之后的shuffle阶段尽量提供充足的空间,预估Map的输出大小,使其输出<key,value>的排序全部在内存中进行;步骤5,通过实现combiner来减少每个Map任务的输出以减轻磁盘读写负担;将步骤3输出的<key,value>按照同一基因序列的同一字符类型的key进行初步归约,把每个基因序列读取出的许多行字符或向量的<key,value>整合为一行字符或一行二元组,大大缩小了网络传输的负担;步骤6,使用自定义的Partitioner类将有相同序列名称的key分配给同一个Reduce任务;经过归约之后,一个Reduce任务会获取到一个基因文件的所有序列,以实现后续步骤的使用完整待压缩序列与参考序列的匹配去重;步骤7,将参考序列与待压缩序列匹配去重;在Reduce任务中完成,指定Reduce任务个数必须要与待压缩基因的个数相同,在Reducer工作节点中将步骤2中读取编码后的参考序列文件通过分布式缓存导入,对步骤4中传输的基因序列压缩文件先解压,在对这些<key,value>对进行内存读取,之后将其与参考序列作初步匹配;基因序列中主要是大写与小写的ACGT信息,所以在匹配阶段只对这些信息进行去重操作:首先考虑大写的字符信息,把待压缩序列的大写字符信息按照与步骤2中相同的k‑mer算法计算哈希值,在参考序列所建立的哈希表中寻找相同值的序列进行比较,选取最长匹配序列,以<偏移位置,长度>的二元组形式保存;若有未匹配的序列,以<偏移位置,未匹配字符>的二元组形式保存其位置与内容;之后再考虑小写字符信息,由于参考序列与待压缩序列的小写字符都是以二元组形式存储在一个数组里的,将其按数组位进行比对,若有同的向量,则将其在数组的位置保存在数组之中,若有不相同的向量,直接按照初始形式存储;步骤8,对压缩后信息进行保存:将除ACGT信息与其余信息使用标准输出流输出,采取codec压缩输出,保证最后各个Reduce输出的内容可以得到最大压缩率;Hadoop将这些标准输出流中的内容保存为分布式文件系统上的文件,分布式地保存在各个节点之上。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910597641.2/,转载请声明来源钻瓜专利网。