Plan 9 from Bell Labs’s /usr/web/sources/contrib/pac/sys/src/ape/cmd/bio/MrBayes_2.01/bayes.c

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


/*
 *  MrBayes 2.0
 *
 *  John P. Huelsenbeck
 *  Department of Biology
 *  University of Rochester
 *  Rochester, NY 14627
 *
 *  johnh@brahms.biology.rochester.edu
 *
 *	Fredrik Ronquist
 *  Dept. Systematic Zoology
 *  Evolutionary Biology Centre
 *	Uppsala University
 *	Norbyv. 18D, SE-752 36 Uppsala, Sweden
 *
 *  fredrik.ronquist@ebc.uu.se
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <string.h>
#include "jph.h"
#include "tree.h"
#include "command.h"



#define	VERSION_NUMBER	2.01



static void CommandLine (void);
static void InitializeMrBayes (void);
static void PrintHeader (void);


int					nTaxa, nChar, *origDataMatrix, isNtaxaInitialized, isNcharInitialized, isMatrixAllocated,
					dataType, *excludedSites, *sitePartitions, *charType, *charNStates, *calibrations, *constraints, 
					nConstraints, nCalibrations, *excludedTaxa, nGen, sampleFreq, printFreq, numChains,
					isUserTreeDefined, isTreeRooted, enforceConstraints, enforceCalibrations, inferAncStates,
					nRateCats, isPartitionDefined, nPartitions, outgroupNum, saveBrlens, burnIn, consensusType,
					paramBurn, autoclose, nPerturbations, userBrlensDef, aaModelType, saveAncFiles, enforceCodonModel, aaCode,
					inferPoseSel, lagNumber, inferRates, useCovarion, mcmcBurn, cycleFreq, calcPseudoBf, useParsCriterion;
long int			randomSeed;
char				*taxonLabels, subModel[20], baseFreqModel[20], ratesModel[20], clockModel[20],
					tRatioModel[20], revRatesModel[20], nonRevRatesModel[20], partitionName[50],
					shapeModel[20], siteRatesModel[20],constraintLabels[32][100], calibrationLabels[32][100],
					outFile[100], qmatprModel[20], basefreqprModel[20],
					brlenprModel[20], shapeprModel[20], siterateprModel[20], startingTreeModel[20],
					defPartitionName[50], sumTreeFile[100], sumParmFile[100], codonModelType[20], omegaRatioModel[20],
					omegaprModel[20], lagModel[20], lagprModel[20], covarionModelType[20], codingType[20], stateFreqPrModel[20];
double				revRates[6], nonRevRates[12], shape, tRatio, siteRates[50],
					calibrationTimes[32][2], chainTemp, qmatprExp, qmatprUni[2], basefreqprDir, brlenprExp, 
					brlenprUni[2], shapeprExp, shapeprUni[2], siterateprExp, siterateprUni[2], seqErrorProb,
					speciationRate, extinctionRate, samplingFraction, omegaRatio, omegaprUni[2], omegaprExp, 
					lagprUni[2], lagprExp, qMatWinProp, piAlphaProp, rateWinProp, tuningProp, clockTuneProp, timeTuneProp, mTuneProp, 
					extendPProp, wormTuneProp, bdWinProp, omegaWinProp, rhoWinProp, omegaAlphaProp, invSlideProp, 
					switchWinProp, alphaWinProp, nodeTimeTuneProp, reconLimProp, tbrExtendPProp, tbrTuneProp, blTuneProp,
					statefreqprDir, moveRates[100];
TreeNode			*userTree, *userTreeRoot;



int main (void)

{

	InitializeMrBayes ();
	PrintHeader ();
	SetUpCommandHierarchy ();	
	
	CommandLine ();
	
	return (0);
	
}





void CommandLine (void)

{

	int		i;
	char	cmdStr[STRING_LENGTH];

	for (;;)
		{
		printf ("MrBayes > ");
		fflush (stdin);
		fgets (cmdStr, STRING_LENGTH - 2, stdin);
		i = 0;
		while (cmdStr[i] != '\0' && cmdStr[i] != '\n')
			i++;
		cmdStr[i++] = ';';
		cmdStr[i] = '\0';
		printf ("\n");
		if (cmdStr[0] != ';')
			{
			ParseCommand (cmdStr);
			printf ("\n");
			}
		}

}





void InitializeMrBayes (void)

{

	int			i;
	time_t		curTime;

	outgroupNum = 0;
	strcpy (subModel, "1");
	strcpy (baseFreqModel, "equal");
	strcpy (ratesModel, "equal");
	strcpy (clockModel, "unconstrained");
	strcpy (tRatioModel, "estimate");
	strcpy (revRatesModel, "estimate");
	strcpy (nonRevRatesModel, "estimate");
	strcpy (shapeModel, "estimate");
	strcpy (partitionName, "none defined");
	strcpy (siteRatesModel, "estimate");
	strcpy (startingTreeModel, "random");
	strcpy (qmatprModel, "uniform");
	strcpy (basefreqprModel, "dirichlet");
	strcpy (brlenprModel, "uniform");
	strcpy (shapeprModel, "uniform");
	strcpy (siterateprModel, "uniform");
	strcpy (codingType, "all");
	strcpy (stateFreqPrModel, "fixed");
	qmatprUni[0]     = 0.0000001;
	qmatprUni[1]     = 100.0;
	basefreqprDir    = 4.0; 
	statefreqprDir   = 4.0;
	brlenprUni[0]    = 0.0000001;
	brlenprUni[1]    = 10.0;
	shapeprUni[0]    = 0.0000001;
	shapeprUni[1]    = 10.0;
	siterateprUni[0] = 0.0000001;
	siterateprUni[1] = 10.0;
	isUserTreeDefined = NO;
	nGen = 1000000;
	sampleFreq = 100;
	printFreq = 100;
	numChains = 4;
	chainTemp = 0.2;
	strcpy (outFile, "mbout");
	curTime = time(NULL);
	randomSeed  = (long int)curTime;
	if (randomSeed < 0)
		randomSeed = -randomSeed;
	nConstraints = 0;
	nCalibrations = 0;
	enforceConstraints = NO;
	enforceCalibrations = NO;
	inferAncStates = NO;
	shape = 0.5;
	nRateCats = 4;
	tRatio = 1.0;
	for (i=0; i<6; i++)
		revRates[i] = 1.0;
	for (i=0; i<12; i++)
		nonRevRates[i] = 1.0;
	isPartitionDefined = NO;
	nPartitions = 0;
	for (i=0; i<50; i++)
		siteRates[i] = 1.0;
	saveBrlens = NO;
	seqErrorProb = 0.0;
	speciationRate = 1.0;
	extinctionRate = 0.01;
	samplingFraction = 1.0;
	burnIn = 0;
	consensusType = ALL_COMPAT;
	strcpy (sumTreeFile, outFile);
	strcat (sumTreeFile, ".t");
	paramBurn = 0;
	strcpy (sumParmFile, outFile);
	strcat (sumParmFile, ".p.bp");
	autoclose = NO;
	nPerturbations = 0;
	userBrlensDef = NO;
	dataType = -1;
	aaModelType = POISSON;
	omegaRatio = 1.0;
	saveAncFiles = NO;
	enforceCodonModel = NO;
	strcpy (covarionModelType, "ts98");
	strcpy (codonModelType, "equal");
	strcpy (omegaRatioModel, "estimate");
	strcpy (omegaprModel, "uniform");
	omegaprUni[0] = 0.0;
	omegaprUni[1] = 50.0;
	omegaprExp = 1.0;
	inferPoseSel = NO;
	lagNumber = 1;
	strcpy (lagModel, "user defined");
	strcpy (lagprModel, "fixed");
	lagprUni[0] = 0.0;
	lagprUni[1] = 20.0;
	lagprExp = 1.0;
	inferRates = NO;
	useCovarion = NO;
	mcmcBurn = 0; 
	cycleFreq = 1000;
	calcPseudoBf = NO;
	useParsCriterion = NO;
	qMatWinProp      = 2.0;
	piAlphaProp      = 500.0; 
	rateWinProp      = 1.0;
	tuningProp       = 2.0 * log(1.1);
	clockTuneProp    = 2.0 * log(1.1);
	timeTuneProp     = 2.0 * log(1.1);
	mTuneProp        = 0.5 * log(1.1);
	extendPProp      = 0.8;
	wormTuneProp     = 2.0 * log(1.1);
	bdWinProp        = 1.0;
	omegaWinProp     = 1.0;
	rhoWinProp       = 0.2;
	omegaAlphaProp   = 50.0; 
	invSlideProp     = 0.1;
	switchWinProp    = 1.0;
	alphaWinProp     = 0.1;
	nodeTimeTuneProp = 2.0 * log(1.1);
	reconLimProp     = 5.0;
	tbrExtendPProp   = 0.8;
	tbrTuneProp      = 2.0 * log(1.1);
	blTuneProp       = 10.0 * 2.0 * log(1.1);
	moveRates[ 0] = 1.0;   /* CHANGE_QMAT             */
	moveRates[ 1] = 1.0;   /* CHANGE_BASEFREQS        */
	moveRates[ 2] = 1.0;   /* CHANGE_GAMMA_SHAPE      */
	moveRates[ 3] = 1.0;   /* CHANGE_SITE_RATES       */
	moveRates[ 4] = 40.0;  /* CHANGE_UNROOT_LOCAL     */
	moveRates[ 5] = 25.0;  /* CHANGE_CLOCK_LOCAL      */
	moveRates[ 6] = 25.0;  /* CHANGE_CLOCK_TIME_LOCAL */
	moveRates[ 7] = 10.0;  /* CHANGE_TREE_HEIGHT      */
	moveRates[ 8] = 2.0;   /* CHANGE_WORM             */
	moveRates[ 9] = 10.0;  /* CHANGE_NODE_TIME        */
	moveRates[10] = 1.0;   /* CHANGE_BD_PARAMS        */
	moveRates[11] = 1.0;   /* CHANGE_OMEGA            */
	moveRates[12] = 1.0;   /* CHANGE_OMEGA_PROBS      */
	moveRates[13] = 1.0;   /* CHANGE_AUTO_CORR        */
	moveRates[14] = 1.0;   /* CHANGE_LAG              */
	moveRates[15] = 0.0;   /* CHANGE_TREE_SPR         */
	moveRates[16] = 1.0;   /* CHANGE_INV_P            */
	moveRates[17] = 1.0;   /* CHANGE_SWITCH_RATE      */
	moveRates[18] = 0.0;   /* CHANGE_UNROOT_TBR       */
	moveRates[19] = 1.0;   /* CHANGE_GCSWITCH         */
	moveRates[20] = 0.0;   /* CHANGE_TREE_FTBR        */
	moveRates[21] = 0.0;   /* CHANGE_BRLEN            */
	moveRates[22] = 0.0;   /* CHANGE_ERASER           */
	moveRates[23] = 0.0;   /* CHANGE_TREE_SPR2        */
	moveRates[24] = 0.0;   /* CHANGE_TREE_TBR2        */
	moveRates[25] = 1.0;   /* CHANGE_BETA_SHAPE		  */
}





void PrintHeader (void)

{
                              
	printf ("\n\n");
	printf ("                                MrBayes %1.2lf\n\n", VERSION_NUMBER);
	printf ("                      (Bayesian Analysis of Phylogeny)\n\n");
	printf ("                                     by\n\n");
	printf ("              John P. Huelsenbeck (1) and Fredrik Ronquist (2)\n\n");
	printf ("                       (1) Department of Biology\n");
	printf ("                          University of Rochester\n");
	printf ("                    johnh@brahms.biology.rochester.edu\n\n");
	
	printf ("                   (2) Department of Systematic Zoology\n");
	printf ("                         Evolutionary Biology Centre\n");
	printf ("                             Uppsala University\n");
	printf ("                         fredrik.ronquist@ebc.uu.se\n\n");

	printf ("              Type \"help\" or \"help <command>\" for information\n");
	printf ("                    on the commands that are available.\n\n\n");
	
}









Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.