sig   module Host = Ketrew.EDSL.Host   module Program = Ketrew.EDSL.Program   module Condition = Ketrew.EDSL.Condition   module Build_process = Ketrew.EDSL.Build_process   val daemonize :     ?starting_timeout:float ->     ?call_script:(string -> string list) ->     ?using:[ `Nohup_setsid | `Python_daemon ] ->     ?host:Host.t -> ?no_log_is_ok:bool -> Program.t -> Build_process.t   val lsf :     ?host:Host.t ->     ?queue:string ->     ?name:string ->     ?wall_limit:string ->     ?processors:[ `Min of int | `Min_max of int * int ] ->     ?project:string ->     ?request_memory:[ `GB of int | `MB of int ] ->     ?raw_options:string list -> Program.t -> Build_process.t   val pbs :     ?host:Host.t ->     ?queue:string ->     ?name:string ->     ?wall_limit:[ `Hours of float ] ->     ?processors:int ->     ?email_user:[ `Always of string | `Never ] ->     ?shell:string -> Program.t -> Build_process.t   val yarn_application :     ?host:Host.t ->     ?daemonize_using:[ `Nohup_setsid | `Python_daemon ] ->     ?daemon_start_timeout:float -> Program.t -> Build_process.t   val yarn_distributed_shell :     ?host:Host.t ->     ?daemonize_using:[ `Nohup_setsid | `Python_daemon ] ->     ?daemon_start_timeout:float ->     ?hadoop_bin:string ->     ?distributed_shell_shell_jar:string ->     ?container_vcores:int ->     container_memory:[ `GB of int | `MB of int | `Raw of string ] ->     timeout:[ `Raw of string | `Seconds of int ] ->     application_name:string -> Program.t -> Build_process.t   module Internal_representation = Ketrew.EDSL.Internal_representation   type 'a product = 'constraint 'a = < is_done : Condition.t option; .. >   type 'a workflow_node =       < product : 'a product; render : Internal_representation.t >     constraint 'a = < is_done : Condition.t option; .. >   type workflow_edge = Ketrew.EDSL.workflow_edge   val depends_on :     < is_done : Condition.t option; .. > workflow_node -> workflow_edge   val on_success_activate :     < is_done : Condition.t option; .. > workflow_node -> workflow_edge   val on_failure_activate :     < is_done : Condition.t option; .. > workflow_node -> workflow_edge   type ensures_option =       [ `Is_verified of Condition.t | `Nothing | `Product_is_done ]   val workflow_node :     ?name:string ->     ?active:bool ->     ?make:Build_process.t ->     ?ensures:ensures_option ->     ?metadata:[ `String of string ] ->     ?equivalence:Ketrew_pure.Target.Equivalence.t ->     ?tags:string list ->     ?edges:workflow_edge list ->     (< is_done : Condition.t option; .. > as 'a) product -> 'a workflow_node   type not_already_done = < is_done : Condition.t option >   val without_product : not_already_done   type single_file =       < exists : Ketrew_pure.Target.Condition.t; host : Host.t;         is_bigger_than : int -> Ketrew_pure.Target.Condition.t;         is_done : Ketrew_pure.Target.Condition.t option; path : string >   val single_file : ?host:Host.t -> string -> single_file product   type list_of_files =       < is_done : Ketrew_pure.Target.Condition.t option;         paths : string list >   val list_of_files : ?host:Host.t -> string list -> list_of_files product   type unknown_product = < is_done : Condition.t option >   val forget_product :     < is_done : Condition.t option; .. > workflow_node ->     unknown_product workflow_node   val workflow_to_string :     ?ansi_colors:bool ->     ?indentation:int ->     < is_done : Condition.t option; .. > workflow_node -> string   val add_tags :     ?recursive:bool ->     < is_done : Condition.t option; .. > workflow_node -> string list -> unit   val node_id : < is_done : Condition.t option; .. > workflow_node -> string   val node_name :     < is_done : Condition.t option; .. > workflow_node -> string   class type user_artifact =     object       method exists : Ketrew_pure.Target.Condition.t       method is_bigger_than : int -> Ketrew_pure.Target.Condition.t       method path : string     end   val file : ?host:Host.t -> string -> user_artifact   val unit : user_artifact   class type user_target =     object       method activate : unit       method add_recursive_tags : string list -> unit       method add_tags : string list -> unit       method depends_on : user_target list       method get_recursive_tags : string list       method id : Ketrew_pure.Internal_pervasives.Unique_id.t       method is_active : bool       method metadata : [ `String of string ] option       method name : string       method on_failure_activate : user_target list       method on_success_activate : user_target list       method product : user_artifact       method render : Ketrew_pure.Target.t     end   val to_display_string :     ?ansi_colors:bool -> ?indentation:int -> user_target -> string   module Command = Ketrew_pure.Target.Command   type nothing = < is_done : Condition.t option >   val nothing : < is_done : 'a option >   val target : '-> [> `Please_KEDSL_workflow ]   val file_target : '-> [> `Please_KEDSL_workflow ]   type file_workflow = single_file workflow_node   type phony_workflow =       Biokepi_run_environment.Common.KEDSL.nothing workflow_node   type fastq_reads =       < escaped_sample_name : string; fragment_id : string option;         fragment_id_forced : string;         is_done : Ketrew_pure.Target.Condition.t option;         paths : string * string option; r1 : single_file;         r2 : single_file option; sample_name : string >   val fastq_reads :     ?host:Host.t ->     ?name:string ->     ?fragment_id:string ->     string ->     string option -> Biokepi_run_environment.Common.KEDSL.fastq_reads   val transform_fastq_reads :     ?name:string ->     ?fragment_id:string option ->     Biokepi_run_environment.Common.KEDSL.fastq_reads ->     string ->     string option -> Biokepi_run_environment.Common.KEDSL.fastq_reads   val read_1_file_node :     Biokepi_run_environment.Common.KEDSL.fastq_reads workflow_node ->     < exists : Ketrew_pure.Target.Condition.t; host : Host.t;       is_bigger_than : int -> Ketrew_pure.Target.Condition.t;       is_done : Condition.t option; path : string >     workflow_node   val read_2_file_node :     Biokepi_run_environment.Common.KEDSL.fastq_reads workflow_node ->     < exists : Ketrew_pure.Target.Condition.t; host : Host.t;       is_bigger_than : int -> Ketrew_pure.Target.Condition.t;       is_done : Condition.t option; path : string >     workflow_node option   val fastq_node_of_single_file_nodes :     host:Host.t ->     name:string ->     ?fragment_id:string ->     < is_done : Condition.t option; path : string; .. > product workflow_node ->     < is_done : Condition.t option; path : string; .. > workflow_node option ->     < escaped_sample_name : string; fragment_id : string option;       fragment_id_forced : string; is_done : Condition.t option;       paths : string * string option; r1 : single_file;       r2 : single_file option; sample_name : string >     workflow_node   val transform_single_file :     path:string -> < host : Host.t; .. > -> single_file product   type bam_file =       < escaped_sample_name : string; host : Host.t;         is_done : Ketrew_pure.Target.Condition.t option; path : string;         reference_build : string; sample_name : string;         sorting : [ `Coordinate | `Read_name ] option >   val bam_file :     host:Host.t ->     ?name:string ->     ?sorting:[ `Coordinate | `Read_name ] ->     reference_build:string ->     string -> Biokepi_run_environment.Common.KEDSL.bam_file   val transform_bam :     ?change_sorting:[ `Coordinate | `Read_name ] ->     Biokepi_run_environment.Common.KEDSL.bam_file ->     path:string -> Biokepi_run_environment.Common.KEDSL.bam_file   type bam_list =       < bams : Biokepi_run_environment.Common.KEDSL.bam_file list;         is_done : Ketrew_pure.Target.Condition.t option >   val bam_list :     Biokepi_run_environment.Common.KEDSL.bam_file list ->     Biokepi_run_environment.Common.KEDSL.bam_list   val explode_bam_list_node :     Biokepi_run_environment.Common.KEDSL.bam_list workflow_node ->     < escaped_sample_name : string; host : Host.t;       is_done : Condition.t option; path : string; reference_build :        string; sample_name : string;       sorting : [ `Coordinate | `Read_name ] option >     workflow_node list   type _ bam_or_bams =       Single_bam :         Biokepi_run_environment.Common.KEDSL.bam_file workflow_node ->          Biokepi_run_environment.Common.KEDSL.bam_file workflow_node         Biokepi_run_environment.Common.KEDSL.bam_or_bams     | Bam_workflow_list :         Biokepi_run_environment.Common.KEDSL.bam_file workflow_node list ->          Biokepi_run_environment.Common.KEDSL.bam_list workflow_node         Biokepi_run_environment.Common.KEDSL.bam_or_bams   type vcf_file =       < as_single_file : single_file product; host : Host.t;         is_done : Ketrew_pure.Target.Condition.t option; path : string;         reference_build : string >   val vcf_file :     host:Host.t ->     reference_build:string ->     string -> Biokepi_run_environment.Common.KEDSL.vcf_file   val transform_vcf :     < host : Host.t; reference_build : string; .. > ->     path:string -> Biokepi_run_environment.Common.KEDSL.vcf_file   val submit :     < is_done : Ketrew.EDSL.Condition.t option; .. > Ketrew.EDSL.product     Ketrew.EDSL.workflow_node -> unit end