#nom #gtf #生物信息学 #解析器 #文件I/O #Ensembl

gtftools

一个基于nom的快速I/O的简单GTF工具包

6个版本

0.1.9 2023年7月19日
0.1.8 2023年7月19日
0.1.5 2022年11月17日
0.1.4 2022年9月27日

#292 in 生物学


3 crate中使用

MIT 协议

27KB
627

gtftools

一个用于解析和查询Ensembl-GTF格式文件的crate。

解析器达到接近 wc -l 的吞吐量。

使用方法

此功能作为迭代器使用,并接收任何实现 BufRead 的项目。

从文件

use std::{fs::File, io::BufReader};
use gtftools::GtfReader;

let handle = File::open("data/example.gtf")
  .map(BufReader::new)
  .unwrap();

let num_records = GtfReader::from_bufread(handle)
  .filter_map(|x| x.ok())
  .count();

assert_eq!(num_records, 10);

从Gzip文件

use std::{fs::File, io::BufReader};
use flate2::read::MultiGzDecoder;
use gtftools::GtfReader;

let handle = File::open("data/example.gtf.gz")
  .map(MultiGzDecoder::new)
  .map(BufReader::new)
  .unwrap();

let num_records = GtfReader::from_bufread(handle)
  .filter_map(|x| x.ok())
  .count();

assert_eq!(num_records, 10);

依赖项

~1.9–2.9MB
~57K SLoC