[][src]Crate vcf

Rust implementation of vcf parser/writer

Example

use vcf::{VCFReader, U8Vec, VCFHeaderFilterAlt, VCFError, VCFRecord};
use flate2::read::MultiGzDecoder;
use std::fs::File;
use std::io::BufReader;

fn main() -> Result<(), VCFError> {
    let mut reader = VCFReader::new(BufReader::new(MultiGzDecoder::new(File::open(
        "./testfiles/1kGP-subset.vcf.gz",
    )?)))?;

    // access FILTER contents
    assert_eq!(
        Some(VCFHeaderFilterAlt {
            id: b"PASS",
            description: b"All filters passed"
        }),
        reader.header().filter(b"PASS")
    );

    // access INFO contents
    assert_eq!(
        b"Stop position of the interval",
        reader.header().info(b"END").unwrap().description
    );

    // prepare VCFRecord object
    let mut vcf_record = VCFRecord::new(reader.header());

    // read one record
    reader.next_record(&mut vcf_record)?;

   // get record attributes
   assert_eq!(vcf_record.chromosome, b"13");
   assert_eq!(vcf_record.position, 32872836);
   assert_eq!(vcf_record.id, Vec::<U8Vec>::new());
   assert_eq!(vcf_record.reference, b"A");
   assert_eq!(vcf_record.alternative, vec![b"C"]);
   assert_eq!(vcf_record.qual, Some(495.23));
   assert_eq!(vcf_record.info(b"AC"), Some(&vec![b"1".to_vec()]));
   assert_eq!(
       vcf_record.genotype(b"SRP150637__HG00099", b"GT"),
       Some(&vec![b"0/0".to_vec()])
   );
   assert_eq!(
       vcf_record.genotype(b"SRP150637__HG00099", b"AD"),
       Some(&vec![b"31".to_vec(), b"0".to_vec()])
   );

    Ok(())
}

Structs

VCFError
VCFHeader

VCF header struct.

VCFHeaderFilterAlt
VCFHeaderInfoFormat
VCFHeaderLine

A header line.

VCFReader
VCFRecord
VCFWriter

Enums

Number

A number of entries of INFO or FORMAT.

VCFErrorKind
VCFHeaderContent

A content of header line.

VCFVersion
ValueType

An entry value type of INFO or FORMAT.

Type Definitions

U8Vec