Skip to content
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

API Stability of Alphabet Module #269

Closed
Tracked by #274
marehr opened this issue Dec 6, 2020 · 8 comments
Closed
Tracked by #274

API Stability of Alphabet Module #269

marehr opened this issue Dec 6, 2020 · 8 comments
Assignees
Labels

Comments

@marehr
Copy link
Member

marehr commented Dec 6, 2020

  • Open: How to do conversion between two compatible types of the same group (aminoacid, nucleotide)

  • ./alphabet/adaptation

    • ./alphabet/adaptation/all.hpp API_STABLE
    • ./alphabet/adaptation/char.hpp API_STABLE
    • ./alphabet/adaptation/uint.hpp API_STABLE
  • ./alphabet/all.hpp API_STABLE

  • ./alphabet/alphabet_base.hpp

    • alphabet_base API_STABLE
    • alphabet_base.char_type protected API_STABLE
    • alphabet_base.rank_type protected API_STABLE
    • alphabet_base.to_char API_STABLE
    • alphabet_base.to_rank API_STABLE
    • alphabet_base.assign_char API_STABLE
    • alphabet_base.assign_rank API_STABLE
    • alphabet_base.alphabet_size API_STABLE
    • alphabet_base.<=> API_STABLE
  • ./alphabet/aminoacid

    • ./alphabet/aminoacid/aa10li.hpp
      • aa10li API_STABLE
      • aa10li_vector API_STABLE
      • ""_aa10li API_STABLE
    • ./alphabet/aminoacid/aa10murphy.hpp
      • aa10murphy API_STABLE
      • aa10murphy_vector API_STABLE
      • ""_aa10murphy API_STABLE
    • ./alphabet/aminoacid/aa20.hpp
      • aa20 API_STABLE
      • aa20_vector API_STABLE
      • ""_aa20 API_STABLE
    • ./alphabet/aminoacid/aa27.hpp
      • aa27 API_STABLE
      • aa27_vector API_STABLE
      • ""_aa27 API_STABLE
    • ./alphabet/aminoacid/all.hpp API_STABLE
    • ./alphabet/aminoacid/aminoacid_base.hpp
    • ./alphabet/aminoacid/concept.hpp
      • aminoacid_empty_base API_STABLE
      • enable_aminoacid API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
      • aminoacid_alphabet API_STABLE
    • ./alphabet/aminoacid/translation_details.hpp
    • lower case seqan3::detail::translation_table::value #318
    • ./alphabet/aminoacid/translation_genetic_code.hpp
      • genetic_code API_EXPERIMENTAL
    • ./alphabet/aminoacid/translation.hpp
      • translate_triplet API_EXPERIMENTAL
  • ./alphabet/cigar

    • ./alphabet/cigar/all.hpp
    • ./alphabet/cigar/cigar.hpp
      • cigar API_STABLE
      • cigar.to_string API_EXPERIMENTAL
      • cigar.assign_string API_EXPERIMENTAL
    • ./alphabet/cigar/cigar_op.hpp API_EXPOSITION_ONLY (we put this into the seqan3::cigar class)
  • ./alphabet/composite

    • ./alphabet/composite/all.hpp
    • ./alphabet/composite/alphabet_tuple_base.hpp
      • alphabet_tuple_base API_STABLE
      • alphabet_tuple_base.get API_STABLE
    • ./alphabet/composite/alphabet_variant.hpp
    • ./alphabet/composite/detail.hpp
    • ./alphabet/composite/semialphabet_any.hpp API_STABLE
  • ./alphabet/concept.hpp

    • alphabet_rank_t API_STABLE
    • alphabet_char_t API_STABLE
    • to_rank API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
    • assign_rank_to API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
    • to_char API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
    • assign_char_to API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
    • char_is_valid_for (API Stability of Alphabet Module #269 (comment)) API_EXPERIMENTAL
    • assign_char_strictly_to (API Stability of Alphabet Module #269 (comment)) API_EXPERIMENTAL
    • alphabet_size API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
    • semialphabet API_STABLE
    • writable_semialphabet API_STABLE
    • alphabet API_STABLE
    • writable_alphabet (API Stability of Alphabet Module #269 (comment)) API_STABLE
  • ./alphabet/detail

    • ./alphabet/detail/alphabet_proxy.hpp
    • ./alphabet/detail/convert.hpp
  • ./alphabet/exception.hpp

    • invalid_char_assignment API_EXPERIMENTAL
  • ./alphabet/gap

    • ./alphabet/gap/all.hpp
    • ./alphabet/gap/gap.hpp
    • ./alphabet/gap/gapped.hpp
  • ./alphabet/hash.hpp std::hash overload

  • ./alphabet/mask

  • ./alphabet/nucleotide

    • ./alphabet/nucleotide/all.hpp
    • ./alphabet/nucleotide/concept.hpp
      • complement API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
      • nucleotide_alphabet API_STABLE
    • ./alphabet/nucleotide/dna15.hpp API_STABLE
    • ./alphabet/nucleotide/dna3bs.hpp
    • ./alphabet/nucleotide/dna4.hpp API_STABLE
    • implicit conversion of dna4 from rna4. #320
    • ./alphabet/nucleotide/dna5.hpp API_STABLE
    • ./alphabet/nucleotide/nucleotide_base.hpp
    • ./alphabet/nucleotide/rna15.hpp API_STABLE
    • ./alphabet/nucleotide/rna4.hpp API_STABLE
    • ./alphabet/nucleotide/rna5.hpp API_STABLE
    • ./alphabet/nucleotide/sam_dna16.hpp API_STABLE TODO rename to dna16sam.hpp
    • rename seqan3::sam_dna16 to seqan3::dna16sam #312
  • ./alphabet/quality

    • ./alphabet/quality/aliases.hpp
    • ./alphabet/quality/all.hpp
    • ./alphabet/quality/concept.hpp
      • to_phred API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
      • alphabet_phred_t API_STABLE
      • assign_phred_to API_STABLE (except for ADL CPO, this is marked API_EXPERIMENTAL)
      • quality_alphabet API_STABLE
      • writable_quality_alphabet API_STABLE
    • ./alphabet/quality/phred42.hpp
      • phred42 API_STABLE
      • phred42.offset_phred API_STABLE
      • phred42.offset_char API_STABLE
    • ./alphabet/quality/phred63.hpp API_STABLE
    • ./alphabet/quality/phred68legacy.hpp API_STABLE
    • rename phred68{legacy,solexa} #315
    • ./alphabet/quality/phred94.hpp API_STABLE
    • ./alphabet/quality/qualified.hpp
      • qualified API_STABLE
      • qualified.sequence_alphabet_type API_STABLE
      • qualified.quality_alphabet_type API_STABLE
      • qualified.char_type API_STABLE
      • qualified.phred_type API_STABLE
      • qualified.assign_char API_STABLE
      • qualified.assign_phred API_STABLE
      • qualified.to_phred API_STABLE
      • qualified.to_char API_STABLE
      • qualified.complement API_STABLE
      • qualified.char_is_valid API_EXPERIMENTAL (API Stability of Alphabet Module #269 (comment))
    • ./alphabet/quality/quality_base.hpp rename to phred_base (see API Stability of Alphabet Module #269 (comment))
  • ./alphabet/structure

    • ./alphabet/structure/all.hpp
    • ./alphabet/structure/concept.hpp
      • is_pair_open API_EXPERIMENTAL
      • is_pair_close API_EXPERIMENTAL
      • is_unpaired API_EXPERIMENTAL
      • max_pseudoknot_depth API_EXPERIMENTAL
      • pseudoknot_id API_EXPERIMENTAL
      • rna_structure_alphabet API_EXPERIMENTAL
    • ./alphabet/structure/dot_bracket3.hpp
      • dot_bracket3 : alphabet_base API_EXPERIMENTAL
      • dot_bracket3.is_pair_open API_EXPERIMENTAL
      • dot_bracket3.is_pair_close API_EXPERIMENTAL
      • dot_bracket3.is_unpaired API_EXPERIMENTAL
      • dot_bracket3.max_pseudoknot_depth API_EXPERIMENTAL
      • dot_bracket3.pseudoknot_id API_EXPERIMENTAL
    • ./alphabet/structure/dssp9.hpp
      • dssp9 : alphabet_base API_EXPERIMENTAL
    • ./alphabet/structure/structured_aa.hpp
      • structured_aa : alphabet_tuple_base API_EXPERIMENTAL
      • structured_aa.sequence_alphabet_type API_EXPERIMENTAL
      • structured_aa.structure_alphabet_type API_EXPERIMENTAL
      • structured_aa.char_type API_EXPERIMENTAL
      • structured_aa.assign_char API_EXPERIMENTAL
      • structured_aa.to_char API_EXPERIMENTAL
      • structured_aa.char_is_valid API_EXPERIMENTAL (API Stability of Alphabet Module #269 (comment))
    • ./alphabet/structure/structured_rna.hpp
      • structured_rna : alphabet_tuple_base API_EXPERIMENTAL
      • sequence_alphabet_type API_EXPERIMENTAL
      • structure_alphabet_type API_EXPERIMENTAL
      • char_type API_EXPERIMENTAL
      • assign_char API_EXPERIMENTAL
      • to_char API_EXPERIMENTAL
      • complement API_EXPERIMENTAL
      • char_is_valid API_EXPERIMENTAL (API Stability of Alphabet Module #269 (comment))
      • is_pair_open API_EXPERIMENTAL
      • is_pair_close API_EXPERIMENTAL
      • is_unpaired API_EXPERIMENTAL
      • max_pseudoknot_depth API_EXPERIMENTAL
      • pseudoknot_id API_EXPERIMENTAL
    • ./alphabet/structure/wuss.hpp
      • wuss : alphabet_base API_EXPERIMENTAL
      • wuss.is_pair_open API_EXPERIMENTAL
      • wuss.is_pair_close API_EXPERIMENTAL
      • wuss.is_unpaired API_EXPERIMENTAL
      • wuss.max_pseudoknot_depth API_EXPERIMENTAL
      • wuss.pseudoknot_id API_EXPERIMENTAL

    ***********************

@marehr marehr mentioned this issue Dec 6, 2020
19 tasks
@marehr
Copy link
Member Author

marehr commented Jan 11, 2021

Core Meeting 2021-01-11:

  • char_is_valid in all alphabets (mark experimental)
  • seqan3::char_is_valid_for (mark experimental)
  • seqan3::assign_char_strictly_to (mark experimental, is currently a dead CPO, no one uses it)
  • seqan3::writable_alphabet and seqan3::writable_constexpr_alphabet remove seqan3::char_is_valid_for. (Update writable_alphabet concept #278)
    • Let's see if we need this feature (uses cases by user) and a possible concept could be added later which has as base writable_alphabet

@smehringer
Copy link
Member

smehringer commented Jan 18, 2021

Core Meeting 2021-01-18:

Todos:

High Priority

  • alphabet conversion currently works by converting to char and back. Is this the way we want it to be? Might have implications on the behaviour of alphabets and is thus API relevant (@rrahn will work out the details/problems)

  • alphabet conversion is weird; dna4 = 'Y' results in Y being converted to dna15, and then to dna4 (results in 'C' instead of 'A'). dna5 and aminoacid alphabets just define one letter that is used for unknown symbols

  • What about alphabet_base? Is this marked as stable API?

Low Priority

  • Why is cigar not stable?
  • Check documentation of alphabets that use non-stable alphabet_variant and alphabet_tuple, to make sure the documentation is stand alone and does not refer to unstable entities. Does it have implications on seqan3::sam_dna16.
    • We marked alphabet_variant and alphabet_tuple mostly stable.
  • Why are the quality alphabets not stable?

@marehr
Copy link
Member Author

marehr commented Feb 15, 2021

Core Meeting 2021-02-15:

Open Questions:

  • Should we make ADL-lookups in CPOs API-stable? (We marked those as experimental)
  • enable_aminoacid:
    • should we allow partial specialisation of seqan3::enable_aminoacid? (Undecided)
    • should we allow ADL? (We marked this as experimental)
    • seqan3::custom::alphabet seems to be the most flexible way to define custom / third-party alphabets.

@marehr
Copy link
Member Author

marehr commented Feb 17, 2021

Core-Meeting 2021-02-17:

Resolution:

@marehr
Copy link
Member Author

marehr commented Feb 22, 2021

Core-Meeting 2021-02-22:

  • Documentation: How to deal with assignment operator which are inherited, e.g. cigar defines an assignment operator for documentation, but the documentations also displays the assignment operator for the tuple_base.
  • alphabet_tuple_base uses hidden get friend, so seqan3::get<0>(tuple) is not possible. How about std::get<0>(tuple)?
  • alphabet_tuple_base is ==, !=, <= commutative with indirect alphabets?
  • Doxygen strikes again: grafik

@marehr
Copy link
Member Author

marehr commented Mar 22, 2021

2021-03-22 Core-Meeting:

  • rename seqan3::sam_dna16 to seqan3::dna16sam (to reflect the general naming scheme of alphabets, e.g. aa10li "alphabet_category""alphabet_size""alphabet_unique_identifier").
  • rename seqan3::phred68legacy to seqan3::phred68solexa
  • conversion between seqan3::phred68solexa and seqan3::phred42 should be over the failure probability and not the phred scores.
  • rename seqan3::quality_base to seqan3::phred_base

TODO:

  • alphabet/concept.hpp: CPOs mark ADL cpo_overloads experimental
  • alphabet/nucleotide/concept.hpp: CPOs mark ADL cpo_overloads experimental
  • alphabet/quality/concept.hpp: CPOs mark ADL cpo_overloads experimental

@marehr marehr added this to the 3.0.3 Release Sprint milestone Apr 12, 2021
@marehr
Copy link
Member Author

marehr commented Apr 13, 2021

We talked about "uint64_t is not an alphabet?" #200

@marehr
Copy link
Member Author

marehr commented May 18, 2021

Open todos were collected in epic #389.

@marehr marehr closed this as completed May 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants