sig
  module Tools = Biokepi_bfx_tools
  type json = Yojson.Basic.json
  type 'a repr = var_count:int -> Biokepi_pipeline_edsl.To_json.json
  type 'a observation = Biokepi_pipeline_edsl.To_json.json
  val lambda :
    ((var_count:'-> [> `String of string ]) ->
     var_count:int -> ([> `String of string ] as 'b)) ->
    var_count:int -> [> `Assoc of (string * 'b) list ]
  val apply :
    (var_count:'-> 'b) ->
    (var_count:'-> 'b) -> var_count:'-> [> `Assoc of (string * 'b) list ]
  val observe : (unit -> var_count:int -> 'a) -> 'a
  val to_unit : '-> 'a
  val list :
    (var_count:'-> 'b) list -> var_count:'-> [> `List of 'b list ]
  val list_map :
    (var_count:'-> 'b) ->
    f:(var_count:'-> 'b) ->
    var_count:'-> [> `Assoc of (string * 'b) list ]
  module Make_serializer :
    functor
      (How : sig
               type t
               val input_value :
                 string ->
                 (string * string) list ->
                 var_count:int -> Biokepi_pipeline_edsl.To_json.t
               val function_call :
                 string ->
                 (string * Biokepi_pipeline_edsl.To_json.t) list ->
                 Biokepi_pipeline_edsl.To_json.t
               val string : string -> Biokepi_pipeline_edsl.To_json.t
             end->
      sig
        val fastq :
          sample_name:string ->
          ?fragment_id:string ->
          r1:string -> ?r2:string -> unit -> var_count:int -> How.t
        val fastq_gz :
          sample_name:string ->
          ?fragment_id:string ->
          r1:string -> ?r2:string -> unit -> var_count:int -> How.t
        val bam :
          path:string ->
          ?sorting:[< `Coordinate | `Read_name ] ->
          reference_build:string -> unit -> var_count:int -> How.t
        val pair :
          (var_count:int -> How.t) ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val pair_first : (var_count:int -> How.t) -> var_count:int -> How.t
        val pair_second : (var_count:int -> How.t) -> var_count:int -> How.t
        val aligner :
          string ->
          string ->
          reference_build:string ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val one_to_one :
          string ->
          string -> (var_count:int -> How.t) -> var_count:int -> How.t
        val bwa_aln :
          ?configuration:Tools.Bwa.Configuration.Aln.t ->
          reference_build:string ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val bwa_mem :
          ?configuration:Tools.Bwa.Configuration.Mem.t ->
          reference_build:string ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val gunzip : (var_count:int -> How.t) -> var_count:int -> How.t
        val gunzip_concat :
          (var_count:int -> How.t) -> var_count:int -> How.t
        val concat : (var_count:int -> How.t) -> var_count:int -> How.t
        val merge_bams : (var_count:int -> How.t) -> var_count:int -> How.t
        val star :
          ?configuration:Tools.Star.Configuration.Align.t ->
          reference_build:string ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val hisat :
          ?configuration:Tools.Hisat.Configuration.t ->
          reference_build:string ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val mosaik :
          reference_build:string ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val stringtie :
          ?configuration:Tools.Stringtie.Configuration.t ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val indel_real_config :
          Tools.Gatk.Configuration.Indel_realigner.t *
          Tools.Gatk.Configuration.Realigner_target_creator.t -> string
        val gatk_indel_realigner :
          ?configuration:Tools.Gatk.Configuration.Indel_realigner.t *
                         Tools.Gatk.Configuration.Realigner_target_creator.t ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val gatk_indel_realigner_joint :
          ?configuration:Tools.Gatk.Configuration.Indel_realigner.t *
                         Tools.Gatk.Configuration.Realigner_target_creator.t ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val picard_mark_duplicates :
          ?configuration:Tools.Picard.Mark_duplicates_settings.t ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val gatk_bqsr :
          ?configuration:Tools.Gatk.Configuration.Bqsr.t *
                         Tools.Gatk.Configuration.Print_reads.t ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val seq2hla : (var_count:int -> How.t) -> var_count:int -> How.t
        val optitype :
          [< `DNA | `RNA ] ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val gatk_haplotype_caller :
          (var_count:int -> How.t) -> var_count:int -> How.t
        val bam_to_fastq :
          sample_name:string ->
          ?fragment_id:string ->
          [< `PE | `SE ] ->
          (var_count:int -> How.t) -> var_count:int -> How.t
        val variant_caller :
          string ->
          string ->
          normal:(var_count:int -> How.t) ->
          tumor:(var_count:int -> How.t) -> unit -> var_count:int -> How.t
        val mutect :
          ?configuration:Tools.Mutect.Configuration.t ->
          normal:(var_count:int -> How.t) ->
          tumor:(var_count:int -> How.t) -> unit -> var_count:int -> How.t
        val mutect2 :
          ?configuration:Tools.Gatk.Configuration.Mutect2.t ->
          normal:(var_count:int -> How.t) ->
          tumor:(var_count:int -> How.t) -> unit -> var_count:int -> How.t
        val somaticsniper :
          ?configuration:Tools.Somaticsniper.Configuration.t ->
          normal:(var_count:int -> How.t) ->
          tumor:(var_count:int -> How.t) -> unit -> var_count:int -> How.t
        val strelka :
          ?configuration:Tools.Strelka.Configuration.t ->
          normal:(var_count:int -> How.t) ->
          tumor:(var_count:int -> How.t) -> unit -> var_count:int -> How.t
        val varscan_somatic :
          ?adjust_mapq:int ->
          normal:(var_count:int -> How.t) ->
          tumor:(var_count:int -> How.t) -> unit -> var_count:int -> How.t
        val muse :
          ?configuration:Tools.Muse.Configuration.t ->
          normal:(var_count:int -> How.t) ->
          tumor:(var_count:int -> How.t) -> unit -> var_count:int -> How.t
        val virmid :
          ?configuration:Tools.Virmid.Configuration.t ->
          normal:(var_count:int -> How.t) ->
          tumor:(var_count:int -> How.t) -> unit -> var_count:int -> How.t
      end
  val fastq :
    sample_name:string ->
    ?fragment_id:string ->
    r1:string -> ?r2:string -> unit -> var_count:int -> json
  val fastq_gz :
    sample_name:string ->
    ?fragment_id:string ->
    r1:string -> ?r2:string -> unit -> var_count:int -> json
  val bam :
    path:string ->
    ?sorting:[< `Coordinate | `Read_name ] ->
    reference_build:string -> unit -> var_count:int -> json
  val pair :
    (var_count:int -> json) ->
    (var_count:int -> json) -> var_count:int -> json
  val pair_first : (var_count:int -> json) -> var_count:int -> json
  val pair_second : (var_count:int -> json) -> var_count:int -> json
  val aligner :
    string ->
    string ->
    reference_build:string ->
    (var_count:int -> json) -> var_count:int -> json
  val one_to_one :
    string -> string -> (var_count:int -> json) -> var_count:int -> json
  val bwa_aln :
    ?configuration:Tools.Bwa.Configuration.Aln.t ->
    reference_build:string ->
    (var_count:int -> json) -> var_count:int -> json
  val bwa_mem :
    ?configuration:Tools.Bwa.Configuration.Mem.t ->
    reference_build:string ->
    (var_count:int -> json) -> var_count:int -> json
  val gunzip : (var_count:int -> json) -> var_count:int -> json
  val gunzip_concat : (var_count:int -> json) -> var_count:int -> json
  val concat : (var_count:int -> json) -> var_count:int -> json
  val merge_bams : (var_count:int -> json) -> var_count:int -> json
  val star :
    ?configuration:Tools.Star.Configuration.Align.t ->
    reference_build:string ->
    (var_count:int -> json) -> var_count:int -> json
  val hisat :
    ?configuration:Tools.Hisat.Configuration.t ->
    reference_build:string ->
    (var_count:int -> json) -> var_count:int -> json
  val mosaik :
    reference_build:string ->
    (var_count:int -> json) -> var_count:int -> json
  val stringtie :
    ?configuration:Tools.Stringtie.Configuration.t ->
    (var_count:int -> json) -> var_count:int -> json
  val indel_real_config :
    Tools.Gatk.Configuration.Indel_realigner.t *
    Tools.Gatk.Configuration.Realigner_target_creator.t -> string
  val gatk_indel_realigner :
    ?configuration:Tools.Gatk.Configuration.Indel_realigner.t *
                   Tools.Gatk.Configuration.Realigner_target_creator.t ->
    (var_count:int -> json) -> var_count:int -> json
  val gatk_indel_realigner_joint :
    ?configuration:Tools.Gatk.Configuration.Indel_realigner.t *
                   Tools.Gatk.Configuration.Realigner_target_creator.t ->
    (var_count:int -> json) -> var_count:int -> json
  val picard_mark_duplicates :
    ?configuration:Tools.Picard.Mark_duplicates_settings.t ->
    (var_count:int -> json) -> var_count:int -> json
  val gatk_bqsr :
    ?configuration:Tools.Gatk.Configuration.Bqsr.t *
                   Tools.Gatk.Configuration.Print_reads.t ->
    (var_count:int -> json) -> var_count:int -> json
  val seq2hla : (var_count:int -> json) -> var_count:int -> json
  val optitype :
    [< `DNA | `RNA ] -> (var_count:int -> json) -> var_count:int -> json
  val gatk_haplotype_caller :
    (var_count:int -> json) -> var_count:int -> json
  val bam_to_fastq :
    sample_name:string ->
    ?fragment_id:string ->
    [< `PE | `SE ] -> (var_count:int -> json) -> var_count:int -> json
  val variant_caller :
    string ->
    string ->
    normal:(var_count:int -> json) ->
    tumor:(var_count:int -> json) -> unit -> var_count:int -> json
  val mutect :
    ?configuration:Tools.Mutect.Configuration.t ->
    normal:(var_count:int -> json) ->
    tumor:(var_count:int -> json) -> unit -> var_count:int -> json
  val mutect2 :
    ?configuration:Tools.Gatk.Configuration.Mutect2.t ->
    normal:(var_count:int -> json) ->
    tumor:(var_count:int -> json) -> unit -> var_count:int -> json
  val somaticsniper :
    ?configuration:Tools.Somaticsniper.Configuration.t ->
    normal:(var_count:int -> json) ->
    tumor:(var_count:int -> json) -> unit -> var_count:int -> json
  val strelka :
    ?configuration:Tools.Strelka.Configuration.t ->
    normal:(var_count:int -> json) ->
    tumor:(var_count:int -> json) -> unit -> var_count:int -> json
  val varscan_somatic :
    ?adjust_mapq:int ->
    normal:(var_count:int -> json) ->
    tumor:(var_count:int -> json) -> unit -> var_count:int -> json
  val muse :
    ?configuration:Tools.Muse.Configuration.t ->
    normal:(var_count:int -> json) ->
    tumor:(var_count:int -> json) -> unit -> var_count:int -> json
  val virmid :
    ?configuration:Tools.Virmid.Configuration.t ->
    normal:(var_count:int -> json) ->
    tumor:(var_count:int -> json) -> unit -> var_count:int -> json
end