add: original GDE SUPPORT

This commit is contained in:
kuoi 2023-04-12 03:39:54 +08:00
parent b307d12174
commit 30b16b2a1e
11 changed files with 4842 additions and 0 deletions

2302
SUPPORT/CAP2.c Normal file

File diff suppressed because it is too large Load diff

168
SUPPORT/Flatio.c Normal file
View file

@ -0,0 +1,168 @@
#include <malloc.h>
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
struct data_format
{
int length;
char *nuc;
int offset;
char name[64];
char type;
};
int ReadFlat(file,align,maxseqs)
FILE *file;
struct data_format align[];
int maxseqs;
{
int j,len=0, count=-1,offset;
unsigned maxlen = 1024;
char inline[1025];
extern char *Calloc(),*Realloc();
if(file == NULL)
Errorout("Cannot open data file");
for(;fgets(inline,1024,file) != NULL;)
{
inline[strlen(inline)-1] = '\0';
switch(inline[0])
{
case '>':
case '#':
case '%':
case '"':
case '@':
offset = 0;
for(j=0;j<strlen(inline);j++)
{
if(inline[j] == '(')
{
sscanf((char*)
(inline+j+1),"%d",
&offset);
inline[j] = '\0';
}
}
if(count != -1)
{
align[count].length = len;
align[count].nuc[len] = '\0';
maxlen = len;
}
count++;
if(count > maxseqs)
Errorout("Sorry, alignment is too large");
align[count].nuc = Calloc(maxlen,sizeof(char));
align[count].type = inline[0];
align[count].offset = offset;
if( align[count].nuc == NULL)
Errorout("Calloc problem");
sscanf((char*)(inline+1),"%s",
align[count].name);
len = 0;
break;
default:
if(len+strlen(inline) > maxlen)
{
maxlen = (maxlen+strlen(inline))*2;
align[count].nuc =
Realloc(align[count].nuc, maxlen);
}
for(j=0;j<strlen(inline);j++)
align[count].nuc[j+len] = inline[j];
len += strlen(inline);
break;
}
}
if(count == -1) exit(1);
align[count].length = len;
align[count].nuc[len] = '\0';
return(++count);
}
Errorout(string)
char *string;
{
fprintf(stderr,"%s\n",string);
exit(1);
}
WriteData(file,data,count)
FILE *file;
struct data_format data[];
int count;
{
int i,j;
for(j = 0 ; j<count;j++)
{
if(data[j].offset)
fprintf(file,"\n%c%s(%d)",data[j].type,data[j].name,
data[j].offset);
else
fprintf(file,"\n%c%s",data[j].type,data[j].name);
for(i=0;i<data[j].length;i++)
{
if(i%60 == 0)
fputc('\n',file);
fputc(data[j].nuc[i],file);
}
}
return;
}
ErrorOut(code,string)
int code;
char *string;
{
if (code == 0)
{
fprintf(stderr,"Error:%s\n",string);
exit(1);
}
return;
}
char *Calloc(count,size)
int count,size;
{
char *temp;
temp = (char*)calloc(count,size);
if(temp == NULL)
{
fprintf(stdout,"Error in Calloc\n");
exit(-1);
}
else
return(temp);
}
char *Realloc(block,size)
char *block;
int size;
{
char *temp;
temp =(char*)realloc(block,size);
if(temp == NULL)
{
fprintf(stdout,"Error in Calloc\n");
exit(-1);
}
else
return(temp);
}

18
SUPPORT/Makefile Normal file
View file

@ -0,0 +1,18 @@
all:CAP2 Restriction count findall varpos lsadt sho_helix Zuk_to_gen
mv lsadt sho_helix Zuk_to_gen CAP2 Restriction count findall varpos ../bin
CAP2: CAP2.c
cc CAP2.c -O -o CAP2
Restriction: Restriction.c
cc Restriction.c -O -o Restriction
Zuk_to_gen: Zuk_to_gen.c
cc Zuk_to_gen.c -O -o Zuk_to_gen
count: count.c
cc count.c -O -o count -lm
findall: findall.c
cc findall.c -O -o findall
lsadt: lsadt.c
cc lsadt.c -O -o lsadt -lm
sho_helix: sho_helix.c
cc sho_helix.c -O -o sho_helix
varpos: varpos.c
cc varpos.c -O -o varpos

