assembler.rs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. use pandora_lib_assembler::assembler::{
  2. assemble_whole, spades::SpadesConfig, wtdbg2::Wtdbg2Config, AssembleConfig,
  3. };
  4. #[derive(Debug, Clone)]
  5. pub struct AssemblerConfig {
  6. pub result_dir: String,
  7. pub scan_dir_name: String,
  8. pub output_dir_name: String,
  9. pub dict_file: String,
  10. }
  11. impl Default for AssemblerConfig {
  12. fn default() -> Self {
  13. Self {
  14. result_dir: "/data/longreads_basic_pipe".to_string(),
  15. scan_dir_name: "scan".to_string(),
  16. output_dir_name: "assemblies".to_string(),
  17. dict_file: "/data/ref/hs1/chm13v2.0.dict".to_string(),
  18. }
  19. }
  20. }
  21. #[derive(Debug)]
  22. pub struct Assembler {
  23. pub id: String,
  24. pub time_point: String,
  25. pub config: AssemblerConfig,
  26. }
  27. impl Assembler {
  28. pub fn new(
  29. id: String,
  30. time_point: String,
  31. config: AssemblerConfig,
  32. ) -> Self {
  33. Assembler {
  34. id,
  35. time_point,
  36. config,
  37. }
  38. }
  39. pub fn run(&self) -> anyhow::Result<()> {
  40. let case_dir = format!("{}/{}/{}", self.config.result_dir, self.id, self.time_point);
  41. let scan_reads_dir = format!("{case_dir}/{}/reads", self.config.scan_dir_name);
  42. let output_dir = format!("{case_dir}/assemblies");
  43. assemble_whole(
  44. &scan_reads_dir,
  45. &[
  46. AssembleConfig::Spades(SpadesConfig::new(&output_dir)),
  47. AssembleConfig::Wtdbg2(Wtdbg2Config::new(&output_dir)),
  48. ],
  49. 1,
  50. )
  51. }
  52. }