functor (Chromosome : Chromosome->
  sig
    type range = Biocaml_range.t
    type location =
        Biocaml_genomeMap.Chromosome.t * Biocaml_genomeMap.Make.range
    module Selection :
      sig
        type t
        val inter :
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.Selection.t
        val union :
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.Selection.t
        val diff :
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.Selection.t
        val size : Biocaml_genomeMap.Make.Selection.t -> int
        val intersects :
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.location -> bool
        val overlap :
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.location -> int
        val to_stream :
          Biocaml_genomeMap.Make.Selection.t ->
          Biocaml_genomeMap.Make.location Stream.t
        val of_stream :
          Biocaml_genomeMap.Make.location Stream.t ->
          Biocaml_genomeMap.Make.Selection.t
      end
    module type Signal =
      sig
        type 'a t
        val eval :
          'Biocaml_genomeMap.Make.Signal.t ->
          default:'-> Biocaml_genomeMap.Chromosome.t -> int -> 'a
        val fold :
          'Biocaml_genomeMap.Make.Signal.t ->
          init:'->
          f:('-> Biocaml_genomeMap.Make.location -> '-> 'c) -> 'c
        val to_stream :
          'Biocaml_genomeMap.Make.Signal.t ->
          (Biocaml_genomeMap.Make.location * 'a) Stream.t
        val of_stream :
          ('-> '-> 'a) ->
          (Biocaml_genomeMap.Make.location * 'a) Stream.t ->
          'Biocaml_genomeMap.Make.Signal.t
      end
    module LSet :
      sig
        type t
        val to_stream :
          Biocaml_genomeMap.Make.LSet.t ->
          Biocaml_genomeMap.Make.location Stream.t
        val of_stream :
          Biocaml_genomeMap.Make.location Stream.t ->
          Biocaml_genomeMap.Make.LSet.t
        val intersects :
          Biocaml_genomeMap.Make.LSet.t ->
          Biocaml_genomeMap.Make.location -> bool
        val closest :
          Biocaml_genomeMap.Make.LSet.t ->
          Biocaml_genomeMap.Make.location ->
          (Biocaml_genomeMap.Make.location * int) option
        val intersecting_elems :
          Biocaml_genomeMap.Make.LSet.t ->
          Biocaml_genomeMap.Make.location ->
          Biocaml_genomeMap.Make.location Stream.t
      end
    module LMap :
      sig
        type 'a t
        val to_stream :
          'Biocaml_genomeMap.Make.LMap.t ->
          (Biocaml_genomeMap.Make.location * 'a) Stream.t
        val of_stream :
          (Biocaml_genomeMap.Make.location * 'a) Stream.t ->
          'Biocaml_genomeMap.Make.LMap.t
        val intersects :
          'Biocaml_genomeMap.Make.LMap.t ->
          Biocaml_genomeMap.Make.location -> bool
        val closest :
          'Biocaml_genomeMap.Make.LMap.t ->
          Biocaml_genomeMap.Make.location ->
          (Biocaml_genomeMap.Make.location * 'a * int) option
        val intersecting_elems :
          'Biocaml_genomeMap.Make.LMap.t ->
          Biocaml_genomeMap.Make.location ->
          (Biocaml_genomeMap.Make.location * 'a) Stream.t
      end
  end