/* Output from p2c, the Pascal-to-C translator */ /* From input file "cnvconsq.p" */ #include "p2c.h" main(argc, argv) int argc; Char *argv[]; { /*Program reads one continuout seq text one X base window at a time, and converts it into an 4X character digital file to be used as input for bpexp96 neural net programs.This prg makes an error space for sequence lengths which are an even multiple of 9 .*/ Char seq[4800000]; Char name[81]; long outpt, m, n, l; Char base; FILE *ifil, *ofil; long lngth; Char *TEMP; long FORLIM; PASCAL_MAIN(argc, argv); ofil = NULL; ifil = NULL; printf("Please give the name of the input file.\n"); fgets(name, 81, stdin); TEMP = strchr(name, '\n'); if (TEMP != NULL) *TEMP = 0; printf("Is the expected output 0 or 1?\n"); scanf("%ld%*[^\n]", &outpt); getchar(); /* p2c: cnvconsq.p, line 20: * Warning: Symbol 'READONLY' is not defined [221] */ /* p2c: cnvconsq.p, line 20: * Note: Ignoring block size in binary file [182] */ ifil = fopen(name, "r"); if (ifil == NULL) _EscIO(FileNotFound); rewind(ifil); printf("Enter length of output sequence (58).\n"); scanf("%ld%*[^\n]", &lngth); getchar(); printf("Enter name of output file.\n"); fgets(name, 81, stdin); TEMP = strchr(name, '\n'); if (TEMP != NULL) *TEMP = 0; if (ofil != NULL) ofil = freopen(name, "r+", ofil); else ofil = fopen(name, "r+"); if (ofil == NULL) ofil = fopen(name, "w+"); if (ofil == NULL) _EscIO(FileNotFound); if (ofil != NULL) { /* p2c: cnvconsq.p, line 27: Note: REWRITE does not specify a name [181] */ rewind(ofil); } else ofil = tmpfile(); if (ofil == NULL) _EscIO(FileNotFound); n = 0; while (!P_eof(ifil)) { base = getc(ifil); if (base == '\n') base = ' '; n++; if (P_eoln(ifil)) { fscanf(ifil, "%*[^\n]"); getc(ifil); } } /*while*/ l = n; n = 0; rewind(ifil); FORLIM = l; for (n = 1; n <= FORLIM; n++) { base = getc(ifil); if (base == '\n') base = ' '; if (base == 'a') base = 'A'; if (base == 'c') base = 'C'; if (base == 'g') base = 'G'; if (base == 't') base = 'T'; if (base == 'n') base = 'N'; seq[n - 1] = base; if (P_eoln(ifil)) { fscanf(ifil, "%*[^\n]"); getc(ifil); } } m = 0; while (m <= l - lngth-1) { FORLIM = m + 9; for (n = m + 1; n <= FORLIM; n++) { switch (seq[n - 1]) { case 'A': fprintf(ofil, "0 0 0 1 "); break; case 'C': fprintf(ofil, "0 0 1 0 "); break; case 'G': fprintf(ofil, "0 1 0 0 "); break; case 'T': fprintf(ofil, "1 0 0 0 "); break; case 'N': fprintf(ofil, "0 0 0 0 "); break; } } putc('\n', ofil); FORLIM = m + 18; for (n = m + 10; n <= FORLIM; n++) { switch (seq[n - 1]) { case 'A': fprintf(ofil, "0 0 0 1 "); break; case 'C': fprintf(ofil, "0 0 1 0 "); break; case 'G': fprintf(ofil, "0 1 0 0 "); break; case 'T': fprintf(ofil, "1 0 0 0 "); break; case 'N': fprintf(ofil, "0 0 0 0 "); break; } } putc('\n', ofil); FORLIM = m + lngth; for (n = m + 19; n <= FORLIM; n++) { switch (seq[n - 1]) { case 'A': fprintf(ofil, "0 0 0 1 "); break; case 'C': fprintf(ofil, "0 0 1 0 "); break; case 'G': fprintf(ofil, "0 1 0 0 "); break; case 'T': fprintf(ofil, "1 0 0 0 "); break; case 'N': fprintf(ofil, "0 0 0 0 "); break; } if (n==(m+27)) putc('\n', ofil); if (n==(m+36)) putc('\n',ofil); if (n==(m+45)) putc('\n',ofil); if (n==(m+54)) putc('\n',ofil); if (n==(m+63)) putc('\n',ofil); if (n==(m+72)) putc('\n',ofil); if (n==(m+81)) putc('\n',ofil); if (n==(m+90)) putc('\n',ofil); if (n==(m+99)) putc('\n',ofil); } putc('\n',ofil); m++; if (outpt == 1) fprintf(ofil, "1\n"); else fprintf(ofil, "0\n"); } /*while*/ if (ifil != NULL) fclose(ifil); ifil = NULL; if (ofil != NULL) fclose(ofil); ofil = NULL; if (ifil != NULL) fclose(ifil); if (ofil != NULL) fclose(ofil); exit(0); } /* End. */