Skip to main content

2.1.2 BSW Similarity Score

在 BSW 里,X(i)X(i)、Y(j)Y(j) 和 X(0,i)X(0,i)、Y(0,j)Y(0,j) 是两种不同粒度的东西:

  • X(i)X(i)、Y(j)Y(j) 是“单个碱基”;
  • X(0,i)X(0,i)、Y(0,j)Y(0,j) 是“前缀子串”。

论文里的 X(θ,i)X(\theta,i) 很可能是 OCR 把 X(0,i)X(0,i) 识别成了 θ\theta,所以可以按 X(0,i)X(0,i) 来理解。


1. 序列的定义​

论文中定义了两条序列:

Xm={x0,x1,…,xm−1}X_m = \{x_0, x_1, \ldots, x_{m-1}\} Yn={y0,y1,…,yn−1}Y_n = \{y_0, y_1, \ldots, y_{n-1}\}

这里 xix_i 表示序列 XX 中第 ii 个碱基,yjy_j 表示序列 YY 中第 jj 个碱基。

所以:

  • X(i)=xiX(i) = x_i:序列 XX 的第 ii 个碱基,例如 A、C、G、T;
  • Y(j)=yjY(j) = y_j:序列 YY 的第 jj 个碱基。

它们是单个字符,用于计算匹配或错配的得分。


2. X(0,i)X(0,i) 和 Y(0,j)Y(0,j) 是什么?​

X(0,i)X(0,i) 表示从第 0 个碱基到第 ii 个碱基组成的前缀子串:

X(0,i)=x0x1…xiX(0,i) = x_0 x_1 \ldots x_i

同理:

Y(0,j)=y0y1…yjY(0,j) = y_0 y_1 \ldots y_j

它们是一段序列,而不是单个碱基。

例如,如果:

X = A C G T

那么:

  • X(0)=AX(0) = A,X(1)=CX(1) = C,X(2)=GX(2) = G,X(3)=TX(3) = T;
  • X(0,2)=ACGX(0,2) = A C G;
  • X(0,3)=ACGTX(0,3) = A C G T。

3. 在 BSW 中分别起什么作用?​

论文说:

S is a similarity score between the base X(i)X(i) and Y(j)Y(j).

也就是说,S(X(i),Y(j))S(X(i), Y(j)) 是两个单个碱基之间的相似性得分。例如:

  • 如果 X(i)=Y(j)X(i) = Y(j),得分较高;
  • 如果不同,得分较低或为负。

论文又说:

H(i,j)H(i,j) refers to the similarity score for the substring X(0,i)X(0,i) and Y(0,j)Y(0,j).

也就是说,H(i,j)H(i,j) 是两个前缀子串之间的相似性得分。它是在比较 XX 的前 i+1i+1 个碱基和 YY 的前 j+1j+1 个碱基时,得到的最优局部比对得分。

所以关系是:

  • 单个碱基的匹配得分 S(X(i),Y(j))S(X(i), Y(j)) 是构建 H(i,j)H(i,j) 的基本单元;
  • H(i,j)H(i,j) 通过递推,把之前子串的得分 H(i−1,j−1)H(i-1,j-1) 和当前碱基得分 S(X(i),Y(j))S(X(i), Y(j)) 结合起来。

一个典型的 BSW 递推式是:

H(i,j)=max⁡{0, H(i−1,j−1)+S(X(i),Y(j)), E(i,j), F(i,j)}H(i,j) = \max \left\{ 0,\ H(i-1,j-1) + S(X(i), Y(j)),\ E(i,j),\ F(i,j) \right\}

这里:

  • H(i−1,j−1)H(i-1,j-1):更短前缀子串 X(0,i−1)X(0,i-1) 和 Y(0,j−1)Y(0,j-1) 的得分;
  • S(X(i),Y(j))S(X(i), Y(j)):当前两个碱基的匹配得分;
  • 两者相加,就得到扩展到当前碱基后的子串得分。

4. 一句话区分​

符号含义粒度
X(i)X(i)、Y(j)Y(j)第 ii 个、第 jj 个碱基单个字符
X(0,i)X(0,i)、Y(0,j)Y(0,j)从 0 到 ii、从 0 到 jj 的前缀子串一段序列
S(X(i),Y(j))S(X(i), Y(j))两个碱基的匹配/错配得分点对点
H(i,j)H(i,j)两个前缀子串的最优局部比对得分段对段

5. 直观理解​

可以把 BSW 想象成:

  • 每次只比较两个碱基:X(i)X(i) 和 Y(j)Y(j),用 SS 打分;
  • 但最终要回答的是:XX 的前 i+1i+1 个碱基和 YY 的前 j+1j+1 个碱基有多相似,这就是 H(i,j)H(i,j);
  • 所以 H(i,j)H(i,j) 是“累积结果”,S(X(i),Y(j))S(X(i),Y(j)) 是“当前一步的增量”。

总结:

X(i)X(i)、Y(j)Y(j) 是单个碱基,用来算匹配得分;X(0,i)X(0,i)、Y(0,j)Y(0,j) 是前缀子串,用来表示当前已经比对的序列范围。H(i,j)H(i,j) 就是这两个前缀子串之间的最优比对得分。