Kaynağa Gözat

alphabet efinition fo libsais

Thomas 1 ay önce
ebeveyn
işleme
95fa2ee8f2
1 değiştirilmiş dosya ile 16 ekleme ve 0 silme
  1. 16 0
      src/uniqueness/genome_index.rs

+ 16 - 0
src/uniqueness/genome_index.rs

@@ -16,6 +16,11 @@ use crate::{
 }; // ton module existant
 
 const CONTIG_SEPARATOR: u8 = 0;
+const BASE_A: u8 = 1;
+const BASE_C: u8 = 2;
+const BASE_G: u8 = 3;
+const BASE_T: u8 = 4;
+const BASE_N: u8 = 5;
 
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub struct GenomicPos {
@@ -114,6 +119,17 @@ impl GenomeIndex {
                 "contig {} contains reserved separator byte",
                 entry.name
             );
+            let seq: Vec<u8> = seq
+                .into_iter()
+                .map(|base| match base {
+                    b'A' => BASE_A,
+                    b'C' => BASE_C,
+                    b'G' => BASE_G,
+                    b'T' => BASE_T,
+                    b'N' => BASE_N,
+                    _ => BASE_N,
+                })
+                .collect();
             anyhow::ensure!(
                 genome.len() + seq.len() <= u32::MAX as usize,
                 "concatenated genome exceeds u32::MAX bases"