sig
  exception Bad of string
  type strand = Sense | Antisense | Unknown | Unstranded
  type attribute = TagValue of string * string | Something of string
  type row = {
    chr : string;
    source : string;
    feature : string;
    pos : int * int;
    score : float option;
    strand : Biocaml_gff.strand;
    phase : int option;
    attributes : Biocaml_gff.attribute list;
  }
  type t
  val of_file :
    ?chr_map:(string -> string) ->
    ?version:int -> ?strict:bool -> string -> Biocaml_gff.t
  val of_list : Biocaml_gff.row list -> Biocaml_gff.t
  val fold : ('-> Biocaml_gff.row -> 'a) -> '-> Biocaml_gff.t -> 'a
  val iter : (Biocaml_gff.row -> unit) -> Biocaml_gff.t -> unit
  val fold_file :
    ?version:int ->
    ?strict:bool -> ('-> Biocaml_gff.row -> 'a) -> '-> string -> 'a
  val iter_file :
    ?version:int ->
    ?strict:bool -> (Biocaml_gff.row -> unit) -> string -> unit
  val to_list : Biocaml_gff.t -> Biocaml_gff.row list
  val enum : Biocaml_gff.t -> Biocaml_gff.row BatEnum.t
  val to_map : Biocaml_gff.t -> Biocaml_gff.row list Biocaml_std.StringMap.t
  val map_of_file :
    ?version:int ->
    ?strict:bool -> string -> Biocaml_gff.row list Biocaml_std.StringMap.t
  val row_to_string : ?version:int -> Biocaml_gff.row -> string
  val to_channel :
    ?version:int -> Biocaml_gff.t -> Pervasives.out_channel -> unit
  val to_file : ?version:int -> Biocaml_gff.t -> string -> unit
  val attribute_names : Biocaml_gff.row -> string list
  val get_attribute : Biocaml_gff.row -> string -> string
  val get_attributel : Biocaml_gff.row -> string -> string list
  val has_attribute : Biocaml_gff.row -> string -> bool
  val add_attribute : string -> string -> Biocaml_gff.row -> Biocaml_gff.row
  val set_attribute : string -> string -> Biocaml_gff.row -> Biocaml_gff.row
  val delete_attribute : string -> Biocaml_gff.row -> Biocaml_gff.row
  val index_by_attribute :
    string -> Biocaml_gff.t -> (string, Biocaml_gff.row list) Hashtbl.t
end