39template <std::ranges::view urng_t>
61 using size_type = std::ranges::range_size_t<std::ranges::range_reference_t<urng_t>>;
63 using difference_type = std::ranges::range_difference_t<std::ranges::range_reference_t<urng_t>>;
71 template <
typename,
template <
typename...>
typename>
75 static_assert(range_dimension_v<urng_t> == 2,
76 "This adaptor only handles range-of-range (two dimensions) as input.");
77 static_assert(std::ranges::viewable_range<urng_t>,
78 "The range parameter to views::translate_join cannot be a temporary of a non-view range.");
79 static_assert(std::ranges::viewable_range<std::ranges::range_reference_t<urng_t>>,
80 "The inner range of the range parameter to views::translate_join cannot be a temporary of "
82 static_assert(std::ranges::sized_range<urng_t>,
83 "The range parameter to views::translate_join must model std::ranges::sized_range.");
84 static_assert(std::ranges::sized_range<std::ranges::range_reference_t<urng_t>>,
85 "The inner range of the range parameter to views::translate_join must model "
86 "std::ranges::sized_range.");
87 static_assert(std::ranges::random_access_range<urng_t>,
88 "The range parameter to views::translate_join must model std::ranges::random_access_range.");
89 static_assert(std::ranges::random_access_range<std::ranges::range_reference_t<urng_t>>,
90 "The inner range of the range parameter to views::translate_join must model "
91 "std::ranges::random_access_range.");
93 "The range parameter to views::translate_join must be over a range over elements of "
94 "seqan3::nucleotide_alphabet.");
111 urange{std::move(_urange)},
132 template <
typename rng_t>
133 requires (!std::same_as<std::remove_cvref_t<rng_t>,
view_translate_join>) && std::ranges::viewable_range<rng_t>
183 return {*
this,
size()};
190 return {*
this,
size()};
256template <
typename urng_t>
278 template <std::ranges::range urng_t>
281 static_assert(range_dimension_v<urng_t> == 2,
282 "This adaptor only handles range-of-range (two dimensions) as input.");
283 static_assert(std::ranges::viewable_range<urng_t>,
284 "The range parameter to views::translate_join cannot be a temporary of a non-view range.");
285 static_assert(std::ranges::viewable_range<std::ranges::range_reference_t<urng_t>>,
286 "The inner range of the range parameter to views::translate_join cannot be a "
287 "temporary of a non-view range.");
288 static_assert(std::ranges::sized_range<urng_t>,
289 "The range parameter to views::translate_join must model std::ranges::sized_range.");
290 static_assert(std::ranges::sized_range<std::ranges::range_reference_t<urng_t>>,
291 "The inner range of the range parameter to views::translate_join must model "
292 "std::ranges::sized_range.");
293 static_assert(std::ranges::random_access_range<urng_t>,
294 "The range parameter to views::translate_join must model std::ranges::random_access_range.");
295 static_assert(std::ranges::random_access_range<std::ranges::range_reference_t<urng_t>>,
296 "The inner range of the range parameter to views::translate_join must model "
297 "std::ranges::random_access_range.");
299 "The range parameter to views::translate_join must be over a range over elements of "
300 "seqan3::nucleotide_alphabet.");
306 template <std::ranges::range urng_t>
309 return me(std::forward<urng_t>(urange));
Template for range adaptor closure objects that store arguments and wrap a proto-adaptor.
Definition: adaptor_from_functor.hpp:57
A CRTP base template for creating random access iterators.
Definition: random_access_iterator.hpp:42
A generic random access iterator that delegates most operations to the range.
Definition: random_access_iterator.hpp:294
The return type of seqan3::views::translate_join.
Definition: translate_join.hpp:41
const_iterator begin() const noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: translate_join.hpp:162
std::ranges::range_size_t< std::ranges::range_reference_t< urng_t > > size_type
The size_type.
Definition: translate_join.hpp:61
view_translate_join() noexcept=default
Defaulted.
small_vector< translation_frames, 6 > selected_frames
The selected frames corresponding to the frames required.
Definition: translate_join.hpp:48
view_translate_join(rng_t &&_urange, translation_frames const _tf=translation_frames::six_frames)
Construct from another range.
Definition: translate_join.hpp:135
view_translate_single< std::views::all_t< std::ranges::range_reference_t< urng_t > > > reference
The reference_type.
Definition: translate_join.hpp:55
std::ranges::range_difference_t< std::ranges::range_reference_t< urng_t > > difference_type
A signed integer type, usually std::ptrdiff_t.
Definition: translate_join.hpp:63
iterator begin() noexcept
Returns an iterator to the first element of the container.
Definition: translate_join.hpp:156
const_iterator end() const noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: translate_join.hpp:187
size_type size() noexcept
Returns the number of elements in the view.
Definition: translate_join.hpp:205
urng_t urange
The data members of view_translate_join.
Definition: translate_join.hpp:44
reference operator[](size_type const n)
Return the n-th element.
Definition: translate_join.hpp:235
const_reference operator[](size_type const n) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: translate_join.hpp:244
size_type size() const noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: translate_join.hpp:211
translation_frames tf
The frames that should be used for translation.
Definition: translate_join.hpp:46
iterator end() noexcept
Returns an iterator to the element following the last element of the container.
Definition: translate_join.hpp:181
The return type of seqan3::views::translate_single.
Definition: translate.hpp:155
constexpr void push_back(value_type const value) noexcept
Appends the given element value to the end of the container.
Definition: small_vector.hpp:850
constexpr size_type size() const noexcept
Returns the number of elements in the container, i.e. std::distance(begin(), end()).
Definition: small_vector.hpp:574
Provides various transformation traits used by the range module.
constexpr auto translate_join
A view that translates nucleotide into aminoacid alphabet with 1, 2, 3 or 6 frames....
Definition: translate_join.hpp:381
constexpr auto translate_single
A view that translates nucleotide into aminoacid alphabet for one of the six frames.
Definition: translate.hpp:523
constexpr auto all
Returns a view that includes all elements of the range argument.
Definition: all_view.hpp:204
constexpr size_t size
The size of a type pack.
Definition: type_pack/traits.hpp:146
Specifies requirements of an input range type for which the const version of that type satisfies the ...
A concept that indicates whether an alphabet represents nucleotides.
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
view_translate_join(urng_t &&, translation_frames const =translation_frames{}) -> view_translate_join< std::views::all_t< urng_t > >
Class template argument deduction for view_translate_join.
The SeqAn namespace for views.
Definition: char_strictly_to.hpp:22
translation_frames
Specialisation values for single and multiple translation frames.
Definition: translate.hpp:62
@ forward_frame2
The third forward frame starting at position 2.
@ forward_frame0
The first forward frame starting at position 0.
@ reverse_frame0
The first reverse frame starting at position 0.
@ reverse_frame2
The third reverse frame starting at position 2.
@ forward_frame1
The second forward frame starting at position 1.
@ reverse_frame1
The second reverse frame starting at position 1.
A constexpr string implementation to manipulate string literals at compile time.
Definition of the range adaptor object type for seqan3::views::translate_join.
Definition: translate_join.hpp:266
constexpr auto operator()(urng_t &&urange, translation_frames const tf=translation_frames::six_frames) const
Directly return an instance of the view, initialised with the given parameters.
Definition: translate_join.hpp:279
constexpr auto operator()(translation_frames const tf=translation_frames::six_frames) const
Store the argument and return a range adaptor closure object.
Definition: translate_join.hpp:268
constexpr friend auto operator|(urng_t &&urange, translate_join_fn const &me)
This adaptor is usable without setting the frames parameter in which case the default is chosen.
Definition: translate_join.hpp:307
Provides seqan3::views::translate and seqan3::views::translate_single.