9个版本

0.3.1 2023年2月14日
0.3.0 2023年2月12日
0.2.2 2022年12月30日
0.2.1 2021年6月20日
0.0.3 2018年9月2日

#241 in 压缩

Download history 280/week @ 2024-04-22 448/week @ 2024-04-29 432/week @ 2024-05-06 326/week @ 2024-05-13 295/week @ 2024-05-20 335/week @ 2024-05-27 424/week @ 2024-06-03 328/week @ 2024-06-10 459/week @ 2024-06-17 518/week @ 2024-06-24 804/week @ 2024-07-01 303/week @ 2024-07-08 1143/week @ 2024-07-15 619/week @ 2024-07-22 433/week @ 2024-07-29 516/week @ 2024-08-05

2,776 每月下载量
7 包中使用(6个直接使用)

MIT 许可证

98KB
2K SLoC

bgzip-rs

Build Crates.io Crates.io Crates.io doc-rs

BGZF的Rust实现

特性标志

  • rayon: 启用基于 rayon 的多线程读写。这是默认特性。
  • log: 启用 log 包来记录警告。这是默认特性。
  • rust_backend: 使用 miniz_oxide 包作为 flate2 后端。这是默认特性。
  • zlib: 使用 zlib 作为 flate2 后端。请阅读 flate2 的描述以获取详细信息。
  • zlib-ng: 使用 zlib-ng 作为 flate2 后端。请阅读 flate2 的描述以获取详细信息。
  • zlib-ng-compat: 请阅读 flate2 的描述以获取详细信息。
  • cloudflare_zlib: 请阅读 flate2 的描述以获取详细信息。
  • libdeflater: 使用 libdeflater 代替 flate2 包。

编写示例

use bgzip::{BGZFWriter, BGZFError, Compression};
use std::io::{self, Write};
fn main() -> Result<(), BGZFError> {
    let mut write_buffer = Vec::new();
    let mut writer = BGZFWriter::new(&mut write_buffer, Compression::default());
    writer.write_all(b"##fileformat=VCFv4.2\n")?;
    writer.write_all(b"#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\n")?;
    writer.close()?;
    Ok(())
}

读取示例

use bgzip::{BGZFReader, BGZFError};
use std::io::{self, BufRead};
use std::fs;
fn main() -> Result<(), BGZFError> {
    let mut reader =
        BGZFReader::new(fs::File::open("testfiles/common_all_20180418_half.vcf.gz")?)?;
    let mut line = String::new();
    reader.read_line(&mut line)?;
    assert_eq!("##fileformat=VCFv4.0\n", line);
    reader.bgzf_seek(4210818610)?;
    line.clear();
    reader.read_line(&mut line)?;
    assert_eq!("1\t72700625\trs12116859\tT\tA,C\t.\t.\tRS=12116859;RSPOS=72700625;dbSNPBuildID=120;SSR=0;SAO=0;VP=0x05010008000517053e000100;GENEINFO=LOC105378798:105378798;WGT=1;VC=SNV;SLO;INT;ASP;VLD;G5A;G5;HD;GNO;KGPhase1;KGPhase3;CAF=0.508,.,0.492;COMMON=1;TOPMED=0.37743692660550458,0.00608435270132517,0.61647872069317023\n", line);

    Ok(())
}

作者

Yasunobu OKAMURA

许可证

MIT

依赖项

~1.5–2.8MB
~53K SLoC