/* 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. */ #define MAXS 700 #define nseq 40 #include int NSEQ, nax; char seq[nseq][MAXS]; main(ac,av) int ac; char *av[]; { FILE *fd; int c, flag, i, ii, j, k, m, n, nline; char stitle[nseq][100], code[nseq][12]; if(ac<2) { fprintf(stderr,"\nPurpose: Change Aligned Sequences"); fprintf(stderr," to Compact Format.\n"); fprintf(stderr,"usage: %s rf [Nr] [>wf]\n",av[0]); fprintf(stderr,"\trf: Progressive aligned sequences.\n"); fprintf(stderr,"\twf: Formatted sequences.\n"); fprintf(stderr,"\tNr: Number of residues per line"); fprintf(stderr," (default=65).\n"); fprintf(stderr,"Current limitations: NSEQ=<%d, length=<%d\n\n", nseq,MAXS); exit(0); } if((fd=fopen(av[1],"r"))==NULL) exit("Can't open %s\n",av[1]); nline = 0; NSEQ=0; for(i=0; ; ++i) { if((c=getc(fd))==EOF) break; ungetc(c,fd); NSEQ++; while((c=getc(fd))==' ') ; ungetc(c,fd); fgets(stitle[i],sizeof stitle[i],fd); fgetc(fd); fgets(code[i],5,fd); for(ii=4; ii<10; ii++) code[i][ii] = ' '; code[i][ii] = '\0'; fseek(fd,6,1); for(j=0;(c=getc(fd)) && c != '*'; ++j) { if(c=='\n') { fseek(fd,11,1); --j; continue; } if(c==' ') { --j; continue; } seq[i][j]=c; } seq[i][j]='*'; seq[i][j+1]='\0'; getc(fd); } if(av[2] == NULL) nax=65; else nax = atoi(av[2]); fprintf(stderr,"If you want to use the Old_Codes, hit , otherwise\n"); fprintf(stderr,"enter a New_Code with no more than 10 characters.\n\n"); for(i=0; i0) { while(j<10) code[i][j++]=' '; code[i][j]='\0'; } } for(i=0; seq[0][i]!='\0'; ++i) { flag=0; for(j=0; j=NSEQ)&&(seq[j][k]=='C') ) printf("%c",seq[j][k]+'a'-'A'); else printf("%c",seq[j][k]); } } } printf("\n"); } match(j,k) int j,k; { int i, mtch; mtch=0; for(i=0; i