|
|
@@ -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)
|
|
|
+ }
|
|
|
+
|
|
|
}
|