if (Rows (modelMatrixList) == 0) { modelMatrixList = { {"Equal Input", "EIAA.mdl", "19"} {"Dayhoff","Dayhoff.mdl","0"} {"Dayhoff+F","Dayhoff_F.mdl","19"} {"JTT", "Jones.mdl", "0"} {"JTT+F", "Jones_F.mdl", "19"} {"WAG", "WAG.mdl", "0"} {"WAG+F", "WAG_F.mdl", "19"} {"rtREV", "rtREV.mdl", "0"} {"rtREV+F", "rtREV_F.mdl", "19"} {"mtMAM", "mtMAM.mdl", "0"} {"mtMAM+F", "mtMAM_F.mdl", "19"} {"mtREV 24", "mtREV_24.mdl", "0"} {"mtREV 24+F", "mtREV_24_F.mdl", "19"} {"HIV within", "HIVwithin.mdl", "0"} {"HIV within+F", "HIVwithin+F.mdl", "19"} {"HIV between", "HIVbetween.mdl", "0"} {"HIV between+F", "HIVbetween+F.mdl", "19"} {"REV-1 step", "reducedREV.mdl", "19"} {"REV", "mtREV.mdl", "19"} }; } /*___________________________________________________________________________________________________________*/ function runAModel (modelID, fileName, xtraP, midx) { ExecuteCommands ("#include \"TemplateModels/"+fileName+"\";"); Tree givenTree = treeString; LikelihoodFunction lf = (filteredData,givenTree); GetString (lf_info, lf, -1); locals = lf_info["Local Independent"]; if (Columns (branchLengthStash)) { USE_LAST_RESULTS = 1; for (_iv = 0; _iv < Columns (locals); _iv = _iv+1) { ExecuteCommands (locals[_iv] + "=1;\n"); } currentBL = BranchLength (givenTree,0); currentBN = BranchName (givenTree,-1); for (_iv = 0; _iv < Columns (currentBN); _iv = _iv+1) { ExecuteCommands ("givenTree."+currentBN[_iv]+".t="+branchLengthStash[_iv]/currentBL+";"); } } else { for (_iv = 0; _iv < Columns (locals); _iv = _iv+1) { ExecuteCommands (locals[_iv] + "=0.1;\n"); } USE_LAST_RESULTS = 1; } Optimize (res,lf); fprintf (stdout, "| ", modelID); for (k=0; k1) { cAIC = 2(-res[1][0]+params*(filteredData.sites/(filteredData.sites-params-1))); } else { cAIC = 0; } branchLengths = BranchLength (givenTree,-1); TL = 0; for (k=Rows(branchLengths)*Columns(branchLengths)-1; k>=0; k=k-1) { TL = TL + branchLengths[k]; } fprintf (stdout, "| ", Format (res[1][0],14,3), " | ", Format (params,5,0), " | ", Format (AIC, 9,3), " | ",); if (cAIC > 0) { fprintf (stdout, Format (cAIC,11,3), " | "); } else { fprintf (stdout, " N/A | "); } fprintf (stdout, Format (TL,11,3), " |\n", sepString); resultMatrix[midx][0] = res[1][0]; resultMatrix[midx][1] = params; resultMatrix[midx][2] = AIC; resultMatrix[midx][3] = cAIC; resultMatrix[midx][4] = TL; if (AIC < bestAIC) { bestAIC = AIC; bestAICidx = midx; branchLengthStash = BranchLength (givenTree,-1); } if (cAIC > 0) { if (bestCAIC > cAIC) { bestCAIC = cAIC; bestCAICidx = midx; } } return 0; } /*___________________________________________________________________________________________________________*/ maxModelWidth = 7; skipCodeSelectionStep = 0; ChoiceList (doREV, "Include REV?", 1, SKIP_NONE, "Yes", "Include REV and reduced REV models. CAUTION: these models take a long time to fit.", "No", "Only use empirical models"); if (doREV < 0) { return 0; } if (doREV == 0) { #include "TemplateModels/chooseGeneticCode.def"; skipCodeSelectionStep = 1; } modelCount = Rows (modelMatrixList) - 2*doREV; for (k=0; k=0) { fprintf (stdout, "\n\nBest c-AIC model:\n\t", modelMatrixList[bestCAICidx][0], " with the score of ", bestCAIC); } labelMatrix = {{"Log-likelihood","Parameters","AIC","c-AIC","Total tree length",""}}; aaString = "Model"; for (fC = 0; fC < modelCount; fC = fC+1) { aaString = aaString + ";" + modelMatrixList[fC][0]; } USE_LAST_RESULTS = 0; labelMatrix[5] = aaString; skipCodeSelectionStep = 0; OpenWindow (CHARTWINDOW,{{"Model Fits"} {"labelMatrix"}, {"resultMatrix"}, {"Bar Chart"}, {"Index"}, {"c-AIC"}, {"Model Index"}, {""}, {"AIC"} }, "SCREEN_WIDTH-60;SCREEN_HEIGHT-60;30;30");