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