Thomas 2 ani în urmă
părinte
comite
33b980d305
1 a modificat fișierele cu 33 adăugiri și 3 ștergeri
  1. 33 3
      src/lib.rs

+ 33 - 3
src/lib.rs

@@ -215,6 +215,18 @@ pub fn get_start_end_qual_rec(
 
 
         if rend >= start && rend < stop {
         if rend >= start && rend < stop {
             if record.mapq() >= mapq {
             if record.mapq() >= mapq {
+                if record.is_supplementary() {
+                    match record.aux(b"SA") {
+                        std::result::Result::Ok(v) => match v {
+                            record::Aux::String(v) => {
+                                println!("{v}");
+                                let v = v.split(";");
+                            }
+                            _ => (),
+                        },
+                        Err(_) => (),
+                    };
+                }
                 let index = rend - start;
                 let index = rend - start;
                 let u = results_end.get_mut(index as usize).unwrap();
                 let u = results_end.get_mut(index as usize).unwrap();
                 u.push(record.clone());
                 u.push(record.clone());
@@ -224,6 +236,26 @@ pub fn get_start_end_qual_rec(
     Ok((results_start, results_end))
     Ok((results_start, results_end))
 }
 }
 
 
+pub fn primary_record(
+    bam: &mut rust_htslib::bam::IndexedReader,
+    qname: &str,
+    positions: &Vec<(&str, i32, i32)>
+) -> Option<Record> {
+    for position in positions {
+        bam.fetch(*position).unwrap();
+        let records = bam.records();
+        for record in records {
+            let record = record.unwrap();
+            if qname == String::from_utf8(record.qname().to_vec()).unwrap().as_str() {
+                if !record.is_supplementary() {
+                    return Some(record.clone())
+                }
+            }
+        }
+    }
+    None
+}
+
 pub fn range_depths(
 pub fn range_depths(
     bam: &mut rust_htslib::bam::IndexedReader,
     bam: &mut rust_htslib::bam::IndexedReader,
     chr: &str,
     chr: &str,
@@ -326,9 +358,7 @@ mod tests {
         let start = 21839796;
         let start = 21839796;
         let mapq = 50;
         let mapq = 50;
 
 
-
-        let mut bam = rust_htslib::bam::IndexedReader::from_path(bam_path)
-            .unwrap();
+        let mut bam = rust_htslib::bam::IndexedReader::from_path(bam_path).unwrap();
 
 
         let a = get_start_end_qual(&mut bam, chr, start, start + 1, mapq).unwrap();
         let a = get_start_end_qual(&mut bam, chr, start, start + 1, mapq).unwrap();
         println!("{a:?}");
         println!("{a:?}");