Exemplo n.º 1
0
void rsf_out(FILE *rsfout, sint fres, sint len, ALN mult_aln, ALNOUT_OPT alnout_opt)
{
	char *seq, residue;
	char val;
	sint n;
	sint i,ii,nseqs;
	sint j,k,slen,cstart,cend;	
	sint start,query_start,query_end;
	sint line_length=60;
	sint max_aln_length,max_names;
	sint color;
	char shape[20];
	char type[20];
	sint nrep,*reptype;

	nseqs=0;
	max_aln_length=max_names=0;
	for(i=0; i<mult_aln.nseqs; i++)  {
                if (mult_aln.seqs[i].output_index>=0) {
			if(mult_aln.seqs[i].len>max_aln_length) max_aln_length=mult_aln.seqs[i].len;
			if(strlen(mult_aln.seqs[i].name)>max_names) max_names=strlen(mult_aln.seqs[i].name);
                        nseqs++;
		}
	}

	seq = (char *)ckalloc((max_aln_length+1) * sizeof(char));

	fprintf(rsfout,"!!RICH_SEQUENCE 1.0\n..\n");

/* set n to the number of sequence groups */
	n=0;
	for(i=0; i<nseqs; i++) 
		if(mult_aln.seqs[i].simgroup>n) n=mult_aln.seqs[i].simgroup;
	n++;

	for(ii=0; ii<nseqs; ii++) {
		i = get_seq_with_index(mult_aln.seqs,mult_aln.nseqs,ii);
		if(i<0) continue;
		fprintf(rsfout, "{\nname ");
		if(alnout_opt.output_names==1)
			fprintf(rsfout, "%s\n", mult_aln.seqs[i].nid);
		else if(alnout_opt.output_names==2)
			fprintf(rsfout, "%s\n", mult_aln.seqs[i].access);
		else
			fprintf(rsfout, "%s\n", mult_aln.seqs[i].name);
		fprintf(rsfout, "descrip %s\n", mult_aln.seqs[i].title);
		fprintf(rsfout, "creator %s %s\n", mult_aln.seqs[i].org,mult_aln.seqs[i].lifedomain);
		fprintf(rsfout, "type    ");
		fprintf(rsfout, mult_aln.dnaflag ? "DNA" : "PROTEIN");
		fprintf(rsfout, "\n");
		if(mult_aln.seqs[i].simgroup>0) 
			fprintf(rsfout, "group %d\n",mult_aln.seqs[i].simgroup);
		else {
			fprintf(rsfout, "group %d\n",n);
		}
		if(mult_aln.seqs[i].sense!=0) 
			fprintf(rsfout, "strand %d\n",mult_aln.seqs[i].sense);

		for(j=0;j<MAXFTTYPE;j++) {
			for(k=0;k<mult_aln.ft[i].nentries[j];k++) {
				if(mult_aln.ft[i].data[j][k].start<0) continue;
				pos2col(mult_aln.seqs[i].data,mult_aln.ft[i].data[j][k].start,mult_aln.ft[i].data[j][k].end,&cstart,&cend);
				color=mult_aln.ft[i].data[j][k].color;
				if(color>=0) {
				if(color>12) color=12;
				fprintf(rsfout, "feature %d %d %d %s %s %s\n",cstart+1,cend+1,
										color,
										"square",
										"solid",
										mult_aln.ft[i].data[j][k].type);
				fprintf(rsfout,"  FT   %-10s%5d  %5d  %s\n",
								mult_aln.ft[i].data[j][k].type,
								mult_aln.ft[i].data[j][k].start+1,
								mult_aln.ft[i].data[j][k].end+1,
								mult_aln.ft[i].data[j][k].name);
				}
			}
		}

		slen = 0;
		for(j=fres; j<fres+len; j++) {
			val = mult_aln.seqs[i].data[j];
			if(val==EOS)
				break;
			else if(!isalpha(val))
				residue = '.';
			else {
				residue = val;
			}
			seq[j-fres] = (char)toupper((int)residue);
			slen++;
		}
		fprintf(rsfout,"sequence\n  ");
		for(j=0; j<slen; j++) {
			fprintf(rsfout,"%c",seq[j]);
			if( (j == slen-1)) 
				fprintf(rsfout,"\n");
			else if(( j!=0 && (j+1) % line_length == 0)) 
				fprintf(rsfout,"\n  ");
		}
		fprintf(rsfout,"}\n");
	}	

	seq=ckfree((void *)seq);
}
Exemplo n.º 2
0
void add_ft_entry(ALNPTR mult_aln,sint seq,sint first,sint last,sint type,sint code,float score,char *ctype,char *iname,sint is,sint ie)
{
        sint n,color;
        sint fr,lr;
        sint fc,lc;
	char name[100];

        if(mult_aln->ft[seq].nentries[type]>MAXFT) {
                fprintf(stdout,"WARNING: too many features in %s %d (%d)\n",mult_aln->seqs[seq].name,mult_aln->ft[seq].nentries[type],type);
                return;
        }
        if(last<is || first>ie) return;
        if(first<is) first=is;
        if(last>ie) last=ie;
        n=mult_aln->ft[seq].nentries[type];
        alloc_ft_entry(&mult_aln->ft[seq].data[type][n]);
        strcpy(mult_aln->ft[seq].data[type][n].type,ctype);
        col2pos(mult_aln->seqs[seq].data,first,last,&fr,&lr);
        pos2col(mult_aln->seqs[seq].data,fr,lr,&fc,&lc);
        if(fc==first)
                mult_aln->ft[seq].data[type][n].start=fr;
        else
                mult_aln->ft[seq].data[type][n].start=fr+1;
        if(lc==last)
                mult_aln->ft[seq].data[type][n].end=lr;
        else
                mult_aln->ft[seq].data[type][n].end=lr-1;

	strcpy(name,iname);
	if(strcmp(ctype,"BLOCK")==0) {
		if (strcmp(name,"SBLOCK")==0) 
			color=code;
		else if (strcmp(name,"LBLOCK")==0) 
			color=12;
	}
	else if(strcmp(ctype,"REGION")==0) {
		color=10;
	}
	else if(strcmp(ctype,"SEQERR")==0) {
		color=3;
	}
        else if(strcmp(ctype,"ANCHOR")==0) {
                color=code;
        }
        else if(strcmp(ctype,"REPEAT")==0) {
                color=code;
        }
	else if(strcmp(ctype,"STRUCT")==0) {
		if(strncmp(name,"PRED_HELIX",10)==0) color=VLRED;
		else if(strncmp(name,"PRED_STRAND",11)==0) color=VLGREEN;
		else if(strncmp(name,"PROP_HELIX",10)==0) color=LRED;
		else if(strncmp(name,"PROP_STRAND",11)==11) color=LGREEN;
		else if(strcmp(name,"HELIX")==0) color=RED;
		else if(strcmp(name,"STRAND")==0) color=GREEN;
	}
	else if(strcmp(ctype,"TRANSMEM")==0) {
		if(strncmp(name,"PRED_",5)==0) {
			sprintf(name,"%s %.2f",name,score);
			color=10;
		}
		else if(strncmp(name,"PROP_",5)==0) color=GRAY;
		else color=1;
	}
	else if(strcmp(ctype,"COIL")==0) {
		if(strncmp(name,"PRED_",5)==0) color=LGRAY;
		else if(strncmp(name,"PROP_",5)==0) color=GRAY;
		else color=6;
	}
        else if(strcmp(ctype,"LOWCOMP")==0) {
                if(strncmp(name,"PRED_",5)==0) color=LGRAY;
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else color=6;
        }
        else if(strcmp(ctype,"DOMAIN")==0) {
                if(strncmp(name,"PRED_",5)==0) color=LGRAY;
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else if(strncmp(name,"DNA_BIND",8)==0) color=2;
                else if(strncmp(name,"ZN_FING",7)==0) color=3;
                else color=1;
        }
        else if(strcmp(ctype,"PFAM-A")==0) {
                if(strncmp(name,"PRED_",5)==0) color=LGRAY;
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else color=code;
        }
        else if(strcmp(ctype,"PFAM-B")==0) {
                if(strncmp(name,"PRED_",5)==0) color=LGRAY;
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else color=code;
        }
        else if(strcmp(ctype,"PROSITE")==0) {
                if(strncmp(name,"PRED_",5)==0) color=LGRAY;
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else color=code;
        }
        else if(strcmp(ctype,"SIGNAL")==0) {
                if(strncmp(name,"PRED_",5)==0) {
                        sprintf(name,"%s %.2f",name,score);
                        color=LGRAY;
                }
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else if(strncmp(name,"NUCLEAR",7)==0) color=1;
                else if(strncmp(name,"CHLOROPLAST",11)==0) color=2;
                else if(strncmp(name,"MITOCHONDRION",13)==0) color=3;
                else if(strncmp(name,"MICROBODY",9)==0) color=4;
                else color=5;
        }
        else if(strcmp(ctype,"VARSPLIC")==0) {
                if(strncmp(name,"PRED_",5)==0) color=LGRAY;
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else color=5;
        }
        else if(strcmp(ctype,"MOD_RES")==0) {
                color=0;
                if(strncmp(name,"PRED_",5)==0) color=LGRAY;
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else if(strncmp(name,"ACETYLATION",11)==0) color=1;
                else if(strncmp(name,"ALKYLATION",10)==0) color=2;
                else if(strncmp(name,"HYDROXYLATION",13)==0) color=3;
                else if(strncmp(name,"METHYLATION",11)==0) color=4;
                else if(strncmp(name,"PHOSPHORYLATION",15)==0) color=5;
                else if(strncmp(name,"SULFATION",9)==0) color=6;
                else if(strncmp(name,"PYRROLIDONE",11)==0) color=7;
                else if(strncmp(name,"MYRISTATE",9)==0) color=8;
                else if(strncmp(name,"PALMITATE",9)==0) color=9;
                else if(strncmp(name,"FARNESYL",8)==0) color=10;
                else if(strncmp(name,"GERANYL",7)==0) color=11;
                else if(strncmp(name,"GPI-ANCHOR",3)==0) color=12;
                else if(strncmp(name,"N-ACYL",5)==0) color=13;
        }
        else if(strcmp(ctype,"SITE")==0) {
                color=0;
                if(strncmp(name,"PRED_",5)==0) color=LGRAY;
                else if(strncmp(name,"PROP_",5)==0) color=GRAY;
                else if(strncmp(name,"SITE",4)==0) color=0;
                else if(strncmp(name,"ACT_SITE",8)==0) color=1;
                else if(strncmp(name,"CARBOHYD",8)==0) color=2;
                else if(strncmp(name,"DISULFID",8)==0) color=3;
                else if(strncmp(name,"BINDING",7)==0) color=4;
                else if(strncmp(name,"NP_BIND",7)==0) color=5;
                else if(strncmp(name,"CA_BIND",7)==0) color=6;
                else if(strncmp(name,"TRANSIT",7)==0) color=7;
                else if(strncmp(name,"LIPID",5)==0) color=8;
                else if(strncmp(name,"METAL",5)==0) color=9;
        }

        strcpy(mult_aln->ft[seq].data[type][n].name,name);
        mult_aln->ft[seq].data[type][n].score=score;
        mult_aln->ft[seq].data[type][n].color=color;






        mult_aln->ft[seq].nentries[type]++;

}