Thomas 1 an în urmă
părinte
comite
50a7b42155
1 a modificat fișierele cu 63 adăugiri și 48 ștergeri
  1. 63 48
      src/lib.rs

+ 63 - 48
src/lib.rs

@@ -15,12 +15,11 @@ mod tests {
     use noodles_core::{Position, Region};
 
     use crate::{
-        config::Config,
-        sql::variants_sql::load_variants_name,
-        utils::count_repetitions,
-        variants::{Category, Variants},
+        annotations::phase, config::Config, sql::variants_sql::load_variants_name, utils::count_repetitions, variants::{AnnotationType, Category, Variants}
     };
 
+    use self::annotations::phase::PhaserConfig;
+
     use super::*;
     #[test]
     fn get_config() -> Result<()> {
@@ -133,48 +132,64 @@ mod tests {
         Ok(())
     }
 
-    // #[test]
-    // fn phase() -> anyhow::Result<()> {
-    //     // init();
-    //     let id = "SALICETTO";
-    //     let contig = "chr1";
-    //     let logger =
-    //         env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
-    //             .build();
-    //     let multi = MultiProgress::new();
-    //     LogWrapper::new(multi.clone(), logger).try_init().unwrap();
-    //
-    //     let phases = pandora_lib_scan::phase::load_phases(&format!(
-    //         "/data/longreads_basic_pipe/{id}/diag/phases/{id}_{contig}_phases.postcard.gz"
-    //     ))?;
-    //
-    //     let mut variants = Variants::new_from_bytes(
-    //         id,
-    //         &format!("/data/longreads_basic_pipe/{id}/diag/{id}_variants.bytes.gz"),
-    //         multi,
-    //     )?;
-    //
-    //     variants.phase_contig(
-    //         &phases,
-    //         &format!("/data/longreads_basic_pipe/{id}/diag/{id}_diag_hs1.bam",),
-    //         contig,
-    //     );
-    //     let phased = variants.with_annotation(&AnnotationType::Phase(annotations::phase::Phase{id: "".to_string()}));
-    //     let n_phased = phased.len();
-    //     info!("{n_phased} variants phased");
-    //
-    //     for v in phased {
-    //         let phases_ids: Vec<String> = v.annotations.iter().flat_map(|a| {
-    //             if let AnnotationType::Phase(p) = a {
-    //                 vec![p.id.to_string()]
-    //             } else {
-    //                 vec![]
-    //             }
-    //         }).collect();
-    //         if phases_ids.len() > 1 {
-    //             println!("{}:{}\t{}", v.contig, v.position, phases_ids.join("|"));
-    //         }
-    //     }
-    //     Ok(())
-    // }
+    #[test]
+    fn phase_one() -> anyhow::Result<()> {
+        // init();
+        let id = "SALICETTO";
+        let contig = "chr1";
+        let logger =
+            env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
+                .build();
+        let multi = MultiProgress::new();
+        LogWrapper::new(multi.clone(), logger).try_init().unwrap();
+
+        let phases = phase::load_phases(&format!(
+            "/data/longreads_basic_pipe/{id}/diag/phases/{id}_{contig}_phases.postcard.gz"
+        ))?;
+
+        let mut variants = Variants::new_from_bytes(
+            id,
+            &format!("/data/longreads_basic_pipe/{id}/diag/{id}_variants.bytes.gz"),
+            multi,
+        )?;
+
+        variants.phase_contig(
+            &phases,
+            &format!("/data/longreads_basic_pipe/{id}/diag/{id}_diag_hs1.bam",),
+            contig,
+        );
+        let phased = variants.with_annotation(&AnnotationType::Phase(annotations::phase::PhaseAnnotation{id: "".to_string()}));
+        let n_phased = phased.len();
+        info!("{n_phased} variants phased");
+
+        for v in phased {
+            let phases_ids: Vec<String> = v.annotations.iter().flat_map(|a| {
+                if let AnnotationType::Phase(p) = a {
+                    vec![p.id.to_string()]
+                } else {
+                    vec![]
+                }
+            }).collect();
+            if phases_ids.len() > 1 {
+                println!("{}:{}\t{}", v.contig, v.position, phases_ids.join("|"));
+            }
+        }
+        Ok(())
+    }
+
+    #[test]
+    fn phasing() -> anyhow::Result<()> {
+        let id = "SALICETTO";
+        let min_records = 2;
+
+        let logger =
+            env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
+                .build();
+        let multi = MultiProgress::new();
+        LogWrapper::new(multi.clone(), logger).try_init().unwrap();
+
+        let config = PhaserConfig::new(id, "/data/longreads_basic_pipe", min_records, 0.22);
+        phase::phase(config, multi)
+    }
+
 }