genetic_codes.h 12.3 KB
#include <map>

using namespace std;

map<string, string> gc_std = {
					{"GCU", "A"}, {"GCC", "A"}, {"GCA", "A"}, {"GCG", "A"},
					{"UGU", "C"}, {"UGC", "C"},
					{"GAU", "D"}, {"GAC", "D"},
					{"GAA", "E"}, {"GAG", "E"},
					{"UUU", "F"}, {"UUC", "F"},
					{"GGU", "G"}, {"GGC", "G"}, {"GGA", "G"}, {"GGG", "G"},
					{"CAU", "H"}, {"CAC", "H"},
					{"AUU", "I"}, {"AUC", "I"}, {"AUA", "I"},
					{"AAA", "K"}, {"AAG", "K"},
					{"CUU", "L"}, {"CUC", "L"}, {"CUA", "L"}, {"CUG", "L"}, {"UUA", "L"}, {"UUG", "L"},
					{"AUG", "M"},
					{"AAU", "N"}, {"AAC", "N"},
					{"CCU", "P"}, {"CCC", "P"}, {"CCA", "P"}, {"CCG", "P"},
					{"CAA", "Q"}, {"CAG", "Q"},
					{"CGU", "R"}, {"CGC", "R"}, {"CGA", "R"}, {"CGG", "R"}, {"AGA", "R"}, {"AGG", "R"},
					{"UCU", "S"}, {"UCC", "S"}, {"UCA", "S"}, {"UCG", "S"}, {"AGU", "S"}, {"AGC", "S"},
					{"ACU", "T"}, {"ACC", "T"}, {"ACA", "T"}, {"ACG", "T"},
					{"GUU", "V"}, {"GUC", "V"}, {"GUA", "V"}, {"GUG", "V"},
					{"UGG", "W"},
					{"UAU", "Y"}, {"UAC", "Y"},
					{"UAA", "*"}, {"UAG", "*"}, {"UGA", "*"},
					// Ambiguous positions
					{"UUR", "L"}, {"YUA", "L"}, {"YUG", "L"}, {"CUN", "L"}, {"CUR", "L"}, {"CUY", "L"}, {"CUM", "L"}, {"CUK", "L"}, {"CUS", "L"}, {"CUW", "L"}, {"CUH", "L"}, {"CUB", "L"}, {"CUV", "L"}, {"CUD", "L"},
					{"AGR", "R"}, {"MGA", "R"}, {"MGG", "R"}, {"CGN", "R"}, {"CGR", "R"}, {"CGY", "R"}, {"CGM", "R"}, {"CGK", "R"}, {"CGS", "R"}, {"CGW", "R"}, {"CGH", "R"}, {"CGB", "R"}, {"CGV", "R"}, {"CGD", "R"},
					{"AGY", "S"}, {"UCN", "S"}, {"UCR", "S"}, {"UCY", "S"}, {"UCM", "S"}, {"UCK", "S"}, {"UCS", "S"}, {"UCW", "S"}, {"UCH", "S"}, {"UCB", "S"}, {"UCV", "S"}, {"UCD", "S"},
					{"CCN", "P"}, {"CCR", "P"}, {"CCY", "P"}, {"CCM", "P"}, {"CCK", "P"}, {"CCS", "P"}, {"CCW", "P"}, {"CCH", "P"}, {"CCB", "P"}, {"CCV", "P"}, {"CCD", "P"},
					{"ACN", "T"}, {"ACR", "T"}, {"ACY", "T"}, {"ACM", "T"}, {"ACK", "T"}, {"ACS", "T"}, {"ACW", "T"}, {"ACH", "T"}, {"ACB", "T"}, {"ACV", "T"}, {"ACD", "T"},
					{"GUN", "V"}, {"GUR", "V"}, {"GUY", "V"}, {"GUM", "V"}, {"GUK", "V"}, {"GUS", "V"}, {"GUW", "V"}, {"GUH", "V"}, {"GUB", "V"}, {"GUV", "V"}, {"GUD", "V"},
					{"GCN", "A"}, {"GCR", "A"}, {"GCY", "A"}, {"GCM", "A"}, {"GCK", "A"}, {"GCS", "A"}, {"GCW", "A"}, {"GCH", "A"}, {"GCB", "A"}, {"GCV", "A"}, {"GCD", "A"},
					{"GGN", "G"}, {"GGR", "G"}, {"GGY", "G"}, {"GGM", "G"}, {"GGK", "G"}, {"GGS", "G"}, {"GGW", "G"}, {"GGH", "G"}, {"GGB", "G"}, {"GGV", "G"}, {"GGD", "G"},
					{"CAY", "H"},
					{"CAR", "Q"},
					{"AAY", "N"},
					{"AAR", "K"},
					{"UUY", "F"},
					{"UAY", "Y"},
					{"UAR", "*"},
					{"UGY", "C"},
					{"GAY", "D"},
					{"GAR", "E"},
					{"AUY", "I"}, {"AUH", "I"}, {"AUM", "I"}, {"AUW", "I"}
				};
