1NICETY_LEVEL = 2;
2
3aaCodes = {{"A",
4"C",
5"D",
6"E",
7"F",
8"G",
9"H",
10"I",
11"K",
12"L",
13"M",
14"N",
15"P",
16"Q",
17"R",
18"S",
19"T",
20"V",
21"W",
22"Y"}};
23
24function PopulateModelMatrix (ModelMatrixName&, EFV)
25{
26	ModelMatrixName = {20,20};
27
28	for (cI = 1; cI < 20; cI = cI+1)
29	{
30		commandString = "ModelMatrixName[0]["+cI+"]:=t*(1+(F_" +
31						 aaCodes[cI] +  "<0)*(Exp(F_"+
32						 aaCodes[cI] + ")-1));\n" +
33						 "ModelMatrixName["+cI+"][0]:=t*(1+(0>" + "F_" +
34						 aaCodes[cI] + ")*(Exp(-F_"+
35						 aaCodes[cI] + ")-1));\n";
36		ExecuteCommands	 (commandString);
37	}
38
39	for (rI = 1; rI < 19; rI = rI+1)
40	{
41		for (cI = rI+1; cI < 20; cI = cI+1)
42		{
43			commandString = "ModelMatrixName["+rI+"]["+cI+"]:=t*(1+(F_" +
44							 aaCodes[cI] + "<" + "F_" +
45							 aaCodes[rI] + ")*(Exp(F_"+
46							 aaCodes[cI] + "-F_"+
47							 aaCodes[rI] + ")-1));\n" +
48							 "ModelMatrixName["+cI+"]["+rI+"]:=t*(1+(F_" +
49							 aaCodes[rI] + "<" + "F_" +
50							 aaCodes[cI] + ")*(Exp(F_"+
51							 aaCodes[rI] + "-F_"+
52							 aaCodes[cI] + ")-1));\n";
53			ExecuteCommands	 (commandString);
54		}
55	}
56
57	return 0;
58}
59
60commandString = "";
61
62for (rI = 1; rI < 20; rI = rI+1)
63{
64	commandString = commandString + "global F_" + aaCodes[rI] +
65					"=0; F_" + aaCodes[rI] + ":>-1e10;\n";
66}
67
68ExecuteCommands (commandString);
69
70vectorOfFrequencies = {20,1};
71
72commandString = "global EFV_Norm:=1";
73for (rI = 1; rI < 20; rI = rI+1)
74{
75	commandString = commandString+"+Exp(F_"+aaCodes[rI]+")";
76}
77
78ExecuteCommands (commandString+";");
79vectorOfFrequencies[0]:=1/EFV_Norm;
80
81for (rI = 1; rI < 20; rI = rI+1)
82{
83	commandString = "vectorOfFrequencies["+rI+"]:=Exp(F_"+aaCodes[rI]+")/EFV_Norm;";
84	ExecuteCommands (commandString);
85}
86
87FitnessMatrix = 0;
88MULTIPLY_BY_FREQS = PopulateModelMatrix ("FitnessMatrix",vectorOfFrequencies);
89Model FitnessModel = (FitnessMatrix, vectorOfFrequencies, MULTIPLY_BY_FREQS);
90FREQUENCY_SENSITIVE = 0;
91