⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xutils.c

📁 是有关基因比对的经典算法的实现。这对于初学计算生物学的人是非常重要的算法。
💻 C
📖 第 1 页 / 共 2 页
字号:
*
*	Return values:
*		none
*/

void error( char *msg,...)
{
	va_list ap;
	char istr[MESSLENGTH*MESSLINES] = "ERROR: ";
	char vstr[1000];

	
	va_start(ap,msg);
	vsprintf(vstr,msg,ap);
	va_end(ap);
	strncat(istr,vstr,MESSLENGTH*MESSLINES-10);
	if (!interactive)
		fprintf(stdout,"%s",istr);
	else
		Message(MSG_ERROR,istr);
}

/*
*	warning()
*
*	Prints warning msg.
*	Variadic parameter list can be passed.
*
*	Return values:
*		none
*/

void warning( char *msg,...)
{
	va_list ap;
	char istr[MESSLENGTH*MESSLINES] = "WARNING: ";
	char vstr[1000];

	
	va_start(ap,msg);
	vsprintf(vstr,msg,ap);
	va_end(ap);
	strncat(istr,vstr,MESSLENGTH*MESSLINES-10);
	if (!interactive)
		fprintf(stdout,"%s",istr);
	else
		Message(MSG_ERROR,istr);
}

/*
*	info()
*
*	Prints info msg.
*	Variadic parameter list can be passed.
*
*	Return values:
*		none
*/

void info( char *msg,...)
{
	va_list ap;
	char istr[MESSLENGTH+10] = "";
	char vstr[1000];
    
	if (!mess_output) return;

	va_start(ap,msg);
	vsprintf(vstr,msg,ap);
	va_end(ap);
	strncat(istr,vstr,MESSLENGTH);
	if (!interactive)
		fprintf(stdout,"%s\n",istr);
	else
	{
		UseWindow(mainw);
		SelectFont(systemFont);	
		SetTitle(message,istr);
		if(save_log && save_log_fd!=NULL)
			fprintf(save_log_fd,"%s\n",istr);
		Update();
	}

}


void set_helix_gp(TexT t)
{
	char str[10];
	int temp;

	GetTitle(t,str,10);
	temp = atoi(str);
	if (temp < 0 || temp > 9)
		return;
	helix_penalty = temp;

}

void set_strand_gp(TexT t)
{
	char str[10];
	int temp;

	GetTitle(t,str,10);
	temp = atoi(str);
	if (temp < 0 || temp > 9)
		return;
	strand_penalty = temp;

}

void set_loop_gp(TexT t)
{
	char str[10];
	int temp;

	GetTitle(t,str,10);
	temp = atoi(str);
	if (temp < 0 || temp > 9)
		return;
	loop_penalty = temp;

}

void set_terminal_gp(TexT t)
{
	char str[10];
	int temp;

	GetTitle(t,str,10);
	temp = atoi(str);
	if (temp < 0 || temp > 9)
		return;
	helix_end_penalty = temp;

}

void set_helix_minus(TexT t)
{
	char str[10];
	int temp;

	GetTitle(t,str,10);
	temp = atoi(str);
	if (temp < 0 || temp > 9)
		return;
	helix_end_minus = temp;

}

void set_helix_plus(TexT t)
{
	char str[10];
	int temp;

	GetTitle(t,str,10);
	temp = atoi(str);
	if (temp < 0 || temp > 9)
		return;
	helix_end_plus = temp;
}

void set_strand_plus(TexT t)
{
	char str[10];
	int temp;

	GetTitle(t,str,10);
	temp = atoi(str);
	if (temp < 0 || temp > 9)
		return;
	strand_end_plus = temp;
}

void set_strand_minus(TexT t)
{
	char str[10];
	int temp;

	GetTitle(t,str,10);
	temp = atoi(str);
	if (temp < 0 || temp > 9)
		return;
	strand_end_minus = temp;
}

 
void set_inverted(IteM i)
{
        inverted=GetStatus(i);
        if (inverted==FALSE)
        {
                strcpy(color_lut[0].name,"BLACK");
                color_lut[0].r=0.4;
                color_lut[0].g=0.4;
                color_lut[0].b=0.4;
                SelectColor(color_lut[0].r*255, color_lut[0].g*255, color_lut[0].b*255);
                color_lut[0].val=GetColor();
        }
        else
        {
                strcpy(color_lut[0].name,"WHITE");
                color_lut[0].r=1.0;
                color_lut[0].g=1.0;
                color_lut[0].b=1.0;
                SelectColor(color_lut[0].r*255, color_lut[0].g*255, color_lut[0].b*255);
                color_lut[0].val=GetColor();
        }
 
        if(aln_mode==MULTIPLEM)
                DrawPanel(seq_panel.seqs);
        else
        {
                DrawPanel(prf_panel[0].seqs);
                DrawPanel(prf_panel[1].seqs);
        }
 
}

void set_ss_output(ButtoN b)
{
        int tmp;
 
        tmp = GetStatus(b);
        if (tmp) output_ss = TRUE;
	else output_ss = FALSE;

	if (output_ss && output_gp)
		output_struct_penalties=2;
	else if (output_ss)
		output_struct_penalties=0;
	else if (output_gp)
		output_struct_penalties=1;
	else
		output_struct_penalties=3;
}
void set_gp_output(ButtoN b)
{
        int tmp;
 
        tmp = GetStatus(b);
        if (tmp) output_gp = TRUE;
	else output_gp = FALSE;

	if (output_ss && output_gp)
		output_struct_penalties=2;
	else if (output_ss)
		output_struct_penalties=0;
	else if (output_gp)
		output_struct_penalties=1;
	else
		output_struct_penalties=3;
}

void set_user_matrix(ButtoN but)
{
	if(get_series_matrixname(usermtrxname,usermat,aa_xref,5,&matnum,mattext))
		strcpy(mtrxname,usermtrxname);
	SetValue(matrix_list,matnum);
}


void set_pw_user_matrix(ButtoN but)
{
	if(get_user_matrixname(pw_usermtrxname,pw_usermat,pw_aa_xref,5,&pw_matnum,pwmattext))
		strcpy(pw_mtrxname,pw_usermtrxname);
	SetValue(pw_matrix_list,pw_matnum);
}

void set_pw_matrix(GrouP g)
{
        int tmp;
 
        tmp = GetValue(g);
        if (tmp>0 && tmp<pw_matrix_menu.noptions) 
        {
                pw_matnum = tmp;
		strcpy(pw_mtrxname,pw_matrix_menu.opt[tmp-1].string);
        }
        else if(pw_usermtrxname[0]=='\0')
	{
		if(get_user_matrixname(pw_usermtrxname,pw_usermat,pw_aa_xref,pw_matrix_menu.noptions,&pw_matnum,pwmattext))
			strcpy(pw_mtrxname,pw_usermtrxname);
	}
	else
		pw_matnum=pw_matrix_menu.noptions;
	SetValue(pw_matrix_list,pw_matnum);
}
void set_matrix(GrouP g)
{
	int tmp;
	int status;
 
        tmp = GetValue(g);
        if (tmp>0 && tmp<matrix_menu.noptions) 
        {
        	matnum = tmp;
		strcpy(mtrxname,matrix_menu.opt[tmp-1].string);
        }
        else if(usermtrxname[0]=='\0')
	{
		if(get_series_matrixname(usermtrxname,usermat,aa_xref,matrix_menu.noptions,&matnum,mattext))
			strcpy(mtrxname,usermtrxname);
	}
	else matnum=matrix_menu.noptions;

	SetValue(matrix_list,matnum);
}

static int get_series_matrixname(char *usermtrxname, short *usermat,short *aa_xref,int usermatnum,int *matnum,PrompT mattext)
{
	int ret=0;
	static Char filename[FILENAMELEN];

        if (GetInputFileName(filename,FILENAMELEN,"","")) 
	{
        	if(user_mat_series(filename, usermat, aa_xref))
        	{
                	strcpy(usermtrxname,filename);
                	*matnum=usermatnum;
			SetTitle(mattext,usermtrxname);
			ret=1;
        	}
	} 

	return ret;
}
int get_user_matrixname(char *usermtrxname, short *usermat,short *aa_xref,int usermatnum,int *matnum,PrompT mattext)
{
	int ret=0;
	static Char filename[FILENAMELEN];

        if (GetInputFileName(filename,FILENAMELEN,"","")) 
	{
        	if(user_mat(filename, usermat, aa_xref))
        	{
                	strcpy(usermtrxname,filename);
                	*matnum=usermatnum;
			SetTitle(mattext,usermtrxname);
			ret=1;
        	}
	} 

	return ret;
}

