第二章 数据搜索与两两比对 本章描述了 如何比对两条或多条相关核苷酸或多肽序列, 如何搜索存储序列信息的数据库。 通过比对得到预测蛋白质、新基因结构和功能以及基因间、蛋白质间乃至物种之间进化关系的重要信息。
2.1 点阵图 评估两条序列相似度最简单的方法之一是利用点阵图。 第一条被比较的序列排列在点阵图空间的横轴,第二条序列则排列在纵轴。点阵空间中两条序列中的残基相同时,在对应的位点上画上圆点,两条序列间连续相同的区域在图中会形成由圆点组成的上斜线。
具有连续相似区域的两条DNA序列的简单点阵图 2018/12/4 具有连续相似区域的两条DNA序列的简单点阵图
滑动窗口技术 使用滑动窗口代替一次一个位点的比较是解决这 个问题的有效方法。 2018/12/4 滑动窗口技术 使用滑动窗口代替一次一个位点的比较是解决这 个问题的有效方法。 假设窗口大小为10,相似度阈值为8,则每次比较取10个连续的字符,如相同的字符超过8个,则标记 基于滑动窗口的点矩阵方法可以明显地降低点阵图的噪声,并且明确无误的指示出了两条序列间具有显著相似性的区域。
2018/12/4 (a) (b) (a)对人类(Homo sapiens)与黑猩猩(Pongo pygmaeus)的β球蛋白基因序列进行比较的完整点阵图。(b)利用滑动窗口对以上的两种球蛋白基因序列进行比较的点阵图,其中窗口大小为10个核苷酸,相似度阈值为8。
2.2 简单比对 比对就是两条序列字符间简单的两两匹配。比对可以反映出两条或多条同源序列间的进化关系. 最简单的情况下即不考虑空位,当两条序列对比时,要做的仅是为较短的序列选择比对的起始点。
AATCTATA和AAGATA 仅有三种比对方式 考虑这样的两条核苷酸序列: AATCTATA和AAGATA 仅有三种比对方式 不考虑空位的简单比对,它的打分函数是有对比奖励和罚分的和来决定 匹配得分:1 失配得分:0 上例中三个比对从左至右分别是 4、 1、 3
2.3 空位 两条或多条序列比对时,如果考虑到插入与删除时间发生地可能性,那么候选的比对数量就会大大增加,也就导致了比对的复杂性。上节中两条核苷酸序列,在不考虑空位时仅有三种比对,而较短的那条加入了两个空位后,变产生了28种不同的比对,例如: 等等……
2.3.1 简单空位罚分 三种空位比对的得分从左至右分别是1、3、3 对含有空位的比对打分时,空位罚分就必须包含到打分函数中,空位比对的简单打分公式如下: 例如:假设匹配得分为1,失配得分为0,空位罚分为-1 三种空位比对的得分从左至右分别是1、3、3
2.3.2 起始罚分与长度罚分 使用简单空位罚分对两条序列进行比对时,经常能找到若干同格式最优的比对。进一步区分这些比对的方法是找出哪些比对包含较多的不连续空位,哪些包含较少长度较长的空位片段。
插入/删除事件 假设两条序列长度分别是12和9 假设这两条序列是真正的同源序列,那么它们之间长度的差异可以解释为 (1)较长的序列有核苷酸的插入,或者 (2) 较短的序列发生了核苷酸的删除,或者(3) 两者都发生了。 在不知道原始父辈序列的情况下,无法判断导致空位的原因是由于一条序列的插入事件还是另一条的删除事件,通常把这类事件称为插入/删除事件。
空位罚分 多联核苷酸的插入删除事件相对于单个核苷酸来说会较经常发生。 统计结果表明,两条序列长度上的差异更可能是单个三联核苷酸的插入删除事件导致的,而多个不连续核苷酸插入删除事件的可能性比较小。 空位罚分 由序列中产生的新空位串引起的起始罚分和根据缺少的字符数而定的长度罚分。预设长度罚分小于起始罚分,以此建立的打分函数便能奖励空位连在一起的比对。
假设起始罚分为-2,长度罚分为-1,匹配得分为+1,失配得分为0,则对于 这三个比对,从左至右比对的得分分别是 -3,-1,+1 在后两种比对在使用简单空位罚分时,最后得分都是+3,现在却得到了不同的分数。
2.4打分矩阵 正如空位罚分可以奖励与进化相关的的比对,失配罚分也可以用来进一步区分相似比对。 统计结果表明,两条同源的序列比对时,某些替换比其他替换常见的多。 例: 两条蛋白质序列,其中一条在某一个位置上是丙氨酸,如果该位点被替换成另一个较小的且疏水的氨基酸,比如缬氨酸对蛋白质的影响很小,如果被替换成较大且带电的残基,比如赖氨酸,那么对蛋白质的影响可能就会非常大。直观的讲,比较保守的替换比随机替换更可能维持蛋白质的功能,更不容易被淘汰,因此在打分上更倾向于丙氨酸而不是赖氨酸。
打分矩阵(Scoring Matrix) 核酸打分矩阵设DNA序列所用的字母表为 = { A,C,G,T } a. 单位矩阵 b. BLAST矩阵 c. 转换-颠换矩阵(transition,transversion) (嘌呤:腺嘌呤A,鸟嘌呤G;嘧啶:胞嘧啶C,胸腺嘧啶T) 单位矩阵 BLAST矩阵 转换-颠换矩阵 A T C G 1 A T C G 5 -4 A T C G 1 -5 -1
PAM矩阵(Point Accepted Mutation) 基于进化的点突变模型 相对突变率仅仅是某种氨基酸 被其他任意氨基酸替换的次数 例如:ma是指丙氨酸与非丙氨酸残基比对的次数,Ma为概率 然而我们针对每个氨基酸对i 和j,计算氨基酸j 被氨基酸i 替换的次数 Aij 例如:Acm 是被比对序列中,甲硫氨酸被半胱氨酸替换的次数 以Aij除以ma 利用每个氨基酸出现的频度对起进行标准化,得到PAM-1矩阵中的元素Rij
式①中Mab为任意氨基酸b替代a的概率 式②中pa为氨基酸a未被替换的概率
100个残基发生一次替换的PAM-1矩阵
针对不同的进化距离采用PAM 矩阵 PAM250 → 14% - 27% 序列相似度 = 40% 50% 60% | | | 序列相似度 = 40% 50% 60% | | | 打分矩阵 = PAM120 PAM80 PAM 60 PAM250 → 14% - 27%
2.5 动态规划: Needleman 和 Wunsch 算法 一旦选定了序列比对打分的方法,就可以为寻找最佳比对设计算法了。 最显而易见的方法就是对每个可能的比对进行穷举搜索,但这一般是不可行的。 我们可以用动态规划解决这个问题,即把一个问题分解成计算量合理的子问题,并使用这些子问题的结果来计算最终答案。 S. Needleman与C. Wunsch首次运用动态规划方法来进行序列分析。
假设两条序列:CACGA和CGA,使用统一的空位和失配罚分 则:1、给第一条序列加一个空位 2、给第二条序列加一个空位 3、两条序列都不加空位
(匹配得分为1,失配得分为0,空位罚分为-1) 第一位点 得分 待对比的剩余序列 C +1 ACGA GA - -1 CACGA CGA 如果知道了ACGA与GA最佳比对的得分,就可以立即计算出表中第一行的得分。同样地,如果知道了表中第二、第三行剩余序列的最佳比对的得分,就可以计算出起始位点的不同的三种比对得分。 动态规划算法通过计算部分序列比对得分并填入一个表格,直到整个序列比对被计算出来, 由此得到最优比对。
动态规划 比对ACAGTAG与ACTCG 空位罚分为 -1 A C T C G 匹配奖励为 +1 失配得分为 0 ACAGTAG -1 -2 -3 -4 -5 -6 -7 A C T C G ACAGTAG 用空位罚分的倍数对表格第一行与第一列进行初始化
填充表格 横向移动 A C T C G ACAGTAG 表格中横向移动表示在纵轴序列中加入一个空位 纵向移动表示在横轴序列中加入一个空位 -1 -2 -3 -4 -5 -6 -7 A C T C G ACAGTAG 表格中横向移动表示在纵轴序列中加入一个空位 纵向移动表示在横轴序列中加入一个空位 斜对角向移动表示两序列各自相应的核苷酸进行了比对 纵向移动 斜对角向移动
-2 1 -2 -1-1=-2,表示在横向序列中插入一个空位,然后与纵向序列中的A比较,空位罚分-1。 -1 -2 -3 -4 -5 -6 -7 A C T C G ACAGTAG 1 -1-1=-2,表示在纵向序列中插入一个空位,然后与横向序列中的A比较,空位罚分-1。 -2
-1 -3 1-1=0,表示在横向序列中插入一个空位,然后与纵向序列中的C比较,空位罚分-1。 -1 -1+0=-1,表示横向序列的A与纵向序列的C进行比较,失配得分0。 -1 -2 -3 -4 -5 -6 -7 A C T C G ACAGTAG 1 -2-1=-3,表示在纵向序列中插入一个空位,然后与横向序列中的A比较,空位罚分-1。 -3
-1 -3 -2-1=-3,表示在横向序列中插入一个空位,然后与纵向序列中的A比较,空位罚分-1。 -1+0=-1,表示横向序列的C与纵向序列的A进行比较,失配得分0。 -1 -2 -3 -4 -5 -6 -7 A C T C G ACAGTAG 1 1-1=0,表示在纵向序列中插入一个空位,然后与横向序列中的C比较,空位罚分-1。
2 -1 -1 0-1=-1,表示在横向序列中插入一个空位,然后与纵向序列中的C比较,空位罚分-1。 1+1=2,表示横向序列的C与纵向序列的C进行比较,匹配奖励1。 -1 -2 -3 -4 -5 -6 -7 A C T C G ACAGTAG 1 2 0-1=-1,表示在纵向序列中插入一个空位,然后与横向序列中的C比较,空位罚分-1。 ● ● ● ● -1
动态规划 A C T C G ACAGTAG 为了利用打分表重建比对, 需要找出一条由表格中最右下角到最左上角的路径! -1 -2 -3 -1 -2 -3 -4 -5 1 2 -6 -7 A C T C G ACAGTAG 为了利用打分表重建比对, 需要找出一条由表格中最右下角到最左上角的路径!
途中箭头指示了部分打分表中的合法路径,每条路径代表若干等价最优比对 路径自右下至左上排列自来分别是↖ ↖ ↖ ↑ ↑ ↖ ↖ 根据这条线路,可以重建比对,可以得到以下这个得分为2的最优比对 -1 -2 -3 -4 -5 1 2 -6 -7 A C T C G ACAGTAG
2.6 全局对比与局部比对 2.6.1 准全部比对 到目前为止,所有讨论的基本比对算法仅是做了全局比对。而比对两序列时,这并不总是可取的。假如从AAACACGTGTCT中搜寻段序列ACGT。在若干种两序列比对中,我们需要的是区别对待末端空位与序列内部空位 这种比对称为准全局比对 (semiglobal alignment)
准全局比对 Needleman 和 Wunsch 算法的改进 (准全局比对) (1) 通过初始化部分打分表,表格第一行与第一列为零; (2) 允许表格最后一行与一列横向与纵向的移动不被罚分;
2.6.2 Smith-Waterman算法 准全局比对有时有点不能为序列搜索提供所需的适应性 需要进行局部比对 例如:两条序列 AACCTATAGCT 和 GCGATATA,用准全局比对算法,空位罚分为-1, 匹配奖励为+1,失配得分为-1,得:
AACCTATAGCT GCGATATA A A C C T A T A G C T 局部比对时,表中小于零的位置用零代替
2.6.2 Smith-Waterman算法 局部比对 1981年,由F. Smith 和 M. Waterman首次提出; 动态规划方法通过较少的改动便可以用来识别匹配的子序列, 并且忽略匹配区域之前或之后的失配和空位; 局部比对时,表中小于零的位置用零代替; 得到的局部比对代表了被比两条序列间的最佳的匹配子序列; 局部比对方法可以识别子序列的匹配,而这是全局与准全局比对不可能做到的。
2.7数据库搜索 尽管序列比对是比较两条已知序列的极为重要的工具,然而序列比对的更为常见的用途是用来搜索大量序列的数据库,以找到与特定序列相似的那些序列。 在数据库搜索过程中,由于被搜索序列很长,而且数量巨大,用简单而直接的方法将数据库中的每条序列与查询序列进行比对并返回得分最高的序列难以奏效。作为替代方法,各种索引方法与启发方式被用来加快搜索的过程,虽然不能保证与查询序列比对的最好的,但是能返回大部分与查询序列比对较好的,而且这些方法的效率很高。
2.7.1 BLAST及其家族 序列数据库搜索最著名且常用的工具之一是BLAST算法,原始的BLAST算法是通过搜索序列数据库来找出最优的空间局部比对。 BLASTP是BLAST算法的一种变种 为了有效地搜索大型数据库,BLASTP首先将查询序列打碎成一个个单词,查询序中所有可能的单词是通过查询序列上滑动与单词等长的窗口来得到的。 除了BLASTP,还有BLASTN和BLASTX等等….
BLASTP搜索算法概述
2.7.2 FASTA及其相关算法 FASTA算法及家族成员能够进行序列间含空位的局部比对。 FASTA搜索非常细致,需要时间也长的多。
对于氨基酸序列FAMLGFIKYLPGCM,假设单词长度为1,那么: 目标序列TGFIKYLPGACT,那么 对照表格发现,甘氨酸( G )在第一个表中位置为5、12,在第二个表中为 -4、3,再观察其它出现了很多距离为3的情况,这一现象暗示了一个可能的合理比对。 通过两条序列的偏移表,即可发现相同的区域。 单词 A C D E F G H I K L M N P Q R S T V W Y 位置 2 13 1 5 7 8 4 3 11 9 6 12 10 14 1 2 3 4 5 6 7 8 9 10 11 12 T G F I K Y L P A C -2 -3 -4 -8
2.7.3 数据库搜索的比对得分与统计显著性 数据库搜索引擎一般都为每个搜索结果提供P得分和E得分 加入搜索结果的比对得分为S,那么P和E得分指的是用于随机找出的一条或多条序列,比对得分大于等于S的可能性。 P与E的值比较低说明该结果与查询序列具有进化上的关系。
2.8 多重序列比对 (multiple sequence alignment) 到目前为止,所讨论的比对算法都是为进行序列两两比较而设计的,然而同时比对多条序列也是很重要的。当统计一组序列的替换率时,多重序列比对通常比两两比对更合适,因为多重比对尽可能地多考虑到了序列中的空位。 多重比对对于打分矩阵的建立也很重要,比如本章前面讨论的PAM与BLOSUM矩阵。
但是由于随着比对序列数量的增大,多重比对算法的复杂度呈指数级增加,就算是使用超级计算机或者工作站的分布式网络,要对20条以上具有一般长度与复杂度的序列进行比对,仍是非常棘手的问题。 因此,利用启发式的比对方法被提出来,这类方法不能保证产生一个最优比对,但是能找出一个近似最优的比对。
本章总结 两条或多条基因或氨基酸序列间的比对代表着一个有关这些序列从共同祖先开始的进化路径的假设。尽管真正的进化路径无法被明确无误的推断出,但序列比对算法可以识别随机发生率很低的那些比对,多种技术可以用来左右打分函数,例如PAM与BLOSUM。 Needleman与 Wunsch首先提出的全局比对算法以及Smith与Waterman 提出的局部比对算法已经成为了众多数据库搜索算法的基础,包括 BLASTX 等工具。 这些算法利用了索引、启发式和快速比较等技术,使得整个数据库中的序列能与查询序列在很短的时间内完成。
在图纸上绘出以下两条序列的简单点阵图。将序列沿各自坐标轴放置,为每个相同核苷酸对在图上画上圆点: 课堂练习 P47:2.2 在图纸上绘出以下两条序列的简单点阵图。将序列沿各自坐标轴放置,为每个相同核苷酸对在图上画上圆点: GCTAGTCAGATCTGACGCTA GATGGTCACATCTGCCGC 标明点阵图上的相似区域
课后作业 P48: 2.3 2.4 2.5 2.6