void pairing_submenu() { /* this allows the user to select a different tree pairing scheme. */ long loopcount; boolean done = false; Char ch; loopcount = 0; while (!done) { cleerhome(); printf ("Tree Pairing Submenu:\n"); printf (" A Distances between adjacent pairs in tree file.\n"); printf (" P Distances between all possible pairs in tree file.\n"); printf (" C Distances between corresponding pairs in one tree file and another.\n"); printf (" L Distances between all pairs in one tree file and another.\n"); printf ("\n Choose one: (A,P,C,L)\n"); fflush(stdout); scanf("%c%*[^\n]", &ch); getchar(); uppercase(&ch); if (strchr("APCL", ch) != NULL) { switch (ch) { case 'A': tree_pairing = ADJACENT_PAIRS; break; case 'P': tree_pairing = ALL_IN_FIRST; break; case 'C': tree_pairing = CORR_IN_1_AND_2; break; case 'L': tree_pairing = ALL_IN_1_AND_2; break; } output_submenu(); done = true; } countup(&loopcount, 10); } } /* pairing_submenu */
void getoptions() { /* interactively set options */ long inseed0, loopcount; Char ch; boolean done; fprintf(outfile, "\nContinuous character Maximum Likelihood"); fprintf(outfile, " method version %s\n\n",VERSION); putchar('\n'); global = false; jumble = false; njumble = 1; lengths = false; outgrno = 1; outgropt = false; all = false; contchars = false; trout = true; usertree = false; printdata = false; progress = true; treeprint = true; loopcount = 0; do { cleerhome(); printf("\nContinuous character Maximum Likelihood"); printf(" method version %s\n\n",VERSION); printf("Settings for this run:\n"); printf(" U Search for best tree? %s\n", (usertree ? "No, use user trees in input" : "Yes")); if (usertree) { printf(" L Use lengths from user trees?%s\n", (lengths ? " Yes" : " No")); } printf(" C Gene frequencies or continuous characters? %s\n", (contchars ? "Continuous characters" : "Gene frequencies")); if (!contchars) printf(" A Input file has all alleles at each locus? %s\n", (all ? "Yes" : "No, one allele missing at each")); printf(" O Outgroup root? %s %ld\n", (outgropt ? "Yes, at species number" : "No, use as outgroup species"),outgrno); if (!usertree) { printf(" G Global rearrangements? %s\n", (global ? "Yes" : "No")); printf(" J Randomize input order of species?"); if (jumble) printf(" Yes (seed=%8ld,%3ld times)\n", inseed0, njumble); else printf(" No. Use input order\n"); } printf(" M Analyze multiple data sets?"); if (mulsets) printf(" Yes, %2ld sets\n", datasets); else printf(" No\n"); printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)"); printf(" 1 Print out the data at start of run %s\n", (printdata ? "Yes" : "No")); printf(" 2 Print indications of progress of run %s\n", (progress ? "Yes" : "No")); printf(" 3 Print out tree %s\n", (treeprint ? "Yes" : "No")); printf(" 4 Write out trees onto tree file? %s\n", (trout ? "Yes" : "No")); printf("\n Y to accept these or type the letter for one to change\n"); #ifdef WIN32 phyFillScreenColor(); #endif fflush(stdout); scanf("%c%*[^\n]", &ch); getchar(); uppercase(&ch); done = (ch == 'Y'); if (!done) { if (((!usertree) && (strchr("JOUGACM12340", ch) != NULL)) || (usertree && ((strchr("LOUACM12340", ch) != NULL)))){ switch (ch) { case 'A': if (!contchars) all = !all; break; case 'C': contchars = !contchars; break; case 'G': global = !global; break; case 'J': jumble = !jumble; if (jumble) initjumble(&inseed, &inseed0, seed, &njumble); else njumble = 1; break; case 'L': lengths = !lengths; break; case 'O': outgropt = !outgropt; if (outgropt) initoutgroup(&outgrno, spp); break; case 'U': usertree = !usertree; break; case 'M': mulsets = !mulsets; if (mulsets) initdatasets(&datasets); break; case '0': initterminal(&ibmpc, &ansi); break; case '1': printdata = !printdata; break; case '2': progress = !progress; break; case '3': treeprint = !treeprint; break; case '4': trout = !trout; break; } } else printf("Not a possible option!\n"); } countup(&loopcount, 100); } while (!done); } /* getoptions */
void getoptions() { /* interactively set options */ long inseed0=0; Char ch; boolean done=false; putchar('\n'); minev = false; global = false; jumble = false; njumble = 1; lengths = false; lower = false; negallowed = false; outgrno = 1; outgropt = false; power = 2.0; replicates = false; trout = true; upper = false; usertree = false; printdata = false; progress = true; treeprint = true; do { cleerhome(); printf("\nFitch-Margoliash method version %s\n\n",VERSION); printf("Settings for this run:\n"); printf(" D Method (F-M, Minimum Evolution)? %s\n", (minev ? "Minimum Evolution" : "Fitch-Margoliash")); printf(" U Search for best tree? %s\n", (usertree ? "No, use user trees in input file" : "Yes")); if (usertree) { printf(" N Use lengths from user trees? %s\n", (lengths ? "Yes" : "No")); } printf(" P Power?%9.5f\n",power); printf(" - Negative branch lengths allowed? %s\n", negallowed ? "Yes" : "No"); printf(" O Outgroup root?"); if (outgropt) printf(" Yes, at species number%3ld\n", outgrno); else printf(" No, use as outgroup species%3ld\n", outgrno); printf(" L Lower-triangular data matrix?"); if (lower) printf(" Yes\n"); else printf(" No\n"); printf(" R Upper-triangular data matrix?"); if (upper) printf(" Yes\n"); else printf(" No\n"); printf(" S Subreplicates?"); if (replicates) printf(" Yes\n"); else printf(" No\n"); if (!usertree) { printf(" G Global rearrangements?"); if (global) printf(" Yes\n"); else printf(" No\n"); printf(" J Randomize input order of species?"); if (jumble) printf(" Yes (seed =%8ld,%3ld times)\n", inseed0, njumble); else printf(" No. Use input order\n"); } printf(" M Analyze multiple data sets?"); if (mulsets) printf(" Yes, %2ld sets\n", datasets); else printf(" No\n"); printf(" 0 Terminal type (IBM PC, ANSI, none)?"); if (ibmpc) printf(" IBM PC\n"); if (ansi) printf(" ANSI\n"); if (!(ibmpc || ansi)) printf(" (none)\n"); printf(" 1 Print out the data at start of run"); if (printdata) printf(" Yes\n"); else printf(" No\n"); printf(" 2 Print indications of progress of run"); if (progress) printf(" Yes\n"); else printf(" No\n"); printf(" 3 Print out tree"); if (treeprint) printf(" Yes\n"); else printf(" No\n"); printf(" 4 Write out trees onto tree file?"); if (trout) printf(" Yes\n"); else printf(" No\n"); printf( "\n Y to accept these or type the letter for one to change\n"); #ifdef WIN32 phyFillScreenColor(); #endif scanf("%c%*[^\n]", &ch); getchar(); uppercase(&ch); done = (ch == 'Y'); if (!done) { if (strchr("DJOUNPG-LRSM01234",ch) != NULL) { switch (ch) { case 'D': minev = !minev; if (minev && (!negallowed)) negallowed = true; break; case '-': negallowed = !negallowed; break; case 'G': global = !global; break; case 'J': jumble = !jumble; if (jumble) initjumble(&inseed, &inseed0, seed, &njumble); else njumble = 1; break; case 'L': lower = !lower; break; case 'N': lengths = !lengths; break; case 'O': outgropt = !outgropt; if (outgropt) initoutgroup(&outgrno, spp); break; case 'P': initpower(&power); break; case 'R': upper = !upper; break; case 'S': replicates = !replicates; break; case 'U': usertree = !usertree; break; case 'M': mulsets = !mulsets; if (mulsets) initdatasets(&datasets); break; case '0': initterminal(&ibmpc, &ansi); break; case '1': printdata = !printdata; break; case '2': progress = !progress; break; case '3': treeprint = !treeprint; break; case '4': trout = !trout; break; } } else printf("Not a possible option!\n"); } } while (!done); } /* getoptions */
void getoptions() { /* interactively set options */ long loopcount, loopcount2; Char ch, ch2; fprintf(outfile, "\nPenny algorithm, version %s\n",VERSION); fprintf(outfile, " branch-and-bound to find all"); fprintf(outfile, " most parsimonious trees\n\n"); howoften = often; howmanny = many; outgrno = 1; outgropt = false; simple = true; thresh = false; threshold = spp; trout = true; weights = false; justwts = false; ancvar = false; allsokal = false; allwagner = true; mixture = false; printdata = false; progress = true; treeprint = true; stepbox = false; ancseq = false; loopcount = 0; for(;;) { cleerhome(); printf("\nPenny algorithm, version %s\n",VERSION); printf(" branch-and-bound to find all most parsimonious trees\n\n"); printf("Settings for this run:\n"); printf(" X Use Mixed method? %s\n", mixture ? "Yes" : "No"); printf(" P Parsimony method? %s\n", (allwagner && !mixture) ? "Wagner" : (!(allwagner || mixture)) ? "Camin-Sokal" : "(methods in mixture)"); printf(" F How often to report, in trees:%5ld\n",howoften); printf(" H How many groups of%5ld trees:%6ld\n",howoften,howmanny); printf(" O Outgroup root?"); if (outgropt) printf(" Yes, at species number%3ld\n", outgrno); else printf(" No, use as outgroup species%3ld\n", outgrno); printf(" S Branch and bound is simple? %s\n", simple ? "Yes" : "No. reconsiders order of species"); printf(" T Use Threshold parsimony?"); if (thresh) printf(" Yes, count steps up to%4.1f per char.\n", threshold); else printf(" No, use ordinary parsimony\n"); printf(" A Use ancestral states in input file? %s\n", ancvar ? "Yes" : "No"); printf(" W Sites weighted? %s\n", (weights ? "Yes" : "No")); printf(" M Analyze multiple data sets?"); if (mulsets) printf(" Yes, %2ld %s\n", msets, (justwts ? "sets of weights" : "data sets")); else printf(" No\n"); printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)"); printf(" 1 Print out the data at start of run %s\n", printdata ? "Yes" : "No"); printf(" 2 Print indications of progress of run %s\n", progress ? "Yes" : "No"); printf(" 3 Print out tree %s\n", treeprint ? "Yes" : "No"); printf(" 4 Print out steps in each character %s\n", stepbox ? "Yes" : "No"); printf(" 5 Print states at all nodes of tree %s\n", ancseq ? "Yes" : "No"); printf(" 6 Write out trees onto tree file? %s\n", trout ? "Yes" : "No"); if(weights && justwts) { printf( "WARNING: W option and Multiple Weights options are both on. "); printf( "The W menu option is unnecessary and has no additional effect. \n"); } printf("\nAre these settings correct?"); printf(" (type Y or the letter for one to change)\n"); #ifdef WIN32 phyFillScreenColor(); #endif scanf("%c%*[^\n]", &ch); getchar(); uppercase(&ch); if (ch == 'Y') break; if (strchr("WHFSOMPATX1234560",ch) != NULL) { switch (ch) { case 'X': mixture = !mixture; break; case 'P': allwagner = !allwagner; break; case 'A': ancvar = !ancvar; break; case 'H': inithowmany(&howmanny, howoften); break; case 'F': inithowoften(&howoften); break; case 'S': simple = !simple; break; case 'O': outgropt = !outgropt; if (outgropt) initoutgroup(&outgrno, spp); else outgrno = 1; break; case 'T': thresh = !thresh; if (thresh) initthreshold(&threshold); break; case 'W': weights = !weights; break; case 'M': mulsets = !mulsets; if (mulsets) { printf("Multiple data sets or multiple weights?"); loopcount2 = 0; do { printf(" (type D or W)\n"); #ifdef WIN32 phyFillScreenColor(); #endif scanf("%c%*[^\n]", &ch2); getchar(); if (ch2 == '\n') ch2 = ' '; uppercase(&ch2); countup(&loopcount2, 10); } while ((ch2 != 'W') && (ch2 != 'D')); justwts = (ch2 == 'W'); if (justwts) justweights(&msets); else initdatasets(&msets); } break; case '0': initterminal(&ibmpc, &ansi); break; case '1': printdata = !printdata; break; case '2': progress = !progress; break; case '3': treeprint = !treeprint; break; case '4': stepbox = !stepbox; break; case '5': ancseq = !ancseq; break; case '6': trout = !trout; break; } } else printf("Not a possible option!\n"); countup(&loopcount, 100); } allsokal = (!allwagner && !mixture); } /* getoptions */
void getoptions() { /* interactively set options */ long reps0; long inseed, inseed0, loopcount, loopcount2; Char ch; boolean done1; data = seqs; seq = dna; bootstrap = true; jackknife = false; permute = false; ild = false; lockhart = false; blocksize = 1; regular = true; fracsample = 1.0; all = false; reps = 100; weights = false; mixture = false; ancvar = false; categories = false; justwts = false; printdata = false; dotdiff = true; progress = true; interleaved = true; xml = false; nexus = false; factors = false; loopcount = 0; for (;;) { cleerhome(); printf("\nBootstrapping algorithm, version %s\n\n",VERSION); printf("Settings for this run:\n"); printf(" D Sequence, Morph, Rest., Gene Freqs? %s\n", (data == seqs ) ? "Molecular sequences" : (data == morphology ) ? "Discrete Morphology" : (data == restsites) ? "Restriction Sites" : (data == genefreqs) ? "Gene Frequencies" : ""); if (data == restsites) printf(" E Number of enzymes? %s\n", enzymes ? "Present in input file" : "Not present in input file"); if (data == genefreqs) printf(" A All alleles present at each locus? %s\n", all ? "Yes" : "No, one absent at each locus"); if ((!lockhart) && (data == morphology)) printf(" F Use factors information? %s\n", factors ? "Yes" : "No"); printf(" J Bootstrap, Jackknife, Permute, Rewrite? %s\n", regular && jackknife ? "Delete-half jackknife" : (!regular) && jackknife ? "Delete-fraction jackknife" : permute ? "Permute species for each character" : ild ? "Permute character order" : lockhart ? "Permute within species" : regular && bootstrap ? "Bootstrap" : (!regular) && bootstrap ? "Partial bootstrap" : rewrite ? "Rewrite data" : "(unknown)" ); if (bootstrap || jackknife) { printf(" %% Regular or altered sampling fraction? "); if (regular) printf("regular\n"); else { if (fabs(fracsample*100 - (int)(fracsample*100)) > 0.01) { printf("%.1f%% sampled\n", 100.0*fracsample); } else { printf("%.0f%% sampled\n", 100.0*fracsample); } } } if ((data == seqs) && rewrite) { printf(" P PHYLIP, NEXUS, or XML output format? %s\n", nexus ? "NEXUS" : xml ? "XML" : "PHYLIP"); if (xml || ((data == seqs) && nexus)) { printf(" S Type of molecular sequences? " ); switch (seq) { case (dna) : printf("DNA\n"); break; case (rna) : printf("RNA\n"); break; case (protein) : printf("Protein\n"); break; } } } if ((data == morphology) && rewrite) printf(" P PHYLIP or NEXUS output format? %s\n", nexus ? "NEXUS" : "PHYLIP"); if (bootstrap) { if (blocksize > 1) printf(" B Block size for block-bootstrapping? %ld\n", blocksize); else printf(" B Block size for block-bootstrapping? %ld (regular bootstrap)\n", blocksize); } if (!rewrite) printf(" R How many replicates? %ld\n", reps); if (jackknife || bootstrap || permute || ild) { printf(" W Read weights of characters? %s\n", (weights ? "Yes" : "No")); if (data == morphology) { printf(" X Read mixture file? %s\n", (mixture ? "Yes" : "No")); printf(" N Read ancestors file? %s\n", (ancvar ? "Yes" : "No")); } if (data == seqs) printf(" C Read categories of sites? %s\n", (categories ? "Yes" : "No")); if ((!permute)) { printf(" S Write out data sets or just weights? %s\n", (justwts ? "Just weights" : "Data sets")); } } if (data == seqs || data == restsites) printf(" I Input sequences interleaved? %s\n", interleaved ? "Yes" : "No, sequential"); printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)"); printf(" 1 Print out the data at start of run %s\n", printdata ? "Yes" : "No"); if (printdata) printf(" . Use dot-differencing to display them %s\n", dotdiff ? "Yes" : "No"); printf(" 2 Print indications of progress of run %s\n", progress ? "Yes" : "No"); printf("\n Y to accept these or type the letter for one to change\n"); #ifdef WIN32 phyFillScreenColor(); #endif fflush(stdout); scanf("%c%*[^\n]", &ch); getchar(); uppercase(&ch); if (ch == 'Y') break; if ( (bootstrap && (strchr("ABCDEFSJPRWXNI%1.20",ch) != NULL)) || (jackknife && (strchr("ACDEFSJPRWXNI%1.20",ch) != NULL)) || (permute && (strchr("ACDEFSJPRWXNI%1.20",ch) != NULL)) || ((ild || lockhart) && (strchr("ACDESJPRXNI%1.20",ch) != NULL)) || ((!(bootstrap || jackknife || permute || ild || lockhart)) && ((!xml) && (strchr("ADEFJPI1.20",ch) != NULL))) || (((data == morphology) || (data == seqs)) && (nexus || xml) && (strchr("ADEFJPSI1.20",ch) != NULL)) ) { switch (ch) { case 'D': if (data == genefreqs) data = seqs; else data = (datatype)((long)data + 1); break; case 'A': all = !all; break; case 'E': enzymes = !enzymes; break; case 'J': if (bootstrap) { bootstrap = false; jackknife = true; } else if (jackknife) { jackknife = false; permute = true; } else if (permute) { permute = false; ild = true; } else if (ild) { ild = false; lockhart = true; } else if (lockhart) { lockhart = false; rewrite = true; } else if (rewrite) { rewrite = false; bootstrap = true; } else { assert(0); /* Shouldn't happen */ bootstrap = true; jackknife = permute = ild = lockhart = rewrite = false; } break; case '%': regular = !regular; if (!regular) { loopcount2 = 0; do { printf("Samples as percentage of"); if ((data == seqs) || (data == restsites)) printf(" sites?\n"); if (data == morphology) printf(" characters?\n"); if (data == genefreqs) printf(" loci?\n"); fflush(stdout); scanf("%lf%*[^\n]", &fracsample); getchar(); done1 = (fracsample > 0.0); if (!done1) { printf("BAD NUMBER: must be positive\n"); } fracsample = fracsample/100.0; countup(&loopcount2, 10); } while (done1 != true); } break; case 'P': if (data == seqs) { if (!xml && !nexus) nexus = true; else { if (nexus) { nexus = false; xml = true; } else xml = false; } } if (data == morphology) { nexus = !nexus; xml = false; } break; case 'S': if(!rewrite){ justwts = !justwts; } else { switch (seq) { case (dna): seq = rna; break; case (rna): seq = protein; break; case (protein): seq = dna; break; } } break; case 'B': loopcount2 = 0; do { printf("Block size?\n"); #ifdef WIN32 phyFillScreenColor(); #endif fflush(stdout); scanf("%ld%*[^\n]", &blocksize); getchar(); done1 = (blocksize > 0); if (!done1) { printf("BAD NUMBER: must be positive\n"); } countup(&loopcount2, 10); } while (done1 != true); break; case 'R': reps0 = reps; loopcount2 = 0; do { printf("Number of replicates?\n"); #ifdef WIN32 phyFillScreenColor(); #endif fflush(stdout); scanf("%ld%*[^\n]", &reps); getchar(); done1 = (reps > 0); if (!done1) { printf("BAD NUMBER: must be positive\n"); reps = reps0; } countup(&loopcount2, 10); } while (done1 != true); break; case 'W': weights = !weights; break; case 'X': mixture = !mixture; break; case 'N': ancvar = !ancvar; break; case 'C': categories = !categories; break; case 'F': factors = !factors; break; case 'I': interleaved = !interleaved; break; case '0': initterminal(&ibmpc, &ansi); break; case '1': printdata = !printdata; break; case '.': dotdiff = !dotdiff; break; case '2': progress = !progress; break; } } else printf("Not a possible option!\n"); countup(&loopcount, 100); } if (bootstrap || jackknife) { if (jackknife && regular) fracsample = 0.5; if (bootstrap && regular) fracsample = 1.0; } if (!rewrite) initseed(&inseed, &inseed0, seed); /* These warnings only appear when user has changed an option that * subsequently became inapplicable */ if (factors && lockhart) { printf("Warning: Cannot use factors when permuting within species.\n"); factors = false; } if (data != seqs) { if (xml) { printf("warning: XML output not available for this type of data\n"); xml = false; } if (categories) { printf("warning: cannot use categories file with this type of data\n"); categories = false; } } if (data != morphology) { if (mixture) { printf("warning: cannot use mixture file with this type of data\n"); mixture = false; } if (ancvar) { printf("warning: cannot use ancestors file with this type of data\n"); ancvar = false; } } } /* getoptions */
void getoptions() { /* interactively set options */ long inseed0 = 0, loopcount; Char ch; fprintf(outfile, "\nNeighbor-Joining/UPGMA method version %s\n\n",VERSION); putchar('\n'); jumble = false; lower = false; outgrno = 1; outgropt = false; replicates = false; trout = true; upper = false; printdata = false; progress = true; treeprint = true; njoin = true; loopcount = 0; for(;;) { cleerhome(); printf("\nNeighbor-Joining/UPGMA method version %s\n\n",VERSION); printf("Settings for this run:\n"); printf(" N Neighbor-joining or UPGMA tree? %s\n", (njoin ? "Neighbor-joining" : "UPGMA")); if (njoin) { printf(" O Outgroup root?"); if (outgropt) printf(" Yes, at species number%3ld\n", outgrno); else printf(" No, use as outgroup species%3ld\n", outgrno); } printf(" L Lower-triangular data matrix? %s\n", (lower ? "Yes" : "No")); printf(" R Upper-triangular data matrix? %s\n", (upper ? "Yes" : "No")); printf(" S Subreplicates? %s\n", (replicates ? "Yes" : "No")); printf(" J Randomize input order of species?"); if (jumble) printf(" Yes (random number seed =%8ld)\n", inseed0); else printf(" No. Use input order\n"); printf(" M Analyze multiple data sets?"); if (mulsets) printf(" Yes, %2ld sets\n", datasets); else printf(" No\n"); printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", (ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)")); printf(" 1 Print out the data at start of run %s\n", (printdata ? "Yes" : "No")); printf(" 2 Print indications of progress of run %s\n", (progress ? "Yes" : "No")); printf(" 3 Print out tree %s\n", (treeprint ? "Yes" : "No")); printf(" 4 Write out trees onto tree file? %s\n", (trout ? "Yes" : "No")); printf("\n\n Y to accept these or type the letter for one to change\n"); #ifdef WIN32 phyFillScreenColor(); #endif scanf("%c%*[^\n]", &ch); getchar(); if (ch == '\n') ch = ' '; uppercase(&ch); if (ch == 'Y') break; if (strchr("NJOULRSM01234",ch) != NULL){ switch (ch) { case 'J': jumble = !jumble; if (jumble) initseed(&inseed, &inseed0, seed); break; case 'L': lower = !lower; break; case 'O': outgropt = !outgropt; if (outgropt) initoutgroup(&outgrno, spp); else outgrno = 1; break; case 'R': upper = !upper; break; case 'S': replicates = !replicates; break; case 'N': njoin = !njoin; break; case 'M': mulsets = !mulsets; if (mulsets) initdatasets(&datasets); jumble = true; if (jumble) initseed(&inseed, &inseed0, seed); break; case '0': initterminal(&ibmpc, &ansi); break; case '1': printdata = !printdata; break; case '2': progress = !progress; break; case '3': treeprint = !treeprint; break; case '4': trout = !trout; break; } } else printf("Not a possible option!\n"); countup(&loopcount, 100); } } /* getoptions */
void getoptions() { /* interactively set options */ long loopcount; Char ch; boolean done, gotopt; char input[100]; how = arb; usertree = false; goteof = false; thresh = false; threshold = spp; weights = false; ancvar = false; factors = false; dollo = true; loopcount = 0; do { cleerhome(); printf("\nInteractive Dollo or polymorphism parsimony,"); printf(" version %s\n\n",VERSION); printf("Settings for this run:\n"); printf(" P Parsimony method?"); printf(" %s\n",(dollo ? "Dollo" : "Polymorphism")); printf(" A Use ancestral states? %s\n", ancvar ? "Yes" : "No"); printf(" F Use factors information? %s\n", factors ? "Yes" : "No"); printf(" W Sites weighted? %s\n", (weights ? "Yes" : "No")); printf(" T Use Threshold parsimony?"); if (thresh) printf(" Yes, count steps up to%4.1f\n", threshold); else printf(" No, use ordinary parsimony\n"); printf(" A Use ancestral states in input file?"); printf(" %s\n",(ancvar ? "Yes" : "No")); printf(" U Initial tree (arbitrary, user, specify)?"); printf(" %s\n",(how == arb) ? "Arbitrary" : (how == use) ? "User tree from tree file" : "Tree you specify"); printf(" 0 Graphics type (IBM PC, ANSI, none)? %s\n", ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)"); printf(" L Number of lines on screen?%4ld\n",screenlines); printf(" S Width of terminal screen?%4ld\n",screenwidth); printf( "\n\nAre these settings correct? (type Y or the letter for one to change)\n"); #ifdef WIN32 phyFillScreenColor(); #endif getstryng(input); ch = input[0]; uppercase(&ch); done = (ch == 'Y'); gotopt = (strchr("SFTPULA0W",ch) != NULL) ? true : false; if (gotopt) { switch (ch) { case 'A': ancvar = !ancvar; break; case 'F': factors = !factors; break; case 'W': weights = !weights; break; case 'P': dollo = !dollo; break; case 'T': thresh = !thresh; if (thresh) initthreshold(&threshold); break; case 'U': if (how == arb) how = use; else if (how == use) how = spec; else how = arb; break; case '0': initterminal(&ibmpc, &ansi); break; case 'L': initnumlines(&screenlines); break; case 'S': screenwidth = readlong("Width of terminal screen (in characters)?\n"); } } else printf("Not a possible option!\n"); countup(&loopcount, 100); } while (!done); if (scrollinc < screenwidth / 2.0) hscroll = scrollinc; else hscroll = screenwidth / 2; if (scrollinc < screenlines / 2.0) vscroll = scrollinc; else vscroll = screenlines / 2; } /* getoptions */
void getoptions() { /* interactively set options */ long loopcount, loopcount2; Char ch; putchar('\n'); sitelength = 6.0; neili = false; gama = false; cvi = 0.0; weights = false; lower = false; printdata = false; progress = true; restsites = true; interleaved = true; ttratio = 2.0; loopcount = 0; for (;;) { cleerhome(); printf("\nRestriction site or fragment distances, "); printf("version %s\n\n",VERSION); printf("Settings for this run:\n"); printf(" R Restriction sites or fragments? %s\n", (restsites ? "Sites" : "Fragments")); printf(" N Original or modified Nei/Li model? %s\n", (neili ? "Original" : "Modified")); if (!neili) { printf(" G Gamma distribution of rates among sites?"); if (!gama) printf(" No\n"); else printf(" Yes\n"); printf(" T Transition/transversion ratio? %f\n", ttratio); } printf(" S Site length? %4.1f\n",sitelength); printf(" L Form of distance matrix? %s\n", (lower ? "Lower-triangular" : "Square")); printf(" M Analyze multiple data sets?"); if (mulsets) printf(" Yes, %2ld sets\n", datasets); else printf(" No\n"); printf(" I Input sequences interleaved? %s\n", (interleaved ? "Yes" : "No, sequential")); printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)"); printf(" 1 Print out the data at start of run? %s\n", (printdata ? "Yes" : "No")); printf(" 2 Print indications of progress of run? %s\n", (progress ? "Yes" : "No")); printf("\n Y to accept these or type the letter for one to change\n"); fflush(stdout); scanf("%c%*[^\n]", &ch); getchar(); if (ch == '\n') ch = ' '; uppercase(&ch); if (ch == 'Y') break; if (strchr("RDNGTSLMI012",ch) != NULL){ switch (ch) { case 'R': restsites = !restsites; break; case 'G': if (!neili) gama = !gama; break; case 'N': neili = !neili; break; case 'T': if (!neili) initratio(&ttratio); break; case 'S': loopcount2 = 0; do { printf("New Sitelength?\n"); fflush(stdout); scanf("%lf%*[^\n]", &sitelength); getchar(); if (sitelength < 1.0) printf("BAD RESTRICTION SITE LENGTH: %f\n", sitelength); countup(&loopcount2, 10); } while (sitelength < 1.0); break; case 'L': lower = !lower; break; case 'M': mulsets = !mulsets; if (mulsets) initdatasets(&datasets); break; case 'I': interleaved = !interleaved; break; case '0': initterminal(&ibmpc, &ansi); break; case '1': printdata = !printdata; break; case '2': progress = !progress; break; } } else printf("Not a possible option!\n"); countup(&loopcount, 100); } if (gama) { loopcount = 0; do { printf( "\nCoefficient of variation of substitution rate among sites (must be positive)?\n"); fflush(stdout); scanf("%lf%*[^\n]", &cvi); getchar(); countup(&loopcount, 100); } while (cvi <= 0.0); cvi = 1.0 / (cvi * cvi); printf("\n"); } xi = (ttratio - 0.5)/(ttratio + 0.5); xv = 1.0 - xi; fracchange = xi*0.5 + xv*0.75; } /* getoptions */