Thomas 2 vuotta sitten
vanhempi
commit
bddd3e6b47
1 muutettua tiedostoa jossa 31 lisäystä ja 0 poistoa
  1. 31 0
      src/lib.rs

+ 31 - 0
src/lib.rs

@@ -181,3 +181,34 @@ pub fn range_depths_qual(
     }
     Ok(depths)
 }
+
+pub fn range_len_qual(
+    bam: &mut rust_htslib::bam::IndexedReader,
+    chr: &str,
+    start: i32,
+    stop: i32,
+    mapq: u8,
+) -> Result<Vec<usize>> {
+    bam.fetch((chr, start, stop))?;
+
+    let mut depths = vec![0];
+    depths.resize((stop - start) as usize, 0);
+    for p in bam.pileup() {
+        let pileup = p.context(format!("eRR"))?;
+        let rstart = pileup.pos() as i32;
+
+        if rstart >= start && rstart < stop {
+            let v = depths
+                .get_mut((rstart - start) as usize)
+                .context(format!("Errrr {}", rstart - start))?;
+            *v = pileup
+                .alignments()
+                .filter(|e| e.record().mapq() >= mapq)
+                .map(|e| e.record().seq_len())
+                .sum();
+        } else if rstart >= stop {
+            break;
+        }
+    }
+    Ok(depths)
+}