-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Concepts for sequence and alignment #60
Comments
I agree with the |
I agree with the |
Core Meeting Notes:https://github.com/seqan/seqan3/wiki/Core-Meeting-notes#2020-05-11-marehr We discussed about |
…gnment This PR finishes task seqan/product_backlog#60 by implementing seqan3::detail::(writable_)pairwise_alignment.
…gnment This PR finishes task seqan/product_backlog#60 by implementing seqan3::detail::(writable_)pairwise_alignment.
…alignment This PR finishes task seqan/product_backlog#60 by implementing seqan3::detail::(writable_)pairwise_alignment.
…alignment This PR finishes task seqan/product_backlog#60 by implementing seqan3::detail::(writable_)pairwise_alignment.
We currently have a concept for
aligned_sequence
that does not build upon asequence
.Tasks from resolution
seqan3::sequence
concept (Range sequence concept seqan3#1898)seqan3::aligned_sequence
concept to not include writable requirementsseqan3::writable_aligned_sequence
seqan3::detail::pairwise_alignment
conceptSequence Concept
We talked and decided(?) some time ago that a
sequence
is a biological sequence and means an range over an alphabet type.Only caveat is, that
std::vector<int>
is asequence
too. (we could also exclude builtin types and or just int-types).We use that definition of a
sequence
implicitly in thealigned_sequence
https://github.com/seqan/seqan3/blob/70b4e57575ae1f92be2f0f5e70e0ba7d090e492d/include/seqan3/alignment/aligned_sequence/aligned_sequence_concept.hpp#L203-L216
and in the
debugstream
overload for rangeshttps://github.com/seqan/seqan3/blob/70b4e57575ae1f92be2f0f5e70e0ba7d090e492d/include/seqan3/core/detail/debug_stream_range.hpp#L97-L102
Sequence Concept Proposal
This conflicts a bit with a
aligned_sequence
that is defined likehttps://github.com/seqan/seqan3/blob/70b4e57575ae1f92be2f0f5e70e0ba7d090e492d/include/seqan3/alignment/aligned_sequence/aligned_sequence_concept.hpp#L203-L216
and requires a
forward_range
(why?).Aligned Sequence Concept Proposal
I would propose this to change to
Another problem with aligned_sequence is that it requires to be writable. We should split this, like
alphabet
andwritable_alphabet
into two concepts.Hannes also had a propasal
aligned_range.pdf
Alignment Concept
We currently have an implicit definition what an alignment is in the
debugstream
https://github.com/seqan/seqan3/blob/70b4e57575ae1f92be2f0f5e70e0ba7d090e492d/include/seqan3/alignment/aligned_sequence/aligned_sequence_concept.hpp#L556-L559
In this definition we assume that an alignment is always a
tuple
ofaligned_sequences
.https://github.com/seqan/seqan3/blob/0ff2e117952743f081735df9956be4c512f4ccba/include/seqan3/io/alignment_file/detail.hpp#L331-L336
Uses also tuple_like, but is clearly for pairwise_alignment. This also an instance of a writable alignment.
https://github.com/seqan/seqan3/blob/0ff2e117952743f081735df9956be4c512f4ccba/include/seqan3/alignment/matrix/alignment_trace_algorithms.hpp#L95-L104
This also an instance of a writable alignment. (This interface is deprecated and will be removed)
My question is if a tuple-like is always the right data structure?
I thought a multiple sequence alignment is a alignment over multiple sequences. Are the number of those multiple sequences always known at compile time? If not a multiple alignment should not be defined over a tuple, or at least not exclusively.
For a pairwise_alignment this makes sense because we know that we always have 2 sequences and I find it right to make sure at compile time that we have two sequences.
Alignment Concept Proposal
(1) Make pairwise alignment special and only allow ranges of aligned sequences
(2) Keep tuple as alignment (currently indirectly used)
(3) Combine (1) and (2); allow tuple and ranges of aligned_sequences.
But what would that look like?
The text was updated successfully, but these errors were encountered: