lib.rs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. pub mod annotations;
  2. pub mod callers;
  3. pub mod config;
  4. pub mod in_out;
  5. pub mod sql;
  6. pub mod utils;
  7. pub mod variants;
  8. #[cfg(test)]
  9. mod tests {
  10. use anyhow::{Ok, Result};
  11. use indicatif::MultiProgress;
  12. use indicatif_log_bridge::LogWrapper;
  13. use noodles_core::{Position, Region};
  14. use crate::{config::Config, sql::variants_sql::load_variants_name, utils::count_repetitions};
  15. use super::*;
  16. #[test]
  17. fn get_config() -> Result<()> {
  18. let conf_path = Config::path()?;
  19. println!("Configuration path {}", conf_path.to_str().unwrap());
  20. Ok(())
  21. }
  22. #[test]
  23. fn load_from_vcf() -> Result<()> {
  24. let name = "HATTAB";
  25. let logger =
  26. env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
  27. .build();
  28. let multi = MultiProgress::new();
  29. LogWrapper::new(multi.clone(), logger).try_init().unwrap();
  30. variants::run_pipe(name, &multi)?;
  31. Ok(())
  32. }
  33. #[test]
  34. fn load_from_db() -> Result<()> {
  35. let name = "FAVOT";
  36. let logger =
  37. env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
  38. .build();
  39. let multi = MultiProgress::new();
  40. LogWrapper::new(multi.clone(), logger).try_init().unwrap();
  41. let mut variants = load_variants_name(name, &multi)?;
  42. let _variants = variants.get_cat(&variants::VariantCategory::Constit);
  43. variants.write_vcf_cat("test.vcf.gz", &variants::VariantCategory::Somatic)?;
  44. println!("{} variants loaded from db.", variants.len());
  45. Ok(())
  46. }
  47. use noodles_fasta::indexed_reader::Builder as FastaBuilder;
  48. #[test]
  49. fn check_stretch() -> Result<()> {
  50. let contig = "chr7";
  51. let pos = 105303375;
  52. let cfg = Config::get()?;
  53. let mut genome_reader = FastaBuilder::default().build_from_path(&cfg.reference_fa)?;
  54. let start = Position::try_from((pos - 20) as usize).unwrap();
  55. let end = Position::try_from((pos + 19) as usize).unwrap();
  56. let r = Region::new(contig.to_string(), start..=end);
  57. if let std::result::Result::Ok(reg) = genome_reader.query(&r) {
  58. let seq = String::from_utf8(reg.sequence().as_ref().to_vec()).unwrap();
  59. let left = &seq[0..20];
  60. let right = &seq[21..seq.len() - 1];
  61. let r_plet = count_repetitions(right, 3);
  62. println!("{left:?}");
  63. println!("{right:?} {r_plet:?}");
  64. }
  65. Ok(())
  66. }
  67. }