Skip to content

比对流水线

1. 输入归一化

FASTA 与 FASTQ 输入统一映射到大写 DNA 字母。未知碱基映射为 N,内部字母表保留 $ 作为哨兵。

2. 正反向候选

每条 read 同时尝试正向与反向互补。若输出 FLAG 包含 0x10,SAM 中的 SEQ 为反向互补序列,QUAL 同步反转。

3. 种子与链

SMEM 种子经过 occurrence 过滤后进入链构建。链构建按 contig 分组,并保留有限数量高分链,避免重复序列造成候选爆炸。

4. 延伸与精修

每条链先转换为近似对齐,再尝试半全局精修。候选排序使用 raw score、soft-clip penalty、NM、contig、位置和方向做稳定 tie-break。

5. 输出控制

max_alignments_per_read 控制每条 read 输出的记录数。低于 score_threshold 的候选不输出;没有有效候选则输出 unmapped 记录。

6. SAM 辅助标签

  • AS:i: 当前 alignment score。
  • XS:i: 次优 alignment score。
  • NM:i: edit distance-like mismatch/indel count。
  • MD:Z: 参考侧 mismatch/deletion 描述。
  • SA:Z: chimeric/supplementary alignment 描述。

soft-clipped reads 的 MD:Z 生成使用与完整 CIGAR 坐标一致的 query slice,避免 soft clip 导致坐标错位。

MIT License. Inspired by BWA.