let somatic_on_region     ~run_with ?adjust_mapq ~normal ~tumor ~result_prefix region =   let open KEDSL in   let name = Filename.basename result_prefix in   let result_file suffix = result_prefix ^ suffix in   let varscan_tool = Machine.get_tool run_with Machine.Tool.Default.varscan in   let snp_output = result_file "-snp.vcf" in   let indel_output = result_file "-indel.vcf" in   let normal_pileup = Samtools.mpileup ~run_with ~region ?adjust_mapq normal in   let tumor_pileup = Samtools.mpileup ~run_with ~region ?adjust_mapq tumor in   let host = Machine.as_host run_with in   let tags = [Target_tags.variant_caller; "varscan"in   let varscan_somatic =     let name = "somatic-" ^ name in     let make =       let big_one_liner =         "if [ -s " ^ normal_pileup#product#path         ^ " ] && [ -s " ^ tumor_pileup#product#path ^ " ] ; then "         ^ sprintf "java -jar $VARSCAN_JAR somatic %s %s --output-snp %s --output-indel %s --output-vcf 1 ; "           normal_pileup#product#path           tumor_pileup#product#path           snp_output           indel_output         ^ " else  "         ^ "echo '" ^ empty_vcf ^ "' > " ^ snp_output ^ " ; "         ^ "echo '" ^ empty_vcf ^ "' > " ^ indel_output ^ " ; "         ^ " fi "       in       Program.(Machine.Tool.init varscan_tool && sh big_one_liner)       |> Machine.run_big_program run_with ~name ~processors:1         ~self_ids:["varscan""somatic"]     in     workflow_node ~name ~make       (single_file snp_output ~host)       ~tags       ~edges:[         depends_on (Machine.Tool.ensure varscan_tool);         depends_on normal_pileup;         depends_on tumor_pileup;         on_failure_activate (Remove.file ~run_with snp_output);         on_failure_activate (Remove.file ~run_with indel_output);       ]   in   let snp_filtered = result_file "-snpfiltered.vcf" in   let indel_filtered = result_file "-indelfiltered.vcf" in   let varscan_filter =     let name = "filter-" ^ name in     let make =       Program.(         Machine.Tool.init varscan_tool         && shf "java -jar $VARSCAN_JAR somaticFilter %s --indel-file %s --output-file %s"           snp_output           indel_output           snp_filtered         && shf "java -jar $VARSCAN_JAR processSomatic %s" snp_filtered         && shf "java -jar $VARSCAN_JAR processSomatic %s" indel_output       )       |> Machine.run_big_program run_with ~name ~processors:1         ~self_ids:["varscan""somaticfilter"]     in     workflow_node ~name ~make ~tags       (vcf_file snp_filtered          ~reference_build:normal#product#reference_build ~host)       ~edges:[         depends_on varscan_somatic;         on_failure_activate (Remove.file ~run_with snp_filtered);         on_failure_activate (Remove.file ~run_with indel_filtered);       ]   in   varscan_filter