/* define various genetic code translation tables
	
   Table definitions used here can be found on the NCBI web page at
   http://www3.ncbi.nlm.nih.gov/htbin-post/Taxonomy/wprintgc?mode=c#SG1

*/

/*
  	here's how codes translate to aminoacids
 	
 	0 == Phe
 	1 == Leu
 	2 == Ile
 	3 == Met
 	4 == Val
 	5 == Ser
 	6 == Pro
 	7 == Thr
 	8 == Ala
 	9 == Tyr
 	10 == Stop
 	11 == His
 	12 == Gln
 	13 == Asn
 	14 == Lys
 	15 == Asp
 	16 == Glu
 	17 == Cys
 	18 == Trp
 	19 == Arg
 	20 == Gly
 	
*/

/* AAA,AAC,AAG....TTA,TTC,TTG,TTT - 64 all in all*/
				
_Genetic_Code = {
	
	{14,/*AAA*/ 13,/*AAC*/ 14,/*AAG*/  13,/*AAT*/
	  7, /*ACA*/ 7, /*ACC*/ 7, /*ACG*/  7, /*ACT*/
	 19, /*AGA*/ 5, /*AGC*/19, /*AGG*/  5, /*AGT*/
	  2, /*ATA*/ 2, /*ATC*/	3, /*ATG*/  2, /*ATT*/
	 12,/*CAA*/ 11,/*CAC*/ 12,/*CAG*/  11,/*CAT*/
	  6, /*CCA*/ 6, /*CCC*/ 6, /*CCG*/  6, /*CCT*/
	 19,/*CGA*/ 19,/*CGC*/ 19,/*CGG*/  19,/*CGT*/
	  1, /*CTA*/ 1, /*CTG*/ 1, /*CTC*/  1, /*CTT*/
	 16,/*GAA*/ 15,/*GAC*/ 16,/*GAG*/  15,/*GAT*/
	  8, /*GCA*/ 8, /*GCC*/ 8, /*GCG*/  8, /*GCT*/
	 20,/*GGA*/ 20,/*GGC*/ 20,/*GGG*/  20,/*GGT*/
	  4, /*GTA*/ 4, /*GTC*/ 4, /*GTG*/  4, /*GTT*/
	 10,/*TAA*/  9, /*TAC*/10,/*TAG*/   9, /*TAT*/
	  5, /*TCA*/ 5, /*TCC*/ 5, /*TCG*/  5, /*TCT*/
	 10,/*TGA*/ 17,/*TGC*/ 18,/*TGG*/  17,/*TGT*/
	  1, /*TTA*/ 0, /*TTC*/ 1, /*TTG*/  0  /*TTT*/ }
};
				
GeneticCodeExclusions = "TAA,TAG,TGA";

/* defines model states which are not allowed, i.e. termination codons.
   GeneticCodeExclusions string is used by DataSetFilter to
   eliminate "illegal" states from the data */


ChoiceList (modelType,"Choose Genetic Code",1,SKIP_NONE,
			"Universal","Universal code. (Genebank transl_table=1).",
			"Vertebrate mtDNA","Vertebrate mitochondrial DNA code. (Genebank transl_table=2).",
			"Yeast mtDNA","Yeast mitochondrial DNA code. (Genebank transl_table=3).",
			"Mold/Protozoan mtDNA","Mold, Protozoan and Coelenterate mitochondrial DNA and the Mycloplasma/Spiroplasma code. (Genebank transl_table=4).",
			"Invertebrate mtDNA","Invertebrate mitochondrial DNA code. (Genebank transl_table=5).",
			"Ciliate Nuclear","Ciliate, Dasycladacean and Hexamita Nuclear code. (Genebank transl_table=6).",
			"Echinoderm mtDNA","Echinoderm mitochondrial DNA code. (Genebank transl_table=9).",
			"Eupltoid Nuclear","Euplotid Nuclear code. (Genebank transl_table=10).",
			"Alt. Yeast Nuclear","Alternative Yeast Nuclear code. (Genebank transl_table=12).",
			"Ascidian mtDNA","Ascidian mitochondrial DNA code. (Genebank transl_table=13).",
			"Flatworm mtDNA","Flatworm mitochondrial DNA code. (Genebank transl_table=14).",
			"Blepharisma Nuclear","Blepharisma Nuclear code. (Genebank transl_table=15).",

);			

If (modelType < 0)
{
	return;
}

if (modelType == 1)
/* Vertebrate mtDNA */
{
	_Genetic_Code [8] = 10; /* AGA => stop */
	_Genetic_Code [10] = 10;/* AGG => stop */
	_Genetic_Code [12] = 3; /* ATA => Met  */
	_Genetic_Code [56] = 18;/* TGA => Trp  */
	
	GeneticCodeExclusions = "AGA,AGG,TAA,TAG";
}

if (modelType == 2)
/* Yeast mtDNA */
{
	_Genetic_Code [12] = 3; /* ATA => Met */
	_Genetic_Code [28] = 7; /* CTA => Thr */
	_Genetic_Code [29] = 7; /* CTC => Thr */
	_Genetic_Code [30] = 7; /* CTG => Thr */
	_Genetic_Code [31] = 7; /* CTT => Thr */
	_Genetic_Code [56] = 18;/* TGA => Trp */
	
	GeneticCodeExclusions = "TAA,TAG";
}

if (modelType == 3)
/* Mold,Protozoan and Coelenterate mtDNA */
{
	_Genetic_Code [56] = 18;/* TGA => Trp */
	GeneticCodeExclusions = "TAA,TAG";
}

if (modelType == 4)
/* Invertebrate mtDNA */
{
	_Genetic_Code [8] = 5; /* AGA => Ser  */
	_Genetic_Code [10] = 5;/* AGG => Ser  */
	_Genetic_Code [12] = 3;/* ATA => Met  */
	_Genetic_Code [56] = 18;/* TGA => Trp  */
	
	GeneticCodeExclusions = "TAA,TAG";
}

if (modelType == 5)
/* Ciliate Nuclear Code */
{
	_Genetic_Code [48] = 12;/* TAA => Gln  */
	_Genetic_Code [50] = 12;/* TAG => Gln  */
	
	GeneticCodeExclusions = "TGA";
}

if (modelType == 6)
/* Echinoderm mtDNA */
{
	_Genetic_Code [0] = 13; /* AAA => Asn  */
	_Genetic_Code [8] = 5;  /* AGA => Ser  */
	_Genetic_Code [10] = 5; /* AGG => Ser  */
	_Genetic_Code [56] = 18;/* TGA => Trp  */
	
	GeneticCodeExclusions = "TAA,TAG";
}

if (modelType == 7)
/* Euplotid mtDNA */
{
	_Genetic_Code [56] = 17;/* TGA => Cys  */
	
	GeneticCodeExclusions = "TAA,TAG";
}

if (modelType == 8)
/* Alternative Yeast Nuclear */
{
	_Genetic_Code [30] = 5;/* CTG => Ser  */
	
	GeneticCodeExclusions = "TAA,TAG,TGA";
}

if (modelType == 9)
/* Ascidian mtDNA */
{
	_Genetic_Code [8] = 20;  /* AGA => Gly  */
	_Genetic_Code [10] = 20; /* AGG => Gly  */
	_Genetic_Code [12] = 3;  /* AGG => Met */
	_Genetic_Code [56] = 18; /* TGA => Trp  */
	
	GeneticCodeExclusions = "TAA,TAG";
}

if (modelType == 10)
/* Flatworm mtDNA */
{
	_Genetic_Code [0] = 13;  /* AAA => Asn  */
	_Genetic_Code [8] = 5;   /* AGA => Ser  */
	_Genetic_Code [10] = 5;  /* AGG => Ser  */
	_Genetic_Code [48] = 9;  /* TAA => Tyr */
	_Genetic_Code [56] = 18; /* TGA => Trp  */
	
	GeneticCodeExclusions = "TAG";
}

if (modelType == 11)
/* Blepharisma Nuclear */
{
	_Genetic_Code [50] = 12;/* TAG => Gln  */
	
	GeneticCodeExclusions = "TAA,TGA";
}
