bam 0.1.3

Crate that allows to read and write BAM, SAM and BGZIP files, written completely in Rust.
Documentation
*bam* is a crate that allows to read and write BAM, SAM and BGZIP files, written completely in Rust.

## Why?

Having a crate written completely in Rust reduces the number of dependencies and compilation time.
Additionally, it removes the need to install additional C libraries.

Errors produced by this crate are more readable and easier to catch and fix on-the-fly.

## Overview

Currently, there are three readers and two writers:
* `bam::IndexedReader` - fetches records from
random genomic regions.
* `bam::BamReader` - reads a BAM file consecutively.
* `bam::SamReader` - reads a SAM file consecutively.
* `bam::BamWriter` - writes a BAM file.
* `bam::SamWriter` - writes a SAM file.

BAM readers and writers have single-thread and multi-thread modes.

You can construct pileups from all readers using `Pileup`.

You can use `bgzip` module to interact directly with bgzip files (BGZF).

The crate also allows to conviniently work with SAM/BAM `records`
and their fields, such as `CIGAR` or `tags`.

## Usage

The following code would load BAM file `in.bam` and its index `in.bam.bai`, take all records
from `3:600001-700000` and print them on the stdout.

```rust
extern crate bam;

use std::io;
use bam::RecordWriter;

fn main() {
    let mut reader = bam::IndexedReader::from_path("in.bam").unwrap();
    let output = io::BufWriter::new(io::stdout());
    let mut writer = bam::SamWriter::build()
        .write_header(false)
        .from_stream(output, reader.header().clone()).unwrap();

    for record in reader.fetch(&bam::Region::new(2, 600_000, 700_000)).unwrap() {
        let record = record.unwrap();
        writer.write(&record).unwrap();
    }
}
```

You can find more detailed usage [here](https://docs.rs/bam).

## Changelog
You can find changelog [here](https://gitlab.com/tprodanov/bam/-/releases).

## Issues
Please submit issues [here](https://gitlab.com/tprodanov/bam/issues) or send them to
`timofey.prodanov[at]gmail.com`.