void set_user_dnamatrix(ButtoN but)
{
	if(get_user_matrixname(dnausermtrxname,userdnamat,dna_xref,3,&dnamatnum,dnamattext))
		strcpy(dnamtrxname,dnausermtrxname);
	SetValue(dnamatrix_list,dnamatnum);
}


void set_pw_user_dnamatrix(ButtoN but)
{
	if(get_user_matrixname(pw_dnausermtrxname,pw_userdnamat,pw_dna_xref,3,&pw_dnamatnum,pwdnamattext))
		strcpy(pw_dnamtrxname,pw_dnausermtrxname);
	SetValue(pw_dnamatrix_list,pw_dnamatnum);
}

void set_pw_dnamatrix(GrouP g)
{
        int tmp;
 
        tmp = GetValue(g);
        if (tmp>0 && tmp<dnamatrix_menu.noptions) 
        {
                pw_dnamatnum = tmp;
		strcpy(pw_dnamtrxname,dnamatrix_menu.opt[tmp-1].string);
        }
        else if(pw_dnausermtrxname[0]=='\0')
	{
		if(get_user_matrixname(pw_dnausermtrxname,pw_userdnamat,pw_dna_xref,dnamatrix_menu.noptions,&pw_dnamatnum,pwdnamattext))
			strcpy(pw_dnamtrxname,pw_dnausermtrxname);
	}
	else pw_dnamatnum=dnamatrix_menu.noptions;
	SetValue(pw_dnamatrix_list,pw_dnamatnum);
}
void set_dnamatrix(GrouP g)
{
	int tmp;
 
        tmp = GetValue(g);
        if (tmp>0 && tmp<dnamatrix_menu.noptions) 
        {
        	dnamatnum = tmp;
		strcpy(dnamtrxname,dnamatrix_menu.opt[tmp-1].string);
        }
        else if(dnausermtrxname[0]=='\0')
	{
		if(get_user_matrixname(dnausermtrxname,userdnamat,dna_xref,dnamatrix_menu.noptions,&dnamatnum,dnamattext))
			strcpy(dnamtrxname,dnausermtrxname);
	}
	else dnamatnum=dnamatrix_menu.noptions;
	SetValue(dnamatrix_list,dnamatnum);
}

