Skip to main content

1.4 Filter

Filtering 放在 Graph Chaining 之后,核心原因是:过滤需要图链阶段提供的全局路径上下文,才能准确判断哪些种子是重复区域产生的假阳性,同时避免过早误删正确种子。

具体可以从几个方面理解:

1. Filtering 的目标是去除重复区域的虚假种子​

论文 2.2 节对 Filtering 的描述是:

“Filtering removes spurious seeds from repetitive regions using frequency thresholds and spatial coherence checks.”

它用两类手段:

  • 频率阈值:某个短串在图中出现太多次,可能是重复序列,相关种子不可信;
  • 空间一致性检查:种子之间的位置关系是否在一条合理的路径上。

其中“空间一致性”如果只看局部种子,很难判断。
只有在 Graph Chaining 之后,才得到了跨顶点的候选路径,才能知道这些种子是否真的能连成一条可达的图路径。

2. Graph Chaining 提供了全局图拓扑信息​

Graph Chaining 阶段会:

  • 把同一顶点内的线性链跨顶点连接;
  • 计算链端点之间的最短路径;
  • 判断能否通过变异泡;
  • 输出若干候选的图路径。

这些信息让 Filtering 可以:

  • 检查种子是否落在一条实际可达的路径上;
  • 识别哪些区域是重复造成的分叉;
  • 根据路径得分、覆盖度、一致性来剔除不可信种子。

如果在 Graph Chaining 之前过滤,就缺少这些图拓扑信息,只能靠短串频率和局部坐标,容易误判。

3. 避免过早过滤误删正确种子​

重复区域的种子虽然多,但其中可能有一部分实际上属于正确的匹配。
如果只因为频率高就在 Seeding 或 Linear Chaining 后直接删掉,可能会丢失真正有用的种子。

等到 Graph Chaining 之后,这些种子已经参与了路径构建:

  • 如果它们能和其他种子形成一条合理、可达的路径,就可能是真的;
  • 如果它们只是孤立地大量出现,无法连成一致路径,才更可能是假阳性。

所以 Filtering 放在后面,相当于“先让图链把候选路径组织起来,再根据全局一致性做判决”。

4. 计算效率更高​

从 Seeding 到 Linear Chaining 再到 Graph Chaining,候选数量是逐级减少的:

  • Seeding 产生成千上万甚至上百万个种子;
  • Linear Chaining 把它们压缩成局部链;
  • Graph Chaining 再把局部链连接成少量图链。

如果在种子数量最多的阶段就做复杂过滤,开销很大。
等到 Graph Chaining 之后,输入已经大幅减少,过滤可以更高效地运行。

5. 为 Alignment 准备干净的候选路径​

Alignment 是碱基级精细比对,计算量大。
它不应该浪费在明显虚假的重复区域候选上。
Filtering 在 Graph Chaining 之后、Alignment 之前,正好起到“清洁”作用:

  • 输入:图链阶段产生的候选路径;
  • 输出:过滤后的高质量路径;
  • 交给 Alignment 做最终精细比对。

总结​

Filtering 放在 Graph Chaining 之后,是因为:

  1. 需要图链提供的全局路径信息来做空间一致性检查;
  2. 避免过早过滤误删可能正确的种子;
  3. 候选数量已减少,过滤更高效;
  4. 为 Alignment 准备干净输入,提高整体流水线效率。

所以流程是:
Seeding → Linear Chaining → Graph Chaining → Filtering → Alignment
先构建候选路径,再根据全局一致性剔除重复区域的假种子,最后做精细比对。