map<string, string> gc_std_DNA = {
					{"GCT", "A"}, {"GCC", "A"}, {"GCA", "A"}, {"GCG", "A"},
					{"TGT", "C"}, {"TGC", "C"},
					{"GAT", "D"}, {"GAC", "D"},
					{"GAA", "E"}, {"GAG", "E"},
					{"TTT", "F"}, {"TTC", "F"},
					{"GGT", "G"}, {"GGC", "G"}, {"GGA", "G"}, {"GGG", "G"},
					{"CAT", "H"}, {"CAC", "H"},
					{"ATT", "I"}, {"ATC", "I"}, {"ATA", "I"},
					{"AAA", "K"}, {"AAG", "K"},
					{"CTT", "L"}, {"CTC", "L"}, {"CTA", "L"}, {"CTG", "L"}, {"TTA", "L"}, {"TTG", "L"},
					{"ATG", "M"},
					{"AAT", "N"}, {"AAC", "N"},
					{"CCT", "P"}, {"CCC", "P"}, {"CCA", "P"}, {"CCG", "P"},
					{"CAA", "Q"}, {"CAG", "Q"},
					{"CGT", "R"}, {"CGC", "R"}, {"CGA", "R"}, {"CGG", "R"}, {"AGA", "R"}, {"AGG", "R"},
					{"TCT", "S"}, {"TCC", "S"}, {"TCA", "S"}, {"TCG", "S"}, {"AGT", "S"}, {"AGC", "S"},
					{"ACT", "T"}, {"ACC", "T"}, {"ACA", "T"}, {"ACG", "T"},
					{"GTT", "V"}, {"GTC", "V"}, {"GTA", "V"}, {"GTG", "V"},
					{"TGG", "W"},
					{"TAT", "Y"}, {"TAC", "Y"},
					{"TAA", "*"}, {"TAG", "*"}, {"TGA", "*"},
					// Ambiguous positions
					{"TTR", "L"}, {"YTA", "L"}, {"YTG", "L"}, {"CTN", "L"}, {"CTR", "L"}, {"CTY", "L"}, {"CTM", "L"}, {"CTK", "L"}, {"CTS", "L"}, {"CTW", "L"}, {"CTH", "L"}, {"CTB", "L"}, {"CTV", "L"}, {"CTD", "L"},
					{"AGR", "R"}, {"MGA", "R"}, {"MGG", "R"}, {"CGN", "R"}, {"CGR", "R"}, {"CGY", "R"}, {"CGM", "R"}, {"CGK", "R"}, {"CGS", "R"}, {"CGW", "R"}, {"CGH", "R"}, {"CGB", "R"}, {"CGV", "R"}, {"CGD", "R"},
					{"AGY", "S"}, {"TCN", "S"}, {"TCR", "S"}, {"TCY", "S"}, {"TCM", "S"}, {"TCK", "S"}, {"TCS", "S"}, {"TCW", "S"}, {"TCH", "S"}, {"TCB", "S"}, {"TCV", "S"}, {"TCD", "S"},
					{"CCN", "P"}, {"CCR", "P"}, {"CCY", "P"}, {"CCM", "P"}, {"CCK", "P"}, {"CCS", "P"}, {"CCW", "P"}, {"CCH", "P"}, {"CCB", "P"}, {"CCV", "P"}, {"CCD", "P"},
					{"ACN", "T"}, {"ACR", "T"}, {"ACY", "T"}, {"ACM", "T"}, {"ACK", "T"}, {"ACS", "T"}, {"ACW", "T"}, {"ACH", "T"}, {"ACB", "T"}, {"ACV", "T"}, {"ACD", "T"},
					{"GTN", "V"}, {"GTR", "V"}, {"GTY", "V"}, {"GTM", "V"}, {"GTK", "V"}, {"GTS", "V"}, {"GTW", "V"}, {"GTH", "V"}, {"GTB", "V"}, {"GTV", "V"}, {"GTD", "V"},
					{"GCN", "A"}, {"GCR", "A"}, {"GCY", "A"}, {"GCM", "A"}, {"GCK", "A"}, {"GCS", "A"}, {"GCW", "A"}, {"GCH", "A"}, {"GCB", "A"}, {"GCV", "A"}, {"GCD", "A"},
					{"GGN", "G"}, {"GGR", "G"}, {"GGY", "G"}, {"GGM", "G"}, {"GGK", "G"}, {"GGS", "G"}, {"GGW", "G"}, {"GGH", "G"}, {"GGB", "G"}, {"GGV", "G"}, {"GGD", "G"},
					{"CAY", "H"},
					{"CAR", "Q"},
					{"AAY", "N"},
					{"AAR", "K"},
					{"TTY", "F"},
					{"TAY", "Y"},
					{"TAR", "*"},
					{"TGY", "C"},
					{"GAY", "D"},
					{"GAR", "E"},
					{"ATY", "I"}, {"ATH", "I"}, {"ATM", "I"}, {"ATW", "I"}
				};
