网站大量收购独家精品文档,联系QQ:2885784924

关于DNA序列k-merindex问题的改进Hash函数多线程算法.PDF

关于DNA序列k-merindex问题的改进Hash函数多线程算法.PDF

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于DNA序列k-merindex问题的改进Hash函数多线程算法.PDF

关于DNA 序列k-mer index 问题的改进Hash 函数 多线程算法 1 1 1 黄恒意 许仁杰 张艺辉 指导教师:数模教练组1,2 1 复旦大学数学科学学院,上海200433 2 上海市现代应用数学重点实验室,上海200433 摘 要 本文通过字符串匹配的形式解决了DNA 序列的k-mer index 问题。 最简单的方法是字典树,然而这种用空间换时间的算法只能适用于较小的k 。 我们尝试了KMP 算法,这是一种利用需要匹配的DNA 序列自身的特点进 行查找的算法,其占用内存大约为100MB,单次查找的时间复杂度为O(NL) (其 中L 为DNA 序列长度,N 为数据规模) ,但是这种算法在用于多次查找时,时间 复杂度过高。 所以我们采取了Hash 算法,利用4 进制数,对固定的k ,将长度为k 的子 序列进行分类,以此建立索引。这种方法对较小的k 是适用的,但是对较大的k , 由于数值太大导致存储量过大、计算速度太慢,此时可采用按大素数取模的方法 来分类。而这又有可能使许多不同的数放在同一类中,所以我们还需要利用另一 个大素数将同一类中的数作进一步分离。经过对给定数据的测试,最多只需要用 3 个大素数就可以对这组DNA 序列进行完全分离。经过改进的Hash 算法查询搜 索的计算复杂度为O(1) ,查询搜索的时间基本上远小于1 ms ,建立索引的计算 复杂度为O(NL) ,建立索引的时间平均为8 s 。空间复杂度为O(NL) ,实际占用 内存1GB 左右。然后我们分别采用随机生成的DNA 模拟数据、将原始DNA 序 列错位排列两种方法来检验Hash 算法的实用性,发现建立索引的时间最大仍不 超过12 s,所以改进后的Hash 算法是一种高效实用的算法。 鉴于Hash 算法对原始DNA 序列使用的内存远低于8GB,采取多线程的方 法可以加快建立索引的速度,建立索引的时间降低到原来的2/3 左右,占用的内 存则增加到原来的2 倍左右。同样采用随机生成的DNA 模拟数据和将原始DNA 序列错位排列两种方法检验多线程 Hash 算法,结果表明多线程 Hash 算法在存 储空间不超过8GB 的条件下可以有效地减少建立索引的时间。 最后,以DNA 序列长度和数据规模作为控制变量进行测试,发现对更大规 模的DNA 序列,改进后的Hash 算法仍然适用。 关键词:k-mer index ;Hash 函数;素数;分类;多线程 本文得到国家基础科学人才培养基金的资助,项目号J 1103105 一、 问题的重述与分析 这个问题来自 DNA 序列的k-mer index 问题。 给定一个 DNA 序列,这个系列只含有 4 个字母 ATCG ,如 S = “CTGTACTGTAT ”。给定一个整数值k ,从S 的第一个位置开始,取一连续k 个字母的短串,称之为k-mer (如k= 5 ,则此短串为CTGTA ),然后从S 的第二 个位置,取另一k-mer (如k= 5 ,则此短串为TGTAC ),这样直至S 的末端,就 得一个集合,包含全部k-mer 。 对上述序列S 来说,所有5-mer 为 {CTGTA,TGTAC,GTACT,TACTG,ACTGT ,TGTAT} 通常这些k-mer 需一种数据索引方法,可被后面的操作快速访问。例如,对 5-mer 来说,当查询CTGTA,通过这种数据索引方法,可返回其在DNA 序列S 中的位置为{1,6}。 k-mer index 问题本质上就是一个字符串匹配问题,对于字符串匹配问题一般 采用KMP 算法[1]和Hash 函数[4]来解决。 二、符号定义与说明 B[i] ,B(i) : DNA 片段B 的第i 个字母 B[i..j] ,B(i..j) :DNA 片段B 的第i 个字母到第j

文档评论(0)

shiyouguizi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档