From 08124bdb3c528651a914e832644b82b83ededb6c Mon Sep 17 00:00:00 2001 From: Bart Mesuere Date: Mon, 2 Feb 2026 13:56:12 +0100 Subject: [PATCH 1/2] replace manual vector initialization --- src/viterbi.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/viterbi.rs b/src/viterbi.rs index bccea5e..fb6ea55 100644 --- a/src/viterbi.rs +++ b/src/viterbi.rs @@ -27,15 +27,11 @@ pub fn forward( Vec<[f64; hmm::State::COUNT]>, Vec<[Option; hmm::State::COUNT]>, ) { - let mut alpha: Vec<[f64; hmm::State::COUNT]> = Vec::with_capacity(seq.len()); - let mut path: Vec<[Option; hmm::State::COUNT]> = Vec::with_capacity(seq.len()); + let mut alpha: Vec<[f64; hmm::State::COUNT]> = vec![[0.0; hmm::State::COUNT]; seq.len()]; + let mut path: Vec<[Option; hmm::State::COUNT]> = + vec![[Some(hmm::State::S); hmm::State::COUNT]; seq.len()]; let mut temp_i: [usize; hmm::PERIOD] = [0; hmm::PERIOD]; let mut temp_i_1: [usize; hmm::PERIOD] = [0; hmm::PERIOD]; - - for _ in 0..seq.len() { - alpha.push([0.0; hmm::State::COUNT]); - path.push([Some(hmm::State::S); hmm::State::COUNT]); - } alpha[0].copy_from_slice(&global.pi); for i in &mut alpha[0] { *i *= -1.0 From 82c98e499a96045483d109f4d6f80cf4146e10d7 Mon Sep 17 00:00:00 2001 From: Bart Mesuere Date: Mon, 2 Feb 2026 14:08:55 +0100 Subject: [PATCH 2/2] skip Viterbi for sequences shorter than 3 nucleotides --- src/bin/FragGeneScanRs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/FragGeneScanRs.rs b/src/bin/FragGeneScanRs.rs index c92bd00..37ae381 100644 --- a/src/bin/FragGeneScanRs.rs +++ b/src/bin/FragGeneScanRs.rs @@ -245,7 +245,7 @@ fn run( .map(u8::to_ascii_uppercase) .map(Nuc::from) .collect(); - let read_prediction = if nseq.is_empty() { + let read_prediction = if nseq.len() < 3 { gene::ReadPrediction::new(head) } else { viterbi(&global, &locals, head, nseq, whole_genome)