Re: [Seqan-dev] fastq / gzip
Dear Peter,
the new <seqan/stream.h> module [1] provides the Stream concept,
adaptions for <{io,f}stream>, <cstdio> stream classes as well as the
class Stream with specializations for reading and writing GZ [2] and
BZ2 streams. GZ streams are accessed via zlib which has to be available.
Based on these streams the RecordReader (the name could change but the
API should be stable otherwise) class and its specializations [3]
provide functionality for easy access to text files. Other useful
contents of the stream module is lexical cast functionality [4]. We
also have functionality to read FASTA and FASTQ files from streams as
well as from String<MMapp<> > objects using the new Stream interface,
you could look at the DDDoc documentation of functions read2 [6] and
readRecord [7] or the benchmark_stream demo [5] or the tests of the
stream module in the extras repository.
The documentation is a bit scarce at the moment. The API might
slightly change in the future but should mainly be stable. On the
positive sight: There are comprehensive tests for the new I/O code so
it should work at least as well as the old code if not better and by
our benchmarks, the performance for reading and writing FASTA/FASTQ is
better with the new code.
Currently, thew new code coexists with the old input/output
functionality but will eventually replace the old stream API.
Bests,
Manuel
[1] http://trac.mi.fu-berlin.de/seqan/wiki/Tutorial/FileIO2
[2] http://www.seqan.de/dddoc/html_devel/SPEC_G_Z+_File+_Stream.html
[3] http://www.seqan.de/dddoc/html_devel/CLASS_Record_Reader.html
[4] http://www.seqan.de/dddoc/html_devel/FUNCTION.lexical_Cast.html
[5] http://trac.mi.fu-berlin.de/seqan/browser/trunk/seqan/extras/demos/benchmark_stream.cpp
[6] http://www.seqan.de/dddoc/html_devel/FUNCTION.read2.html
[7] http://www.seqan.de/dddoc/html_devel/FUNCTION.read_Record.html