Skip to content

feat(io): bound coordinate-sort memory with an external merge - #214

Open
alejandrogzi wants to merge 2 commits into
scverse:mainfrom
alejandrogzi:pr/bam-coord-sort
Open

feat(io): bound coordinate-sort memory with an external merge#214
alejandrogzi wants to merge 2 commits into
scverse:mainfrom
alejandrogzi:pr/bam-coord-sort

Conversation

@alejandrogzi

Copy link
Copy Markdown

Makes --outSAMtype BAM SortedByCoordinate spill to disk instead of buffering the whole output in RAM.

  • Coordinate sort now fills a --limitBAMsortRAM buffer, spills sorted runs beside the output, and k-way merges them on finish; peak memory is flat in output size.
  • --limitBAMsortRAM 0 now means 512 MiB instead of unlimited; values above 0 spill above the limit rather than aborting.
  • Runs beyond 64 are merged in balanced passes so a small budget cannot exhaust file descriptors (EMFILE).
  • Output is byte-identical to the previous in-memory sort; coordinate ties keep input order (stable merge on run index), verified by a spill-vs-unbounded test.

Behavior change vs. before: the default bounded budget replaces the previous unlimited buffering.

Tests: cargo test --release green.

'--outSAMtype BAM SortedByCoordinate' no longer buffers the whole output
in RAM. The sort now fills a '--limitBAMsortRAM' buffer, spills sorted
runs beside the output, and k-way merges them on finish, so peak memory
is flat in output size. '--limitBAMsortRAM 0' now means 512 MiB instead
of unlimited, and runs beyond 64 are merged in balanced passes so a small
budget cannot exhaust file descriptors. Output is byte-identical to the
previous in-memory sort.
A low --limitBAMsortRAM must spill sorted runs to disk and merge them
into a BAM identical to the unbounded in-memory sort, leave no scratch
behind, and emit non-decreasing (chrom, pos) order.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant