  Sequence alignment data is often ordered by coordinate (id of the reference
sequence plus position on the sequence where the fragment was mapped) when
stored in BAM files, as this simplifies the extraction of variants between the
mapped data and the reference or of variants within the mapped data. In this
order paired reads are usually separated in the file, which complicates some
other applications like duplicate marking or conversion to the FastQ format
which require to access the full information of the pairs. In this paper we
introduce biobambam, an API for efficient BAM file reading supporting the
efficient collation of alignments by read name without performing a complete
resorting of the input file and some tools based on this API performing tasks
like marking duplicate reads and conversion to the FastQ format. In comparison
with previous approaches to problems involving the collation of alignments by
read name like the BAM to FastQ or duplication marking utilities in the Picard
suite the approach of biobambam can often perform an equivalent task more
efficiently in terms of the required main memory and run-time.
