/* Program From Progressive Alignment of Amino Acid Sequences and Construction of Phylogenetic Trees from Them, by D. F. Feng and R. F. Doolittle, Methods of Enzymology, v266, p368 (1996) 2/7/1996 Read "readme.doc" before using. */ #include #include int NumStrings; char InputString[50][60]; main(ac,av) int ac; char *av[]; { FILE *B1andD, *B2andD, *fopen(); int c,i,length; char line[400],paren[200]; if(ac<2) { fprintf(stderr,"\nPurpose: Determine Branch Lengths"); fprintf(stderr," Based on Distance Matrix.\n"); fprintf(stderr,"Usage: "); fprintf(stderr,"%s rf [>wf]\n",av[0]); fprintf(stderr,"\trf: `albr' (an output file from tree)\n"); fprintf(stderr,"\twf: Branch Lengths\n"); fprintf(stderr,"** Use `tomac' for tree drawing. **\n\n"); exit(0); } if((B1andD = fopen(av[1],"r")) == NULL) exit(fprintf(stderr,"%s: Can't open %s\n",av[1])); i=0; while((c=getc(B1andD)) != '*') { ungetc(c,B1andD); fscanf(B1andD,"%s",InputString[i]); i++; getc(B1andD); } NumStrings = i; GetParen(InputString,paren); length = strlen(paren); for(i=1; i<(length-1); ++i) paren[i-1] = paren[i]; paren[i-1] = '\0'; B2andD = fopen("zecret","w"); fprintf(B2andD,"%s\n",paren); while((c=fgetc(B1andD)) != EOF) { fgets(line, sizeof line, B1andD); fprintf(B2andD,"%s",line); } fclose(B1andD); fclose(B2andD); branchlength(); } GetParen(start,paren) char start[50][60], paren[]; { int i,j,match; char c[2],SubParen[200],oldparen[200]; paren[0] = '('; for(i=1; i<3; ++i) paren[i] = start[0][i-1]; paren[i++] = ')'; paren[i] = '\0'; i=2; while(i1) { for(j=1; j='A' && *pts<='Z') { or[nseq] = *pts - 65; nseq++; } else if(*pts>='a' && *pts<='z') { or[nseq] = *pts - 71; nseq++; } pts++; } for(i=0; ifabs(a[l][k])) l=i; } if(l!=k) { for(j=k; j<2*n; j++) { dum=a[k][j]; a[k][j]=a[l][j]; a[l][j]=dum; } } for(i=k+1; i=0; --i) for(k=n; ka[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } }