/* aacomp.c calculate the molecular wt and aa composition of a protein sequence */ #include #include #define MAXSEQ 80000 int naac[5]; int naa=5; char aa[]="ACDEFGHIKLMNPQRSTVWYBZX"; char nt[]="ACGTN"; FILE *aafd; char fname[120]; static char line[1024]; main(argc,argv) int argc; char **argv; { int ia, ntt, nn; char *aa0; int n0; if (argc>1) strncpy(fname,argv[1],120); else { fprintf(stderr," usage - ntcomp filename\n"); exit(1); } if ((aa0=calloc((size_t)MAXSEQ,sizeof(char)))==NULL) { printf(" cannot allocate %d array\n",MAXSEQ); exit(1); } initmat(nt,naa); if (strlen(fname)>0) { if ((aafd=fopen(fname,"r"))==NULL) { printf(" cannot open %s\n",fname); exit(1); } } else aafd = stdin; fgets(line,sizeof(line),aafd); for (ia=0; ia0) { ntt += n0; nn++; for (ia=0; ia 10000) break; } printf("%d nt in %d sequences\n\n",ntt,nn); for (ia=0; ia0 && aa[iaa]>='A' && aa[iaa]<='Z') aascii[aa[iaa]-'A'+'a']=aascii[aa[iaa]]; } } fgetseq(seq,maxs,fptr) char *seq; int maxs; FILE *fptr; { int i, n; int ic; i=0; n=0; while(fgets(line,sizeof(line),fptr)!=NULL) { if (line[0]=='>') goto done; for (i=0; (n=0); i++) if (ic>0) seq[n++]= --ic; } if (n==maxs) printf(" sequence may be truncated\n %d %d",n,maxs); done: seq[n]= -1; return n; }