1 #include "alg/alphabet.hpp"
3 // some standard dna alphabets
4 // Include nl (\012), and cr (\015) to make sequence parsing eol
5 // convention independent.
6 const char *Alphabet::reduced_dna_cstr = "AaCcGgTtNn\012\015";
7 const char *Alphabet::reduced_rna_cstr = "AaCcGgUuNn\012\015";
8 const char *Alphabet::reduced_nucleic_cstr = "AaCcGgTtUuNn\012\015";
9 //! this is the general iupac alphabet for nucleotides
10 const char *Alphabet::nucleic_cstr =
11 "AaCcGgTtUuRrYyMmKkSsWwBbDdHhVvNn-~.?\012\015";
12 //! the protein alphabet
13 const char *Alphabet::protein_cstr =
14 "AaCcDdEeFfGgHhIiKkLlMmNnPpQqRrSsTtVvWwYy\012\015";
16 const Alphabet& Alphabet::reduced_dna_alphabet() {
17 static Alphabet *a = new Alphabet(reduced_dna_cstr);
20 const Alphabet& Alphabet::reduced_rna_alphabet() {
21 static Alphabet *a = new Alphabet(reduced_rna_cstr);
24 const Alphabet& Alphabet::reduced_nucleic_alphabet() {
25 static Alphabet *a = new Alphabet(reduced_nucleic_cstr);
28 const Alphabet& Alphabet::nucleic_alphabet() {
29 static Alphabet *a = new Alphabet(nucleic_cstr);
32 const Alphabet& Alphabet::protein_alphabet() {
33 static Alphabet *a = new Alphabet(protein_cstr);
37 Alphabet::Alphabet(const char *a) :
40 alphabet_set.insert(alphabet.begin(), alphabet.end());
43 void Alphabet::assign(const Alphabet& a)
45 alphabet = a.alphabet;
47 alphabet_set.insert(alphabet.begin(), alphabet.end());
50 bool Alphabet::exists(const char c) const
52 return (alphabet_set.find(c) != alphabet_set.end());