sig
  module Input :
    sig
      type t = Fastq of Biokepi_pipeline_edsl.Pipeline_library.Input.fastq
      and fastq = {
        sample_name : string;
        files :
          (string option *
           Biokepi_pipeline_edsl.Pipeline_library.Input.fastq_data)
          list;
      }
      and fastq_data =
          PE of string * string
        | SE of string
        | Of_bam of [ `PE | `SE ] * [ `Coordinate | `Read_name ] option *
            string * string
      val pe :
        ?fragment_id:'->
        string ->
        string ->
        'a option * Biokepi_pipeline_edsl.Pipeline_library.Input.fastq_data
      val se :
        ?fragment_id:'->
        string ->
        'a option * Biokepi_pipeline_edsl.Pipeline_library.Input.fastq_data
      val of_bam :
        ?fragment_id:'->
        ?sorted:[ `Coordinate | `Read_name ] ->
        reference_build:string ->
        [ `PE | `SE ] ->
        string ->
        'a option * Biokepi_pipeline_edsl.Pipeline_library.Input.fastq_data
      val fastq_sample :
        sample_name:string ->
        (string option *
         Biokepi_pipeline_edsl.Pipeline_library.Input.fastq_data)
        list -> Biokepi_pipeline_edsl.Pipeline_library.Input.t
    end
  module Make :
    functor (Bfx : Semantics.Bioinformatics_base->
      sig
        val fastq_of_files :
          sample_name:string ->
          ?fragment_id:string ->
          r1:string -> ?r2:string -> unit -> [ `Fastq ] Bfx.repr
        val fastq_of_input :
          Biokepi_pipeline_edsl.Pipeline_library.Input.t ->
          [ `Fastq ] list Bfx.repr
      end
end