mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			148 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Beef
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Beef
		
	
	
	
	
	
| #include "molclockBootstrap.bf";
 | |
| 
 | |
| RESTORE_GLOBALS 	= 1;
 | |
| _DO_TREE_REBALANCE_ = 0;
 | |
| VERBOSITY_LEVEL     = -1;
 | |
| 
 | |
| function RestoreGlobalValues (lfIndex)
 | |
| {
 | |
| 	if (lfIndex==0)
 | |
| 	{
 | |
| 		for (i=0;i<SAVE_GLOBALS;i=i+1)
 | |
| 		{
 | |
| 			SetParameter (lf,i,globalSpoolMatrix[i]);
 | |
| 		}
 | |
| 	}
 | |
| 	if (lfIndex==1)
 | |
| 	{
 | |
| 		for (i=0;i<SAVE_GLOBALS2;i=i+1)
 | |
| 		{
 | |
| 			SetParameter (lfConstrained,i,globalSpoolMatrix2[i]);
 | |
| 		}
 | |
| 	}
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| fprintf(stdout,"\n ---- RUNNING MOLECULAR CLOCK ANALYSIS ---- \n");
 | |
| 
 | |
| ChoiceList (dataType,"Data type",1,SKIP_NONE,"Nucleotide/Protein","Nucleotide or amino-acid (protein).",
 | |
| 				     "Codon","Codon (several available genetic codes).");
 | |
| 
 | |
| if (dataType<0) 
 | |
| {
 | |
| 	return;
 | |
| }
 | |
| if (dataType)
 | |
| {
 | |
| 	NICETY_LEVEL = 3;
 | |
| 	#include "TemplateModels/chooseGeneticCode.def";
 | |
| }
 | |
| 
 | |
| SetDialogPrompt ("Choose the data file:");
 | |
| 
 | |
| DataSet ds = ReadDataFile (PROMPT_FOR_FILE);
 | |
| 
 | |
| fprintf (stdout,"The following data was read:\n",ds,"\n");
 | |
| 
 | |
| if (dataType)
 | |
| {
 | |
| 	DataSetFilter filteredData = CreateFilter (ds,3,"","",GeneticCodeExclusions);
 | |
| }
 | |
| else
 | |
| {
 | |
| 	DataSetFilter filteredData = CreateFilter (ds,1);
 | |
| }
 | |
| 
 | |
| SelectTemplateModel(filteredData);
 | |
| 
 | |
| #include "queryTree.bf";
 | |
| 
 | |
| global RelRatio;
 | |
| 
 | |
| RelRatio = 1.0;
 | |
| 
 | |
| relationString = ":=RelRatio*";
 | |
| 
 | |
| parameter2Constrain = 0;
 | |
| 
 | |
| if (Rows("LAST_MODEL_PARAMETER_LIST")>1)
 | |
| {
 | |
| 	ChoiceList (parameter2Constrain, "Parameter(s) to constrain:",1,SKIP_NONE,LAST_MODEL_PARAMETER_LIST);
 | |
| 
 | |
| 	if (parameter2Constrain<0)
 | |
| 	{
 | |
| 		return;
 | |
| 	}
 | |
| 	if (parameter2Constrain==0)
 | |
| 	{
 | |
| 		parameter2ConstrainString = "";
 | |
| 		for (parameter2Constrain=Rows("LAST_MODEL_PARAMETER_LIST")-1; parameter2Constrain; parameter2Constrain = parameter2Constrain-1)
 | |
| 		{
 | |
| 			GetString (funnyString,LAST_MODEL_PARAMETER_LIST,parameter2Constrain);
 | |
| 			parameter2ConstrainString = parameter2ConstrainString + funnyString + ",";
 | |
| 		}
 | |
| 		GetString (funnyString,LAST_MODEL_PARAMETER_LIST,0);
 | |
| 		parameter2ConstrainString = parameter2ConstrainString + funnyString;
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		GetString (parameter2ConstrainString,LAST_MODEL_PARAMETER_LIST,parameter2Constrain-1);
 | |
| 	}
 | |
| }
 | |
| else
 | |
| {
 | |
| 	GetString (parameter2ConstrainString,LAST_MODEL_PARAMETER_LIST,0);
 | |
| }
 | |
| 
 | |
| timer = Time(0);
 | |
| 
 | |
| LikelihoodFunction lf = (filteredData,givenTree);
 | |
| 
 | |
| Optimize (res,lf);
 | |
| 
 | |
| separator = "*-----------------------------------------------------------*";
 | |
| 
 | |
| fprintf (stdout, "\n", separator, "\nRESULTS WITHOUT THE CLOCK:\n",lf);
 | |
| 
 | |
| fullModelLik = res[1][0];
 | |
| 
 | |
| fullVars = res[1][1];
 | |
| 
 | |
| /* now specify the constraint */
 | |
| 
 | |
| Tree clockTree = treeString;
 | |
| 
 | |
| ExecuteCommands ("MolecularClock (clockTree,"+parameter2ConstrainString+");");
 | |
| 
 | |
| LikelihoodFunction lfConstrained = (filteredData, clockTree);
 | |
| 
 | |
| USE_LAST_RESULTS = 1;
 | |
| Optimize (res1,lfConstrained);
 | |
| USE_LAST_RESULTS = 0;
 | |
| 
 | |
| SAVE_GLOBALS = res1[1][2];
 | |
| 
 | |
| if (SAVE_GLOBALS)
 | |
| {
 | |
| 	globalSpoolMatrix = {1,SAVE_GLOBALS};
 | |
| 
 | |
| 	for (i=0;i<SAVE_GLOBALS;i=i+1)
 | |
| 	{
 | |
| 		globalSpoolMatrix[i]=res1[0][i];
 | |
| 	}
 | |
| }
 | |
| 
 | |
| fprintf (stdout, "\n", separator,"\n\nRESULTS WITH THE CLOCK:\n",lfConstrained);
 | |
| 
 | |
| lnLikDiff = 2(fullModelLik-res1[1][0]);
 | |
| 
 | |
| degFDiff = fullVars - res1[1][1];
 | |
| 
 | |
| fprintf (stdout, "\n", separator,"\n\n-2(Ln Likelihood Ratio)=",lnLikDiff,"\n","Constrained parameters:",Format(degFDiff,0,0));
 | |
| 
 | |
| fprintf (stdout, "\nP-Value:",1-CChi2(lnLikDiff,degFDiff));
 | |
| 
 | |
| fprintf (stdout, "\nCPU time taken: ", Time(0)-timer, " seconds.\n");
 |