3 个不稳定版本

0.2.0 2023年4月20日
0.1.1 2021年10月12日
0.1.0 2021年8月27日

#170 in 生物学

MIT/Apache

41KB
646

Crates.io Crates.io Crates.io Build status

rust-fastleng

fastleng 是一个专门用于从 FASTQ、FASTA 或未对齐的 BAM 文件中收集序列长度信息的工具。

为什么还需要另一个 FASTX 统计工具?

尽管有许多工具可以生成 FASTX 文件的摘要统计信息,但我无法找到一个可以计算 FASTQ 和 FASTA 所需的所有长度指标的工具。 pyfastx 是最接近的一个,但它似乎将某些统计信息(例如 N50)限制为仅适用于一种文件类型。

相比之下,除了初始解析外,fastleng 对文件类型是无关的。然而,(目前)它只专注于生成基于序列长度的指标。对于更全面的指标,可能更好的选择是使用 pyfastxfastp 等工具。

安装

所有安装选项都假定您已经安装了 Rust 以及 Rust 的 cargo 包管理器。

从 Cargo

cargo install fastleng
fastleng -h

从 GitHub

git clone https://github.com/HudsonAlpha/rust-fastleng.git
cd rust-fastleng
#testing optional
cargo test --release
cargo build --release
./target/release/fastleng -h
#for local install
cargo install --path .

用法

典型用法

以下命令将在给定的 FASTQ 文件上调用 fastleng 并将结果重定向到 JSON 文件

fastleng {data.fq.gz} > {output.json}

示例输出

{
  "total_bases": 21750112406,
  "total_sequences": 1305936,
  "mean_length": 16654.807284583625,
  "median_length": 16600.0,
  "n10": 18849,
  "n25": 17833,
  "n50": 16739,
  "n75": 15842,
  "n90": 15209
}
  1. total_bases - 输入文件中所有序列的总碱基数
  2. total_sequences - 输入文件中包含的总序列数(即字符串)
  3. mean_length - 计数序列的平均长度
  4. median_length - 计数序列的中位数长度
  5. n10n25n50n75n90 - 分别为 10、25、50、75 和 90 的序列的 N-score;这些应该依次单调递减

可以考虑的选项

  1. -h - 查看完整选项列表并退出
  2. -l--length-json - 启用将原始长度计数保存到指定的 JSON 文件
  3. -o, --out-json - 启用用于指定写入长度统计信息的文件名(默认:标准输出)

待办事项列表

  1. 为其他 N-score 值创建一个选项(或者也许为所有整数 N-score 值创建一个选项)
  2. 如果您有其他基于长度的统计信息,请随时在 GitHub 上提交功能请求。

性能说明

我们尚未进行正式的基准测试。据观察,大部分运行时间都花在了加载 FASTX 文件上,因此程序目前非常依赖于 I/O。

参考文献

Fastleng 目前没有与之相关的预印本或论文。

许可证

根据您的选择,许可如下

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在作品中的贡献,均应如上双许可,而无需任何额外条款或条件。

依赖关系

~12–22MB
~350K SLoC