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 之后,是因为:
- 需要图链提供的全局路径信息来做空间一致性检查;
- 避免过早过滤误删可能正确的种子;
- 候选数量已减少,过滤更高效;
- 为 Alignment 准备干净输入,提高整体流水线效率。
所以流程是:
Seeding → Linear Chaining → Graph Chaining → Filtering → Alignment
先构建候选路径,再根据全局一致性剔除重复区域的假种子,最后做精细比对。