#bam #bioinformatics #genomic #htslib

bam-builder

A library for easily building BAMs for testing

5 releases (1 stable)

1.0.0 Sep 29, 2023
0.1.3 Jan 18, 2021
0.1.2 Jan 17, 2021
0.1.1 Jan 17, 2021
0.1.0 Jan 17, 2021

#322 in Biology

MIT license

37KB
654 lines

Rust API docs Crates.io

bam-builder

A library for easily building bams for testing.

Example

use bam_builder::{bam_order::BamSortOrder, BamBuilder};

fn main() {
    // Create a builder with all defaults except the read_len is 100
    let mut builder = BamBuilder::new(
        100,                    // default read length
        30,                     // default base quality
        "Pair".to_owned(),      // name of sample
        None,                   // optional read group id
        BamSortOrder::Unsorted, // how to sort reads when `.sort` is called
        None,                   // optional sequence dictionary
        None,                   // optional seed used for generating random bases
    );

    // Create a builder for read pair spec
    let records = builder
        .pair_builder()
        .contig(0)               // reads are mapped to tid 0
        .start1(0)               // start pos of read1
        .start2(200)             // start pos of read2
        .unmapped1(false)        // override default of unmapped
        .unmapped2(false)        // override default of unmapped
        .bases1("A".repeat(100)) // override default random bases with "A"s
        .bases2("C".repeat(100)) // override default random bases with "C"s
        .build()                 // inflate the underlying records and set mate info
        .unwrap();

    // Add the pair to bam builder
    builder.add_pair(records);

    // Write records to a file
    let tmp_file = builder.to_tmp().unwrap();
}

Attributions

This library is more a less a direct clone of fgbio's SamBuilder, mixed in with some helper methods from htsjdk.

Dependencies

~13–24MB
~398K SLoC