|
|
@@ -114,3 +114,26 @@ pub fn get_n_start(
|
|
|
|
|
|
Ok(start_positions.len())
|
|
|
}
|
|
|
+
|
|
|
+pub fn range_depths(
|
|
|
+ bam: &mut rust_htslib::bam::IndexedReader,
|
|
|
+ chr: &str,
|
|
|
+ start: i32,
|
|
|
+ stop: i32,
|
|
|
+) -> Result<Vec<u32>> {
|
|
|
+ bam.fetch((chr, start, stop))?;
|
|
|
+
|
|
|
+ let mut depths = Vec::new();
|
|
|
+
|
|
|
+ for p in bam.pileup() {
|
|
|
+ let pileup = p.context(format!("eRR"))?;
|
|
|
+ let rstart = pileup.pos() as i32;
|
|
|
+ if rstart >= start && rstart < stop {
|
|
|
+ depths.push(pileup.depth());
|
|
|
+ } else if rstart >= stop {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Ok(depths)
|
|
|
+}
|