let index
~reference_build
~(run_with : Machine.t) =
let open KEDSL in
let reference_fasta =
Machine.get_reference_genome run_with reference_build
|> Reference_genome.fasta in
let bwa_tool = Machine.get_tool run_with Machine.Tool.Default.bwa in
let name =
sprintf "bwa-index-%s" (Filename.basename reference_fasta#product#path) in
let result = sprintf "%s.bwt" reference_fasta#product#path in
workflow_node ~name
(single_file ~host:(Machine.(as_host run_with)) result)
~edges:[
on_failure_activate (Remove.file ~run_with result);
depends_on reference_fasta;
depends_on Machine.Tool.(ensure bwa_tool);
]
~tags:[Target_tags.aligner]
~make:(Machine.run_big_program run_with ~name
~self_ids:["bwa"; "index"]
Program.(
Machine.Tool.(init bwa_tool)
&& shf "bwa index %s"
(Filename.quote reference_fasta#product#path)))