Rust interface to the [HMMER C code](https://github.com/EddyRivasLab/hmmer). This library provides a Rust interface which builds upon the bindings generated by [libhmmer-sys](https://github.com/mustafa-guler/libhmmer-sys) and is intended to provide a more idiomatic Rust interface. It is quite new and not all of the functionality of HMMER is exposed yet. If you need something that is not exposed, please open an issue or a pull request, or better yet have a go at implementing it yourself. As this is still early days, the API is likely to change. If you are using this library, please pin your dependency to a specific version. Example usage, running a HMMSEARCH: ```rust 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()); } } ``` Output of this program: ```text 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 ```