2 个不稳定版本

0.2.0 2023 年 2 月 3 日
0.1.0 2023 年 1 月 27 日

#5 in #hit

GPL-3.0 许可证

66KB
524

Rust 接口到 HMMER C 代码。该库提供基于由 libhmmer-sys 生成的绑定的 Rust 接口,旨在提供更符合 Rust 习惯的接口。

它相对较新,HMMER 的所有功能尚未全部公开。如果您需要尚未公开的功能,请提交一个问题或拉取请求,或者最好是亲自尝试实现它。

由于目前还处于早期阶段,API 可能会发生变化。如果您正在使用此库,请将您的依赖项固定到特定版本。

示例用法,运行 HMMSEARCH

let hmms = Hmm::read_hmms_from_path(std::path::Path::new(
    "tests/data/DNGNGWU00010_mingle_output_good_seqs.hmm",
))
.unwrap();
let hmm = &hmms[0];

println!("HMM name: {}", hmm.name());

let mut hmmsearch = HmmerPipeline::new(hmm);

let mut query_seq = EaselSequence::new(Alphabet::Protein);
let seq: &[u8] =
    b"MVYSGPNAPIEVGNSLPLSEIPLATEIHNIELTPGKGGQLVRSAGSSAQLLAKEGNYVTLRLPSGEMRFVRKECYATIGQ";

query_seq.replace_sequence(seq).unwrap();
debug!("Query seq replaced;");

hmmsearch.query(&query_seq);

let hmmsearch_result = hmmsearch.get_results();

println!(
    "Total number of reported hits: {}",
    hmmsearch_result.nreported()
);

for hit in hmmsearch_result.hits() {
    println!("New hit:");
    println!("Hit name: {}", hit.name());
    println!("Hit score: {}", hit.score());
    for domain in hit {
        println!("New domain:");
        println!("Domain score: {}", domain.bitscore());
        println!("Domain evalue: {:?}", domain.evalue());
    }
}

程序输出

HMM name: S2.1.ribosomal_protein_L2_rplB
Total number of reported hits: 1
New hit:
Hit name:
Hit score: 150.01991
current domain counter 0
New domain:
Domain score: 149.90887
Domain evalue: 1.4970530541655288e-48

依赖项

~9.5MB
~154K SLoC