sig
  type surface = [ `Bottom | `Top ]
  type tile = private {
    surface : Biocaml_fastq.Illumina.surface;
    swath : int;
    number : int;
  }
  val tile_of_string :
    string -> Biocaml_fastq.Illumina.tile Core.Std.Or_error.t
  val tile_to_string : Biocaml_fastq.Illumina.tile -> string
  type sequence_id = private {
    instrument : string;
    run_number : int;
    flowcell_id : string;
    lane : int;
    tile : Biocaml_fastq.Illumina.tile;
    x_pos : int;
    y_pos : int;
    read : int;
    is_filtered : bool;
    control_number : int;
    index : string;
  }
  val sequence_id_of_string :
    string -> Biocaml_fastq.Illumina.sequence_id Core.Std.Or_error.t
end