🧬 序列比对:算法实现与详解

本页提供 互动演示页 所用算法的完整 JavaScript 实现、核心递推讲解、10 组对照测试用例,以及自定义序列实验室。

源码文件:biology/lib/sequence-alignment-core.js

1. Needleman-Wunsch(全局比对 · 线性 gap)

构建 (m+1)×(n+1) 矩阵 H,H[i,j] 表示 A 前 i 个字符与 B 前 j 个字符的最优得分。边界行/列累加 gap 罚分,然后从 H[m,n] 回溯。

核心递推(三选一取 max)

H[i,j] = max( H[i−1,j−1]+s(Ai,Bj),   H[i−1,j]+gap,   H[i,j−1]+gap )

// needlemanWunschLinear — 摘自 sequence-alignment-core.js
for (let i = 1; i <= m; i++) {
  for (let j = 1; j <= n; j++) {
    const diag = H[i-1][j-1] + scorer.score(a[i-1], b[j-1]);
    const up   = H[i-1][j] + gap;
    const left = H[i][j-1] + gap;
    H[i][j] = Math.max(diag, up, left);
    trace[i][j] = [diag, up, left].indexOf(H[i][j]); // 0=对角 1=上 2=左
  }
}

回溯:从 (m,n) 沿 trace 走向 (0,0)。trace=0 对齐两字符;1 在 B 上插 gap;2 在 A 上插 gap。

2. Smith-Waterman(局部比对)

与 NW 相同的三种来源,但每项再与 0 取 max,使低分区域「截断」。矩阵全局最大值处开始回溯,直到遇到 0 停止。

const val = Math.max(0, diag, up, left);
H[i][j] = val;
if (val > maxScore) { maxScore = val; maxI = i; maxJ = j; }
// 回溯起点:(maxI, maxJ),遇 H[i][j]===0 停止

典型场景:在长基因组/蛋白质中搜索短 motif;全局 NW 会被迫对齐无关前缀,得分被拉低。

3. Gotoh 仿射 gap(三矩阵 M / Ix / Iy)

  • M[i,j]:A[i] 与 B[j] 对齐(match/mismatch)
  • Ix[i,j]:A[i] 对 gap(A 上 opening/extend indel)
  • Iy[i,j]:B[j] 对 gap

长 indel 只付一次 open + (k−1)×extend,比线性 gap 的 k×gap 更符合生物学。SW 版本在每个矩阵单元同样 max(0,·)

4. 打分函数 createScorer

DNA 默认 match=+2、mismatch=−1;蛋白质可选 BLOSUM62 或按疏水/带电等分组的简化分。比对展示时 | 表示相同,: 表示 BLOSUM 保守替换。

为什么不能只看「比对得分」?

DP 得分 = 各列 match/mismatch/gap 罚分的累加,受打分矩阵、gap 参数、序列长度影响。两条不同长度的序列,或换了 BLOSUM/PAM 矩阵后,得分不能直接比较。应再计算与长度无关的百分比指标,必要时结合数据库搜索的统计显著性(E-value)。

核心指标(本页交互实验室自动计算)

一致性 Identity完全相同残基 / 有残基的对齐列数 × 100%。DNA 常用;蛋白同源判断的首要指标。
相似性 Similarity(完全相同 + 保守替换) / 对齐列数 × 100%。蛋白用 BLOSUM>0 或简化分组计为保守替换。
覆盖度 Coverage局部比对时,参与比对的 A(或 B)长度占原始序列的百分比。低覆盖 → 仅 motif 相似,非全序列同源。
Gap 比例含 gap 的对齐列 / 总对齐长度。过高说明 indel 多或 forced global 对齐。
单位残基得分比对得分 / 对齐残基数。在同一套参数下可粗略比较两条比对孰优。
得分效率实际得分 / 全 match 理论最高分 × 100%。反映「接近完美匹配」的程度。

经验阈值(仅供参考,非绝对标准)

DNAIdentity ≥90%:几乎相同(等位基因、PCR 克隆);75–90%:近缘或重复序列;<60%:通常远缘,需结合覆盖度与 E-value。
蛋白质Identity ≥30% 且覆盖 >70%:常提示同源;20–30%(Twilight zone):需更长对齐 + 结构/系统发育佐证;<20%:多为远缘或无关。
数据库搜索BLAST 报告 Bit score(可比)与 E-value(随机出现概率)。E < 0.01 通常认为显著; pairwise DP 教学演示可先用 Identity/Similarity,再送 BLAST 验证。

建议流程:① 最优比对 → ② 算 Identity/Similarity/Coverage → ③ 若需发表或数据库注释,用 NCBI BLAST 得 E-value 与 bit score。

自动化测试套件

覆盖完全匹配、错配、indel、局部 motif、仿射 gap、全错配、蛋白 BLOSUM、边界清洗等 10 种情况。点击运行可逐条验证实现是否与预期一致。

尚未运行

自定义序列比对

📥 哪里获取真实 DNA / 蛋白质序列?

在下列数据库检索基因或蛋白,下载 FASTA 格式后复制单链序列(仅字母,不含 > 标题行)粘贴到上方「序列 A / B」即可比对。教学演示建议选取 < 80 个字符的片段,否则矩阵会过大。

核酸(DNA / RNA)

蛋白质

💡 提示:两条序列分别填入 A、B;若下载的是完整 FASTA 文件,只取 > 标题行下面的一行字母。蛋白质比对请将「序列类型」选为蛋白质并启用 BLOSUM62。

sequence-alignment-core.js

加载中…