 |
SeqAn3
3.0.1
The Modern C++ library for sequence analysis.
|
|
Go to the documentation of this file.
17 #include <meta/meta.hpp>
164 template <
field ...fs>
175 static constexpr
size_t index_of(
field f)
177 for (
size_t i = 0; i <
sizeof...(fs); ++i)
178 if (as_array[i] == f)
184 static constexpr
bool contains(
field f)
186 return index_of(f) != npos;
189 static_assert([] () constexpr
191 for (
size_t i = 0; i < as_array.
size(); ++i)
192 for (
size_t j = i + 1; j < as_array.
size(); ++j)
193 if (as_array[i] == as_array[j])
197 } (),
"You may not include a field twice into fields<>.");
224 template <
typename field_types,
typename field_
ids>
225 struct record : detail::transfer_template_args_onto_t<field_types, std::tuple>
229 using base_type = detail::transfer_template_args_onto_t<field_types, std::tuple>;
242 using base_type::base_type;
246 "You must give as many IDs as types to seqan3::record.");
255 template <
size_t ...Is>
258 ((std::get<Is>(tup) = {}), ...);
272 template <
typename field_types,
typename field_
ids>
273 struct tuple_size<
seqan3::record<field_types, field_ids>>
276 static constexpr
size_t value = tuple_size_v<typename seqan3::record<field_types, field_ids>::base_type>;
284 template <
size_t elem_no,
typename field_types,
typename field_
ids>
285 struct tuple_element<elem_no,
seqan3::record<field_types, field_ids>>
288 using type = std::tuple_element_t<elem_no, typename seqan3::record<field_types, field_ids>::base_type>;
302 template <field f,
typename field_types,
typename field_
ids>
306 static_assert(
field_ids::contains(f),
"The record does not contain the field you wish to retrieve.");
307 return std::get<field_ids::index_of(f)>(r);
311 template <field f,
typename field_types,
typename field_
ids>
314 static_assert(
field_ids::contains(f),
"The record does not contain the field you wish to retrieve.");
315 return std::get<field_ids::index_of(f)>(r);
319 template <field f,
typename field_types,
typename field_
ids>
322 static_assert(
field_ids::contains(f),
"The record does not contain the field you wish to retrieve.");
323 return std::get<field_ids::index_of(f)>(
std::move(r));
327 template <field f,
typename field_types,
typename field_
ids>
330 static_assert(
field_ids::contains(f),
"The record does not contain the field you wish to retrieve.");
331 return std::get<field_ids::index_of(f)>(
std::move(r));
std::tuple_element_t< elem_no, typename seqan3::record< field_types, field_ids >::base_type > type
The member type. Delegates to same type on base_type.
Definition: record.hpp:288
@ seq_qual
Sequence and qualities combined in one range.
record()=default
Defaulted.
const auto & get(record< field_types, field_ids > const &r)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: record.hpp:312
@ USER_DEFINED_7
Please use the field name in lower case.
@ seq
The "sequence", usually a range of nucleotides or amino acids.
@ SEQ
Please use the field name in lower case.
@ USER_DEFINED_8
Please use the field name in lower case.
@ user_defined_0
Identifier for user defined file formats and specialisations.
@ HEADER_PTR
Please use the field name in lower case.
@ user_defined_6
Identifier for user defined file formats and specialisations.
@ offset
Sequence (SEQ) relative start position (0-based), unsigned value.
@ MATE
Please use the field name in lower case.
@ bpp
Base pair probability matrix of interactions, usually a matrix of float numbers.
@ user_defined_2
Identifier for user defined file formats and specialisations.
@ REACT
Please use the field name in lower case.
@ user_defined_8
Identifier for user defined file formats and specialisations.
@ FLAG
Please use the field name in lower case.
@ USER_DEFINED_5
Please use the field name in lower case.
@ id
The identifier, usually a string.
@ user_defined_5
Identifier for user defined file formats and specialisations.
const auto move
A view that turns lvalue-references into rvalue-references.
Definition: move.hpp:68
@ USER_DEFINED_6
Please use the field name in lower case.
@ user_defined_3
Identifier for user defined file formats and specialisations.
Provides seqan3::type_list and auxiliary type traits.
@ structure
Fixed interactions, usually a string of structure alphabet characters.
@ STRUCTURED_SEQ
Please use the field name in lower case.
@ bit_score
The bit score (statistical significance indicator), unsigned value.
@ EVALUE
Please use the field name in lower case.
@ ref_seq
The (reference) "sequence" information, usually a range of nucleotides or amino acids.
@ ref_offset
Sequence (REF_SEQ) relative start position (0-based), unsigned value.
constexpr bool contains
Whether a type occurs in a pack or not.
Definition: traits.hpp:193
@ USER_DEFINED_2
Please use the field name in lower case.
@ REF_ID
Please use the field name in lower case.
A class template that holds a choice of seqan3::field.
Definition: record.hpp:165
@ energy
Energy of a folded sequence, represented by one float number.
@ COMMENT
Please use the field name in lower case.
@ MAPQ
Please use the field name in lower case.
@ user_defined_1
Identifier for user defined file formats and specialisations.
@ SEQ_QUAL
Please use the field name in lower case.
@ cigar
The cigar vector (std::vector<seqan3::cigar>) representing the alignment in SAM/BAM format.
@ REACT_ERR
Please use the field name in lower case.
@ USER_DEFINED_9
Please use the field name in lower case.
@ mapq
The mapping quality of the SEQ alignment, usually a ohred-scaled score.
@ BPP
Please use the field name in lower case.
@ comment
Comment field of arbitrary content, usually a string.
@ OFFSET
Please use the field name in lower case.
auto & get(record< field_types, field_ids > &r)
Free function get() for seqan3::record based on seqan3::field.
Definition: record.hpp:304
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:36
@ user_defined_7
Identifier for user defined file formats and specialisations.
void clear()
(Re-)Initialise all tuple elements with {}.
Definition: record.hpp:249
record & operator=(record const &)=default
Defaulted.
@ tags
The optional tags in the SAM format, stored in a dictionary.
@ CIGAR
Please use the field name in lower case.
auto && get(record< field_types, field_ids > &&r)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: record.hpp:320
@ structured_seq
Sequence and fixed interactions combined in one range.
const auto && get(record< field_types, field_ids > const &&r)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: record.hpp:328
constexpr size_t size
The size of a type pack.
Definition: traits.hpp:116
@ ID
Please use the field name in lower case.
@ ALIGNMENT
Please use the field name in lower case.
@ react
Reactivity values of the sequence characters given in a vector of float numbers.
SeqAn specific customisations in the standard namespace.
@ user_defined_9
Identifier for user defined file formats and specialisations.
@ ref_id
The identifier of the (reference) sequence that SEQ was aligned to.
field
An enumerator for the fields used in file formats.
Definition: record.hpp:64
The class template that file records are based on; behaves like an std::tuple.
Definition: record.hpp:225
@ USER_DEFINED_4
Please use the field name in lower case.
detail::transfer_template_args_onto_t< field_types, std::tuple > base_type
A specialisation of std::tuple.
Definition: record.hpp:229
@ REF_SEQ
Please use the field name in lower case.
@ REF_OFFSET
Please use the field name in lower case.
@ qual
The qualities, usually in phred-score notation.
@ react_err
Reactivity error values given in a vector corresponding to REACT.
@ STRUCTURE
Please use the field name in lower case.
@ ENERGY
Please use the field name in lower case.
@ TAGS
Please use the field name in lower case.
@ USER_DEFINED_3
Please use the field name in lower case.
@ QUAL
Please use the field name in lower case.
@ flag
The alignment flag (bit information), uint16_t value.
@ user_defined_4
Identifier for user defined file formats and specialisations.
~record()=default
Defaulted.
@ USER_DEFINED_0
Please use the field name in lower case.
@ USER_DEFINED_1
Please use the field name in lower case.
@ BIT_SCORE
Please use the field name in lower case.
@ header_ptr
A pointer to the seqan3::alignment_file_header object storing header information.
@ evalue
The e-value (length normalized bit score), double value.
@ alignment
The (pairwise) alignment stored in an seqan3::alignment object.
Provides seqan3::type_list.
@ mate
The mate pair information given as a std::tuple of reference name, offset and template length.