一种三代测序数据重叠检测方法及系统与流程

文档序号:21094199发布日期:2020-06-16 20:09阅读:424来源:国知局
一种三代测序数据重叠检测方法及系统与流程

本发明属于测序数据处理领域,尤其涉及一种三代测序数据重叠检测方法及系统。



背景技术:

本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。

三代测序技术是新一代的dna测序技术,dna序列的平均长度从200增长到了10000,长的dna序列可以包含更加丰富的基因信息,并且加速后续的基因拼接过程。对于三代测序数据,dna重叠检测是重要的序列分析过程,重叠是指两条序列之间字符匹配的部分,其中dna可看作是由a/c/g/t字符组成。

已有的dna序列重叠检测算法核心就是在两个dna序列中找到相同的称为种子的k长子序列,已有的重叠算法minimap以此为基础找到两条dna序列中的重叠部分。minimap算法建立索引前在长度为n的dna序列中找到所有长度为k的子序列,每k个相邻的字符即为一个子序列称作k-mer。每一个k-mer通过一个哈希函数计算之后可以将此短序列映射为一个整数,在相邻的几个k-mer中选取整数值最小的子序列称为minimizer,将这些minimizer建立索引。常用的一种哈希函数φ是将k长子序列转换成2k位的整数,对于单个字符来说,函数输入a得到0,输入c得到1,输入g得到2,输入t得到3。对于k长序列s=a1a2a3…ak来说,φ(s)=φ(a1)×4k-1+φ(a2)×4k-2+…+φ(ak)。接下来,minimap使用了可逆整数哈希函数将上述哈希函数得到的结果再次进行运算,使用新的结果作为选择minimizer的依据。

随着第三代测序技术的发展,一方面,dna序列的规模呈现爆炸式增长的趋势;另一方面,dna的长度增加到10k级别,错误率上升到10%-15%。这给dna序列分析过程带来了新的挑战。基因组装是dna序列分析的重要过程,通过将序列比对及合并等步骤,将dna测序得到的短片段还原成较长的连续序列,重建被测dna分子的原貌。在基因组装的过程当中,dna重叠检测是计算量最大的一个步骤。针对dna重叠检测这一生物序列分析过程,已有的研究大多采用了“种子-链-比对”的策略,不同算法之间的差异主要在于如何定义种子以及如何找出相似的种子。

在众多的dna重叠检测算法当中,minimap同时兼顾了算法的计算效率以及重叠检测的精确度。因此,我们以minimap算法为起点,希望通过并行与优化技术来提升minimap算法建立索引部分的性能。通过对minimap算法进行深入的调研与分析,发明人发现,minimap算法的已有实现在性能上主要存在以下几点不足。首先,minimap支持多线程,但在测试了不同的线程数后,发现minimap并没有良好的线程扩展性。其中,线程扩展性指的是:当让程序以不同的线程数运行时,若随着线程数的线性增加程序运行时间也线性减少,则称此程序有良好的线程扩展性。这里是说通过测试发现minimap在线性增加线程数后程序时间并没有线性减少。此外,minimap算法建立索引时用到了排序算法,但是这部分并没有被并行化。最后,minimap算法中的哈希函数占了程序大部分的计算时间,哈希函数包含的运算是支持向量化操作的,但是目前minimap并没有利用向量处理器资源进行底层的加速。其中,向量化是指利用底层硬件即向量处理器用一个向量并行地将多个操作数进行相同的操作,这里是说minimap并没有利用向量处理器进行加速。



技术实现要素:

为了解决上述问题,本发明提供一种三代测序数据重叠检测方法及系统,其能够提高测序数据重叠检测效率。

为了实现上述目的,本发明采用如下技术方案:

本发明的第一方面提供一种三代测序数据重叠检测方法,包括:

接收第三代测序数据的所有dna序列,并根据长度对dna序列进行排序;

按照每个线程所处理的总dna数据大小相等的策略,将所有dna序列分配给预设数量的并行线程;

对于每个线程,求取所有dna序列各个窗口的哈希值最小的子序列并作为minimizer;

将所有minimizer按照哈希值建立索引,构建出基于双数组结构的参考基因哈希索引表;参考基因哈希索引表分为索引数组和结构数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置;结构数组存储按照哈希值升序排列的minimizer位置信息;

根据基于双数组结构的参考基因哈希索引表进行dna序列重叠检测。

本发明的第二方面提供一种三代测序数据重叠检测系统,包括:

测序数据预处理模块,其用于接收第三代测序数据的所有dna序列,并根据长度对dna序列进行排序;

并行线程分配模块,其用于按照每个线程所处理的总dna数据大小相等的策略,将所有dna序列分配给预设数量的并行线程;

minimizer求取模块,其用于对于每个线程,求取所有dna序列各个窗口的哈希值最小的子序列并作为minimizer;

哈希索引表构建模块,其用于将所有minimizer按照哈希值建立索引,构建出基于双数组结构的参考基因哈希索引表;参考基因哈希索引表分为索引数组和结构数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置;结构数组存储按照哈希值升序排列的minimizer位置信息;

重叠检测模块,其用于根据基于双数组结构的参考基因哈希索引表进行dna序列重叠检测。

本发明的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述所述的三代测序数据重叠检测方法中的步骤。

本发明的第四方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述所述的三代测序数据重叠检测方法中的步骤。

本发明的有益效果是:

(1)本发明按照每个线程所处理的总dna数据大小相等的策略,将所有dna序列分配给预设数量的并行线程,使得多线程的负载均衡,同时保证了多线程并行实现的加速比;

(2)本发明构建出基于双数组结构的参考基因哈希索引表;其中,参考基因哈希索引表分为两个数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置,结构数组存放minimizer的位置信息;本发明利用基于双数组结构的参考基因哈希索引表提高了并行计算速度及线程扩展性。

附图说明

构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。

图1是本发明实施例的一种三代测序数据重叠检测方法流程图。

图2是本发明实施例的dna序列分配线程示意图。

图3是本发明实施例的内存存放方式的转换示意图。

图4是本发明实施例的基于双数组结构的参考基因哈希索引表。

图5是本发明实施例的一种三代测序数据重叠检测系统结构示意图。

具体实施方式

下面结合附图与实施例对本发明作进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

实施例1

图1给出了本实施例的一种三代测序数据重叠检测方法流程图。

下面结合图1给出本实施例的三代测序数据重叠检测方法具体实施过程。

如图1所示,本实施例提供了一种三代测序数据重叠检测方法,包括:

步骤s101:接收第三代测序数据的所有dna序列,并根据长度对dna序列进行排序。

排序的好处可以使得相邻的两条序列对应的计算任务的差异减小。由于并行优化包括有向量化的优化,因此如果相邻序列的长度差异太大,会导致向量寄存器中大部分的计算通道处于闲置的状态。因此,排序对于保持并行实现的负载均衡至关重要。

步骤s102:按照每个线程所处理的总dna数据大小相等的策略,将所有dna序列分配给预设数量的并行线程。

如图2所示,dna测序数据分成不同的数据块,然后分配给不同的线程进行处理。

对于排序之后的序列,对dna序列进行划分,一般的划分策略有按照dna序列条数进行划分,也有按照dna数据块相等的策略。由于第三代测序产生的数据在长度上差异较大,因此如果对排序之后的dna序列按序列条数划分,前面的数据块包含的计算量明显小于后面的数据块。因此我们选择了按照dna数据库大小相等的策略进行了划分。例如:在将dna序列分配给不同的线程进行处理时,按照dna序列字符总和相等的策略进行划分,如有2个线程4条序列长度分别为5000,3000,1000,1000,将长为5000的序列分配给一个线程剩下的序列分配给一个线程。

对于求取所有dna序列各个窗口的哈希值最小的子序列minimizer计算这一主要耗时过程,计算的复杂度与字符数成正比。因此这种划分保证了线程之间的负载均衡。总的来说,多线程并行方案保证了线程之间的扩展性,而且随着核数的增多,并行方案依然可以使用。此外,多线程的负载均衡保证了多线程并行实现的加速比。

步骤s103:对于每个线程,求取所有dna序列各个窗口的哈希值最小的子序列并作为minimizer。

作为一种具体实施方式,求取所有dna序列各个窗口的哈希值最小的子序列并作为minimizer的过程为:

步骤s1031:在每条dna序列中找出所有等长度大小的子序列;

步骤s1032:根据哈希函数计算每条dna序列的子序列的哈希值;

步骤s1033:查找预设窗口大小内哈希值最小的子序列作为minimizer。

其中,将连续计算同一窗口中若干个子序列的哈希值,然后进行比较,找出最小哈希值的子序列的计算过程作为一个任务,每一个任务分配给向量寄存器中的一个通道;

对于dna序列中连续向量通道数个窗口将各个窗口对应的子序列相邻存储,进而利用向量化的访存指令来实现并行化访问内存。

