pub mod annotations; pub mod callers; pub mod config; pub mod in_out; pub mod sql; pub mod utils; pub mod variants; #[cfg(test)] mod tests { use anyhow::{Ok, Result}; use indicatif::MultiProgress; use indicatif_log_bridge::LogWrapper; use noodles_core::{Position, Region}; use crate::{config::Config, sql::variants_sql::load_variants_name, utils::count_repetitions}; use super::*; #[test] fn get_config() -> Result<()> { let conf_path = Config::path()?; println!("Configuration path {}", conf_path.to_str().unwrap()); Ok(()) } #[test] fn load_from_vcf() -> Result<()> { let name = "HATTAB"; 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(); variants::run_pipe(name, &multi)?; Ok(()) } #[test] fn load_from_db() -> Result<()> { let name = "FAVOT"; 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 mut variants = load_variants_name(name, &multi)?; let _variants = variants.get_cat(&variants::VariantCategory::Constit); variants.write_vcf_cat("test.vcf.gz", &variants::VariantCategory::Somatic)?; println!("{} variants loaded from db.", variants.len()); Ok(()) } use noodles_fasta::indexed_reader::Builder as FastaBuilder; #[test] fn check_stretch() -> Result<()> { let contig = "chr7"; let pos = 105303375; let cfg = Config::get()?; let mut genome_reader = FastaBuilder::default().build_from_path(&cfg.reference_fa)?; let start = Position::try_from((pos - 20) as usize).unwrap(); let end = Position::try_from((pos + 19) as usize).unwrap(); let r = Region::new(contig.to_string(), start..=end); if let std::result::Result::Ok(reg) = genome_reader.query(&r) { let seq = String::from_utf8(reg.sequence().as_ref().to_vec()).unwrap(); let left = &seq[0..20]; let right = &seq[21..seq.len() - 1]; let r_plet = count_repetitions(right, 3); println!("{left:?}"); println!("{right:?} {r_plet:?}"); } Ok(()) } }