Library
Module
Module type
Parameter
Class
Class type
A record type for FASTQ files.
Very similar to the Fasta.Record.t
. See that module for more details.contents
For the "header" line, the id
is everything up to the first space, and the desc
is everything after. Note, that desc
is optional. E.g.,
@this_is_the_id this is the desc
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
id ----------| Some desc -----|
The other possibly weird field is extra
. It is simply everything on the line following the +
(i.e., the third line of the 4 line FASTQ file).
It is currently NOT a parse error if the sequence length and quality string length are different lengths. This may change in the future.
include Sexplib0.Sexpable.S with type t := t
val t_of_sexp : Sexplib0.Sexp.t -> t
val sexp_of_t : t -> Sexplib0.Sexp.t
val create :
id:Base.string ->
desc:Base.string Base.option ->
seq:Base.string ->
qual:Base.string ->
extra:Base.string Base.option ->
t
create ~id ~desc ~seq ~qual ~extra
creates a new t
. Shouldn't raise as literally any values of the correct type are accepted.
val to_string : t -> Base.string
to_string t
returns a string representation of t
ready to print to a FASTQ output file.
val to_string_nl : ?nl:Base.string -> t -> Base.string
to_string_nl t ~nl
returns a string representation of t
ready to print to a FASTQ output file, including a trailing newline (nl) string. nl
defaults to "\n"
.
val id : t -> Base.string
id t
returns the id
of the t
.
val desc : t -> Base.string Base.option
desc t
returns the desc
(description) of the t
.
val seq : t -> Base.string
seq t
returns the seq
of the t
.
val qual : t -> Base.string
qual t
returns the qual
of t
.
val extra : t -> Base.string Base.option
extra t
returns the extra
of the t
if there is one. It is whatever is after the +
line. Technically it should be the same ID+desc found in the header line, but this library just treats it as a blob of data.
seq_length t
returns the length of the seq
of t
.
If you construct a record by hand (e.g., with create
), and there are spaces or other weird characters in the sequences, they will be counted in the length. E.g.,
let r =
Fastq.Record.create ~id:"apple" ~desc:None ~seq:"a a" ~qual:". ."
~extra:None
in
assert (Int.(3 = Fastq.Record.seq_length r))
val with_id : Base.string -> t -> t
with_id new_id t
returns a t
with new_id
instead of the original id
.
val with_seq : Base.string -> t -> t
with_seq new_seq t
returns a t
with new_seq
instead of the original seq
.
val with_desc : Base.string Base.option -> t -> t
with_desc new_desc t
returns a t
with new_desc
instead of the original desc
.
val with_qual : Base.string -> t -> t
with_qual new_qual t
returns a t
with new_qual
instead of the original qual
.
val with_extra : Base.string Base.option -> t -> t
with_extra new_extra t
returns a t
with new_extra
instead of the original extra
.
comp t
returns the complement of t
. I.e., the seq
is complemented. Uses IUPAC conventions. Any "base" (char) that isn't part of the IUPAC passes through unchanged. Note that comp
does not round-trip.