void getStartingTree(tree *tr, analdef *adef) { tr->likelihood = unlikely; if(adef->restart) { INFILE = myfopen(tree_file, "rb"); if(!adef->grouping) { switch(adef->mode) { case ANCESTRAL_STATES: assert(!tr->saveMemory); tr->leftRootNode = (nodeptr)NULL; tr->rightRootNode = (nodeptr)NULL; treeReadLen(INFILE, tr, FALSE, FALSE, FALSE, adef, TRUE, FALSE); assert(tr->leftRootNode && tr->rightRootNode); break; case CLASSIFY_MP: treeReadLen(INFILE, tr, TRUE, FALSE, TRUE, adef, FALSE, FALSE); break; case OPTIMIZE_BR_LEN_SCALER: treeReadLen(INFILE, tr, TRUE, FALSE, FALSE, adef, TRUE, FALSE); break; case CLASSIFY_ML: if(adef->useBinaryModelFile) { if(tr->saveMemory) treeReadLen(INFILE, tr, TRUE, FALSE, TRUE, adef, FALSE, FALSE); else treeReadLen(INFILE, tr, TRUE, FALSE, FALSE, adef, FALSE, FALSE); } else { if(tr->saveMemory) treeReadLen(INFILE, tr, FALSE, FALSE, TRUE, adef, FALSE, FALSE); else treeReadLen(INFILE, tr, FALSE, FALSE, FALSE, adef, FALSE, FALSE); } break; default: if(tr->saveMemory) treeReadLen(INFILE, tr, FALSE, FALSE, TRUE, adef, FALSE, FALSE); else treeReadLen(INFILE, tr, FALSE, FALSE, FALSE, adef, FALSE, FALSE); break; } } else { assert(adef->mode != ANCESTRAL_STATES); partCount = 0; if (! treeReadLenMULT(INFILE, tr, adef)) exit(-1); } if(adef->mode == PARSIMONY_ADDITION) return; if(adef->mode != CLASSIFY_MP) { if(adef->mode == OPTIMIZE_BR_LEN_SCALER) { assert(tr->numBranches == tr->NumberOfModels); scaleBranches(tr, TRUE); evaluateGenericInitrav(tr, tr->start); } else { evaluateGenericInitrav(tr, tr->start); treeEvaluate(tr, 1); } } fclose(INFILE); } else { assert(adef->mode != PARSIMONY_ADDITION && adef->mode != MORPH_CALIBRATOR && adef->mode != ANCESTRAL_STATES && adef->mode != OPTIMIZE_BR_LEN_SCALER); if(adef->randomStartingTree) makeRandomTree(tr, adef); else makeParsimonyTree(tr, adef); if(adef->startingTreeOnly) { printStartingTree(tr, adef, TRUE); exit(0); } else printStartingTree(tr, adef, FALSE); evaluateGenericInitrav(tr, tr->start); treeEvaluate(tr, 1); } tr->start = tr->nodep[1]; }
void getStartingTree(tree *tr, analdef *adef) { tr->likelihood = unlikely; if(adef->restart) { INFILE = myfopen(tree_file, "rb"); if(!adef->grouping) { if(tr->saveMemory) treeReadLen(INFILE, tr, FALSE, FALSE, TRUE, adef, FALSE); else treeReadLen(INFILE, tr, FALSE, FALSE, FALSE, adef, FALSE); } else { partCount = 0; if (! treeReadLenMULT(INFILE, tr, adef)) exit(-1); } if(adef->mode == PARSIMONY_ADDITION) return; { /* double t = gettime(); int i; for(i = 0; i < 50; i++) */ evaluateGenericInitrav(tr, tr->start); /* printf("%1.40f \n", tr->likelihood); printf("%f\n", gettime() - t); */ treeEvaluate(tr, 1); /* printf("%1.40f \n", tr->likelihood); printf("%f\n", gettime() - t); exit(1); */ } fclose(INFILE); } else { assert(adef->mode != PARSIMONY_ADDITION && adef->mode != MORPH_CALIBRATOR && adef->mode != MORPH_CALIBRATOR_PARSIMONY); if(adef->randomStartingTree) makeRandomTree(tr, adef); else makeParsimonyTree(tr, adef); if(adef->startingTreeOnly) { printStartingTree(tr, adef, TRUE); exit(0); } else printStartingTree(tr, adef, FALSE); setupPointerMesh(tr); evaluateGenericInitrav(tr, tr->start); treeEvaluate(tr, 1); } tr->start = tr->nodep[1]; }