Эх сурвалжийг харах

print dorado status for basecall align

Thomas 6 сар өмнө
parent
commit
6dcb191dc4
1 өөрчлөгдсөн 40 нэмэгдсэн , 31 устгасан
  1. 40 31
      src/commands/dorado.rs

+ 40 - 31
src/commands/dorado.rs

@@ -119,34 +119,39 @@ impl Dorado {
         let pipe = format!("{dorado} | {samtools_view} | {samtools_sort}");
         info!("Running: {pipe}");
 
-        let pipe_cmd = cmd!("bash", "-c", pipe);
-        let mut reader = pipe_cmd.stderr_capture().reader()?;
-
-        let mut buffer = [0; 1];
-        let mut line = String::new();
-
-        loop {
-            match reader.read(&mut buffer) {
-                Ok(0) => break, // End of output
-                Ok(_) => {
-                    let char = buffer[0] as char;
-                    eprint!("-{}", char);
-                    std::io::stderr().flush()?;
-
-                    if char == '\n' {
-                        // Send the complete line
-                        self.log.push(line.clone());
-                        line.clear();
-                    } else {
-                        line.push(char);
-                    }
-                }
-                Err(err) => {
-                    warn!("Error reading from stderr: {}", err);
-                    break;
-                }
-            }
-        }
+        let pipe_cmd = cmd!("bash", "-c", &pipe);
+        pipe_cmd
+            .run()
+            .map_err(|e| anyhow::anyhow!("Failed to run pipe: {pipe}.\n\t{}", e.to_string()))?;
+
+        // let pipe_cmd = cmd!("bash", "-c", pipe);
+        // let mut reader = pipe_cmd.stderr_capture().reader()?;
+        //
+        // let mut buffer = [0; 1];
+        // let mut line = String::new();
+        //
+        // loop {
+        //     match reader.read(&mut buffer) {
+        //         Ok(0) => break, // End of output
+        //         Ok(_) => {
+        //             let char = buffer[0] as char;
+        //             eprint!("-{}", char);
+        //             std::io::stderr().flush()?;
+        //
+        //             if char == '\n' {
+        //                 // Send the complete line
+        //                 self.log.push(line.clone());
+        //                 line.clear();
+        //             } else {
+        //                 line.push(char);
+        //             }
+        //         }
+        //         Err(err) => {
+        //             warn!("Error reading from stderr: {}", err);
+        //             break;
+        //         }
+        //     }
+        // }
 
         Ok(())
     }
@@ -447,7 +452,7 @@ impl Dorado {
             match time_point {
                 "normal" => config.normal_name.clone(),
                 "tumoral" => config.tumoral_name.clone(),
-                _ => panic!("Error time point name")
+                _ => panic!("Error time point name"),
             }
         };
         use crate::collection::flowcells::FlowCellLocation::*;
@@ -470,7 +475,7 @@ impl Dorado {
         use crate::collection::flowcells::FlowCellExperiment::*;
         match &flowcell.experiment {
             WGSPod5Mux(pod_dir) => {
-                let pod_dir = if let Some(base_pod_dir) = base_pod_dir {
+                let pod_dir = if let Some(base_pod_dir) = &base_pod_dir {
                     format!("{base_pod_dir}/{pod_dir}")
                 } else {
                     pod_dir.clone()
@@ -491,7 +496,7 @@ impl Dorado {
                 Dorado::from_mux(cases, config.clone())?;
             }
             WGSPod5Demux(pod_dir) => {
-                let pod_dir = if let Some(base_pod_dir) = base_pod_dir {
+                let pod_dir = if let Some(base_pod_dir) = &base_pod_dir {
                     format!("{base_pod_dir}/{pod_dir}")
                 } else {
                     pod_dir.clone()
@@ -514,6 +519,10 @@ impl Dorado {
             }
         }
 
+        if base_pod_dir.is_some() {
+            fs::remove_dir_all(&config.unarchive_tmp_dir)?;
+        }
+
         Ok(())
     }
 }