#interface #hmmer #hmmsearch #hmm #hit #domain #seqs

hmmer-rs-2

面向 HMMER 的 Rust 界面

1 个不稳定版本

新增 0.2.1 2024 年 8 月 24 日

#1 in #hmm

Download history 156/week @ 2024-08-18

每月 156 次下载
用于 hmmsearch_rs

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

依赖项

~10MB
~165K SLoC