struct
type t =
| Fastq of fastq
and fastq = {
sample_name : string;
files : (string option * fastq_data) list;
}
and fastq_data =
| PE of string * string
| SE of string
| Of_bam of [ `PE | `SE ] * [ `Coordinate | `Read_name ] option * string * string
let pe ?fragment_id a b = (fragment_id, PE (a, b))
let se ?fragment_id a = (fragment_id, SE a)
let of_bam ?fragment_id ?sorted ~reference_build how s =
(fragment_id, Of_bam (how, sorted, reference_build, s))
let fastq_sample ~sample_name files = Fastq {sample_name; files}
end