sig
  module Remove = Biokepi_run_environment.Workflow_utilities.Remove
  module Configuration :
    sig
      module Gatk_config :
        functor () ->
          sig
            type t = {
              name : string;
              filter_reads_with_n_cigar : bool;
              filter_mismatching_base_and_quals : bool;
              filter_bases_not_stored : bool;
              parameters : (string * string) list;
            }
            val name :
              Biokepi_bfx_tools.Gatk.Configuration.Gatk_config.t -> string
            val to_json :
              Biokepi_bfx_tools.Gatk.Configuration.Gatk_config.t ->
              Yojson.Basic.json
            val render :
              Biokepi_bfx_tools.Gatk.Configuration.Gatk_config.t ->
              string list
            val default : Biokepi_bfx_tools.Gatk.Configuration.Gatk_config.t
          end
      module Indel_realigner :
        sig
          type t = {
            name : string;
            filter_reads_with_n_cigar : bool;
            filter_mismatching_base_and_quals : bool;
            filter_bases_not_stored : bool;
            parameters : (string * string) list;
          }
          val name : t -> string
          val to_json : t -> Yojson.Basic.json
          val render : t -> string list
          val default : t
        end
      module Realigner_target_creator :
        sig
          type t = {
            name : string;
            filter_reads_with_n_cigar : bool;
            filter_mismatching_base_and_quals : bool;
            filter_bases_not_stored : bool;
            parameters : (string * string) list;
          }
          val name : t -> string
          val to_json : t -> Yojson.Basic.json
          val render : t -> string list
          val default : t
        end
      module Bqsr :
        sig
          type t = {
            name : string;
            filter_reads_with_n_cigar : bool;
            filter_mismatching_base_and_quals : bool;
            filter_bases_not_stored : bool;
            parameters : (string * string) list;
          }
          val name : t -> string
          val to_json : t -> Yojson.Basic.json
          val render : t -> string list
          val default : t
        end
      module Print_reads :
        sig
          type t = {
            name : string;
            filter_reads_with_n_cigar : bool;
            filter_mismatching_base_and_quals : bool;
            filter_bases_not_stored : bool;
            parameters : (string * string) list;
          }
          val name : t -> string
          val to_json : t -> Yojson.Basic.json
          val render : t -> string list
          val default : t
        end
      type indel_realigner =
          Biokepi_bfx_tools.Gatk.Configuration.Indel_realigner.t *
          Biokepi_bfx_tools.Gatk.Configuration.Realigner_target_creator.t
      type bqsr =
          Biokepi_bfx_tools.Gatk.Configuration.Bqsr.t *
          Biokepi_bfx_tools.Gatk.Configuration.Print_reads.t
      val default_indel_realigner :
        Biokepi_bfx_tools.Gatk.Configuration.Indel_realigner.t *
        Biokepi_bfx_tools.Gatk.Configuration.Realigner_target_creator.t
      val default_bqsr :
        Biokepi_bfx_tools.Gatk.Configuration.Bqsr.t *
        Biokepi_bfx_tools.Gatk.Configuration.Print_reads.t
      module Mutect2 :
        sig
          type t = {
            name : string;
            use_dbsnp : bool;
            use_cosmic : bool;
            additional_arguments : string list;
          }
          val create :
            ?use_dbsnp:bool ->
            ?use_cosmic:bool ->
            string ->
            string list -> Biokepi_bfx_tools.Gatk.Configuration.Mutect2.t
          val to_json :
            Biokepi_bfx_tools.Gatk.Configuration.Mutect2.t ->
            Yojson.Basic.json
          val default : Biokepi_bfx_tools.Gatk.Configuration.Mutect2.t
          val compile :
            reference:Biokepi_run_environment.Reference_genome.t ->
            Biokepi_bfx_tools.Gatk.Configuration.Mutect2.t ->
            [> `Arguments of string list ] *
            [> `Edges of
                 Biokepi_run_environment.Common.KEDSL.workflow_edge list ]
          val name : Biokepi_bfx_tools.Gatk.Configuration.Mutect2.t -> string
        end
    end
  val indel_realigner_output_filename_tag :
    configuration:Biokepi_bfx_tools.Gatk.Configuration.Indel_realigner.t *
                  Biokepi_bfx_tools.Gatk.Configuration.Realigner_target_creator.t ->
    ?region:[< `Chromosome of string
             | `Chromosome_interval of string * int * int
             | `Full ] ->
    < product : < path : string; .. >; .. > list -> string
  val indel_realigner :
    ?compress:bool ->
    ?on_region:Biokepi_run_environment.Region.t ->
    configuration:Biokepi_bfx_tools.Gatk.Configuration.Indel_realigner.t *
                  Biokepi_bfx_tools.Gatk.Configuration.Realigner_target_creator.t ->
    run_with:Biokepi_run_environment.Machine.t ->
    ?run_directory:string ->
    'Biokepi_run_environment.Common.KEDSL.bam_or_bams -> 'a
  val indel_realigner_map_reduce :
    ?compress:bool ->
    configuration:Biokepi_bfx_tools.Gatk.Configuration.Indel_realigner.t *
                  Biokepi_bfx_tools.Gatk.Configuration.Realigner_target_creator.t ->
    run_with:Biokepi_run_environment.Machine.t ->
    ?run_directory:string ->
    'Biokepi_run_environment.Common.KEDSL.bam_or_bams -> 'a
  val call_gatk :
    analysis:string ->
    ?region:[< `Chromosome of string
             | `Chromosome_interval of string * int * int
             | `Full
             > `Full ] ->
    string list -> Biokepi_run_environment.Common.KEDSL.Program.t
  val base_quality_score_recalibrator :
    configuration:Biokepi_bfx_tools.Gatk.Configuration.Bqsr.t *
                  Biokepi_bfx_tools.Gatk.Configuration.Print_reads.t ->
    run_with:Biokepi_run_environment.Machine.t ->
    input_bam:Biokepi_run_environment.Common.KEDSL.bam_file
              Biokepi_run_environment.Common.KEDSL.workflow_node ->
    output_bam:string ->
    < host : Biokepi_run_environment.Common.KEDSL.Host.t;
      is_done : Biokepi_run_environment.Common.KEDSL.Condition.t option;
      path : string; reference_build : string;
      sorting : [ `Coordinate | `Read_name ] option >
    Biokepi_run_environment.Common.KEDSL.workflow_node
  val haplotype_caller :
    ?more_edges:Biokepi_run_environment.Common.KEDSL.workflow_edge list ->
    run_with:Biokepi_run_environment.Machine.t ->
    input_bam:Biokepi_run_environment.Common.KEDSL.bam_file
              Biokepi_run_environment.Common.KEDSL.workflow_node ->
    result_prefix:string ->
    [< `Map_reduce
     | `Region of
         [< `Chromosome of string
          | `Chromosome_interval of string * int * int
          | `Full
          > `Full ] ] ->
    < 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.workflow_node
  val mutect2 :
    ?more_edges:Biokepi_run_environment.Common.KEDSL.workflow_edge list ->
    configuration:Biokepi_bfx_tools.Gatk.Configuration.Mutect2.t ->
    run_with:Biokepi_run_environment.Machine.t ->
    input_normal_bam:Biokepi_run_environment.Common.KEDSL.bam_file
                     Biokepi_run_environment.Common.KEDSL.workflow_node ->
    input_tumor_bam:Biokepi_run_environment.Common.KEDSL.bam_file
                    Biokepi_run_environment.Common.KEDSL.workflow_node ->
    result_prefix:string ->
    [< `Map_reduce
     | `Region of
         [< `Chromosome of string
          | `Chromosome_interval of string * int * int
          | `Full
          > `Full ] ] ->
    < 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.workflow_node
end