sig
  type 'a pipeline = 'Biokepi_pipeline_edsl.Pipeline.t
  type workflow_option_failure_mode = [ `Fail_if_not_happening | `Silent ]
  type workflow_option =
      [ `Map_reduce of [ `Gatk_indel_realigner ]
      | `Multi_sample_indel_realignment of
          Biokepi_pipeline_edsl.Pipeline.Compiler.workflow_option_failure_mode
      | `Parallel_alignment_over_fastq_fragments of
          [ `Bwa | `Bwa_mem | `Hisat | `Mosaik | `Star ] list *
          Biokepi_pipeline_edsl.Pipeline.Compiler.workflow_option_failure_mode ]
  type t = {
    reference_build : Biokepi_run_environment.Reference_genome.name;
    work_dir : string;
    machine : Biokepi_run_environment.Machine.t;
    options : Biokepi_pipeline_edsl.Pipeline.Compiler.workflow_option list;
    wrap_bam_node :
      Biokepi_pipeline_edsl.Pipeline.bam
      Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
      Biokepi_run_environment.Common.KEDSL.bam_file
      Biokepi_run_environment.Common.KEDSL.workflow_node ->
      Biokepi_run_environment.Common.KEDSL.bam_file
      Biokepi_run_environment.Common.KEDSL.workflow_node;
    wrap_vcf_node :
      Biokepi_pipeline_edsl.Pipeline.vcf
      Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
      Biokepi_run_environment.Common.KEDSL.single_file
      Biokepi_run_environment.Common.KEDSL.workflow_node ->
      Biokepi_run_environment.Common.KEDSL.single_file
      Biokepi_run_environment.Common.KEDSL.workflow_node;
    wrap_gtf_node :
      Biokepi_pipeline_edsl.Pipeline.gtf
      Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
      Biokepi_run_environment.Common.KEDSL.single_file
      Biokepi_run_environment.Common.KEDSL.workflow_node ->
      Biokepi_run_environment.Common.KEDSL.single_file
      Biokepi_run_environment.Common.KEDSL.workflow_node;
  }
  val create :
    ?wrap_bam_node:(Biokepi_pipeline_edsl.Pipeline.bam
                    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
                    Biokepi_run_environment.Common.KEDSL.bam_file
                    Biokepi_run_environment.Common.KEDSL.workflow_node ->
                    Biokepi_run_environment.Common.KEDSL.bam_file
                    Biokepi_run_environment.Common.KEDSL.workflow_node) ->
    ?wrap_vcf_node:(Biokepi_pipeline_edsl.Pipeline.vcf
                    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
                    Biokepi_run_environment.Common.KEDSL.single_file
                    Biokepi_run_environment.Common.KEDSL.workflow_node ->
                    Biokepi_run_environment.Common.KEDSL.single_file
                    Biokepi_run_environment.Common.KEDSL.workflow_node) ->
    ?wrap_gtf_node:(Biokepi_pipeline_edsl.Pipeline.gtf
                    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
                    Biokepi_run_environment.Common.KEDSL.single_file
                    Biokepi_run_environment.Common.KEDSL.workflow_node ->
                    Biokepi_run_environment.Common.KEDSL.single_file
                    Biokepi_run_environment.Common.KEDSL.workflow_node) ->
    ?options:Biokepi_pipeline_edsl.Pipeline.Compiler.workflow_option list ->
    reference_build:Biokepi_run_environment.Reference_genome.name ->
    work_dir:string ->
    machine:Biokepi_run_environment.Machine.t ->
    unit -> Biokepi_pipeline_edsl.Pipeline.Compiler.t
  val has_option :
    Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    (Biokepi_pipeline_edsl.Pipeline.Compiler.workflow_option -> bool) -> bool
  val apply_with_metadata :
    metadata_spec:[< `Add_tags of string list | `Add_tags_rec of string list ] ->
    (< is_done : Biokepi_run_environment.Common.KEDSL.Condition.t option;
       .. >
     as 'a)
    Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.workflow_node ->
    'Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.workflow_node
  val fastq_step :
    read:[ `R1 of string | `R2 of string ] ->
    compiler:Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    Biokepi_pipeline_edsl.Pipeline.fastq
    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
    Biokepi_pipeline_edsl.Pipeline.File.t
  val fastq_sample_step :
    compiler:Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    Biokepi_pipeline_edsl.Pipeline.fastq_sample
    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
    < escaped_sample_name : string; fragment_id : string option;
      fragment_id_forced : string;
      is_done : Biokepi_run_environment.Common.KEDSL.Condition.t option;
      paths : string * string option;
      r1 : Biokepi_run_environment.Common.KEDSL.single_file
           Biokepi_run_environment.Common.KEDSL.workflow_node;
      r2 : Biokepi_run_environment.Common.KEDSL.single_file
           Biokepi_run_environment.Common.KEDSL.workflow_node option;
      sample_name : string >
    Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.workflow_node
  val compile_aligner_step :
    compiler:Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    Biokepi_pipeline_edsl.Pipeline.bam
    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
    Biokepi_run_environment.Common.KEDSL.bam_file
    Biokepi_run_environment.Common.KEDSL.workflow_node
  val compile_bam_pair :
    compiler:Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    Biokepi_pipeline_edsl.Pipeline.bam_pair
    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
    [ `Normal of
        Biokepi_run_environment.Common.KEDSL.bam_file
        Biokepi_run_environment.Common.KEDSL.workflow_node ] *
    [ `Tumor of
        Biokepi_run_environment.Common.KEDSL.bam_file
        Biokepi_run_environment.Common.KEDSL.workflow_node ] *
    [ `Pipeline of
        Biokepi_pipeline_edsl.Pipeline.bam_pair
        Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ]
  val compile_variant_caller_step :
    compiler:Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    Biokepi_pipeline_edsl.Pipeline.vcf
    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
    Biokepi_run_environment.Common.KEDSL.single_file
    Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.workflow_node
  val compile_gtf_step :
    compiler:Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    Biokepi_pipeline_edsl.Pipeline.gtf
    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
    < exists : Ketrew_pure.Target.Condition.t;
      is_bigger_than : int -> Ketrew_pure.Target.Condition.t;
      is_done : Biokepi_run_environment.Common.KEDSL.Condition.t option;
      path : string >
    Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.workflow_node
  val seq2hla_hla_types_step :
    compiler:Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    Biokepi_pipeline_edsl.Pipeline.seq2hla_hla_types
    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
    < is_done : Biokepi_run_environment.Common.KEDSL.Condition.t option;
      paths : string list >
    Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.workflow_node
  val optitype_hla_types_step :
    compiler:Biokepi_pipeline_edsl.Pipeline.Compiler.t ->
    Biokepi_pipeline_edsl.Pipeline.optitype_hla_types
    Biokepi_pipeline_edsl.Pipeline.Compiler.pipeline ->
    < is_done : Biokepi_run_environment.Common.KEDSL.Condition.t option;
      path : string >
    Biokepi_run_environment.Common.KEDSL.product
    Biokepi_run_environment.Common.KEDSL.workflow_node
end