LFCompute (lf,LF_START_COMPUTE);
LFCompute (lf,res);
LFCompute (lf,LF_DONE_COMPUTE);

GetString (varDescs,lf,-1);

fprintf (stdout, "\n\nLogL    = ", res,"\n");
df_count = Columns(varDescs["Local Independent"]) + Columns(varDescs["Global Independent"]) - 1;
fprintf (stdout, "Locals  = ", Columns(varDescs["Local Independent"]),
				 "\nGlobals = ", Columns(varDescs["Global Independent"]),
				 "\nD.F.    = ", df_count,
				 "\nSites   = ", filteredData.sites,
				 "\nAIC     = ",2(-res+df_count),
				 "\nAIC (+F)= ",2(-res+df_count + 19),
				 "\ncAIC    = ",2(-res+df_count(filteredData.sites/(filteredData.sites-df_count-1))),
				 "\ncAIC(+F)= ",2(-res+(df_count+19)*(filteredData.sites/(filteredData.sites-df_count-20))),"\n");
				 
bls = BranchLength (givenTree,-1);

blSum = 0;
for (k=0; k<Columns(bls); k=k+1)
{
	blSum = blSum + bls[k];
}				 

fprintf (stdout, "Tree L  = ", blSum ,"\n");

t = 1; 
c = 1;
ExecuteCommands ("GetInformation (aRateMx, givenTree."+TipName(givenTree,0)+");");
aRateMx 		= aRateMx*(1/bls[0]);
aRateMx2        = aRateMx;

for (k=0; k<20; k=k+1)
{
	aRateMx2[k][19] = 1;
}

aRateMx2 = (Inverse(aRateMx2))[19][-1];
rates190 = {190,1};
z = 0;
for (h=0; h<20; h=h+1)
{
	for (v=h+1; v<20; v=v+1)
	{
		rates190[z] = aRateMx[h][v]/aRateMx2[v];
		z = z+1;
	}
}

rates190 = rates190%0;

fprintf (stdout, "\nRates: \nMin = ", rates190[0], "\nMax = ", rates190[189], "\nMean= ", (Transpose(rates190["1"])*rates190*(1/190))[0],
				 "\nMed = ", 0.5(rates190[89]+rates190[90]), "\n");
