///|
fn main {
println("=== Biopython Bio.Align.hhr Demo ===")
let record = @src.hhr_parse(@src.hhr_sample_text()) catch {
_ => abort("failed to parse HHR sample")
}
println("\n1. HH-suite run metadata")
println(" " + record.summary())
println(" Effective sequences: " + record.metadata.neff.to_string())
println(" Searched HMMs: " + record.metadata.searched_hmms.to_string())
println("\n2. Ranked profile hits")
for alignment in record.alignments {
println(" " + alignment.summary())
println(
" query/target coverage: " +
alignment.query_coverage().to_string() +
" / " +
alignment.target_coverage().to_string(),
)
}
println("\n3. Filtering and target lookup")
let confident = record.filter_by_probability(90.0)
println(" Hits with probability >= 90%: " + confident.length().to_string())
match record.find_target("target_B") {
Some(alignment) =>
println(
" target_B aligned query: " +
alignment.query_sequence +
"\n target_B aligned target: " +
alignment.target_sequence,
)
None => abort("missing target_B")
}
println("\n4. Coordinate mapping")
match record.best_alignment() {
Some(alignment) => {
println(" Best hit: " + alignment.target_name)
match alignment.query_to_target(3) {
Some(target_position) =>
println(
" Query position 3 maps to target position " +
target_position.to_string() +
" (zero-based)",
)
None => println(" Query position 3 maps to a target gap")
}
println(" Preserved confidence columns: " + alignment.confidence)
}
None => abort("missing best alignment")
}
println("\n5. Canonical serialization")
let serialized = record.to_string()
let reparsed = @src.hhr_parse(serialized) catch {
_ => abort("failed to reparse canonical HHR")
}
println(" Serialized bytes: " + serialized.length().to_string())
println(" Round trip preserved record: " + (record == reparsed).to_string())
println("\n=== Demo Complete ===")
}