#include <boost/serialization/version.hpp>
#include <set>
+#include <ostream>
//! this is a helper class for sequence
+enum AlphabetRef { reduced_dna_alphabet, reduced_rna_alphabet, reduced_nucleic_alphabet,
+ nucleic_alphabet, protein_alphabet, empty_alphabet=255 };
+
class Alphabet {
friend class Sequence;
public:
typedef std::string::const_iterator const_iterator;
-
+ //! define the various alphabet types (as python corebio)
+
+ friend bool operator==(const Alphabet&, const Alphabet&);
+ friend std::ostream& operator<<(std::ostream&, const Alphabet&);
+
//! case-insensitive test to check a character for existence in our alphabet
bool exists(const char) const;
+ //! return an alphabet given an AlphabetRef enumeration
+ static const Alphabet &get_alphabet(AlphabetRef);
// note, if you want to define an alphabet for a sequence, you probably want
// to update the enumeration in Sequence, and Sequence::get_sequence
//! The standard DNA alphabet, with unique, and unknown characters
//! the protein alphabet
static const char *protein_cstr;
static const Alphabet &protein_alphabet();
+
+ static const char *empty_cstr;
+ static const Alphabet &empty_alphabet();
private:
//! what are allowable symbols in our alphabet