标题：序列比对
双序列比对
序列比对的理论基础是进化学说，如果两个序列之间具有足够的相似性，就推测二者可能有共同的进化祖先，经过序列内残基的替换、残基或序列片段的缺失、以及序列重组等遗传变异过程分别演化而来。序列相似和序列同源是不同的概念，序列之间的相似程度是可以量化的参数，而序列是否同源需要有进化事实的验证。在残基－残基比对中，可以明显看到序列中某些氨基酸残基比其它位置上的残基更保守，这些信息揭示了这些保守位点上的残基对蛋白质的结构和功能是至关重要的，例如它们可能是酶的活性位点残基，形成二硫键的半胱氨酸残基，与配体结合部位的残基，与金属离子结合的残基，形成特定结构motif的残基等等。但并不是所有保守的残基都一定是结构功能重要的，可能它们只是由于历史的原因被保留下来，而不是由于进化压力而保留下来。因此，如果两个序列有显著的保守性，要确定二者具有共同的进化历史，进而认为二者有近似的结构和功能还需要更多实验和信息的支持。通过大量实验和序列比对的分析，一般认为蛋白质的结构和功能比序列具有更大的保守性，因此粗略的说，如果序列之间的相似性超过30%，它们就很可能是同源的。
在进行序列两两比对时，有两方面问题直接影响相似性分值：取代矩阵和空位罚分。粗糙的比对方法仅仅用相同/不同来描述两个残基的关系，显然这种方法无法描述残基取代对结构和功能的不同影响效果，缬氨酸对异亮氨酸的取代与谷氨酸对异亮氨酸的取代应该给予不同的打分。因此如果用一个取代矩阵来描述氨基酸残基两两取代的分值会大大提高比对的敏感性和生物学意义。虽然针对不同的研究目标和对象应该构建适宜的取代矩阵，但国际上常用的取代矩阵有PAM和BLOSUM等，它们来源于不同的构建方法和不同的参数选择，包括PAM250、BLOSUM62、BLOSUM90、BLOSUM30等。对于不同的对象可以采用不同的取代矩阵以获得更多信息，例如对同源性较高的序列可以采用BLOSUM90矩阵，而对同源性较低的序列可采用BLOSUM30矩阵。
空位罚分是为了补偿插入和缺失对序列相似性的影响，由于没有什么合适的理论模型能很好地描述空位问题，因此空位罚分缺乏理论依据而更多的带有主观特色。一般的处理方法是用两个罚分值，一个对插入的第一个空位罚分，如10－15；另一个对空位的延伸罚分，如1－2。对于具体的比对问题，采用不同的罚分方法会取得不同的效果。
对于比对计算产生的分值，到底多大才能说明两个序列是同源的，对此有统计学方法加以说明，主要的思想是把具有相同长度的随机序列进行比对，把分值与最初的比对分值相比，看看比对结果是否具有显著性。相关的参数E代表随机比对分值不低于实际比对分值的概率。对于严格的比对，必须E值低于一定阈值才能说明比对的结果具有足够的统计学显著性，这样就排除了由于偶然的因素产生高比对得分的可能。
全局比对
全局比对是指将参与比对的两条序列里面的所有字符进行比对。 全局比对主要被用来寻找关系密切的序列。由于这些序列也都很易通过本地比对方法找到，现在全局比对也有些被认为只是一种技巧。另外，全局比对在应用于分子进化时也有些问题（比如domain shuffling -见下)，这也限制了这种方法的可用性。
局部比对
1981年，由F. Smith 和 M.Waterman首次提出局部比对算法，动态规划方法通过较少的改动便可以用来识别匹配的子序列， 并且忽略匹配区域之前或之后的失配和空位;局部比对时，表中小于零的位置用零代替。主要用来考察两序列的某些特殊片段。
局部比对算法的运算过程
全局比对是从头到尾全程比较，考虑序列的整体相似性。全局多序列比对可以鉴别或证明新序列与已有序列家族的同源性；帮助预测新蛋白质序列的二级和三级结构；是进行分子进化分析的重要前提。局部比对考虑序列部分区域的相似性。局部比对的生物学基础是：蛋白质功能位点由较短的序列片断组成，尽管在序列的其它部位可能有插入、删除或突变，但是这些序列片断具有相当大的保守性。此时，局部比对往往比全局比对具有更高的灵敏度，其结果更具有生物意义。局部多序列比对可以用来刻画蛋白质家族和超家族。
序列比对的重要性
生物信息学的研究重点主要体现在基因组学和蛋白质学两方面,具体地说就是从核酸和蛋白质序列出发, 分析序列中表达结构和功能的生物信息。生物信息学的基本任务是对各种生物分析序列进行分析, 也就是研究新的计算机方法, 从大量的序列信息中获取基因结构、功能和进化等知识。而在序列分析中, 将未知序列同已知序列进行相似性比较是一种强有力的研究手段,从序列的片段测定, 拼接, 基因的表达分析, 到RNA和蛋白质的结构功能预测。物种亲缘树的构建都需要进行生物分子序列的相似性比较。生物信息学中的序列比对算法的研究具有非常重要的理论意义和实践意义。
多序列比对
[1]为了便于描述，我们对多序列比对过程给出下面的定义。把多序列比对看作一张二维表，表中每一行代表一个序列，每一列代表一个残基的位置。将序列依照下列规则填入表中：（a）一个序列所有残基的相对位置保持不变；（b）将不同序列间相同或相似的残基放入同一列，即尽可能将序列间相同或相似残基上下对齐（表1）。我们称比对前序列中残基的位置为绝对位置。如序列Ⅰ的第3位的残基是甘氨酸G，则绝对位置Ⅰ3就是甘氨酸，而不能变成任何其它氨基酸。相应地，我们称比对后序列中残基的位置为相对位置。显然，同一列中所有残基的相对位置相同，而每个残基的绝对位置不同，因为它们来自不同的序列。需要说明的是，绝对位置是序列本身固有的属性，或者说是比对前的位置，而相对位置则是经过比对后的位置，也就比对过程赋予它的属性。
表1 多序列比对的定义,表示五个短序列（I-V）的比对结果。通过插入空位，使5个序列中大多数相同或相似残基放入同一列，并保持每个序列残基顺序不变。
多序列比较对的算法复杂性
多序列比对的计算量相当可观，因此有必要分析以下技术的复杂性。双序列比对所需要的计算时间和内存空间与这两个序列的长度有关，或者说正比于这两个序列长度的乘积，用O（m1m2）表示。其中m1、m2是指两条序列的长度。三序列比对则可以理解为将双序列比对的两维空间扩展到三维，即在原有二维平面上增加一条坐标轴。这样算法复杂性就变成了O（m1m2m3），其中m3表示第三条序列的长度。
随着序列数量的增加，算法复杂性也不断增加。我们用O（m1m2m3…mn）表示对n个序列进行比对时的算法复杂性，其中mn是最后一条序列的长度。若序列长度相差不大，则可简化成O（mn），其中n表示序列的数目，m表示序列的长度。显然，随着序列数量的增加，序列比对的算法复杂性按指数规律增长。
降低算法复杂性，是研究多序列比对的一个重要方面。为此，产生了不少很有实用意义的多序列比对算法。这些方法的特点是利用启发式（heuristics）算法降低算法复杂性，以获得一个较为满意但并不一定是最优的比对结果，用来找出子序列、构建进化树、查找保守序列或序列模板，以及进行聚类（clustering）分析等。有的算法将动态规划和启发性算法结合起来。例如，对所有的序列进行两两比对，将所有的序列与某个特定的序列进行比对，根据某种给定的亲源树进行分组比对，等等。必须指出，上述方法求得的结果通常不是最优解，至少需要经过n-1次双序列比对，其中n为参与比对的序列个数。
多序列比对方法
下面介绍比对采用的几种常用方法。
手工比对方法
手工比对方法在文献中经常看到。因为难免加入一些主观因素，手工比对通常被认为有很大的随意性。其实，即使用计算机程序进行自动比对，所得结果中的片面性也不能予以忽视。在运行经过测试并具有比较高的可信度的计算机程序基础上，结合实验结果或文献资料，对多序列比对结果进行手工修饰，应该说是非常必要的。
多序列比对的软件已经有许多，其中一些带有编辑程序。最好的办法是将自动比对程序和编辑器整合在一起。为了便于进行交互式手工比对，通常使用不同颜色表示具有不同特性的残基，以帮助判别序列之间的相似性。颜色的选择十分重要，如果使用不当，看起来不很直观，就会使比对结果中一些有用的信息丢失。相反，如果选择得当，就能从序列比对结果中迅速找到某些重要的结构模式和功能位点。例如，如果用某种颜色表示一组高度保守的残基，则某个序列的某一位点发生突变时，则由于颜色不同，就可以很快找出。颜色的选择可以根据主观愿望和喜好，但最好和常规方法一致。用来构筑三维模型的按时氨基酸残基组件和三维分子图形软件所用的颜色分类方法，比较容易为大家接受（表2）。
表2 氨基酸分组方法和代表性颜色
* 表中采用的分组方法和用来区分不同组别的颜色与模型构件和三维图形软件中所用方法一致。
多序列比对程序的另一个重要用途是定量估计序列间的关系，并由此推断它们在进化中的亲缘关系。可以通过计算完全匹配的残基数目或计算完全匹配残基和相似残基的数目得到这种定量关系。这一方法除了可以大略了解序列间的亲缘关系外，也可用来评估比对质量。如果序列的相似性值低于预料值，那么有可能是序列间亲缘关系较远，也可能是比对中有错误之处。
现有的软件包用的基本上是可用鼠标点击的窗口界面，其中序列编辑器位于窗口中央。这样的软件包将在以后章节中详细介绍。
使用这些软件我们将会看到，那些长度相仿且相似性程度较高的序列，采用自动比对方法将会得到相当满意的结果；而当序列长度相差较大而相似性程度较低时，采用自动方法得出的结果则不很理想。此时，手工序列编辑器就接显得十分有用。通过手工调整，可使结果变得接近实际。此外，采用多种不同的方法进行分析，再将结果综合，是一种行之有效的方法。为更好地理解多序列比对的原理和规则，应该尽可能学会手工比对的方法，并把比对结果与计算机自动比对得到的结果加以比较。
同步法
同步法实质是把给定的所有序列同时进行比对，而不是两两比对或分组进行比对。其基本思想是将一个二维的动态规划矩阵扩展到三维或多维。矩阵的维数反映了参与比对的序列数。这类方法对于计算机的系统资源要求较高，通常是进行少量的较短的序列的比对。
步进法
这类方法中最常用的就是Clustal，它是由Feng和Doolittle于1987年提出的（Feng和Doolittle，1987）。由于对于实际的数据利用多维的动态规划矩阵来进行序列的比对不太现实，因此大多数实用的多序列比对程序采用启发式算法，以降低运算复杂度。Clustal的基本思想是基于相似序列通常具有进化相关性这一假设。比对过程中，先对所有的序列进行两两比对并计算它们的相似性分数值，然后根据相似性分数值将它们分成若干组，并在每组之间进行比对，计算相似性分数值。根据相似性分数值继续分组比对，直到得到最终比对结果。比对过程中，相似性程度较高的序列先进行比对，而距离较远的序列添加在后面。作为程序的一部分，Clusal可以输出用于构建进化树的数据。
Clustal程序有许多版本，ClustalW（Thompson等，1994），根据对亲缘关系较近的序列间空位情况，确定如何在亲缘关系较远的序列之间插入空位。同样，相似性较高的序列比对结果中的残基突变信息，可用于改变某个特殊位置空位罚分值的大小，推测该位点的序列变异性。
Clustal是免费软件，很容易从互联网上下载，和其它软件一起，广泛用于序列分析。Clustal所支持的数据格式包括EMBL/SWISSPROT、NBRF/PIR、Pearson/FastA、GCG/MSF，以及Clustal本身定义的格式。它的输出格式可以是Clustal格式，也可以是可用于GDE、 Phylip、GCG等软件的格式。
主条目：多重序列比对
多序列比对是成对比对的延伸，是为了在一次比对里面处理多于两条的的序列。多序列比对方法试图比对一个指定序列集合里面的所有序列，这可以帮助确定这些序列的共同区段。 进行多序列比对有几种方法，最常用的一种是Clustal程序集，它使用渐进多序列比对算法。Clustal在cladistics中被用来建立进化树，在PSI-BLAST和Hidden Markov model- (HMM-)中用来建立序列档案以在序列数据库中搜索更远的同源序列。
多序列比对编程实现困难。被归为NP难题的一种。
软件
这一方法利用一个预先计算的哈西表作为短序列的索引。给定一个被查询序列，将根据索引来查询子序列，从而减少查询次数和时间。提供一些参数将使该方法更快或更准确。检索到与检索序列匹配的模式后，需要进一步使用更加准确和深入的算法。
BLAST 利用成对的本地检索和许多其他方法来提高Smith-Waterman算法的速度。
FASTA
主条目：FASTA