9个版本
0.2.3 | 2024年5月22日 |
---|---|
0.2.2 | 2023年12月24日 |
0.2.1 | 2023年8月20日 |
0.2.0 | 2022年10月8日 |
0.1.3 | 2022年6月26日 |
#71 in 生物学
115 每月下载次数
在 atg 中使用
360KB
7K SLoC
ATGlib
ATGlib 是一个 Rust 库,用于处理基因组转录数据。它可以处理多种文件格式,如 GTF、GenePred(ext) 和 Refgene。您可以生成 bed 文件、fasta 序列或自定义特征序列。
ATGlib 对生物信息学家和遗传学家很有用。它可以用于所有必须处理转录注释的数据处理工作流程。主要用例是在各种文件格式之间进行转换和大规模质量控制的健全性检查。它主要针对人类基因组,但也应与其他基因组一样良好地工作。
如果您正在寻找实际的应用程序或用于处理转录、GTF 文件等命令行工具,请使用 ATG。它使用 ATGlib 作为后台,并提供了一个简单易用的界面。
文档
库 API 主要在行内进行文档记录,并在 docs.rs 上提供。
示例
有关如何在高层次上使用 ATGlib 的示例,您可以查看 CLI 工具 ATG 的源代码。
将 GTF 转换为 RefGene
use atglib::gtf::Reader;
use atglib::refgene::Writer;
use atglib::models::{TranscriptRead, TranscriptWrite};
let mut reader = Reader::from_file("tests/data/example.gtf")
.unwrap_or_else(|_| panic!("Error opening input file."));
let mut writer = Writer::from_file("/dev/null")
.unwrap_or_else(|_| panic!("Unable to open output file"));
let transcripts = reader.transcripts()
.unwrap_or_else(|err| panic!("Error parsing GTF: {}", err));
match writer.write_transcripts(&transcripts) {
Ok(_) => println!("Success"),
Err(err) => panic!("Error writing RefGene file: {}", err)
};
直接处理转录
use atglib::tests::transcripts::standard_transcript;
let tx = standard_transcript();
println!(
"The {} transcript {} is on the {} strand on chromsome {} and has {} exons",
tx.gene(),
tx.name(),
tx.strand(),
tx.chrom(),
tx.exon_count()
);
if tx.is_coding() {
println!(
"The start and end positions of the CDS are: {}-{}",
tx.cds_start().unwrap(),
tx.cds_end().unwrap()
);
} else {
println!(
"The transcript is non-coding and is located at {}:{}-{}",
tx.chrom(),
tx.tx_start(),
tx.tx_end()
);
}
限制
我最初创建 ATGlib 作为一项私人副项目来学习 Rust
。我确信代码中有许多部分不是惯用的,可以改进。我将非常乐意接受反馈和建议。我也鼓励所有感兴趣的人帮助和贡献 ATGlib。
在功能正确性方面,我尽力在所有级别上测试功能。 ATGlib 具有非常好的测试覆盖率,并且在每次发布之前,我还使用一个巨大的测试集进行手动检查。但是,我无法保证一切都是正确的,所以请自行承担风险,并通过 GitHub 报告任何错误和问题。
待办事项/下一项任务
- 添加比较来自两个不同输入的转录功能
- 使用 Smartstring 或 Smallstr 进行基因符号、转录名称和染色体
- 并行化输入解析
- 检查外显子是否可以存储在更小的向量中
- 使用std::mem::replace将属性移出,例如在TranscriptBuilder中,并移除Copy/Clone特性https://stackoverflow.com/questions/31307680/how-to-move-one-field-out-of-a-struct-that-implements-drop-trait
- 将
Codon
改为GenomicCodon
- 更新错误处理和简化错误类型
已知问题
GTF解析
- NM_001371720.1有两个端点外显子(155160639-155161619 || 155161620-155162101)。在输入解析期间,端点特征被合并为一个外显子
依赖项
~0.4–1MB
~23K SLoC