gde_linux/SUPPORT/Zuk_to_gen.c

89 lines
1.7 KiB
C
Executable File

#include <stdio.h>
#include <string.h>
typedef struct Sequence {
int len;
char name[80];
char type[8];
char *nuc;
} Sequence;
main()
{
char a[5000], b[5000], cinline[132];
int pos1, pos2, pos3, i, j, k, FLAG;
Sequence pair[2];
for (j = 0; j < 5000; j++) b[j] = '-';
FLAG = (int)gets(cinline);
for (j = 0; FLAG; j++) {
FLAG = (int)gets(cinline);
sscanf(cinline, "%d", &pos1);
if ((sscanf(cinline, "%*6c %c %d %d %d", &(a[j]), &k, &pos2,
&pos3) == 4) &&
(FLAG)) {
if (pos3 != 0) {
if (pos1 < pos3) {
b[pos1 - 1] = '[';
b[pos3 - 1] = ']';
}
else {
b[pos3 - 1] = '[';
b[pos1 - 1] = ']';
}
}
}
else {
pair[0].len = j;
strcpy(pair[0].name, "HELIX");
strcpy(pair[0].type, "TEXT");
pair[1].len = j;
/*
sscanf(cinline,"%*24c
%s",pair[1].name);
*/
strcpy(pair[1].name, "Sequence");
strcpy(pair[1].type, "RNA");
pair[0].nuc = b;
pair[1].nuc = a;
WriteGen(pair, stdout, 2);
for (j = 0; j < 5000; j++) b[j] = '-';
j = -1;
}
}
exit(0);
}
WriteGen(seq, file, numseq) Sequence *seq;
FILE *file;
int numseq;
{
register i, j;
char temp[14];
for (j = 0; j < numseq; j++) fprintf(file, "%-.12s\n", seq[j].name);
fprintf(file, "ZZZZZZZZZZ\n");
for (j = 0; j < numseq; j++) {
strcpy(temp, seq[j].name);
for (i = strlen(temp); i < 13; i++) temp[i] = ' ';
temp[i] = '\0';
fprintf(file, "LOCUS %-.12s %s %d BP\n", temp,
seq[j].type, seq[j].len);
fprintf(file, "ORIGIN");
for (i = 0; i < seq[j].len; i++) {
if (i % 60 == 0) fprintf(file, "\n%9d", i + 1);
if (i % 10 == 0) fprintf(file, " ");
fprintf(file, "%c", seq[j].nuc[i]);
}
fprintf(file, "\n//\n");
}
return;
}