Hi Sergei, a quick question regarding GetString. The string returned includes t which as i understand shouldn't be included in the scaling factor. Any suggestions on how to remove t? some test code (modified from previous posts) is attached. cheers ./w
Code:ACCEPT_BRANCH_LENGTHS = 1;
ACCEPT_ROOTED_TREES = 1;
DataSet ds = ReadDataFile ( "10taxa.nex" );
fscanf ( "10taxa_phy.tre", "String", TREE );
DataSetFilter filteredData = CreateFilter ( ds, 1 );
UseModel (USE_NO_MODEL);
Tree dummy = TREE;
branchNames = BranchName (dummy,-1);
branchLengthsNow = BranchLength (dummy,-1);
global AC = 0.1;
global AT = 0.1;
global CG = 0.1;
global CT = 0.1;
global GT = 0.3;
t = 1;
gtrmatrix = {{*,AC*t,t,AT*t}{AC*t,*,CG*t,CT*t}{t,CG*t,*,GT*t}{AT*t,CT*t,GT*t,*}};
HarvestFrequencies (vectorOfFrequencies,filteredData,1,1,1);
Model GTRmodel = (gtrmatrix,vectorOfFrequencies, 1);
Tree L_1 = ""+dummy;
/* Get scaling factor from GetString or manually*/
/*
GetString ( ModelString, GTRmodel, -1);
commandString = "";
commandString * 128;
commandString = "global scalingB := " + ModelString + ";";
ExecuteCommands ( commandString );
commandString * 0;
*/
/* manual */
global scalingB := 2*(vectorOfFrequencies[0]*vectorOfFrequencies[1]*AC+vectorOfFrequencies[0]*vectorOfFrequencies[2]+
vectorOfFrequencies[0]*vectorOfFrequencies[3]*AT+vectorOfFrequencies[1]*vectorOfFrequencies[2]*CG+
vectorOfFrequencies[1]*vectorOfFrequencies[3]*CT+vectorOfFrequencies[2]*vectorOfFrequencies[3]*GT);
/* Apply scaling factor */
for (k = 0; k < Columns (branchNames)-1; k=k+1)
{
ExecuteCommands ("L_1."+branchNames[k]+".t:="+branchLengthsNow[k]+"/scalingB;");
}
LikelihoodFunction lf = (filteredData,L_1);
Optimize (res,lf);
LIKELIHOOD_FUNCTION_OUTPUT=5;
fprintf (stdout, "\n",lf, "\n" );
branchLengthsAfter = BranchLength (L_1,-1);
for ( k = 0; k < Columns ( branchNames) -1; k = k + 1 ) {
thisbranch = branchNames [ k ];
fprintf ( stdout, thisbranch, ": ", branchLengthsNow[ k ], " ", branchLengthsAfter [ k ], "\n" );
}
fprintf (stdout, "\nBranch scaling factor computed to be ", scalingB,"\n\n");