具体地,对于minimizer的计算,其中有两个重要的参数,一个是窗口的大小w,另一个是种子(即dna序列中k长的子序列,也叫做k-mer)的长度k。其中窗口w的作用就是每w个种子中找出哈希值最小的那个种子作为minimizer。因此,总结minimizer的计算过程,就是连续计算同一窗口中w个种子的哈希值,然后进行比较,找出哈希值最小的子序列,将这个计算过程称为一个任务,每一个任务分配给向量寄存器中的一个通道。其中,相邻w个k长子序列称为一个窗口;窗口是dna序列的一组子序列;w和k均为大于或等于2的正整数。

对于一个长度为几万的dna序列,这样的任务很多,因此给了向量化并行充分的并行度,并且保证了向量寄存器100%的利用率。然而在这种模式下,一个向量从内存中加载的值在物理位置上并不是在连续的内存空间中。因此,需要用gather指令来读取不连续的内存空间,由于内存访存的局部性,一定程度上降低了向量化内存访问的效率。对于序列比对问题的向量化,内存优化一直是向量化优化的重点。受到其他算法的内存组织方案的启发,本实施例提出了新的内存转换方案,对于dna序列中连续向量通道数个窗口,将它们对应的字符进行转换,顺序由从前的第一个窗口的第一个子序列、第一个窗口的第二个子序列、……、第一个窗口的第w个子序列、第二个窗口的第一个子序列……转换为第一个窗口的第一个子序列、第二个窗口的第一个子序列……第通道数个窗口的第一个子序列、第一个窗口的第二个子序列……基于新的内存结构,此时向量加载的数据在物理位置上是相邻的。如图3所示,a1、a2等代表k长子序列,图3表示了内存存放方式的转换。

通过一条向量化的访存指令,就可以替换之前的离散访存指令,提高了并行化内存访问的效率。

步骤s104:将所有minimizer按照哈希值建立索引,构建出基于双数组结构的参考基因哈希索引表;参考基因哈希索引表分为索引数组和结构数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置;结构数组存储按照哈希值升序排列的minimizer位置信息。

在具体实施中,对于minimap建立索引中的核心计算过程可逆整数哈希函数的计算,对该算法进行了向量化的优化。对于可逆整数哈希函数,本实施例用25条向量化指令就可以实现该算法的并行化。这些向量化的操作主要包括有移位操作,位运算操作,加法操作,这些向量化指令都非常的高效,因此整个函数的计算效率高。此外,以向量寄存器通道个数作为变量,设计可扩展的向量化并行方案,该并行方案主要包括两个部分组成。第一部分是内存部分的设计,按照上述所述的内存组织方案,以向量寄存器通道个数作为变量,每次取出通道数个窗口的dna序列进行数据重构。第二部分就是平台可扩展的向量化实现,这对sse,avx2以及avx512这些计算平台,只需要针对算法中的元操作,给出不同平台上不同向量化指令级的具体实现,就可以实现该算法在不同平台上的扩展。

索引创建的过程需要对哈希表进行插入操作,将minimizer的位置及哈希值插入表中,而插入的过程存在“写冲突”,并行化的实现需要用锁来进行同步。由于插入操作非常的频繁,设计基于锁的并行算法并没有取得很好的效率以及线程扩展性。在这里使用基于双数组结构的参考基因哈希索引。哈希表分为两个数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置,结构数组存放minimizer的位置信息。详细来说,索引数组在对结构数组按照哈希值排序之后,存放哈希值为当前数组位置值的minimizer在结构数组中的起始位置。而结构数组是经过排序后,按照哈希值升序存储的minimizer位置信息。基于这个新的数据结构,本实施例提出了一个并行索引算法,来构建minimizer的哈希索引结构。将包含minimizer哈希值以及位置信息的结构体使用inteltbb库的函数按照哈希值进行并行排序,使此处呈现出接近线性的加速提升。

如图4所示,右边数组每一个位置存放每一个minimizer的位置信息,(t,i,r)分别代表序列号、一条序列中的位置及序列正链或反链,这些minimizer是按照哈希值排序的,即哈希值相同的minimizer存放在一起。例如:左边数组下标为h的位置存放的数即413,代表右边数组存放哈希值为h的minimizer是从下标为413开始的,同理存放哈希值为h+1是从下标452开始的。

步骤s105:根据基于双数组结构的参考基因哈希索引表进行dna序列重叠检测。

下面对于不同参数进行测试:测试到当k长子序列的k选取10至12时,本实施例的该检测方法可以取得最好的性能。当窗口大小w越大时,索引中存储的minimizer越少,对应的程序中用来将计算出来的minimizer存储到索引结构的频率就越低。相对于计算,内存读取的开销很大,因此随着窗口的增大运算时间变小。总的来说,针对实际应用的需求,对于不同的窗口大小,新算法都取得了不错的性能。

在同样参数下,对不同的线程数进行了测试,随着线程数的增多,运行时间的下降趋势基本呈现线性,对于原程序取得了明显的性能提升。

本实施例按照每个线程所处理的总dna数据大小相等的策略,将所有dna序列分配给预设数量的并行线程,使得多线程的负载均衡,同时保证了多线程并行实现的加速比;

本实施例构建出基于双数组结构的参考基因哈希索引表;其中,参考基因哈希索引表分为两个数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置,结构数组存放minimizer的位置信息;利用基于双数组结构的参考基因哈希索引表提高了并行计算速度及线程扩展性。

实施例2

图5给出了本实施例的一种三代测序数据重叠检测系统结构示意图。

下面结合图5给出本实施例的三代测序数据重叠检测系统结构原理:

如图5所示,本实施例的三代测序数据重叠检测系统,包括:

(1)测序数据预处理模块,其用于接收第三代测序数据的所有dna序列,并根据长度对dna序列进行排序;

排序的好处可以使得相邻的两条序列对应的计算任务的差异减小。由于并行优化包括有向量化的优化,因此如果相邻序列的长度差异太大,会导致向量寄存器中大部分的计算通道处于闲置的状态。因此,排序对于保持并行实现的负载均衡至关重要。

(2)并行线程分配模块,其用于按照每个线程所处理的总dna数据大小相等的策略,将所有dna序列分配给预设数量的并行线程;

例如:在将dna序列分配给不同的线程进行处理时,按照dna序列字符总和相等的策略进行划分,如有2个线程4条序列长度分别为5000,3000,1000,1000,将长为5000的序列分配给一个线程剩下的序列分配给一个线程。

对于求取所有dna序列各个窗口的哈希值最小的子序列minimizer计算这一主要耗时过程,计算的复杂度与字符数成正比。因此这种划分保证了线程之间的负载均衡。总的来说,多线程并行方案保证了线程之间的扩展性,而且随着核数的增多,并行方案依然可以使用。此外,多线程的负载均衡保证了多线程并行实现的加速比。

(3)minimizer求取模块,其用于对于每个线程,求取所有dna序列各个窗口的哈希值最小的子序列并作为minimizer;

在具体实施中,所述minimizer求取模块,包括:

子序列查找模块,其用于在每条dna序列中找出所有等长度大小的子序列;

哈希值计算模块,其用于根据哈希函数计算每条dna序列的子序列的哈希值;

minimizer查找模块,其用于查找预设窗口大小内哈希值最小的子序列作为minimizer。

其中,在所述minimizer求取模块中,将连续计算同一窗口中若干个子序列的哈希值,然后进行比较,找出最小哈希值的子序列的计算过程作为一个任务,每一个任务分配给向量寄存器中的一个通道;

对于dna序列中连续向量通道数个窗口将各个窗口对应的子序列相邻存储,进而利用向量化的访存指令来实现并行化访问内存。

具体地,对于minimizer的计算,其中有两个重要的参数,一个是窗口的大小w,另一个是种子(即dna序列中k长的子序列,也叫做k-mer)的长度k。其中窗口w的作用就是每w个种子中找出哈希值最小的那个种子作为minimizer。因此,总结minimizer的计算过程,就是连续计算同一窗口中w个种子的哈希值,然后进行比较,找出哈希值最小的子序列,将这个计算过程称为一个任务,每一个任务分配给向量寄存器中的一个通道。其中,相邻w个k长子序列称为一个窗口;窗口是dna序列的一组子序列;w和k均为大于或等于2的正整数。

对于一个长度为几万的dna序列,这样的任务很多,因此给了向量化并行充分的并行度,并且保证了向量寄存器100%的利用率。然而在这种模式下,一个向量从内存中加载的值在物理位置上并不是在连续的内存空间中。因此,需要用gather指令来读取不连续的内存空间,由于内存访存的局部性,一定程度上降低了向量化内存访问的效率。对于序列比对问题的向量化,内存优化一直是向量化优化的重点。受到其他算法的内存组织方案的启发,本实施例提出了新的内存转换方案,对于dna序列中连续向量通道数个窗口,将它们对应的字符进行转换,顺序由从前的第一个窗口的第一个子序列、第一个窗口的第二个子序列、……、第一个窗口的第w个子序列、第二个窗口的第一个子序列……转换为第一个窗口的第一个子序列、第二个窗口的第一个子序列……第通道数个窗口的第一个子序列、第一个窗口的第二个子序列……基于新的内存结构,此时向量加载的数据在物理位置上是相邻的。如图3所示,a1、a2等代表k长子序列,图3表示了内存存放方式的转换。

通过一条向量化的访存指令,就可以替换之前的离散访存指令,提高了并行化内存访问的效率。

(4)哈希索引表构建模块,其用于将所有minimizer按照哈希值建立索引,构建出基于双数组结构的参考基因哈希索引表;参考基因哈希索引表分为索引数组和结构数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置;结构数组存储按照哈希值升序排列的minimizer位置信息;

在具体实施中,对于minimap建立索引中的核心计算过程可逆整数哈希函数的计算,对该算法进行了向量化的优化。对于可逆整数哈希函数,本实施例用25条向量化指令就可以实现该算法的并行化。这些向量化的操作主要包括有移位操作,位运算操作,加法操作,这些向量化指令都非常的高效,因此整个函数的计算效率高。此外,以向量寄存器通道个数作为变量,设计可扩展的向量化并行方案,该并行方案主要包括两个部分组成。第一部分是内存部分的设计,按照上述所述的内存组织方案,以向量寄存器通道个数作为变量,每次取出通道数个窗口的dna序列进行数据重构。第二部分就是平台可扩展的向量化实现,这对sse,avx2以及avx512这些计算平台,只需要针对算法中的元操作,给出不同平台上不同向量化指令级的具体实现,就可以实现该算法在不同平台上的扩展。

索引创建的过程需要对哈希表进行插入操作,将minimizer的位置及哈希值插入表中,而插入的过程存在“写冲突”,并行化的实现需要用锁来进行同步。由于插入操作非常的频繁,设计基于锁的并行算法并没有取得很好的效率以及线程扩展性。在这里使用基于双数组结构的参考基因哈希索引。哈希表分为两个数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置,结构数组存放minimizer的位置信息。详细来说,索引数组在对结构数组按照哈希值排序之后,存放哈希值为当前数组位置值的minimizer在结构数组中的起始位置。而结构数组是经过排序后,按照哈希值升序存储的minimizer位置信息。基于这个新的数据结构,本实施例提出了一个并行索引算法,来构建minimizer的哈希索引结构。将包含minimizer哈希值以及位置信息的结构体使用inteltbb库的函数按照哈希值进行并行排序,使此处呈现出接近线性的加速提升。

如图4所示,右边数组每一个位置存放每一个minimizer的位置信息,(t,i,r)分别代表序列号、一条序列中的位置及序列正链或反链,这些minimizer是按照哈希值排序的,即哈希值相同的minimizer存放在一起。例如:左边数组下标为h的位置存放的数即413,代表右边数组存放哈希值为h的minimizer是从下标为413开始的,同理存放哈希值为h+1是从下标452开始的。

(5)重叠检测模块,其用于根据基于双数组结构的参考基因哈希索引表进行dna序列重叠检测。

本实施例按照每个线程所处理的总dna数据大小相等的策略,将所有dna序列分配给预设数量的并行线程,使得多线程的负载均衡,同时保证了多线程并行实现的加速比;

本实施例构建出基于双数组结构的参考基因哈希索引表;其中,参考基因哈希索引表分为两个数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置,结构数组存放minimizer的位置信息;利用基于双数组结构的参考基因哈希索引表提高了并行计算速度及线程扩展性。

实施例3

本实施例一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如图1所示的三代测序数据重叠检测方法中的步骤。

本实施例按照每个线程所处理的总dna数据大小相等的策略,将所有dna序列分配给预设数量的并行线程,使得多线程的负载均衡,同时保证了多线程并行实现的加速比;

本实施例构建出基于双数组结构的参考基因哈希索引表;其中,参考基因哈希索引表分为两个数组,索引数组存放不同哈希值对应的minimizer在结构数组中存放的位置,结构数组存放minimizer的位置信息;利用基于双数组结构的参考基因哈希索引表提高了并行计算速度及线程扩展性。

实施例4

本实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如图1所示的三代测序数据重叠检测方法中的步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1