1.一种基于MapReduce的DNA序列k-mer频次统计方法,其特征在于,包括以下步骤:
1)输入待处理的DNA序列文件和k-mer计算参数,并进行包括去除错误序列和非DNA编码序列在内的预处理步骤:
2)将预处理后的序列文件进行哈希处理后作为Map函数输入;
3)将Map阶段的结果作为Combine函数输入,Combine函数对中间结果进行合并,本地合并即Map处理的节点上得到中间结果,继续在这个节点上进行Combine阶段处理,Combine表示进行中间结果合并,并将合并结果作为Reduce函数的输入;
4)运行MapReduce的集群环境先进行Shuffle混洗和Sort排序阶段的处理,即将主键key相同的键值对分到同一个Reduce节点,将合并中间结果传递到Reduce节点后,运行Reduce函数对所有的键值对进行归约处理,得到最终结果并输出,即为所处理DNA序列文件中的所有k-mer的频数。
2.根据权利要求1所述的基于MapReduce的DNA序列k-mer频次统计方法,其特征在于,所述步骤1)的预处理步骤还包括:输入要处理的DNA序列文件和k-mer计算参数,运行MapReduce并行计算模型的集群环境自动将输入的DNA序列文件切割成一定大小的数据块,均分到各个节点上。
3.根据权利要求2所述的基于MapReduce的DNA序列k-mer频次统计方法,其特征在于,所述步骤1)输入待处理的DNA序列文件和k-mer计算参数,并进行包括去除错误序列和非DNA编码序列在内的预处理步骤具体包括:接收用户输入的需要处理的DNA序列文件和k-mer中k的变化范围参数,起始值设为k1,终值设为k2,有k1≤k≤k2;
节点对分配到本节点上的若干序列文件进行读取,建立序列文件对应的本地文件,按行依次读取序列文件中的序列数据,若读取的行序列数据第1列为字符集合{A,G,C,T}中的某一字符且除第一列外其它列中含有字符集合{A,G,C,T}以外的任意字符,则将此行视为错误序列数据;若读取的行序列数据中第1列字符为字符集合{A,G,C,T}以外的任意字符或数字,则视为非DNA编码序列;错误序列和非DNA编码序列均丢弃,不做任何处理,若所读取的行序列数据所有的列均为字符集合{A,G,C,T}中任意字符,则视为正确序列,将该行数据写入到序列文件对应的副本中,读写完毕后,将原序列文件删除。
4.根据权利要求1或2或3所述的基于MapReduce的DNA序列k-mer频次统计方法,其特征在于,所述步骤2)将预处理后的序列文件进行哈希处理后进行Map处理的步骤包括:A1、将步骤1)处理后的序列文件中每一行数据进行哈希处理,表示为键值对
A2、初始化空链表R,开始计算当k值在k2-k1之间时递减时的k-mer频数;
A3、得到k在所有取值范围下的对应的k-mer及其对应频数,结果以
5.根据权利要求4所述的基于MapReduce的DNA序列k-mer频次统计方法,其特征在于,所述步骤A2初始化空链表R,开始计算当k值在k2-k1之间时递减时的k-mer频数具体包括步骤:
2.1当k=k2时,初始化哈希表Hk,对所有键值对
2.2当k!=k2时,初始化哈希表Hk,取R中头结点获取已知的Hk+1,对Hk+1中每条记录进行遍历;对于Hk+1中某条
6.根据权利要求4所述的基于MapReduce的DNA序列k-mer频次统计方法,其特征在于,所述步骤3)将匹配后的结果进行合并具体如下:
1).将步骤2)得到的
2).运行Combine函数对
2.1).输入k-mer Skey,Skey出现次数构成的集合Siter,初始化Stotal=0。对于集合Siter中的每个value值,有Stotal=Stotal+Svalue;
2.2).将Skey及其对应频数Stotal以
7.根据权利要求6所述的基于MapReduce的DNA序列k-mer频次统计方法,其特征在于,所述步骤4)步骤具体如下:
1).将步骤3)得到的
2).key相同的键值对以
2.1).输入k-mer Skey,Skey出现次数构成的集合Siter,初始化Stotal=0。对于集合Siter中的每个value值Svalue,有Stotal=Stotal+Svalue;
2.2).将Skey及其对应频数Stotal以
3).输出各Reduce节点得到的结果集合Ooc,即为最终结果。