70
SUPPORT/PrintContig.c Normal file
View file

@ -0,0 +1,70 @@
#include "Flatio.c"
#define WIDTH 50
main()
{
struct data_format data[10000];
int i,j,k,numseqs,maxlen = 0,minlen=999999999;
int lines_printed;
int len[1000];
char a,b;
numseqs = ReadFlat(stdin,data,10000);
if(numseqs == 0)
exit(1);
for(k=0;k<numseqs;k++)
{
minlen = MIN(minlen,data[k].offset);
maxlen = MAX(maxlen,data[j].length+data[k].offset);
}
for(j=minlen;j<maxlen;j+=WIDTH)
{
lines_printed = FALSE;
for (i=0;i<numseqs;i++)
{
data[i].name[19] = '\0';
if(((data[i].offset > j+WIDTH) ||
(data[i].offset+data[i].length<j)));
else
{
lines_printed = TRUE;
printf("\n%20s%5d ", data[i].name,
indx(j,&(data[i])));
for(k=j;k<j+WIDTH;k++)
{
if((k<data[i].length+data[i].offset)
&& (k>=data[i].offset))
putchar(data[i].nuc[k-data[i].offset]);
else putchar(' ');
}
}
}
if(lines_printed)
{
printf("\n |---------|---------|---------|---------|---------\n");
printf(" %6d %6d %6d %6d %6d\n\n",j+1,j+11,j+21,j+31,j+41);
}
}
putchar('\n');
exit(0);
}
int indx(pos,seq)
int pos;
struct data_format *seq;
{
int j,count=0;
if(pos < seq->offset)
return (0);
if(pos>seq->offset+seq->length)
pos = seq->offset+seq->length;
pos -= seq->offset;
for(j=0;j<pos;j++)
if(seq->nuc[j] != '-')
if(seq->nuc[j] != '~')
count++;
return (count);
}

130
SUPPORT/Restriction.c Normal file
View file

