Skip to main content

1.4.1 Filter repititive region

重复区域之所以会产生假阳性链,根本原因是:同一段 read 序列在基因组中有多个相似甚至完全相同的拷贝,导致种子命中多个位置,而这些位置在坐标关系上又可能表现出一致性,从而被 chaining 误认为是合理的候选路径。

可以分步理解:

1. 什么是重复区域?​

基因组里有很多重复序列,例如:

  • 转座子;
  • 串联重复;
  • 低复杂度区域;
  • 旁系同源区域;
  • 不同单倍型中的相似片段。

这些区域的特点是:同一段 DNA 序列,或者高度相似的序列,在基因组中出现了很多次。

在 pangenome graph 中,由于它包含多个单倍型,相似序列可能分布在不同的顶点或路径中。
所以同一个短串可能在很多地方出现。

2. 为什么重复区域会产生大量种子?​

Seeding 阶段,read 被切成 minimizer,然后去查索引。
如果 read 来自一个重复区域,那么它的 minimizer 会命中图中多个相似位置。

例如 read 有一段 ACGTACGT,而基因组里有 10 个拷贝都包含这个短串。
那么这一个 minimizer 就会产生 10 个 seed,分别落在不同的顶点或偏移上。

所以重复区域会导致:种子数量爆炸,且分布在多个位置。

3. 为什么这些种子能形成局部链?​

Linear Chaining 在同一个顶点内部,根据坐标一致性连接种子。
假设 read 来自重复区域,它的多个种子可能分别命中不同的重复拷贝。

在每个拷贝内部,这些种子在 read 上的相对位置和在图上的相对位置可能都保持相似。
因为重复拷贝之间序列高度相似,所以种子之间的对角线一致性可能偶然满足。

于是,在每一个拷贝对应的顶点内,都可能形成一条看起来合理的局部链。
也就是说:同一个 read 的种子,在不同重复拷贝中各自连成了一条局部链。

这些局部链就是“重复的”假阳性链——它们对应不同的重复拷贝,但都长得差不多。

4. Graph Chaining 为什么会把它们连成假阳性图链?​

Graph Chaining 要跨顶点连接局部链。
在重复区域,图结构可能提供多条可达路径:

  • 不同重复拷贝之间可能存在图上的连接;
  • 或者它们属于不同单倍型,但在图中通过变异泡相连;
  • 或者图索引本身就把相似区域建模成了多个分支。

Graph Chaining 计算局部链端点之间的最短路径时,可能会发现:

  • 来自拷贝 A 的局部链,和来自拷贝 B 的局部链,在图上是可以连通的;
  • 而且连接后的路径得分看起来还不错。

于是,它会把不同拷贝的局部链连接起来,形成多条候选图链。
但这些图链中,只有一条(或零条)是真正来自 read 的起源,其余都是假阳性。

所以:重复区域导致种子多命中 → 多个拷贝各自形成局部链 → Graph Chaining 跨拷贝连接 → 产生多条假阳性图链。

5. 为什么称为“重复的”假阳性链?​

因为:

  • 这些假阳性链对应的是基因组中的重复拷贝;
  • 它们之间序列高度相似,导致种子和链也高度相似;
  • 在图上表现为多条平行或分叉的路径;
  • 它们不是 read 的真实来源,只是因为重复序列的相似性被误连起来。

所以“重复”既指基因组序列的重复,也指这些假阳性链在候选集中反复出现、彼此相似。

6. Filtering 如何解决?​

Filtering 在 Graph Chaining 之后,利用:

  • 频率阈值:如果某个短串在图中出现次数太多,说明它来自重复区域,相关种子和链不可信;
  • 空间一致性检查:检查这些链在 query 和 graph 上的坐标关系是否真正一致,能否形成唯一合理的路径。

通过全局路径上下文,Filtering 可以识别出哪些链是重复区域造成的假阳性,并把它们剔除,只留下真正可信的候选路径交给 Alignment。

一句话总结​

重复区域因为序列在基因组中多次出现,导致同一个 read 的种子命中多个拷贝,并在不同拷贝中各自形成局部链;Graph Chaining 又可能把这些来自不同拷贝的局部链跨顶点连接起来,形成多条彼此相似的假阳性图链。Filtering 的任务就是根据频率和全局空间一致性,把这些重复造成的假阳性链去掉。