当前位置:首页 » 操作系统 » bwt算法

bwt算法

发布时间: 2022-12-11 22:39:24

1. 后缀树算法

后缀树算法在现代的比对工具中也是非常常见的一类比对算法,常用的STAR软件利用的就是后缀树算法,而bowtie,BWA等比对软件用的是BWT算法,这就是为什么STAR的比对速度要比其他二代软件快,索引比其他二代软件大的原因

构建后缀树算法的流程类似于BWT算法,比方说我的 ref 序列为:ATCATGATC$ ,类似于BWT算法依次向前移位,并去掉第一个元素

并且根据你的 ref序列的特点 来构建树

其中黑色点代表结点,[3,9]表示位置信息,代表上表中3到9号位置的两个元素,其他的以此类推

对于 ref:ATCATGATC$
开头第一个元素无非是A,T,C,G四种元素,那么由0号节点出发,分为四类

倘若现在有一条 reads:ATCA ,首先走结点0->1->6->12,并储存位置信息,这就比对完成了,即比对到位置信息为[0,3]

又比如有一条 reads:CATGA ,首先走结点0->3->10,储存位置信息,这就比对完成了,即比对到位置信息为[2,6]

再如有一条 reads:ATC ,可以走结点0->1->6,即比对到位置信息为[0,2];也可以走结点0->16->17,即比对到位置信息为[6,9]

参考:孟叔live

2. .7z后缀的文件用什么打开

工具材料

winrar软件

方法如下

1、首先打开“winrar”软件,在下拉菜单中找到“设置”选项。

3. seed alignment 算法(BWT)

这篇文章就记录一下seed alignment 的BWT算法,不过,BWT算法原本用于数据压缩,而它的 压缩 解压 的过程也可以直接类比到, 参考基因组做索引 seed alignment 的双序列比对。

以下步骤与图1一一对应:
举例:压缩字符串 ababc
输入字符串 ababc
第一步,添加标记 ababc$
第二步, ababc$ “循环转移”(序列最后一个字母“依次”移动到最前端)
第三步,将“循环转移”获得的矩阵按照 第一列首字母 排序获得M数组
第四步,取出M数组的第一列为 F列 ;M数组的最后一列为 L列
数据压缩: 做到这一步之后,便可以直接将 L列 以 c,$,b,2a,b 的形式存储,实现了字符串 ababc 的数据压缩(不过这个举例里压缩率并不高😓)

数据解压缩,也就是从 L列 内容还原原始字符串。其中势必用到了M数组中的两个特殊列 F列 L列 ,还有他们之间的相互关系。

如何通过F列和L列还原原始序列?也就是解压缩过程:

以上步骤中,黑粗体描述的字母 从下向上 排列为: ababc ,即达到了恢复原始序列的目的。