@ -0,0 +1,130 @@
/*
* Copyright 1991 Steven Smith at the Harvard Genome Lab.
* All rights reserved.
*/
#include "Flatio.c"
main(ac,av)
int ac;
char **av;
{
struct data_format data[10000];
FILE *file;
int i,j,k,color,numseqs,numenzymes,nextpos,len;
char enzymes[80][80],dummy[80];
if(ac<3)
{
fprintf(stderr,"Usage: %s enzyme_file seq_file\n",av[0]);
exit(-1);
}
file = fopen(av[2],"r");
if(file == NULL)
exit(-1);
numseqs = ReadFlat(file,data,10000);
file = fopen(av[1],"r");
if(file == NULL)
exit(-1);
for(numenzymes = 0;
fscanf(file,"%s %s",enzymes[numenzymes],dummy)>0;
numenzymes++);
for(i=0;i<numseqs;i++)
{
/*
if(numseqs>1)
*/
printf("name:%s\n",data[i].name);
printf("length:%d\n",strlen(data[i].nuc));
if(numseqs>1)
printf("nodash:\n");
printf("start:\n");
for(j=0;j<data[i].length;)
{
for(;data[i].nuc[j] == '-' && j<data[i].length;)
{
printf("8\n");
j++;
}
if((nextpos = FindNext(data[i].nuc,j,enzymes,numenzymes
,&len,&color)) != -1)
{
for(k=j;k<nextpos;k++)
printf("8\n");
for(k=j+nextpos;k<j+nextpos+len;k++)
printf("%d\n",color);
j=nextpos+len;
}
else
for(;j<data[i].length;j++)
printf("8\n");
}
}
exit(0);
}
FindNext(target,offset,enzymes,numenzymes,match_len,color)
char *target,enzymes[][80];
int numenzymes,*match_len,*color;
{
int i,j,k,closest,len1,dif,flag = FALSE;
closest = strlen(target);
*match_len = 0;
for(k=0;k<numenzymes;k++)
{
dif = (strlen(target)) - (len1 = strlen(enzymes[k])) +1;
if(len1>0)
for(flag = FALSE,j=offset;j<dif && flag == FALSE;j++)
{
flag = TRUE;
for(i=0;i<len1 && flag;i++)
{
flag = Comp(enzymes[k][i],target[i+j])?
TRUE:FALSE;
}
}
if(j-1<closest)
{
closest = j-1;
*color = k%6+1;
*match_len = strlen(enzymes[k]);
}
}
if(closest + *match_len < strlen(target))
return(closest);
else
return(-1);
}
Comp(a,b)
char a,b;
{
static int CtoB[128]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x00,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0x01,0xe,0x02,0x0d,0,0,0x04,0x0b,0,0,0x0c,0,0x03,0x0f,0,0,0,0x05,0x06,
0x08,0x08,0x07,0,0x09,0xa,0,0,0,0,0,0,0,0x01,0x0e,0x02,0x0d,0,0,0x04,
0x0b,0,0,0x0c,0,0x03,0x0f,0,0,0,0x05,0x06,0x08,0x08,0x07,0,0x09,0x0a,
0,0,0,0,0x00,0
};
static int BtoC[128] =
{
'-','A','C','M','G','R','S','V','T','W','Y','H','K','D','B','N',
'~','a','c','m','g','r','s','v','t','w','y','h','k','d','b','n',
'-','A','C','M','G','R','S','V','T','W','Y','H','K','D','B','N',
'~','a','c','m','g','r','s','v','t','w','y','h','k','d','b','n',
'-','A','C','M','G','R','S','V','T','W','Y','H','K','D','B','N',
'~','a','c','m','g','r','s','v','t','w','y','h','k','d','b','n',
'-','A','C','M','G','R','S','V','T','W','Y','H','K','D','B','N',
'~','a','c','m','g','r','s','v','t','w','y','h','k','d','b','n',
};
return ((CtoB[a]) & (CtoB[b]));
}

104
SUPPORT/Zuk_to_gen.c Executable file
View file

