Skip to content

eschalign

All-vs-all alignment of reads to a small reference panel, built for tRNA (~150–200 references of ~150 nt). Every read is scored against every reference with an affine-gap DP on AVX2/AVX-512 inter-sequence SIMD kernels (or a CUDA kernel); the best reference wins, references that tie are reported as ties rather than hidden behind a MAPQ of 0, and MD/NM are what samtools calmd writes. It replaces bwa mem + samtools sort + samtools calmd for direct-RNA tRNA reads, keeping every input tag (mv, MM/ML, RG, …) byte for byte.

There is no seed index: memory is one batch of reads and runtime is reads × references × lengths, the same for every sample of the same size. The intended range is ≤ ~10 k references of ≤ ~1 kb. A 3.3 M-read dorado uBAM against a 164-reference panel aligns in about two minutes on 16 cores.

eschalign reads.ubam -r trna.fa -o aligned.bam

Where to go next

  • Installation: build from source, pixi environments.
  • Usage: every option, output semantics and examples.
  • GPU: CUDA panel scoring with --device.
  • Benchmarks: measurements carried over from escapepod-rs.
  • Development: build, test and Slurm rules, environment switches.
  • Changelog

eschalign was carved out of escapepod-rs 0.31.0, where it was escpod align; the history of the code is preserved. Released under the MIT license.