我们如何用BWT的算法做碱基序列比对?实际上,以上提到 数据压缩和解压缩 的过程就是我们做序列比对的过程。
1)我们建立参考基因组的索引,其实便是建立refercen序列的L列和它相对位置的index(体现在👆便是 ababc 获得L列的过程,也就是 数据压缩 的过程);
2)我们将测序得到的reads与参考基因组比对,其实便是查找reads对应参考基因组的位置,并观察reads序列是否可以还原出对应位置的碱基序列(体现在👆便是由L列排序获得F列,然后以F列配合做指引,从最后一个字母出发做 数据解压缩

举例: abab 是否为 ababc 的子序列?我们看BWT算法是如何判断的

第二次:

实际的比对过程中,测序得到的reads都被分割成几十bp的片段,选取其中的部分质量较好的序列作为seed序列与参考基因组比对(循环如上的 解压缩 过程),找到reads在基因组上大概的位置(比对上的位置可能会很多,会综合很多因素:insertion、deletion、mismatch、reads quality等等,为每一个位置打分,最终取 得分最高的位置 )。
确定位置之后,取出参考基因组对应位置附近的序列,和reads做双序列比对。

4. BWT是什么啊

很多意思,你可以搜网络。你没告诉我们到底是哪方面的,它实在有很多层意思。

5. 数据压缩技术的数据压缩技术简史

电脑里的数据压缩其实类似于美眉们的瘦身运动,不外有两大功用。第一,可以节省空间。拿瘦身美眉来说,要是八个美眉可以挤进一辆出租车里,那该有多省钱啊!第二,可以减少对带宽的占用。例如,我们都想在不到 100Kbps 的 GPRS 网上观看 DVD 大片,这就好比瘦身美眉们总希望用一尺布裁出七件吊带衫,前者有待于数据压缩技术的突破性进展,后者则取决于美眉们的恒心和毅力。
简单地说,如果没有数据压缩技术,我们就没法用 WinRAR 为 Email 中的附件瘦身;如果没有数据压缩技术,市场上的数码录音笔就只能记录不到 20 分钟的语音;如果没有数据压缩技术,从 Internet 上下载一部电影也许要花半年的时间……可是这一切究竟是如何实现的呢?数据压缩技术又是怎样从无到有发展起来的呢? 一千多年前的中国学者就知道用“班马”这样的缩略语来指代班固和司马迁,这种崇尚简约的风俗一直延续到了今天的 Internet 时代:当我们在 BBS 上用“ 7456 ”代表“气死我了”,或是用“ B4 ”代表“ Before ”的时候,我们至少应该知道,这其实就是一种最简单的数据压缩呀。
严格意义上的数据压缩起源于人们对概率的认识。当我们对文字信息进行编码时,如果为出现概率较高的字母赋予较短的编码,为出现概率较低的字母赋予较长的编码,总的编码长度就能缩短不少。远在计算机出现之前,着名的 Morse 电码就已经成功地实践了这一准则。在 Morse 码表中,每个字母都对应于一个唯一的点划组合,出现概率最高的字母 e 被编码为一个点“ . ”,而出现概率较低的字母 z 则被编码为“ --.. ”。显然,这可以有效缩短最终的电码长度。
信息论之父 C. E. Shannon 第一次用数学语言阐明了概率与信息冗余度的关系。在 1948 年发表的论文“通信的数学理论( A Mathematical Theory of Communication )”中, Shannon 指出,任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关。 Shannon 借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,并给出了计算信息熵的数学表达式。这篇伟大的论文后来被誉为信息论的开山之作,信息熵也奠定了所有数据压缩算法的理论基础。从本质上讲,数据压缩的目的就是要消除信息中的冗余,而信息熵及相关的定理恰恰用数学手段精确地描述了信息冗余的程度。利用信息熵公式,人们可以计算出信息编码的极限,即在一定的概率模型下,无损压缩的编码长度不可能小于信息熵公式给出的结果。
有了完备的理论,接下来的事就是要想办法实现具体的算法,并尽量使算法的输出接近信息熵的极限了。当然,大多数工程技术人员都知道,要将一种理论从数学公式发展成实用技术,就像仅凭一个 E=mc 2 的公式就要去制造核武器一样,并不是一件很容易的事。 设计具体的压缩算法的过程通常更像是一场数学游戏。开发者首先要寻找一种能尽量精确地统计或估计信息中符号出现概率的方法,然后还要设计一套用最短的代码描述每个符号的编码规则。统计学知识对于前一项工作相当有效,迄今为止,人们已经陆续实现了静态模型、半静态模型、自适应模型、 Markov 模型、部分匹配预测模型等概率统计模型。相对而言,编码方法的发展历程更为曲折一些。
1948 年, Shannon 在提出信息熵理论的同时,也给出了一种简单的编码方法—— Shannon 编码。 1952 年, R. M. Fano 又进一步提出了 Fano 编码。这些早期的编码方法揭示了变长编码的基本规律,也确实可以取得一定的压缩效果,但离真正实用的压缩算法还相去甚远。
第一个实用的编码方法是由 D. A. Huffman 在 1952 年的论文“最小冗余度代码的构造方法( A Method for the Construction of Minimum Rendancy Codes )”中提出的。直到今天,许多《数据结构》教材在讨论二叉树时仍要提及这种被后人称为 Huffman 编码的方法。 Huffman 编码在计算机界是如此着名,以至于连编码的发明过程本身也成了人们津津乐道的话题。据说, 1952 年时,年轻的 Huffman 还是麻省理工学院的一名学生,他为了向老师证明自己可以不参加某门功课的期末考试,才设计了这个看似简单,但却影响深远的编码方法。
Huffman 编码效率高,运算速度快,实现方式灵活,从 20 世纪 60 年代至今,在数据压缩领域得到了广泛的应用。例如,早期 UNIX 系统上一个不太为现代人熟知的压缩程序 COMPACT 实际就是 Huffman 0 阶自适应编码的具体实现。 20 世纪 80 年代初, Huffman 编码又出现在 CP/M 和 DOS 系统中,其代表程序叫 SQ 。今天,在许多知名的压缩工具和压缩算法(如 WinRAR 、 gzip 和 JPEG )里,都有 Huffman 编码的身影。不过, Huffman 编码所得的编码长度只是对信息熵计算结果的一种近似,还无法真正逼近信息熵的极限。正因为如此,现代压缩技术通常只将 Huffman 视作最终的编码手段,而非数据压缩算法的全部。
科学家们一直没有放弃向信息熵极限挑战的理想。 1968 年前后, P. Elias 发展了 Shannon 和 Fano 的编码方法,构造出从数学角度看来更为完美的 Shannon-Fano-Elias 编码。沿着这一编码方法的思路, 1976 年, J. Rissanen 提出了一种可以成功地逼近信息熵极限的编码方法——算术编码。 1982 年, Rissanen 和 G. G. Langdon 一起改进了算术编码。之后,人们又将算术编码与 J. G. Cleary 和 I. H. Witten 于 1984 年提出的部分匹配预测模型( PPM )相结合,开发出了压缩效果近乎完美的算法。今天,那些名为 PPMC 、 PPMD 或 PPMZ 并号称压缩效果天下第一的通用压缩算法,实际上全都是这一思路的具体实现。
对于无损压缩而言, PPM 模型与算术编码相结合,已经可以最大程度地逼近信息熵的极限。看起来,压缩技术的发展可以到此为止了。不幸的是,事情往往不像想象中的那样简单:算术编码虽然可以获得最短的编码长度,但其本身的复杂性也使得算术编码的任何具体实现在运行时都慢如蜗牛。即使在摩尔定律大行其道, CPU 速度日新月异的今天,算术编码程序的运行速度也很难满足日常应用的需求。没办法,如果不是后文将要提到的那两个犹太人,我们还不知要到什么时候才能用上 WinZIP 这样方便实用的压缩工具呢。 逆向思维永远是科学和技术领域里出奇制胜的法宝。就在大多数人绞尽脑汁想改进 Huffman 或算术编码,以获得一种兼顾了运行速度和压缩效果的“完美”编码的时候,两个聪明的犹太人 J. Ziv 和 A. Lempel 独辟蹊径,完全脱离 Huffman 及算术编码的设计思路,创造出了一系列比 Huffman 编码更有效,比算术编码更快捷的压缩算法。我们通常用这两个犹太人姓氏的缩写,将这些算法统称为 LZ 系列算法。
按照时间顺序, LZ 系列算法的发展历程大致是: Ziv 和 Lempel 于 1977 年发表题为“顺序数据压缩的一个通用算法( A Universal Algorithm for Sequential Data Compression )”的论文,论文中描述的算法被后人称为 LZ77 算法。 1978 年,二人又发表了该论文的续篇“通过可变比率编码的独立序列的压缩( Compression of Indivial Sequences via Variable Rate Coding )”,描述了后来被命名为 LZ78 的压缩算法。 1984 年, T. A. Welch 发表了名为“高性能数据压缩技术( A Technique for High Performance Data Compression )”的论文,描述了他在 Sperry 研究中心(该研究中心后来并入了 Unisys 公司)的研究成果,这是 LZ78 算法的一个变种,也就是后来非常有名的 LZW 算法。 1990 年后, T. C. Bell 等人又陆续提出了许多 LZ 系列算法的变体或改进版本。
说实话, LZ 系列算法的思路并不新鲜,其中既没有高深的理论背景,也没有复杂的数学公式,它们只是简单地延续了千百年来人们对字典的追崇和喜好,并用一种极为巧妙的方式将字典技术应用于通用数据压缩领域。通俗地说,当你用字典中的页码和行号代替文章中每个单词的时候,你实际上已经掌握了 LZ 系列算法的真谛。这种基于字典模型的思路在表面上虽然和 Shannon 、 Huffman 等人开创的统计学方法大相径庭,但在效果上一样可以逼近信息熵的极限。而且,可以从理论上证明, LZ 系列算法在本质上仍然符合信息熵的基本规律。
LZ 系列算法的优越性很快就在数据压缩领域里体现 了 出来,使用 LZ 系列算法的工具软件数量呈爆炸式增长。 UNIX 系统上最先出现了使用 LZW 算法的 compress 程序,该程序很快成为了 UNIX 世界的压缩标准。紧随其后的是 MS-DOS 环境下的 ARC 程序,以及 PKWare 、 PKARC 等仿制品。 20 世纪 80 年代,着名的压缩工具 LHarc 和 ARJ 则是 LZ77 算法的杰出代表。
今天, LZ77 、 LZ78 、 LZW 算法以及它们的各种变体几乎垄断了整个通用数据压缩领域,我们熟悉的 PKZIP 、 WinZIP 、 WinRAR 、 gzip 等压缩工具以及 ZIP 、 GIF 、 PNG 等文件格式都是 LZ 系列算法的受益者,甚至连 PGP 这样的加密文件格式也选择了 LZ 系列算法作为其数据压缩的标准。
没有谁能否认两位犹太人对数据压缩技术的贡献。我想强调的只是,在工程技术领域,片面追求理论上的完美往往只会事倍功半,如果大家能像 Ziv 和 Lempel 那样,经常换个角度来思考问题,没准儿你我就能发明一种新的算法,就能在技术方展史上扬名立万呢。 LZ 系列算法基本解决了通用数据压缩中兼顾速度与压缩效果的难题。但是,数据压缩领域里还有另一片更为广阔的天地等待着我们去探索。 Shannon 的信息论告诉我们,对信息的先验知识越多,我们就可以把信息压缩得越小。换句话说,如果压缩算法的设计目标不是任意的数据源,而是基本属性已知的特种数据,压缩的效果就会进一步提高。这提醒我们,在发展通用压缩算法之余,还必须认真研究针对各种特殊数据的专用压缩算法。比方说,在今天的数码生活中,遍布于数码相机、数码录音笔、数码随身听、数码摄像机等各种数字设备中的图像、音频、视频信息,就必须经过有效的压缩才能在硬盘上存储或是通过 USB 电缆传输。实际上,多媒体信息的压缩一直是数据压缩领域里的重要课题,其中的每一个分支都有可能主导未来的某个技术潮流,并为数码产品、通信设备和应用软件开发商带来无限的商机。
让我们先从图像数据的压缩讲起。通常所说的图像可以被分为二值图像、灰度图像、彩色图像等不同的类型。每一类图像的压缩方法也不尽相同。
传真技术的发明和广泛使用促进了二值图像压缩算法的飞速发展。 CCITT (国际电报电话咨询委员会,是国际电信联盟 ITU 下属的一个机构)针对传真类应用建立了一系列图像压缩标准,专用于压缩和传递二值图像。这些标准大致包括 20 世纪 70 年代后期的 CCITT Group 1 和 Group 2 , 1980 年的 CCITT Group 3 ,以及 1984 年的 CCITT Group 4 。为了适应不同类型的传真图像,这些标准所用的编码方法包括了一维的 MH 编码和二维的 MR 编码,其中使用了行程编码( RLE )和 Huffman 编码等技术。今天,我们在办公室或家里收发传真时,使用的大多是 CCITT Group 3 压缩标准,一些基于数字网络的传真设备和存放二值图像的 TIFF 文件则使用了 CCITT Group 4 压缩标准。 1993 年, CCITT 和 ISO (国际标准化组织)共同成立的二值图像联合专家组( Joint Bi-level Image Experts Group , JBIG )又将二值图像的压缩进一步发展为更加通用的 JBIG 标准。
实际上,对于二值图像和非连续的灰度、彩色图像而言,包括 LZ 系列算法在内的许多通用压缩算法都能获得很好的压缩效果。例如,诞生于 1987 年的 GIF 图像文件格式使用的是 LZW 压缩算法, 1995 年出现的 PNG 格式比 GIF 格式更加完善,它选择了 LZ77 算法的变体 zlib 来压缩图像数据。此外,利用前面提到过的 Huffman 编码、算术编码以及 PPM 模型,人们事实上已经构造出了许多行之有效的图像压缩算法。
但是,对于生活中更加常见的,像素值在空间上连续变化的灰度或彩色图像(比如数码照片),通用压缩算法的优势就不那么明显了。幸运的是,科学家们发现,如果在压缩这一类图像数据时允许改变一些不太重要的像素值,或者说允许损失一些精度(在压缩通用数据时,我们绝不会容忍任何精度上的损失,但在压缩和显示一幅数码照片时,如果一片树林里某些树叶的颜色稍微变深了一些,看照片的人通常是察觉不到的),我们就有可能在压缩效果上获得突破性的进展。这一思想在数据压缩领域具有革命性的地位:通过在用户的忍耐范围内损失一些精度,我们可以把图像(也包括音频和视频)压缩到原大小的十分之一、百分之一甚至千分之一,这远远超出了通用压缩算法的能力极限。也许,这和生活中常说的“退一步海阔天空”的道理有异曲同工之妙吧。
这种允许精度损失的压缩也被称为有损压缩。在图像压缩领域,着名的 JPEG 标准是有损压缩算法中的经典。 JPEG 标准由静态图像联合专家组( Joint Photographic Experts Group , JPEG )于 1986 年开始制定, 1994 年后成为国际标准。 JPEG 以离散余弦变换( DCT )为核心算法,通过调整质量系数控制图像的精度和大小。对于照片等连续变化的灰度或彩色图像, JPEG 在保证图像质量的前提下,一般可以将图像压缩到原大小的十分之一到二十分之一。如果不考虑图像质量, JPEG 甚至可以将图像压缩到“无限小”。
JPEG 标准的最新进展是 1996 年开始制定, 2001 年正式成为国际标准的 JPEG 2000 。与 JPEG 相比, JPEG 2000 作了大幅改进,其中最重要的是用离散小波变换( DWT )替代了 JPEG 标准中的离散余弦变换。在文件大小相同的情况下, JPEG 2000 压缩的图像比 JPEG 质量更高,精度损失更小。作为一个新标准, JPEG 2000 暂时还没有得到广泛的应用,不过包括数码相机制造商在内的许多企业都对其应用前景表示乐观, JPEG 2000 在图像压缩领域里大显身手的那一天应该不会特别遥远。
JPEG 标准中通过损失精度来换取压缩效果的设计思想直接影响了视频数据的压缩技术。 CCITT 于 1988 年制定了电视电话和会议电视的 H.261 建议草案。 H.261 的基本思路是使用类似 JPEG 标准的算法压缩视频流中的每一帧图像,同时采用运动补偿的帧间预测来消除视频流在时间维度上的冗余信息。在此基础上, 1993 年, ISO 通过了动态图像专家组( Moving Picture Experts Group , MPEG )提出的 MPEG-1 标准。 MPEG-1 可以对普通质量的视频数据进行有效编码。我们现在看到的大多数 VCD 影碟,就是使用 MPEG-1 标准来压缩视频数据的。
为了支持更清晰的视频图像,特别是支持数字电视等高端应用, ISO 于 1994 年提出了新的 MPEG-2 标准(相当于 CCITT 的 H.262 标准)。 MPEG-2 对图像质量作了分级处理,可以适应普通电视节目、会议电视、高清晰数字电视等不同质量的视频应用。在我们的生活中,可以提供高清晰画面的 DVD 影碟所采用的正是 MPEG-2 标准。
Internet 的发展对视频压缩提出了更高的要求。在内容交互、对象编辑、随机存取等新需求的刺激下, ISO 于 1999 年通过了 MPEG-4 标准(相当于 CCITT 的 H.263 和 H.263+ 标准)。 MPEG-4 标准拥有更高的压缩比率,支持并发数据流的编码、基于内容的交互操作、增强的时间域随机存取、容错、基于内容的尺度可变性等先进特性。 Internet 上新兴的 DivX 和 XviD 文件格式就是采用 MPEG-4 标准来压缩视频数据的,它们可以用更小的存储空间或通信带宽提供与 DVD 不相上下的高清晰视频,这使我们在 Internet 上发布或下载数字电影的梦想成为了现实。
就像视频压缩和电视产业的发展密不可分一样,音频数据的压缩技术最早也是由无线电广播、语音通信等领域里的技术人员发展起来的。这其中又以语音编码和压缩技术的研究最为活跃。自从 1939 年 H. Dudley 发明声码器以来,人们陆续发明了脉冲编码调制( PCM )、线性预测( LPC )、矢量量化( VQ )、自适应变换编码( ATC )、子带编码( SBC )等语音分析与处理技术。这些语音技术在采集语音特征,获取数字信号的同时,通常也可以起到降低信息冗余度的作用。像图像压缩领域里的 JPEG 一样,为获得更高的编码效率,大多数语音编码技术都允许一定程度的精度损失。而且,为了更好地用二进制数据存储或传送语音信号,这些语音编码技术在将语音信号转换为数字信息之后又总会用 Huffman 编码、算术编码等通用压缩算法进一步减少数据流中的冗余信息。
对于电脑和数字电器(如数码录音笔、数码随身听)中存储的普通音频信息,我们最常使用的压缩方法主要是 MPEG 系列中的音频压缩标准。例如, MPEG-1 标准提供了 Layer I 、 Layer II 和 Layer III 共三种可选的音频压缩标准, MPEG-2 又进一步引入了 AAC ( Advanced Audio Coding )音频压缩标准, MPEG-4 标准中的音频部分则同时支持合成声音编码和自然声音编码等不同类型的应用。在这许多音频压缩标准中,声名最为显赫的恐怕要数 MPEG-1 Layer III ,也就是我们常说的 MP3 音频压缩标准了。从 MP3 播放器到 MP3 手机,从硬盘上堆积如山的 MP3 文件到 Internet 上版权纠纷不断的 MP3 下载, MP3 早已超出了数据压缩技术的范畴,而成了一种时尚文化的象征了。
很显然,在多媒体信息日益成为主流信息形态的数字化时代里,数据压缩技术特别是专用于图像、音频、视频的数据压缩技术还有相当大的发展空间——毕竟,人们对信息数量和信息质量的追求是永无止境的。 从信息熵到算术编码,从犹太人到 WinRAR ,从 JPEG 到 MP3 ,数据压缩技术的发展史就像是一个写满了“创新”、“挑战”、“突破”和“变革”的羊皮卷轴。也许,我们在这里不厌其烦地罗列年代、人物、标准和文献,其目的只是要告诉大家,前人的成果只不过是后人有望超越的目标而已,谁知道在未来的几年里,还会出现几个 Shannon ,几个 Huffman 呢?
谈到未来,我们还可以补充一些与数据压缩技术的发展趋势有关的话题。
1994年, M. Burrows 和 D. J. Wheeler 共同提出了一种全新的通用数据压缩算法。这种算法的核心思想是对字符串轮转后得到的字符矩阵进行排序和变换,类似的变换算法被称为 Burrows-Wheeler 变换,简称 BWT 。与 Ziv 和 Lempel 另辟蹊径的做法如出一辙, Burrows 和 Wheeler 设计的 BWT 算法与以往所有通用压缩算法的设计思路都迥然不同。如今, BWT 算法在开放源码的压缩工具 bzip 中获得了巨大的成功, bzip 对于文本文件的压缩效果要远好于使用 LZ 系列算法的工具软件。这至少可以表明,即便在日趋成熟的通用数据压缩领域,只要能在思路和技术上不断创新,我们仍然可以找到新的突破口。
分形压缩技术是图像压缩领域近几年来的一个热点。这一技术起源于 B. Mandelbrot 于 1977 年创建的分形几何学。 M. Barnsley 在 20 世纪 80 年代后期为分形压缩奠定了理论基础。从 20 世纪 90 年代开始, A. Jacquin 等人陆续提出了许多实验性的分形压缩算法。今天,很多人相信,分形压缩是图像压缩领域里最有潜力的一种技术体系,但也有很多人对此不屑一顾。无论其前景如何,分形压缩技术的研究与发展都提示我们,在经过了几十年的高速发展之后,也许,我们需要一种新的理论,或是几种更有效的数学模型,以支撑和推动数据压缩技术继续向前跃进。
人工智能是另一个可能对数据压缩的未来产生重大影响的关键词。既然 Shannon 认为,信息能否被压缩以及能在多大程度上被压缩与信息的不确定性有直接关系,假设人工智能技术在某一天成熟起来,假设计算机可以像人一样根据已知的少量上下文猜测后续的信息,那么,将信息压缩到原大小的万分之一乃至十万分之一,恐怕就不再是天方夜谭了。
回顾历史之后,人们总喜欢畅想一下未来。但未来终究是未来,如果仅凭你我几句话就可以理清未来的技术发展趋势,那技术创新的工作岂不就索然无味了吗?依我说,未来并不重要,重要的是,赶快到 Internet 上下载几部大片,然后躺在沙发里,好好享受一下数据压缩为我们带来的无限快乐吧。

6. NGS数据比对之BWA

BWA 主要是将reads比对到大型基因组上,主要功能是:序列比对。首先为大型参考基因组建立索引,然后将reads比对到基因组。特点是快速、准确、省内存。由三种类似算法组成:BWA-backtrack,BWA-SW和BWA-MEM。首推BWA-MEM。

BWA-backtrack:reads长度<70bp时,推荐本算法,建议输入reads长度 < 100bp。
BWA-SW:在reads具有频繁的gap时,比对更敏感,推荐本算法。reads长度一般为70bp-1Mbp,支持long-reads,split alignment。
BWA-MEM(首推):在reads长度在70bp-1Mbp范围时,推荐本算法(除了上面两种情况)。支持long-reads,split alignment。

BWA使用说明 使用手册

语法
bwa index ref.fa #首先建立基因组索引
bwa mem ref.fa reads.fq > aln-se.sam # 调用BWA-MEM
bwa mem ref.fa read1.fq read2.fq > aln-pe.sam # 调用BWA-MEM
bwa aln ref.fa short_read.fq > aln_sa.sai # 调用BWA-backtrack
bwa samse ref.fa aln_sa.sai short_read.fq > aln-se.sam # 调用BWA-backtrack
bwa sampe ref.fa aln_sa1.sai aln_sa2.sai read1.fq read2.fq > aln-pe.sam # 调用BWA-backtrack
bwa bwasw ref.fa long_read.fq > aln.sam # 调用BWA-SW
注意:BWA输入的是fastq/fq的原始测序数据。

bwa的使用需要两个 输入文件
Reference genome data 和 Short reads data

根据reference genome data 建立 Index File

构建索引时需要注意的问题:bwa构建索引有三种算法,三种算法都是基于BWT的,这三种算法通过参数
-a is 、-a div和-a bwtsw进行选择。其中-a bwtsw对于短的参考序列是不工作的,必须要大于等于10Mb;-a is(效果和-a div是一样的)是默认参数,这个参数不适用于大的参考序列,必须要小于等于2G。

需要参考基因组以及原始fastq文件,输出sam文件格式

read包含:

FLAG字段中的定义为:

BWA生成以下可选字段。以“X”开头的标签是特定于BWA的。

使用bwa完成比对后,用samtools完成BAM格式转换、排序并标记PCR重复序列。

例子:利用 SRR1770413 , 见WES数据处理之寻找突变GATK

以上为BWA比对流程,排序,标记等

7. 好压 7z 哪个更好

7z好7z 是一种新的压缩格式,它拥有目前较高的压缩比。
支持格式:
压缩及解压缩:7z、ZIP、GZIP、BZIP2 和 TAR
仅解压缩:RAR、CAB、ISO、ARJ、LZH、CHM、WIM、Z、CPIO、RPM、DEB 和 NSIS
对于 ZIP 及 GZIP 格式,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的压缩比
7z 格式支持创建自释放(SFX)压缩档案
集成 Windows 外壳扩展
强大的的文件管理
强大的命令行版本
支持 FAR Manager 插件
支持 63 种语言 [编辑本段]主要特征公开的结构编辑功能
最高的压缩比
强大的 AES-256 加密
可更改和配置压缩的算法
最高支持 16000000000 GB 的文件压缩
以 Unicode 为标准的文件名
支持固实压缩
支持档案的文件头压缩
7z 已公开了结构编辑功能,所以它可以支持任何一种新的压缩算法。到目前为止,下列压缩算法已被整合到了 7z 中: [编辑本段]压缩算法LZMA LZ77 改良和优化算法后的最新版本
PPMD 基于 Dmitry Shkarin 之上的算法 PPMdH 并加以优化
BCJ 32-位 x86 可执行文件转换程序
BCJ2 32-位 x86 可执行文件转换程序
BZip2 标准 BWT 算法
Deflate 标准 LZ77-based 算法 [编辑本段]LZMA 算法LZMA 算法是 7z 格式的默认标准算法。 LZMA 算法的主要特征高压缩比 可变字典大小(最大 4 GB)
压缩速度:运行于 2 GHz 的处理器可达到 1 MB/秒
解压缩速度:运行于 2 GHz 的处理器可达到 10-20 MB/秒
较小的解压缩内存需求(依赖于字典大小)
较小的解压缩代码:约 5 KB 支持 Pentium 4 的多线程(Hyper-Threading)技术及多处理器 LZMA 压缩算法非常适于应用程序的内嵌。
LZMA SDK. 7z 是 7-Zip 发布于 GNU LGPL 的子程序。
其它支持 7z 格式的压缩软件:WinRAR、PowerArchiver、TUGZip、IZArc。 [编辑本段]7-zip官网7-Zip 官方首页/7z下载
http://www.7-zip.org/
中文首页
http://7z.sparanoid.com/来源 http://ke..com/view/915907.html?wtp=tt

8. 基于BWT算法的比对软件原理解析(BWA & Bowtie & Bowtie2)

参考:
踏踏实实做技术:BWA,Bowtie,Bowtie2的比对算法推导

remove multiple mapping reads的方法

CHIP-seq: Bowtie2、BWA用的比较多
RNA-seq: Tophat、Bsmap
甲基化:BS-seeker

global---NW
local--SW

好处是能够穷举出所有的比对情况,所以可以选择全局最优的结果;最大的缺点是比对的非常慢。

BWT(Burrows-Wheeler Transform )

第一步,在raw seq中加$符号,并平移,形成一个 raw matrix

第二步,根据Raw Matrix的首字母进行排序,得到转换矩阵Matrix’,默认$符号排在第一位,

所以最后只用保存L列和每个字母的相对位置就可以了,根据L列和每个字母的相对位置可以干两件事情:

例如:第一个是L- 对应F- 的前一个是G,L-G对应F-G;F-G的前一个是L-C,依次类推,得到原来的ref:ACAACG$

14bp(high quality)---14bp(low quality of high quality)--8bp(real low quality)
分成三断seed,seed1+seed2比对总共的mismatch <= 2,则继续8bp的比对;如果 > 2 直接放弃后面的比对;

第一步,选择seed区域;
20里面选18---
(18+2)+(18+2)+(18+2)+...+(18+2)
保证一个fragment是20,seed 是18bp
或者,10里面选16--
fragment = 16,overlap = 6,

那么根据BWT算法,就把拆分的seed mapping到基因组的大概位置;
然后把基因组可能mapping上的那段区域挑出来,和query seq做比对(用NW或者SW算法),因为query seq NW和SW允许gap open

9. 有哪些经典的算法或者轻量应用适合并行化

反对,不会显示你的姓名
知乎用户 计算机博士生,做生物信息
6 人赞同
挖个坑,说几个生物信息领域的经典算法吧。 1. Smith-Waterman 和 Needleman-Wunsch,俩生物信息最经典的动态规划算法, 并行算法的论文不知道发了多少篇了,Xeon,Xeon Phi, CUDA,SIMD的,一般并行先从这个算法开始讲 2. 基因组拼接的算法 de brijin Gra… 显示全部
挖个坑,说几个生物信息领域的经典算法吧。
1. Smith-Waterman 和 Needleman-Wunsch,俩生物信息最经典的动态规划算法, 并行算法的论文不知道发了多少篇了,Xeon,Xeon Phi, CUDA,SIMD的,一般并行先从这个算法开始讲

2. 基因组拼接的算法 de brijin Graph 的构建和查询的并行算法

3. 序列比对,BWT 构建的并行算法

以后慢慢补充

最后来一发,之前给物理学里面的QMC算法(一种MCMC算法,用来计算分子结构的)做Xeon Phi上并行的优化,题主有兴趣可以看看,已经有现成的软件包QMCPACK,可以支持Xeon和GPU并行了。

10. 比对算法总结(二)——基于BWT索引结构的比对算法-Bowite1

这是美国马里兰大学计算机研究所、生物信息学和计算生物学中心于2009年发表在《Genome Biology》杂志的一篇经典文章,至此以后依赖于BWT索引的比对算法成为主流。 Bowite 是一款超快速、内存占用低的短序列比对软件,适用于将短reads比对至大型参考基因组。采用Burrows-Wheeler 算法建立索引的Bowite软件可以在1 CPU时内,将2000万条reads 比对至人参考基因组,且内存只占有1.3Gb。于此同时Bowite 采用了新的quality-aware backtracking(质量回溯)算法,比对过程允许错配。

在此之前都是采用对reads (SHRiMP, Maq, RMAP,ZOOM) 或者参考基因组 (SOAP)构建哈希表的算法进行序列比对,该算法已在上篇文章中进行了介绍 https://www.jianshu.com/p/f5ccff73b181 。
Bowite 采用了一种完全新的索引构建策略,适用于哺乳动物重测序。根据千人基因组计划数据,Bowite 在35bp PE 序列上的比对速度要比Maq 软件快35 倍,比SOAP软件快300倍。Bowite 采用 Burrows-Wheeler 算法对 full-text minute-space (FM) 构建索引,人参考基因组占用的内存为1.3 GB。
为了追求速度,Bowite 针对哺乳动物重测序项目进行了很多合理的折中。例如,如果一条reads有多条最优匹配,Bowite 只会输出一条最优匹配。当输出的最优匹配也不是完全匹配时,Bowite并不能保证在所有情况下都能输出最高质量的匹配。在设定了较高的匹配阈值时,一小部分含有多个错配的reads可能会比对失败。在默认参数条件下,Bowite 的灵敏度与SOAP 相当,略低于Maq。可以在命令行手动改变参数,在牺牲更多时间的情况下,增加灵敏度,给出reads所有可能的比对结果。目前Bowite 比对的reads长度范围为4bp - 1024bp。

Bowite 对参考基因组建立索引的方法是 Burrows-Wheeler transform (BWT) 和 FM index。Bowite 建立的人类基因组索引在硬盘上的大小为2.2GB,在比对时的内存为1.3GB。FM index 常用的精确查找方法为 Ferragina 和 Manzini 算法。Bowite 没有完全使用该算法,因为该算法不允许错配,不能比对含有测序错误和变异的reads。针对这种情况,Bowite引入了新的扩展算法:quality-aware backtracking 算法,允许错配并支持高质量比对;double indexing 策略,避免过度回溯;Bowite比对策略与Maq软件相似,允许小部分的高质量reads 含有错配,并且对所有的错配位点的质量值设置了上限阈值。

BWT 转换是字符串的可逆性排列,它最早应用于文本数据的压缩,依赖BWT建立的索引,可以在较低内存下,实现大型文本的有效搜索。它被在生物信息学中有广泛的应用,包括重复区域计数、全基因组比对、微阵列探针设计、Smith-Waterman 比对到人参考基因组。Burrows-Wheeler transform (BWT) 的转换步骤如图1所示:

1、轮转排序。如图1a 所示,(1)将字符$ 添加到文本 T (acaacg)的末尾,但需注意其中字符$ 并未实际添加到文本 T 中,且其在字母表中逻辑顺序小于 T 中所有出现过的字符。(2) 然后将当前字符串的第一个字符移到最后一位,形成一个新的字符串,再将新的字符串的第一位移到最后一位形成另一个新的字符串,就这样不断循环这个过程,直到字符串循环完毕(即$处于第一位),这样就形成了一个基于原字符串的字符矩阵M(这一步原图1a 进行了省略,见下方小图)。(3) 然后对矩阵M的各行字符按照字典先后顺序排序,获得排序后的字符矩阵 BWM(T),矩阵的最后一列定义为 BWT(T)。 前期经过一个小复杂的过程获得了BWT(T)列,那这一列到底有什么用呢?其实BWT(T)列通过简单的算法就可以推算出原始文本T的所有信息。而经过转换之后的BWT(T)列大量重复字符是靠近的,只储存该列信息,可以大大提高字符压缩比例。

2、LF-Mapping。图1a 转换矩阵 BWM(T)含有一种 'last first (LF) mapping' 的特性,即最后一列L中出现某字符出现的顺序与第一列F某字符出现的次序时一致的。根据Supplementary1 图中算法1 STEPLEFT 和 算法2 UNPERMUTE 就可以推算出BWT(T)到 T 的过程, 图1 b记录了整个推算过程。 详细推算过程可参考这个博客介绍: https://blog.csdn.net/stormlovetao/article/details/7048481 。

3、reads精确匹配。使用BWT算法的最终目的是要将短reads比对到参考基因组上,确定短reads在参考基因组上的具体位置。转换后的BWT(T)序列,可以利用Supplementary1 图中算法3 EXACTMATCH 实现reads的精确匹配。图1c 列出了 字符串 aac 比对至acaacg 的过程 。 详细推算过程可参考这篇介绍: https://zhuanlan.hu.com/p/158901556 。

上述的BWT转换只能用于精确的匹配,但是测序reads是含有测序错误和突变的,精确匹配并不适用。这里应用了 backtracking 搜索的算法,用于允许错配快速比对 。含有错配的reads只是一小部分。测序reads的每个碱基都含有唯一的测序量值,测序质量值越该位点是测序错误的可能越大,只有当一条read 的所有错配的测序质量值总和小于一定阈值时可以允许错误匹配。
图2显示了精确匹配和非精确匹配的过程,backtracking 搜索过程类似于 EXACTMATCH ,首先计算连续较长的后缀矩阵。如果矩阵中没有搜索到相应的reads,则算法会选择一个已经匹配的查询位置,替换一个不同碱基,再次进行匹配。EXACTMATCH搜索从被替换位置之后开始,这样就可以比对就可以允许一定的错配。backtracking 过程发生在堆栈结构的上下文中,当有替换产生时,堆栈的结构会增长;当所有结果都不匹配时,堆栈结构会收缩。
Bowite 软件的搜索算法是比较贪婪的,Bowite软件会报出遇到的第一个有效比对,并不一定是在错配数目和变异质量上的“最佳比对”。没有查询最优比对的原因是寻找“最佳比对”会比现有的模型慢2-3倍。而在重测序项目上,速度是更重要的因素。Bowite 也设置了可以输出多个比对位置(-k)和所有比对位置(-a)的参数,添加这些参数后,比对速度会显着变慢。

目前的比对软件会有过度回溯的情况,在reads的3‘端花费大量无用时间去回溯。Bowite利用‘double indexing’技术减少了过度回溯的发生。简单来说就是对正向参考基因组进行BWT转换,称为 ‘Forward index’,同时对反向(注意不是互补配对序列,是反向序列)参考基因组也进行BWT转换,称为‘Mirror index’。 当只允许一个错配时,比对根据reads是前半段出现错配,还是后半段出现错配会有两种情况:(1)Phase1 将Forward index 加载入内存,不允许查询reads右半段出现错配;(2)Phase2 将Mirror index 加载如内存,不允许查询序列的反向reads右半段(原查询序列的左半端) 出现错配。这样可以避免过度回溯,提高比比对的灵敏度。 但是,如果比对软件允许一个reads有多个错配时,仍然会有过度回溯的现象发生,为了减少过度回溯现象的发生,这里将回溯的上限进行了限定(默认值为:125次)。

Bowite 允许使用者在高质量reads的末端(默认是28bp)设置错配数目(默认的错配数目是2)。高质量reads末端的28bp序列被称为 '种子' 序列。这个‘种子’序列又可分为两等份:14bp的高质量末端称为 ‘hi-half’(通常位于5‘端),14bp的低质量末端称为‘lo-half’。 如果种子序列只允许2bp 的错配,比对会出现4 种情况:(1)种子序列中没有错配(case1);(2)hi-half区域没有错配,lo-half区域有一个或两个错配(case2);(3)lo-half区域没有错配,hi-half区域有一个或两个错配(case3);(4)lo-half区域有一个错配,hi-half区域有一个错配(case4);
在所有情况下,reads的非种子部分允许任意数目的错配。如图3所示,Bowite 算法会根据上面4 种情况交替变化‘Forward index’和‘Mirror index’比对策略,主要会有三种比对策略。

Bowite 建立一次参考基因组索引后,后续的比对可反复使用该索引。表1和表2列出了在默认参数条件下,Bowite、SOAP、Maq软件性能的比较。在reads比对率相近的条件下,Bowite软件的比对速度速度相对于SOAP、Maq软件有较大的提升。

1、将reads 比对至人参考基因组上,Bowite相对于SOAP和Maq软件有较大的优势。它运行的内存非常小(1.2GB),在相同灵敏度下,速度有了较大的提升。
2、Bowite 软件建立一次参考基因组索引后,后续的比对可反复使用该索引。
3、Bowite 速度快、内存占用小、灵敏度高主要是因为使用了BWT算法构建索引、利用回溯算法允许错配、采用Double index策略避免过度回溯。
4、Bowite 软件目前并不支持插入、缺失比对,这个是今后需要努力的方向。

[1] Langmead B . Ultrafast and memory-efficient alignment of short DNA sequences to the human genome[J]. Genome biology, 2009, 10(3):R25.
[2] BWT 推算过程参考博客 https://blog.csdn.net/stormlovetao/article/details/7048481
[3] FM index 精确查匹配过程参考文章 https://zhuanlan.hu.com/p/158901556

热点内容
三星手机初始密码是多少啊 发布:2025-07-10 18:10:49 浏览:775
固定服务器的地址 发布:2025-07-10 17:59:10 浏览:53
数据库堆表 发布:2025-07-10 17:57:17 浏览:164
服务器一般要求配置动态ip地址 发布:2025-07-10 17:46:17 浏览:444
主机什么配置可以玩原神 发布:2025-07-10 17:45:23 浏览:744
java学习平台 发布:2025-07-10 17:35:51 浏览:800
服务器的出生点如何造好看 发布:2025-07-10 17:30:50 浏览:542
xp系统移动硬盘加密 发布:2025-07-10 17:27:20 浏览:887
付费加群源码 发布:2025-07-10 17:27:13 浏览:214
php工程师考试 发布:2025-07-10 17:25:24 浏览:433