@ -0,0 +1,104 @@
#include <stdio.h>
typedef struct Sequence
{
int len;
char name[80];
char type[8];
char *nuc;
} Sequence;
main()
{
char a[5000],b[5000],inline[132];
int pos1,pos2,pos3,i,j,k,FLAG;
Sequence pair[2];
for(j=0;j<5000;j++)
b[j]='-';
FLAG = (int)gets(inline);
for(j=0;FLAG;j++)
{
FLAG = (int)gets(inline);
sscanf(inline,"%d",&pos1);
if((sscanf(inline,"%*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(inline,"%*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;
}

417
SUPPORT/count.c Normal file
View file

@ -0,0 +1,417 @@
/*
* Copyright 1991 Steven Smith at the Harvard Genome Lab.
* All rights reserved.
*/
#include "Flatio.c"
#include <math.h>
#define FALSE 0
#define TRUE 1
#define JUKES 0
#define OLSEN 1
#define NONE 2
#define Min(a,b) (a)<(b)?(a):(b)
int width,start,jump,usecase,sim,correction;
int tbl,numseq,num,denom,special;
char argtyp[255],argval[255];
float acwt=1.0, agwt=1.0, auwt=1.0, ucwt=1.0, ugwt=1.0, gcwt=1.0;
float dist[200][200];
struct data_format data[10000];
float parta[200], partc[200], partg[200], partu[200], setdist();
main(ac,av)
int ac;
char **av;
{
int i,j,k;
extern int ReadFlat();
FILE *file;
width = 1;
jump = 1;
if(ac==1)
{
fprintf(stderr,
"usage: %s [-sim] [-case] [-c=<none,olsen,jukes>] ",av[0]);
fprintf(stderr,"[-t] alignment_flat_file\n");
exit(1);
}
for(j=1;j<ac-1;j++)
{
getarg(av,j,argtyp,argval);
if(strcmp(argtyp,"-s=") == 0)
{
j++;
sscanf(argval,"%d",&start);
start --;
}
else if(strcmp(argtyp,"-m=") == 0)
{
j++;
sscanf(argval,"%d",&width);
}
else if(strcmp(argtyp,"-j=") == 0)
{
j++;
sscanf(argval,"%d",&jump);
}
else if(strcmp(argtyp,"-case") == 0)
usecase = TRUE;
else if(strcmp(argtyp,"-sim") == 0)
sim = TRUE;
else if(strcmp(argtyp,"-c=") == 0)
{
if(strcmp(argval,"olsen") == 0)
correction = OLSEN;
else if(strcmp(argval,"none") == 0)
correction = NONE;
else if(strcmp(argval,"jukes") == 0)
correction = JUKES;
else
fprintf(stderr,"Correction type %s %s\n",
argval,"unknown, using JUKES");
}
else if(strcmp("-t",argtyp) == 0)
tbl = TRUE;
else if(strcmp("-ac=",argtyp) == 0 || strcmp("-ca=",argtyp)== 0)
{
j++;
sscanf(argval,"%f",&acwt);
special = TRUE;
}
else if(strcmp("-au=",argtyp) == 0 || strcmp("-ua=",argtyp)== 0)
{
j++;
sscanf(argval,"%f",&auwt);
special = TRUE;
}
else if(strcmp("-ag=",argtyp) == 0 || strcmp("-ga=",argtyp)== 0)
{
j++;
sscanf(argval,"%f",&agwt);
special = TRUE;
}
else if(strcmp("-uc=",argtyp) == 0 || strcmp("-cu=",argtyp)== 0)
{
j++;
sscanf(argval,"%f",&ucwt);
special = TRUE;
}
else if(strcmp("-ug=",argtyp) == 0 || strcmp("-gu=",argtyp)== 0)
{
j++;
sscanf(argval,"%f",&ugwt);
special = TRUE;
}
else if(strcmp("-gc=",argtyp) == 0 || strcmp("-cg=",argtyp)== 0)
{
j++;
sscanf(argval,"%f",&gcwt);
special = TRUE;
}
else if(strcmp("-transition=",argtyp) == 0)
{
j++;
sscanf(argval,"%f",&ucwt);
agwt = ucwt;
special = TRUE;
}
else if(strcmp("-transversion=",argtyp) == 0)
{
j++;
sscanf(argval,"%f",&gcwt);
ugwt = gcwt;
acwt = gcwt;
auwt = gcwt;
special = TRUE;
}
}
file = fopen(av[ac-1],"r");
if ((file == NULL) || (ac == 1))
{
fprintf(stderr,"Error opening input file %s\n",av[ac-1]);
exit(1);
}
numseq = ReadFlat(file,data,10000);
fclose(file);
SetPart();
for(j=0;j<numseq-1;j++)
for(k=j+1;k<numseq;k++)
{
Compare(j,k,&num,&denom);
dist[j][k] = setdist(num,denom,j,k);
}
Report();
exit(0);
}
Compare(a,b,num,denom)
int a,b,*num,*denom;
{
int mn,i,j,casefix,match,blank;
float fnum = 0.0;
struct data_format *da,*db;
char ac,bc;
casefix = (usecase)? 0:32;
*num = 0;
*denom = 0;
da = &data[a];
db = &data[b];
mn = Min(da->length,db->length);
for(j=0;j<mn;j+=jump)
{
match = TRUE;
blank = TRUE;
for(i=0;i<width;i++)
{
ac = da->nuc[j+i] | casefix;
bc = db->nuc[j+i] | casefix;
if(ac == 't')
ac = 'u';
if(ac == 'T')
ac = 'U';
if(bc == 't')
bc = 'u';
if(bc == 'T')
bc = 'U';
if((ac=='-') || (ac|32)=='n' || (ac==' ') ||
(bc== '-') || (bc|32)=='n' || (bc==' '));
else
{
blank = FALSE;
if(ac != bc)
{
match = FALSE;
switch(ac)
{
case 'a':
if (bc == 'c') fnum+=acwt;
else if(bc == 'g') fnum+=agwt;
else if(bc == 'u') fnum+=auwt;
break;
case 'c':
if (bc == 'a') fnum+=acwt;
else if(bc == 'g') fnum+=gcwt;
else if(bc == 'u') fnum+=ucwt;
break;
case 'g':
if (bc == 'a') fnum+=agwt;
else if(bc == 'c') fnum+=gcwt;
else if(bc == 'u') fnum+=ugwt;
break;
case 'u':
if (bc == 'a') fnum+=auwt;
else if(bc == 'c') fnum+=ucwt;
else if(bc == 'g') fnum+=ugwt;
break;
case 't':
if (bc == 'a') fnum+=auwt;
else if(bc == 'c') fnum+=ucwt;
else if(bc == 'g') fnum+=ugwt;
break;
default:
break;
};
}
}
if((blank == FALSE) && match)
{
(*num) ++;
(*denom) ++;
}
else if(!blank)
(*denom) ++;
}
}
if(special)
(*num) = *denom - (int)fnum;
return;
}
float setdist(num,denom,a,b)
int num,denom,a,b;
{
float cor;
switch (correction)
{
case OLSEN:
cor = parta[a]*parta[b]+
partc[a]*partc[b]+
partg[a]*partg[b]+
partu[a]*partu[b];
break;
case JUKES:
cor = 0.25;
break;
case NONE:
cor = 0.0;
break;
default:
cor = 0.0;
break;
};
if(correction == NONE)
return(1.0 - (float)num/(float)denom);
else
return( -(1.0-cor)*log(1.0 / (1.0-cor)*((float)num/(float)denom-cor)));
}
getarg(av,ndx,atype,aval)
char **av,atype[],aval[];
int ndx;
{
int i,j;
char c;
for(j=0;(c=av[ndx][j])!=' ' && c!= '=' && c!= '\0';j++)
atype[j]=c;
if (c=='=')
{
atype[j++] = c;
atype[j] = '\0';
}
else
{
atype[j] = '\0';
j++;
}
if(c=='=')
{
for(i=0;(c=av[ndx][j]) != '\0' && c!= ' ';i++,j++)
aval[i] = c;
aval[i] = '\0';
}
return;
}
SetPart()
{
int a,c,g,u,tot,i,j;
char nuc;
for(j=0;j<numseq;j++)
{
a=0;
c=0;
g=0;
u=0;
tot=0;
for(i=0;i<data[j].length;i++)
{
nuc=data[j].nuc[i] | 32;
switch (nuc)
{
case 'a':
a++;
tot++;
break;
case 'c':
c++;
tot++;
break;
case 'g':
g++;
tot++;
break;
case 'u':
u++;
tot++;
break;
case 't':
u++;
tot++;
break;
};
}
parta[j] = (float)a / (float)tot;
partc[j] = (float)c / (float)tot;
partg[j] = (float)g / (float)tot;
partu[j] = (float)u / (float)tot;
}
return;
}
Report()
{
int i,ii,jj,j,k;
if(tbl)
printf("#\n#-\n#-\n#-\n#-\n");
for(jj=0,j=0;j<numseq;j++)
{
if(tbl)
printf("%2d: %-.15s|",jj+1,data[j].name);
for (i=0;i<j;i++)
{
if(sim)
printf("%6.1f",100 - dist[i][j]*100.0);
else
printf("%6.1f",dist[i][j]*100.0);
}
printf("\n");
jj++;
}
return;
}
int find(b,a)
char *a,*b;
{
int flag,lenb,lena;
register i,j;
flag=0;
lenb=strlen(b);
lena=strlen(a);
for (i=0;((i<lena) && flag==0);i++)
{
for(j=0;(j<lenb) && (a[i+j]==b[j]);j++);
flag=((j==lenb)? 1:0);
}
return flag;
}

126
SUPPORT/findall.c Normal file
View file

@ -0,0 +1,126 @@
/*
* Copyright 1991 Steven Smith at the Harvard Genome Lab.
* All rights reserved.
*/
#include "Flatio.c"
main(ac,av)
int ac;
char **av;
{
struct data_format data[10000];
int Match = 2,Mismatch = 8;
int i,j,k,l,numseqs,mis,Case = 32;
int slen,pcnt,pos;
int UT = FALSE;
char c;
if(ac < 3)
{
fprintf(stderr,
"usage: %s search_string %%mismatch [-case] [-match color] [-mismatch color]\n",
av[0]);
fprintf(stderr," [-u=t]\n");
exit(0);
}
for (j=3;j<ac;j++)
{
if(strcmp("-case",av[j]) == 0)
Case = 0;
if(strcmp("-match",av[j]) == 0)
sscanf(av[j+1],"%d",&Match);
if(strcmp("-u=t",av[j]) == 0)
UT = TRUE;
if(strcmp("-mismatch",av[j]) == 0)
sscanf(av[j+1],"%d",&Mismatch);
}
numseqs = ReadFlat(stdin,data,10000);
slen = strlen(av[1]);
sscanf(av[2],"%d",&pcnt);
pcnt *= slen;
pcnt /= 100;
if(UT)
for(j=0;j<=strlen(av[1]);j++)
{
if(av[1][j] == 't')
av[1][j] = 'u';
if(av[1][j] == 'T')
av[1][j] = 'U';
}
for(i=0;i<numseqs;i++)
{
if(UT)
for(j=0;data[i].nuc[j]!='\0';j++)
{
if(data[i].nuc[j] == 't')
data[i].nuc[j] = 'u';
else if(data[i].nuc[j] == 'T')
data[i].nuc[j] = 'U';
}
printf("name:%s\n",data[i].name);
printf("length:%d\n",strlen(data[i].nuc));
printf("start:\n");
for(j=0;j<data[i].length;j++)
{
mis = 0;
for(k=0,pos=j;k<slen && pos<data[i].length;k++,pos++)
{
c = data[i].nuc[pos];
for(;(c == ' ' || c == '-' || c == '~') &&
pos < data[i].length;)
c = data[i].nuc[++pos];
c |= Case;
if(data[i].type == '#')
{
if(CompIUP(c,(av[1][k]|Case)) == FALSE)
mis++;
}
else
{
if(c!=(av[1][k]|Case))
mis++;
}
}
if(k == slen && mis<=pcnt)
{
for(k=j;k<pos;k++)
printf("%d\n",Match);
j = pos-1;
}
else
printf("%d\n",Mismatch);
}
}
exit(0);
}
int CompIUP(a,b)
char a,b;
{
static int tmatr[16] = {'-','a','c','m','g','r','s','v',
't','w','y','h','k','d','b','n'};
static int matr[128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x00,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0x01,0xe,0x02,0x0d,0,0,0x04,0x0b,0,0,0x0c,0,0x03,0x0f,0,0,0,0x05,0x06,
0x08,0x08,0x07,0x09,0x00,0xa,0,0,0,0,0,0,0,0x01,0x0e,0x02,0x0d,0,0,0x04,
0x0b,0,0,0x0c,0,0x03,0x0f,0,0,0,0x05,0x06,0x08,0x08,0x07,0x09,0x00,0x0a,
0,0,0,0,0x00,0
};
int testa,testb;
if(a&32 != b&32)
return(FALSE);
testa = matr[(int)a];
testb = matr[(int)b];
return(testa&testb);
}

1335
SUPPORT/lsadt.c Normal file

File diff suppressed because it is too large Load diff

87
SUPPORT/sho_helix.c Normal file
View file

@ -0,0 +1,87 @@
#include "Flatio.c"
#define BLACK 8
#define RED 3
#define BLUE 6
#define YELLOW 1
#define AQUA 4
main()
{
struct data_format data[10000];
int i,j,k,numseqs,mask = -1;
int pair[20000],stack[20000],spt = 0;
char ch;
numseqs = ReadFlat(stdin,data,10000);
if(numseqs == 0)
exit(1);
for(j=0;j<numseqs;j++)
if(data[j].type == '"')
mask = j;
if(mask == -1)
exit(1);
for(j=0;j<data[mask].length;j++)
{
if(data[mask].nuc[j] == '[')
stack[spt++] = j;
else if(data[mask].nuc[j] == ']')
{
i = stack[--spt];
pair[j] = i;
pair[i] = j;
}
else
pair[j] = -1;
}
for(j=0;j<numseqs;j++)
if(j!=mask)
{
printf("name:%s\nlength:%d\nstart:\n",
data[j].name,data[j].length);
i = MIN(data[mask].length,data[j].length);
for(k=0;k<i;k++)
if(pair[k] != -1)
printf("%d\n",match(data[j].nuc[k],
data[j].nuc[pair[k]]));
else
printf("8\n");
for(k=0;k<data[j].length - data[mask].length;k++)
printf("8\n");
}
exit(0);
}
int match(a,b)
char a,b;
{
char aa,bb;
aa=a|32;
bb=b|32;
printf(stderr,"%c %c\n",aa,bb);
if(a=='-' || a=='~')
{
if((b=='-') || (b=='~'))
return(BLACK);
else
return(RED);
}
else if(aa=='a' && (bb=='t' || bb=='u'))
return(BLUE);
else if(bb=='a' && (aa=='t' || aa=='u'))
return(BLUE);
else if(bb=='c' && aa=='g' )
return(BLUE);
else if(bb=='g' && aa=='c' )
return(BLUE);
else if(aa=='g' && (bb=='t' || bb=='u'))
return(AQUA);
else if(bb=='g' && (aa=='t' || aa=='u'))
return(AQUA);
else return(YELLOW);
}

85
SUPPORT/varpos.c Normal file
View file

@ -0,0 +1,85 @@
#include "Flatio.c"
#define MAX(a,b) ((a)>(b)?(a):(b))
/*
* Varpos.c- An extremely simple program for showing which positions
* are varying in an alignment. Use this as a model for other
* external functions.
*
* Read in a flat file alignment, pass back an alignment color
* mask.
*
* Copyright 1991/1992 Steven Smith, Harvard Genome lab.
*
*/
main(ac,av)
int ac;
char **av;
{
struct data_format data[10000];
int i,j,k,numseqs,rev = FALSE;
int maxlen = -99999,
score = 0,
minoffset = 99999;
char ch;
if(ac>2)
{
fprintf(stderr,"Usage %s [-rev]<gde_flat_file>gde_color_mask\n", av[0]);
exit(1);
}
if(ac == 2)
if(strcmp(av[1],"-rev") == 0)
rev = TRUE;
numseqs = ReadFlat(stdin,data,10000);
if(numseqs == 0)
exit(1);
for(j=0;j<numseqs;j++)
{
if(data[j].length+data[j].offset > maxlen)
maxlen = data[j].length+data[j].offset;
if(data[j].offset < minoffset)
minoffset = data[j].offset;
}
printf("length:%d\n",maxlen);
printf("offset:%d\n",minoffset);
printf("start:\n");
for(j=0;j<maxlen;j++)
{
int a=0,c=0,g=0,u=0;
for(k=0;k<numseqs;k++)
if(data[k].length+data[k].offset > j)
{
if(j>data[k].offset)
ch=data[k].nuc[j-data[k].offset] | 32;
else
ch = '-';
if(ch=='a')a++;
if(ch=='c')c++;
if(ch=='g')g++;
if(ch=='u')u++;
if(ch=='t')u++;
}
score=MAX(a,c);
score=MAX(score,g);
score=MAX(score,u);
if(a+c+g+u)
{
if(rev)
score=(score*6/(a+c+g+u)+8);
else
score=((8-score*6/(a+c+g+u))+8);
}
else
score=8;
printf("%d\n",score);
}
exit(0);
}