没有合适的资源?快使用搜索试试~ 我知道了~
首页DNA无损压缩算法研究代码文档(含代码)
DNA无损压缩算法研究代码文档(含代码)
需积分: 15 192 浏览量
更新于2023-05-27
评论 1
收藏 154KB DOCX 举报
程序使用于DNA序列无损压缩和解压缩,只能针对含有"ATCG"(或者"0123")四种符号的DNA序列。通过人类基因组序列测序无误, 能够正常使用。针对基因组中出现的其他情况符号暂不考虑。
资源详情
资源评论
资源推荐

基于 DNA 序列无损压缩算法的分析
目录
说明文档:readme............................................1
Makele........................................................4
主函数:main.cpp............................................6
区间编码 1:clr.cdr..........................................40
区间编码 2:clr256.cdr....................................42
行长度模型:simple model.h............................47
序列模型 1:base model.h...............................51
检验模型:sfh.h..............................................55

基于 DNA 序列无损压缩算法的分析
说明文档:readme
介绍
=============
程序使用于 DNA 序列无损压缩和解压缩,只能针对含有"ATCG"(或者"0123")四种符号
的 DNA 序列。通过人类基因组序列测序无误,
能够正常使用。针对基因组中出现的其他情况符号暂不考虑。
使用
=====
首先选择直接在编译器里打开程序,注意保留 makele,因为 makele 里面提供了程序
执行的环境和相关编译链接的命令,关系着整个工程的编译规则。在运行程序前要先
“make”,使得生成对应的中间目标文件。
程序只能对特定的文件进行压缩,仅支持当前程序压缩后的文件解压。通过命令行执行以下
的命令:
make
压缩:
./main [选项] [输入文件路径] [输出文件路径]
1

基于 DNA 序列无损压缩算法的分析
解压缩:
./main [选项] [输入文件路径] [输出文件路径]
选项
=======
压缩选项说明:
-s<数字>
默认的 s 是 3,可以选择的 s 的范围在 0~9,一般不超过 6。s 通过影响上下文滑动窗口
的阶数影响上下文结构中的阶数。 N=7+s;
-b
对应的 s 默认是 3,不一样的是在压缩过程中,在字典的生成时会通过生成对应的饿反向
互补链字典,从而增大该字典的频率,提高预测精度。但是也耗费内存。
-e
对应的 s 默认是 3,不一样的是在压缩的过程中,-e 选项用于选择使用 8 位计数器或 16
位计数器模式。
解压选项说明:
对于解压,常用的是-d。压缩参数存储在输出的文件中,所以解压缩程序知道什么选项以便
在解压缩的过程中重读压缩的过程。(顺着压缩和解压,原理一样)
注意事项
2

基于 DNA 序列无损压缩算法的分析
=======
压缩文件格式:由"ATCG"四种字符组成的文件内容。
算法
==========
算术编码:
算术编码是一种熵编码方法。熵编码方法是基于一系列的编码器 coders6c2。该系列
的编码器是 Eugene Shelwien 写的,但是看起来是源于 Dmitry Subbotin 的编码器
PPMd、这个模型的代码的 API 是复制 Eugene Shelwien 的 coders6c2,但是他们的功
能已经完全重写,以更好地适应这个数据中的平稳概率模型。
本算法实在 fqzComp 4.0 的基础上发展而来的,虽然主要的解析代码从版本 2 开始就
已经完全重写。每种类型的数据都使用自己的模型进行编码。通过概率模型来记录文本内容,
然后对编码区间进行压缩。
上下文结构:
这意味着编码名称的上下文是与前面名称中相同位置的字符,还有专门的前缀和后缀匹
配,加快编码和空间减少。这个上下文结构不是简单的上下文树,而是可以形成回路的网络
结构。上下文结构的作用是通过概率对字符的出现进行预测。不同阶的上下文在预测中的精
度也不同,阶数越高预测的精度越高,但是所耗费的时间和内存越大。
本程序是有以上两个大的算法思想要指导的,内部会根据数据类型进行模型的细分。使
3

基于 DNA 序列无损压缩算法的分析
用 simple model 来对换行符进行处理,而 base model 则只需要对序列的字符进行处理。
因为只针对"ATCG"四种字符,所以只用两位的编码就可以对四个字符进行编码,大大减少
了编码内存的耗用。但是注意选择-s 选项时候不要超过-s9,没有足够的内存来应付,实际
上超过-s6 就有可能出现问题。
文件格式
===========
针对特定的文件格式进行压缩和解压缩
压缩输入文件:(.*)
ACTCGATCGTAGTCGATAGGGTCGAGTAG
ACTTTGATAGTCAAAGTCGTAGTCGAAGT
压缩输出文件/解压缩输出文件:(.*)
Makefile
VERS=4.6
all: main
CC = g++
#CFLAGS = -g -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
CFLAGS = -O2 -g -fomit-frame-pointer -fstrict-aliasing -ffast-math -DNDEBUG -
D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wall -msse2
#CC=icpc
#CFLAGS = -O3 -g -fomit-frame-pointer -fstrict-aliasing -fast -DNDEBUG -
4
剩余56页未读,继续阅读



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0