map<string, string> gc_std_rev = {
					{"CGA", "A"}, {"CGG", "A"}, {"CGU", "A"}, {"CGC", "A"},
					{"ACA", "C"}, {"ACG", "C"},
					{"CUA", "D"}, {"CUG", "D"},
					{"CUU", "E"}, {"CUC", "E"},
					{"AAA", "F"}, {"AAG", "F"},
					{"CCA", "G"}, {"CCG", "G"}, {"CCU", "G"}, {"CCC", "G"},
					{"GUA", "H"}, {"GUG", "H"},
					{"UAA", "I"}, {"UAG", "I"}, {"UAU", "I"},
					{"UUU", "K"}, {"UUC", "K"},
					{"GAA", "L"}, {"GAG", "L"}, {"GAU", "L"}, {"GAC", "L"}, {"AAU", "L"}, {"AAC", "L"},
					{"UAC", "M"},
					{"UUA", "N"}, {"UUG", "N"},
					{"GGA", "P"}, {"GGG", "P"}, {"GGU", "P"}, {"GGC", "P"},
					{"GUU", "Q"}, {"GUC", "Q"},
					{"GCA", "R"}, {"GCG", "R"}, {"GCU", "R"}, {"GCC", "R"}, {"UCU", "R"}, {"UCC", "R"},
					{"AGA", "S"}, {"AGG", "S"}, {"AGU", "S"}, {"AGC", "S"}, {"UCA", "S"}, {"UCG", "S"},
					{"UGA", "T"}, {"UGG", "T"}, {"UGU", "T"}, {"UGC", "T"},
					{"CAA", "V"}, {"CAG", "V"}, {"CAU", "V"}, {"CAC", "V"},
					{"ACC", "W"},
					{"AUA", "Y"}, {"AUG", "Y"},
					{"AUU", "*"}, {"AUC", "*"}, {"ACU", "*"},
					// Ambiguous positions
					//{"UUR", "L"}, {"YUA", "L"}, {"YUG", "L"}, {"CUN", "L"}, {"CUR", "L"}, {"CUY", "L"}, {"CUM", "L"}, {"CUK", "L"}, {"CUS", "L"}, {"CUW", "L"}, {"CUH", "L"}, {"CUB", "L"}, {"CUV", "L"}, {"CUD", "L"},
					  {"AAY", "L"}, {"RAU", "L"}, {"RAC", "L"}, {"GAN", "L"}, {"GAY", "L"}, {"GAR", "L"}, {"GAK", "L"}, {"GAM", "L"}, {"GAS", "L"}, {"GAW", "L"}, {"GAD", "L"}, {"GAV", "L"}, {"GAB", "L"}, {"GAH", "L"},
					//{"AGR", "R"}, {"MGA", "R"}, {"MGG", "R"}, {"CGN", "R"}, {"CGR", "R"}, {"CGY", "R"}, {"CGM", "R"}, {"CGK", "R"}, {"CGS", "R"}, {"CGW", "R"}, {"CGH", "R"}, {"CGB", "R"}, {"CGV", "R"}, {"CGD", "R"},
					  {"UCY", "R"}, {"KCU", "R"}, {"KCC", "R"}, {"GCN", "R"}, {"GCY", "R"}, {"GCR", "R"}, {"GCK", "R"}, {"GCM", "R"}, {"GCS", "R"}, {"GCW", "R"}, {"GCD", "R"}, {"GCV", "R"}, {"GCB", "R"}, {"GCH", "R"},
					//{"AGY", "S"}, {"UCN", "S"}, {"UCR", "S"}, {"UCY", "S"}, {"UCM", "S"}, {"UCK", "S"}, {"UCS", "S"}, {"UCW", "S"}, {"UCH", "S"}, {"UCB", "S"}, {"UCV", "S"}, {"UCD", "S"},
					  {"UCR", "S"}, {"AGN", "S"}, {"AGY", "S"}, {"AGR", "S"}, {"AGK", "S"}, {"AGM", "S"}, {"AGS", "S"}, {"AGW", "S"}, {"AGD", "S"}, {"AGV", "S"}, {"AGB", "S"}, {"AGH", "S"},
					//{"CCN", "P"}, {"CCR", "P"}, {"CCY", "P"}, {"CCM", "P"}, {"CCK", "P"}, {"CCS", "P"}, {"CCW", "P"}, {"CCH", "P"}, {"CCB", "P"}, {"CCV", "P"}, {"CCD", "P"},
					  {"GGN", "P"}, {"GGY", "P"}, {"GGR", "P"}, {"GGK", "P"}, {"GGM", "P"}, {"GGS", "P"}, {"GGW", "P"}, {"GGD", "P"}, {"GGV", "P"}, {"GGB", "P"}, {"GGH", "P"},
					//{"ACN", "T"}, {"ACR", "T"}, {"ACY", "T"}, {"ACM", "T"}, {"ACK", "T"}, {"ACS", "T"}, {"ACW", "T"}, {"ACH", "T"}, {"ACB", "T"}, {"ACV", "T"}, {"ACD", "T"},
					  {"UGN", "T"}, {"UGY", "T"}, {"UGR", "T"}, {"UGK", "T"}, {"UGM", "T"}, {"UGS", "T"}, {"UGW", "T"}, {"UGD", "T"}, {"UGV", "T"}, {"UGB", "T"}, {"UGH", "T"},
					//{"GUN", "V"}, {"GUR", "V"}, {"GUY", "V"}, {"GUM", "V"}, {"GUK", "V"}, {"GUS", "V"}, {"GUW", "V"}, {"GUH", "V"}, {"GUB", "V"}, {"GUV", "V"}, {"GUD", "V"},
					  {"CAN", "V"}, {"CAY", "V"}, {"CAR", "V"}, {"CAK", "V"}, {"CAM", "V"}, {"CAS", "V"}, {"CAW", "V"}, {"CAD", "V"}, {"CAV", "V"}, {"CAB", "V"}, {"CAH", "V"},
					//{"GCN", "A"}, {"GCR", "A"}, {"GCY", "A"}, {"GCM", "A"}, {"GCK", "A"}, {"GCS", "A"}, {"GCW", "A"}, {"GCH", "A"}, {"GCB", "A"}, {"GCV", "A"}, {"GCD", "A"},
					  {"CGN", "A"}, {"CGY", "A"}, {"CGR", "A"}, {"CGK", "A"}, {"CGM", "A"}, {"CGS", "A"}, {"CGW", "A"}, {"CGD", "A"}, {"CGV", "A"}, {"CGB", "A"}, {"CGH", "A"},
					//{"GGN", "G"}, {"GGR", "G"}, {"GGY", "G"}, {"GGM", "G"}, {"GGK", "G"}, {"GGS", "G"}, {"GGW", "G"}, {"GGH", "G"}, {"GGB", "G"}, {"GGV", "G"}, {"GGD", "G"},
					  {"CCN", "G"}, {"CCY", "G"}, {"CCR", "G"}, {"CCK", "G"}, {"CCM", "G"}, {"CCS", "G"}, {"CCW", "G"}, {"CCD", "G"}, {"CCV", "G"}, {"CCB", "G"}, {"CCH", "G"},
					//{"CAY", "H"},
					  {"GUR", "H"},
					//{"CAR", "Q"},
					  {"GUY", "Q"},
					//{"AAY", "N"},
					  {"UUR", "N"},
					//{"AAR", "K"},
					  {"UUY", "K"},
					//{"UUY", "F"},
					  {"AAR", "F"},
					//{"UAY", "Y"},
					  {"AUR", "Y"},
					//{"UAR", "*"},
					  {"AUY", "*"},
					//{"UGY", "C"},
					  {"ACR", "C"},
					//{"GAY", "D"},
					  {"CUR", "D"},
					//{"GAR", "E"},
					  {"CUY", "E"},
					//{"AUY", "I"}, {"AUH", "I"}, {"AUM", "I"}, {"AUW", "I"}
					  {"UAR", "I"}, {"UAD", "I"}, {"UAK", "I"}, {"UAW", "I"}

					// N R Y M K S W H B V D
					// N Y R K M S W D V B H
				};
