chainfile 0.4.0

A crate for working with genomics chain files.
Documentation
use std::env;
use std::fs::File;
use std::io::BufReader;

use chainfile as chain;
use flate2::read::GzDecoder;
use omics::coordinate::interval::interbase::Interval;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let interval = env::args().nth(1).expect("missing interval");
    let src = env::args().nth(2).expect("missing src");

    let interval = interval.parse::<Interval>()?;

    let mut reader = File::open(src)
        .map(GzDecoder::new)
        .map(BufReader::new)
        .map(chain::Reader::new)?;

    for result in reader.sections() {
        let section = result?;
        let section_interval = section.reference_sequence().interval()?;

        if section_interval.contains_coordinate(interval.start())
            || section_interval.contains_coordinate(interval.end())
        {
            println!("{}", section.header());
        }
    }

    Ok(())
}