// CharacterCodes.hpp #if !defined(CHARACTER_CODES_HPP) #define CHARACTER_CODES_HPP namespace Cipres { namespace SequenceFormats { enum CharacterCode { // either GAP = -2, MISSING, // nucleotides ADENINE, CYTOSINE, GUANINE, THYMINE, URACIL, AMBIGUOUS_A_C, AMBIGUOUS_A_G, AMBIGUOUS_A_T, AMBIGUOUS_C_G, AMBIGUOUS_C_T, AMBIGUOUS_G_T, AMBIGUOUS_A_C_G, AMBIGUOUS_A_C_T, AMBIGUOUS_A_G_T, AMBIGUOUS_C_G_T, AMBIGUOUS_ANY, // amino acids ALANINE, CYSTEINE, ASPARTIC_ACID, GLUTAMIC_ACID, PHENYLALANINE, GLYCINE, HISTIDINE, ISOLEUCINE, LYSINE, LEUCINE, METHIONINE, ASPARAGINE, PROLINE, GLUTAMINE, ARGININE, SERINE, THREONINE, VALINE, TRYPTOPHAN, TYROSINE }; inline int NucleotideSymbolToCode(char symbol) throw() { static const char nucleotide_codes[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, ADENINE, AMBIGUOUS_C_G_T, CYTOSINE, AMBIGUOUS_A_G_T, -1, -1, GUANINE, AMBIGUOUS_A_C_T, -1, -1, AMBIGUOUS_G_T, -1, AMBIGUOUS_A_C, AMBIGUOUS_ANY, -1, -1, -1, AMBIGUOUS_A_G, AMBIGUOUS_C_G, THYMINE, URACIL, AMBIGUOUS_A_C_G, AMBIGUOUS_A_T, AMBIGUOUS_ANY, AMBIGUOUS_C_T, -1, -1, -1, -1, -1, -1, -1, ADENINE, AMBIGUOUS_C_G_T, CYTOSINE, AMBIGUOUS_A_G_T, -1, -1, GUANINE, AMBIGUOUS_A_C_T, -1, -1, AMBIGUOUS_G_T, -1, AMBIGUOUS_A_C, AMBIGUOUS_ANY, -1, -1, -1, AMBIGUOUS_A_G, AMBIGUOUS_C_G, THYMINE, URACIL, AMBIGUOUS_A_C_G, AMBIGUOUS_A_T, AMBIGUOUS_ANY, AMBIGUOUS_C_T, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; return nucleotide_codes[static_cast(symbol)]; } inline int AminoAcidSymbolToCode(char symbol) throw() { static const char amino_acid_codes[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, ALANINE, -1, CYSTEINE, ASPARTIC_ACID, GLUTAMIC_ACID, PHENYLALANINE, GLYCINE, HISTIDINE, ISOLEUCINE, -1, LYSINE, LEUCINE, METHIONINE, ASPARAGINE, -1, PROLINE, GLUTAMINE, ARGININE, SERINE, THREONINE, -1, VALINE, TRYPTOPHAN, -1, TYROSINE, -1, -1, -1, -1, -1, -1, -1, ALANINE, -1, CYSTEINE, ASPARTIC_ACID, GLUTAMIC_ACID, PHENYLALANINE, GLYCINE, HISTIDINE, ISOLEUCINE, -1, LYSINE, LEUCINE, METHIONINE, ASPARAGINE, -1, PROLINE, GLUTAMINE, ARGININE, SERINE, THREONINE, -1, VALINE, TRYPTOPHAN, -1, TYROSINE, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; return amino_acid_codes[static_cast(symbol)]; } } // namespace SequenceFormats } // namespace Cipres #endif // CHARACTER_CODES_HPP