let flagstat ~(run_with:Machine.t) bam =   let open KEDSL in   let samtools = Machine.get_tool run_with Machine.Tool.Default.samtools in   let src = bam#product#path in   let dest = sprintf "%s.%s" src "flagstat" in   let program =     Program.(       Machine.Tool.(init samtools) &&       shf "samtools flagstat %s > %s" (Filename.quote src) (Filename.quote dest)     ) in   let name = sprintf "samtools-flagstat-%s" Filename.(basename src) in   let make = Machine.run_program ~name run_with program in   let host = Machine.(as_host run_with) in   workflow_node     (single_file dest ~host) ~name ~make     ~edges:[       depends_on bam;       depends_on Machine.Tool.(ensure samtools);       on_failure_activate (Remove.file ~run_with dest);     ]