SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
structure_file/record.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
12#include <seqan3/io/record.hpp>
13
14namespace seqan3
15{
24template <typename field_types, typename field_ids>
25class structure_record : public record<field_types, field_ids>
26{
29
31 using tuple_base_t = typename base_t::base_type;
32
34 template <field f>
35 using field_constant = typename base_t::template field_constant<f>;
36
37 using base_t::get_impl;
38
39public:
43 structure_record() = default;
48 ~structure_record() = default;
49
51 using base_t::base_t;
53
55 decltype(auto) id() &&
56 {
57 return get_impl(field_constant<seqan3::field::id>{}, static_cast<tuple_base_t &&>(*this));
58 }
60 decltype(auto) id() const &&
61 {
62 return get_impl(field_constant<seqan3::field::id>{}, static_cast<tuple_base_t const &&>(*this));
63 }
65 decltype(auto) id() &
66 {
67 return get_impl(field_constant<seqan3::field::id>{}, static_cast<tuple_base_t &>(*this));
68 }
70 decltype(auto) id() const &
71 {
72 return get_impl(field_constant<seqan3::field::id>{}, static_cast<tuple_base_t const &>(*this));
73 }
74
76 decltype(auto) sequence() &&
77 {
78 return get_impl(field_constant<seqan3::field::seq>{}, static_cast<tuple_base_t &&>(*this));
79 }
81 decltype(auto) sequence() const &&
82 {
83 return get_impl(field_constant<seqan3::field::seq>{}, static_cast<tuple_base_t const &&>(*this));
84 }
86 decltype(auto) sequence() &
87 {
88 return get_impl(field_constant<seqan3::field::seq>{}, static_cast<tuple_base_t &>(*this));
89 }
91 decltype(auto) sequence() const &
92 {
93 return get_impl(field_constant<seqan3::field::seq>{}, static_cast<tuple_base_t const &>(*this));
94 }
95
97 decltype(auto) sequence_structure() &&
98 {
99 return get_impl(field_constant<seqan3::field::structure>{}, static_cast<tuple_base_t &&>(*this));
100 }
102 decltype(auto) sequence_structure() const &&
103 {
104 return get_impl(field_constant<seqan3::field::structure>{}, static_cast<tuple_base_t const &&>(*this));
105 }
107 decltype(auto) sequence_structure() &
108 {
109 return get_impl(field_constant<seqan3::field::structure>{}, static_cast<tuple_base_t &>(*this));
110 }
112 decltype(auto) sequence_structure() const &
113 {
114 return get_impl(field_constant<seqan3::field::structure>{}, static_cast<tuple_base_t const &>(*this));
115 }
116
118 decltype(auto) energy() &&
119 {
120 return get_impl(field_constant<seqan3::field::energy>{}, static_cast<tuple_base_t &&>(*this));
121 }
123 decltype(auto) energy() const &&
124 {
125 return get_impl(field_constant<seqan3::field::energy>{}, static_cast<tuple_base_t const &&>(*this));
126 }
128 decltype(auto) energy() &
129 {
130 return get_impl(field_constant<seqan3::field::energy>{}, static_cast<tuple_base_t &>(*this));
131 }
133 decltype(auto) energy() const &
134 {
135 return get_impl(field_constant<seqan3::field::energy>{}, static_cast<tuple_base_t const &>(*this));
136 }
137
140 {
141 // this is computed
142 return get_impl(field_constant<seqan3::field::bpp>{}, static_cast<tuple_base_t &&>(*this));
143 }
145 decltype(auto) base_pair_probability_matrix() const &&
146 {
147 return get_impl(field_constant<seqan3::field::bpp>{}, static_cast<tuple_base_t const &&>(*this));
148 }
151 {
152 return get_impl(field_constant<seqan3::field::bpp>{}, static_cast<tuple_base_t &>(*this));
153 }
155 decltype(auto) base_pair_probability_matrix() const &
156 {
157 return get_impl(field_constant<seqan3::field::bpp>{}, static_cast<tuple_base_t const &>(*this));
158 }
159
160 // decltype(auto) reactivity(); // unused
161 // decltype(auto) reactivity_errors(); // unused
162 // decltype(auto) comment(); // unused
163 // decltype(auto) base_qualities(); // unused
164};
165} // namespace seqan3
166
167namespace std
168{
169
175template <typename field_types, typename field_ids>
176struct tuple_size<seqan3::structure_record<field_types, field_ids>> :
177 tuple_size<typename seqan3::structure_record<field_types, field_ids>::base_type>
178{};
179
185template <size_t elem_no, typename field_types, typename field_ids>
186struct tuple_element<elem_no, seqan3::structure_record<field_types, field_ids>> :
187 tuple_element<elem_no, typename seqan3::structure_record<field_types, field_ids>::base_type>
188{};
189
190} // namespace std
The record type of seqan3::structure_file_input.
Definition structure_file/record.hpp:26
structure_record()=default
Defaulted.
decltype(auto) base_pair_probability_matrix() &&
Base pair probability matrix of interactions, usually a matrix of float numbers.
Definition structure_file/record.hpp:139
decltype(auto) energy() &&
Energy of a folded sequence, represented by one float number.
Definition structure_file/record.hpp:118
structure_record & operator=(structure_record &&)=default
Defaulted.
decltype(auto) energy() &
Energy of a folded sequence, represented by one float number.
Definition structure_file/record.hpp:128
decltype(auto) sequence() const &
The "sequence", usually a range of nucleotides or amino acids.
Definition structure_file/record.hpp:91
decltype(auto) sequence_structure() &
Fixed interactions, usually a string of structure alphabet characters.
Definition structure_file/record.hpp:107
decltype(auto) base_pair_probability_matrix() &
Base pair probability matrix of interactions, usually a matrix of float numbers.
Definition structure_file/record.hpp:150
decltype(auto) sequence_structure() const &&
Fixed interactions, usually a string of structure alphabet characters.
Definition structure_file/record.hpp:102
structure_record(structure_record &&)=default
Defaulted.
decltype(auto) base_pair_probability_matrix() const &
Base pair probability matrix of interactions, usually a matrix of float numbers.
Definition structure_file/record.hpp:155
decltype(auto) base_pair_probability_matrix() const &&
Base pair probability matrix of interactions, usually a matrix of float numbers.
Definition structure_file/record.hpp:145
~structure_record()=default
Defaulted.
decltype(auto) sequence() &&
The "sequence", usually a range of nucleotides or amino acids.
Definition structure_file/record.hpp:76
decltype(auto) sequence_structure() const &
Fixed interactions, usually a string of structure alphabet characters.
Definition structure_file/record.hpp:112
decltype(auto) sequence_structure() &&
Fixed interactions, usually a string of structure alphabet characters.
Definition structure_file/record.hpp:97
decltype(auto) energy() const &&
Energy of a folded sequence, represented by one float number.
Definition structure_file/record.hpp:123
decltype(auto) energy() const &
Energy of a folded sequence, represented by one float number.
Definition structure_file/record.hpp:133
structure_record & operator=(structure_record const &)=default
Defaulted.
decltype(auto) sequence() &
The "sequence", usually a range of nucleotides or amino acids.
Definition structure_file/record.hpp:86
structure_record(structure_record const &)=default
Defaulted.
decltype(auto) sequence() const &&
The "sequence", usually a range of nucleotides or amino acids.
Definition structure_file/record.hpp:81
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
SeqAn specific customisations in the standard namespace.
Provides the seqan3::record template and the seqan3::field enum.
The class template that file records are based on; behaves like a std::tuple.
Definition record.hpp:190
detail::transfer_template_args_onto_t< field_types, std::tuple > base_type
A specialisation of std::tuple.
Definition record.hpp:193
Hide me