[][src]Crate vcf

Rust implementation of vcf parser/writer without strict validation.

Example

use vcf::*;
use flate2::read::MultiGzDecoder;
use std::fs::File;

let mut vcf_reader = VCFReader::new(MultiGzDecoder::new(
    File::open("testfiles/ALL.chr20.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.20-34001094-34168504-subset.vcf.gz")
        .map_err(|e| VCFParseError::IoError{error:e})?
))?;
assert_eq!(vcf_reader.header().items.len(), 255);
assert_eq!(vcf_reader.header().items[0],
    VCFHeaderLine{
        line: "##fileformat=VCFv4.1".to_string(),
        contents: VCFHeaderContent::FileFormat("VCFv4.1".to_string())
    });
assert_eq!(
    vcf_reader.header().samples,
    vec!["HG00096", "HG00097", "HG00099"]
);

// load next record
let record = vcf_reader.iter().next().unwrap()?;
assert_eq!(record.chromosome, "20");
assert_eq!(record.position, 34001111);
assert_eq!(record.id, vec!["rs565014200"]);
assert_eq!(record.reference, "T");
assert_eq!(record.alternative, vec!["C"]);
assert_eq!(record.quality, Some("100".to_string()));
assert_eq!(record.info["AN"], vec!["6"]); // vcf-rs does not validate a number of entries and type
assert_eq!(record.call["HG00096"]["GT"], vec!["0|0"]);

Structs

VCFHeader

VCF header struct.

VCFHeaderLine

A header line.

VCFReader

Read a VCF file from plain text.

VCFRecord

A VCF record structure.

VCFWriter

Write VCF file as plain text. If you want to write VCF file as compressed VCF, please use bgzip-rs to compress.

Enums

Number

A number of entries of INFO or FORMAT.

VCFHeaderContent

A content of header line.

VCFParseError

Error returned when something wrong in a vcf format.

ValueType

An entry value type of INFO or FORMAT.