map<string, string> gc_std_DNA_rev = {
					{"CGA", "A"}, {"CGG", "A"}, {"CGT", "A"}, {"CGC", "A"},
					{"ACA", "C"}, {"ACG", "C"},
					{"CTA", "D"}, {"CTG", "D"},
					{"CTT", "E"}, {"CTC", "E"},
					{"AAA", "F"}, {"AAG", "F"},
					{"CCA", "G"}, {"CCG", "G"}, {"CCT", "G"}, {"CCC", "G"},
					{"GTA", "H"}, {"GTG", "H"},
					{"TAA", "I"}, {"TAG", "I"}, {"TAT", "I"},
					{"TTT", "K"}, {"TTC", "K"},
					{"GAA", "L"}, {"GAG", "L"}, {"GAT", "L"}, {"GAC", "L"}, {"AAT", "L"}, {"AAC", "L"},
					{"TAC", "M"},
					{"TTA", "N"}, {"TTG", "N"},
					{"GGA", "P"}, {"GGG", "P"}, {"GGT", "P"}, {"GGC", "P"},
					{"GTT", "Q"}, {"GTC", "Q"},
					{"GCA", "R"}, {"GCG", "R"}, {"GCT", "R"}, {"GCC", "R"}, {"TCT", "R"}, {"TCC", "R"},
					{"AGA", "S"}, {"AGG", "S"}, {"AGT", "S"}, {"AGC", "S"}, {"TCA", "S"}, {"TCG", "S"},
					{"TGA", "T"}, {"TGG", "T"}, {"TGT", "T"}, {"TGC", "T"},
					{"CAA", "V"}, {"CAG", "V"}, {"CAT", "V"}, {"CAC", "V"},
					{"ACC", "W"},
					{"ATA", "Y"}, {"ATG", "Y"},
					{"ATT", "*"}, {"ATC", "*"}, {"ACT", "*"},

					  {"AAY", "L"}, {"RAT", "L"}, {"RAC", "L"}, {"GAN", "L"}, {"GAY", "L"}, {"GAR", "L"}, {"GAK", "L"}, {"GAM", "L"}, {"GAS", "L"}, {"GAW", "L"}, {"GAD", "L"}, {"GAV", "L"}, {"GAB", "L"}, {"GAH", "L"},
					  {"TCY", "R"}, {"KCT", "R"}, {"KCC", "R"}, {"GCN", "R"}, {"GCY", "R"}, {"GCR", "R"}, {"GCK", "R"}, {"GCM", "R"}, {"GCS", "R"}, {"GCW", "R"}, {"GCD", "R"}, {"GCV", "R"}, {"GCB", "R"}, {"GCH", "R"},
					  {"TCR", "S"}, {"AGN", "S"}, {"AGY", "S"}, {"AGR", "S"}, {"AGK", "S"}, {"AGM", "S"}, {"AGS", "S"}, {"AGW", "S"}, {"AGD", "S"}, {"AGV", "S"}, {"AGB", "S"}, {"AGH", "S"},
					  {"GGN", "P"}, {"GGY", "P"}, {"GGR", "P"}, {"GGK", "P"}, {"GGM", "P"}, {"GGS", "P"}, {"GGW", "P"}, {"GGD", "P"}, {"GGV", "P"}, {"GGB", "P"}, {"GGH", "P"},
					  {"TGN", "T"}, {"TGY", "T"}, {"TGR", "T"}, {"TGK", "T"}, {"TGM", "T"}, {"TGS", "T"}, {"TGW", "T"}, {"TGD", "T"}, {"TGV", "T"}, {"TGB", "T"}, {"TGH", "T"},
					  {"CAN", "V"}, {"CAY", "V"}, {"CAR", "V"}, {"CAK", "V"}, {"CAM", "V"}, {"CAS", "V"}, {"CAW", "V"}, {"CAD", "V"}, {"CAV", "V"}, {"CAB", "V"}, {"CAH", "V"},
					  {"CGN", "A"}, {"CGY", "A"}, {"CGR", "A"}, {"CGK", "A"}, {"CGM", "A"}, {"CGS", "A"}, {"CGW", "A"}, {"CGD", "A"}, {"CGV", "A"}, {"CGB", "A"}, {"CGH", "A"},
					  {"CCN", "G"}, {"CCY", "G"}, {"CCR", "G"}, {"CCK", "G"}, {"CCM", "G"}, {"CCS", "G"}, {"CCW", "G"}, {"CCD", "G"}, {"CCV", "G"}, {"CCB", "G"}, {"CCH", "G"},
					  {"GTR", "H"},
					  {"GTY", "Q"},
					  {"TTR", "N"},
					  {"TTY", "K"},
					  {"AAR", "F"},
					  {"ATR", "Y"},
					  {"ATY", "*"},
					  {"ACR", "C"},
					  {"CTR", "D"},
					  {"CTY", "E"},
					  {"TAR", "I"}, {"TAD", "I"}, {"TAK", "I"}, {"TAW", "I"}
				};