A toolkit for working with phylogenetic data.
v0.24.0
fastq_writer.hpp
Go to the documentation of this file.
1 #ifndef GENESIS_SEQUENCE_FORMATS_FASTQ_WRITER_H_
2 #define GENESIS_SEQUENCE_FORMATS_FASTQ_WRITER_H_
3 
4 /*
5  Genesis - A toolkit for working with phylogenetic data.
6  Copyright (C) 2014-2020 Lucas Czech
7 
8  This program is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program. If not, see <http://www.gnu.org/licenses/>.
20 
21  Contact:
22  Lucas Czech <lucas.czech@h-its.org>
23  Exelixis Lab, Heidelberg Institute for Theoretical Studies
24  Schloss-Wolfsbrunnenweg 35, D-69118 Heidelberg, Germany
25 */
26 
35 
36 #include <iosfwd>
37 #include <string>
38 
39 namespace genesis {
40 namespace sequence {
41 
42 // =================================================================================================
43 // Forward Declarations
44 // =================================================================================================
45 
46 class Sequence;
47 class SequenceSet;
48 
49 // =================================================================================================
50 // Fastq Writer
51 // =================================================================================================
52 
74 {
75 public:
76 
77  // ---------------------------------------------------------------------
78  // Constructor and Rule of Five
79  // ---------------------------------------------------------------------
80 
81  FastqWriter() = default;
82  ~FastqWriter() = default;
83 
84  FastqWriter( FastqWriter const& ) = default;
85  FastqWriter( FastqWriter&& ) = default;
86 
87  FastqWriter& operator= ( FastqWriter const& ) = default;
88  FastqWriter& operator= ( FastqWriter&& ) = default;
89 
90  // ---------------------------------------------------------------------
91  // Writing
92  // ---------------------------------------------------------------------
93 
100  void write( Sequence const& sequence, std::shared_ptr<utils::BaseOutputTarget> target ) const;
101 
108  void write( SequenceSet const& sequence_set, std::shared_ptr<utils::BaseOutputTarget> target ) const;
109 
113  void write_sequence( Sequence const& sequence, std::ostream& os ) const;
114 
115  // ---------------------------------------------------------------------
116  // Properties
117  // ---------------------------------------------------------------------
118 
131  FastqWriter& line_length( size_t value );
132 
138  size_t line_length() const;
139 
154  FastqWriter& fill_missing_quality( unsigned char value );
155 
159  unsigned char fill_missing_quality() const;
160 
170  FastqWriter& repeat_label( bool value );
171 
176  bool repeat_label() const;
177 
178  // ---------------------------------------------------------------------
179  // Members
180  // ---------------------------------------------------------------------
181 
182 private:
183 
184  size_t line_length_ = 0;
185  unsigned char fill_missing_quality_ = 255;
186  bool repeat_label_ = false;
187 
188 };
189 
190 } // namespace sequence
191 } // namespace genesis
192 
193 #endif // include guard
void write_sequence(Sequence const &sequence, std::ostream &os) const
Write a single Sequence to an output stream in Fastq format.
Container namespace for all symbols of genesis in order to keep them separate when used as a library...
void write(Sequence const &sequence, std::shared_ptr< utils::BaseOutputTarget > target) const
Write a single Sequence to an output target, using the Fastq format.
unsigned char fill_missing_quality() const
Get the current value to fill missing phred quality scores.
Store a set of Sequences.
FastqWriter & operator=(FastqWriter const &)=default
bool repeat_label() const
Get whether the setting to repeat the sequence identifier (label) on the third line is set...
size_t line_length() const
Get the current line length.