Thomas 3 жил өмнө
parent
commit
2eb2bebe9b
1 өөрчлөгдсөн 13 нэмэгдсэн , 7 устгасан
  1. 13 7
      src/lib.rs

+ 13 - 7
src/lib.rs

@@ -277,7 +277,7 @@ impl SequencesGraph {
 
             for i in 0..max_len {
                 let mut acc: Vec<u8> = Vec::new();
-                let atcg = vec![b"A"[0], b"T"[0], b"C"[0], b"G"[0]];
+                let atcg = vec![b'A', b'T', b'C', b'G'];
                 let mut n_atcg = [0; 4];
 
                 ov.iter().for_each(|s|{
@@ -292,7 +292,7 @@ impl SequencesGraph {
                 });
                 let n_base: usize = n_atcg.iter().sum();
                 let max_base = n_atcg.iter().max().unwrap();
-                let mut base  = b"N"[0];
+                let mut base  = b'N';
                 if *max_base as f32 / n_base as f32 > 0.5 {
                     n_atcg.iter().enumerate().for_each(|(pos, n)| if n == max_base { base = atcg[pos] });
                 }
@@ -404,6 +404,8 @@ impl NeoContig {
         "POS", "MAPQ", "CIGAR", "RNEXT", "PNEXT", "TLEN", "SEQ", 
         "QUAL", "ALN"];
 
+        println!("BWA exec");
+        println!("  {}", format!("\">sequence_{}\n{}\"", self.name.to_string(), self.contig));
         let stdout = cmd!("echo", "-e", format!("\">sequence_{}\n{}\"", self.name.to_string(), self.contig))
         .pipe(cmd!("bwa", "mem", fasta_ref_path, "-"))
         .stdout_capture()
@@ -463,14 +465,18 @@ impl NeoContig {
             let mut filtered_ref: Vec<u8> = self.alignments[0].ref_sequence
             .as_bytes()
             .iter().enumerate()
-            .filter(|(i, _)| ref_cigar[*i] == b"M"[0])
+            .filter(|(i, _)| ref_cigar[*i] == b'M')
             .map(|(_, c)| *c)
             .collect();
+
             l.append(&mut filtered_ref);
             lines.push(l);
     
             // match pipes
-            let mut match_pipes = self.alignments[0].ref_cigar.as_bytes().iter().filter(|c| **c == b"M"[0]).map(|_| b"|"[0])
+            let mut match_pipes = self.alignments[0].ref_cigar
+            .as_bytes().iter()
+            .filter(|c| **c == b'M')
+            .map(|_| b'|')
             .collect::<Vec<u8>>();
             
             let mut l = ref_spaces.clone();
@@ -540,7 +546,7 @@ impl NeoContig {
             let mut filtered_ref: Vec<u8> = self.alignments[1].ref_sequence
             .as_bytes()
             .iter().enumerate()
-            .filter(|(i, _)| ref_cigar[*i] == b"M"[0])
+            .filter(|(i, _)| ref_cigar[*i] == b'M')
             .map(|(_, c)| *c)
             .collect();
             l.append(&mut filtered_ref);
@@ -584,12 +590,12 @@ fn is_reverse (flag: i32) -> bool {
 fn matched_range (cigar: &str, flag: &i32, matched_seq: &mut str) -> (Range<usize>, Range<usize>, String) {
     let mut n_head_to_rm = 0;
     for c in matched_seq.as_bytes().to_vec().iter() {
-        if *c == b"N"[0] { n_head_to_rm += 1 } else { break; }
+        if *c == b'N' { n_head_to_rm += 1 } else { break; }
     }
 
     let mut n_trail_to_rm = 0;
     for c in matched_seq.as_bytes().to_vec().iter().rev() {
-        if *c == b"N"[0] { n_trail_to_rm += 1 } else { break; }
+        if *c == b'N' { n_trail_to_rm += 1 } else { break; }
     }
 
     let all_op = vec!["M", "I", "D", "N", "S", "=", "X", "H", "P"];