FILE *  open_input_file(char *file_name)
{
        FILE * file_handle;
 
        if (*file_name == EOS) {
                error("Bad input file [%s]",file_name);
                return NULL;
        }
#ifdef VMS
        if((file_handle=fopen(file_name,"r","rat=cr","rfm=var"))==NULL) {
#else
        if((file_handle=fopen(file_name,"r"))==NULL) {
#endif
                error("Cannot open input file [%s]",file_name);
                return NULL;
        }
        return file_handle;
}

 
void set_use_ss1(PopuP l)
{
        set_toggle(l,&use_ss1);
	load_aln(prf_panel[0],0,profile1_nseqs-1,FALSE);
	load_aln(prf_panel[1],profile1_nseqs,nseqs-1,FALSE);
}
void set_use_ss2(PopuP l)
{
        set_toggle(l,&use_ss2);
	load_aln(prf_panel[0],0,profile1_nseqs-1,FALSE);
	load_aln(prf_panel[1],profile1_nseqs,nseqs-1,FALSE);
}


void set_output_clustal(ButtoN l)
{
        set_button(l,&output_clustal);
}
void set_output_gde(ButtoN l)
{
        set_button(l,&output_gde);
}
void set_output_nexus(ButtoN l)
{
        set_button(l,&output_nexus);
}

void set_format(GrouP g)
{
        int i;
	char path[FILENAMELEN];

	get_path(seqname,path);
	GetTitle(savealntext, path,FILENAMELEN);
/* remove the current extension */
	for(i=strlen(path)-1;i>=0;i--)
		if(path[i]=='.')
		{
			path[i]='\0';
			break;
		}
			
        i = GetValue(g);
        if (i==1)
	{
                save_format=CLUSTAL;
		strcat(path,".aln");
	}
        else if (i==2)
	{
                save_format=PIR;
		strcat(path,".pir");
	}
        else if (i==3)
	{
                save_format=MSF;
		strcat(path,".msf");
	}
        else if (i==4)
	{
                save_format=PHYLIP;
		strcat(path,".phy");
	}
        else if (i==5)
	{
                save_format=GDE;
		strcat(path,".gde");
	}
        else if (i==6)
	{
                save_format=NEXUS;
		strcat(path,".nxs");
	}

	SetTitle(savealntext, path);
}

void set_residue_exceptions(IteM i)
{
	if (residue_exceptions==FALSE)
		residue_exceptions=TRUE;
	else
		residue_exceptions=FALSE;
	if (aln_mode==MULTIPLEM)
		DrawPanel(seq_panel.seqs);
	else
	{
		DrawPanel(prf_panel[0].seqs);
		DrawPanel(prf_panel[1].seqs);
	}
}
 
 
void set_fs_toggle(PopuP l)
{
        set_toggle(l,&quick_pairalign);
        if (quick_pairalign)
        {
                Hide(slow_para);
                Show(fast_para);
        }
        else
        {
                Hide(fast_para);
                Show(slow_para);
        }
}

void set_font_size(PopuP g)
{
        int tmp;
	char font[30];

        tmp = GetValue(g);
	font_size=tmp-1;
	sprintf(font, "%s,%d,%c", "courier", av_font[font_size], 'm');
        datafont=ParseFont(font);

	if (aln_mode==MULTIPLEM)
	{
		DrawPanel(seq_panel.names);
		DrawPanel(seq_panel.seqs);
	}
	else
	{
		DrawPanel(prf_panel[0].names);
		DrawPanel(prf_panel[0].seqs);

		DrawPanel(prf_panel[1].names);
		DrawPanel(prf_panel[1].seqs);
	}
	correct_name_bars(FALSE);
	correct_seq_bars(FALSE);
}
 
void set_pscroll_mode(ButtoN l)
{
	panel_data data;

        set_button(l,&fixed_prf_scroll);
	GetPanelExtra(prf_panel[0].seqs,&data);
	if(fixed_prf_scroll)
		data.lockoffset=data.firstvcol;
	else
		data.lockoffset=0;
	SetPanelExtra(prf_panel[0].seqs,&data);
	GetPanelExtra(prf_panel[1].seqs,&data);
	if(fixed_prf_scroll)
		data.lockoffset=data.firstvcol;
	else
		data.lockoffset=0;
	SetPanelExtra(prf_panel[1].seqs,&data);
	correct_seq_bars(FALSE);
}
 
void set_aln_mode(PopuP g)
{
        int tmp;
        tmp = GetValue(g);
        if (tmp == 1)
                aln_mode = MULTIPLEM;
        else
                aln_mode = PROFILEM;
        switch_mode();
}
 
void set_show_segments(IteM l)
{
        if (segment_exceptions==FALSE)
                segment_exceptions=TRUE;
        else
                segment_exceptions=FALSE;
	calc_seg_exceptions();
	SetStatus(segment_item,segment_exceptions);
        show_segment_exceptions();
}
 

void shift(Handle a, int dx, int dy)
{
	PoinT pt;
 
	GetNextPosition (a, &pt);
	pt.x+=dx;
	pt.y+=dy;
	SetNextPosition(a, pt);
}

void stripspace(char *str)
{
	register int i,j,p;
	char *tstr;
 
#ifndef UNIX
	return;
#endif
        p = strlen(str) - 1;
 
        while ( isspace(str[p]) )
                p--;
 
        str[p + 1] = EOS;

	tstr=(char *)ckalloc((p+2)*sizeof(char));
 
	for(i=0,j=0;i<=p;i++)
		if(!isspace(str[i]))
			tstr[j++]=str[i];
	tstr[j] = EOS;
	strcpy(str,tstr);
	ckfree(tstr);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -