///|
pub struct BioEngine {
config : AlignmentConfig
} derive(Debug, Eq)
///|
pub fn BioEngine::new() -> BioEngine {
{ config: default_alignment_config() }
}
///|
pub fn BioEngine::with_config(config : AlignmentConfig) -> BioEngine {
{ config, }
}
///|
pub fn BioEngine::global_align(
self : BioEngine,
left : String,
right : String,
) -> @align.AlignmentResult {
@align.needleman_wunsch(
normalize_sequence(left),
normalize_sequence(right),
self.config.match_score,
self.config.mismatch_score,
self.config.gap_penalty,
)
}
///|
pub fn BioEngine::local_align(
self : BioEngine,
left : String,
right : String,
) -> @align.AlignmentResult {
@align.smith_waterman(
normalize_sequence(left),
normalize_sequence(right),
self.config.match_score,
self.config.mismatch_score,
self.config.gap_penalty,
)
}
///|
pub fn BioEngine::multiple_align(
self : BioEngine,
sequences : Array[String],
) -> @align.MsaResult {
let normalized = []
for i = 0; i < sequences.length(); i = i + 1 {
normalized.push(normalize_sequence(sequences[i]))
}
@align.progressive_msa_result(
normalized,
self.config.match_score,
self.config.mismatch_score,
self.config.gap_penalty,
)
}
///|
pub fn BioEngine::summarize_fasta(
self : BioEngine,
content : String,
) -> Result[String, String] {
ignore(self)
match @parser.fasta_summary(content) {
Err(msg) => Err(msg)
Ok(stats) =>
Ok(
"FASTA records=\{stats.record_count}, total_bases=\{stats.total_bases}, min=\{stats.min_length}, max=\{stats.max_length}",
)
}
}
///|
pub fn BioEngine::summarize_fastq(
self : BioEngine,
content : String,
) -> Result[String, String] {
ignore(self)
match @parser.fastq_summary(content) {
Err(msg) => Err(msg)
Ok(stats) =>
Ok(
"FASTQ records=\{stats.record_count}, total_bases=\{stats.total_bases}, min=\{stats.min_length}, max=\{stats.max_length}",
)
}
}