implement alphabet for sequence
[mussa.git] / alg / alphabet.cpp
1 #include "alg/alphabet.hpp"
2
3 // some standard dna alphabets 
4 // Include nl (\012), and cr (\015) to make sequence parsing eol 
5 // convention independent.
6 const Alphabet Alphabet::reduced_dna_alphabet("AaCcGgTtNn\012\015");
7 const Alphabet Alphabet::reduced_rna_alphabet("AaCcGgUuNn\012\015");
8 const Alphabet Alphabet::reduced_nucleic_alphabet("AaCcGgTtUuNn\012\015");
9 //! this is the general iupac alphabet for nucleotides
10 const Alphabet Alphabet::nucleic_alphabet(
11   "AaCcGgTtUuRrYyMmKkSsWwBbDdHhVvNn-~.?\012\015"
12 );
13 //! the protein alphabet
14 const Alphabet Alphabet::protein_alphabet(
15   "AaCcDdEeFfGgHhIiKkLlMmNnPpQqRrSsTtVvWwYy\012\015"
16 );
17
18 Alphabet::Alphabet(const char *a) :
19   alphabet(a)
20 {
21   alphabet_set.insert(alphabet.begin(), alphabet.end());  
22
23
24 void Alphabet::assign(const Alphabet& a)
25 {
26   alphabet = a.alphabet;
27   alphabet_set.clear();
28   alphabet_set.insert(alphabet.begin(), alphabet.end());
29 }
30
31 const char *Alphabet::c_str() const
32 {
33   alphabet.c_str();
34 }
35
36 bool Alphabet::exists(const char c) const
37 {
38   return (alphabet_set.find(c) != alphabet_set.end());
39 }