数学建模论文
题目: DNA序列的k-mer index问题分析
队长姓名:陈智添 学院:数学与信息学院 联系方法队员姓名:方宇靖 学院:数学与信息学院 联系方法队员姓名:张 航 学院:数学与信息学院 联系方法承 诺 书
我们仔细阅读了华南农业大学数学建模竞赛的竞赛规则.
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写):
参赛队员 (打印并签名) :1.
2.
3.
2015年____月____日
评阅记录
评
阅
人
评
分备
注
成 绩:______ _______
名 次:_______ __ ___
获奖等级:______ _ _____
选拔结果:_____ __ _____
DNA序列的k-merindex问题分析
摘要
随生物学与计算机学科的不断发展扩大,DNA序列的k-mer频数统计是生物信息处理过程中的一个基础问题。本文在查阅大量相关文献后,反复运用二维数组进行数据处理,结合哈希算法,我们对固定的k值进行索引的构建后,进行k-mer的查找,并对复杂度进行计算以及对模型进行了评价。
针对索引建立的问题,对于固定的k值,用二维数组储存100万行包含100个碱基的DNA序列的信息,把二维数组中的每个元素转化为四进制的序列数后,通过Dev-cpp运算分割出每行所有的k-mer,利用哈希算法把k-mer转化为十进制重新储存到二维数组中,直到100万行碱基序列全部转换成十进制的k-mer储存到二维数组中,实现索引。
针对索引使用的问题,建立需搜索的k-mer字符串与十进制数之间的关系,用计算机自动实现,输入要搜索的k-mer字符串,程序自动转换成十进制数到二维数组中,使二维数组返回该十进制数所在的位置,即返回该k-mer在100万行DNA序列中的位置,实现索引的使用。
针对数据索引的复杂度分析问题,我们针对建立索引、索引查询,计算出算法的时间复杂度及空间复杂度,从而得出建立索引,索引查询的时间复杂度。通过运算,索引建立时的时间复杂度T(n)=O(n),空间复杂度为O(n);索引使用时的时间复杂度T(n)=O(n),空间复杂度O(1)。
针对索引方法性能的评价,我们从索引查询速度、内存使用、K值范围、索引时间四个方面进行综合评价。我们通过算法输出建立索引所需时间,索引查询所需时间、索引所占用内存。从量化的角度客观评价算法性能。从多次对k值进行试验检索后发现,随着k值的增大,建立索引的时间逐渐增长,由k值为1时的19.87秒逐渐升为为k值为16的199秒;而索引使用的时间基本保持在1秒以内,所占内存保持在320m到380m之间,索引的建立、使用都比较快,占用空间不大。
运用二维数组储存、读取DNA序列,简洁直观,结合哈希算法的运用,提升了运算的效率,实现高效快捷操作,并且准确地实现了在大型数据库中快速访问指定碱基片段的目的,查找速度快,效率高,输出界面简洁,为生物科学与计算机科学的发展提供基础。
关键词:k-mer index,二维数组,哈希算法,DNA序列目录
摘要i
1 问题重述1
2 问题分析1
2.1 数据索引建立与使用的分析1
2.2 数据索引的复杂度分析1
2.3 数据索引的评价2
3 模型假设2
4 模型建立与求解2
4.1 建立索引的准备2
4.2 索引的建立3
4.2.1 理论准备3
4.2.2 流程图3
4.2.3 建立索引4
4.2.3.1 读取文本文档4
4.2.3.2 转化整数数组5
4.2.3.3 分割碱基序列6
4.3 索引的使用6
4.4 复杂