📄 xutils.c
字号:
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <vibrant.h>
#include "clustalw.h"
#include "xmenu.h"
static int get_series_matrixname(char *usermtrxname, short *usermat,short *aa_xref,int usermatnum,int *matnum,PrompT mattext);
extern Boolean x_menus;
extern WindoW mainw;
extern GrouP matrix_list,pw_matrix_list;
extern GrouP dnamatrix_list,pw_dnamatrix_list;
extern GrouP seg_matrix_list,seg_dnamatrix_list;
extern GrouP score_matrix_list,score_dnamatrix_list;
extern Boolean interactive;
extern Boolean dnaflag;
extern char hyd_residues[];
extern sint gap_dist;
extern Boolean no_var_penalties, no_hyd_penalties, no_pref_penalties;
extern Boolean use_endgaps;
extern Boolean realign_endgappenalties;
extern Boolean align_endgappenalties;
extern sint divergence_cutoff;
extern Boolean lowercase; /* Flag for GDE output - set on comm. line*/
extern Boolean cl_seq_numbers;
extern sint output_order;
extern Boolean save_log;
extern Boolean quick_pairalign;
extern Boolean neg_matrix;
extern Boolean output_clustal, output_nbrf, output_phylip, output_gcg, output_gde, output_nexus;
extern Boolean save_parameters;
extern Boolean output_tree_clustal, output_tree_phylip, output_tree_distances, output_tree_nexus;
extern char seqname[];
extern float transition_weight;
extern float gap_open, gap_extend;
extern float dna_gap_open, dna_gap_extend;
extern float prot_gap_open, prot_gap_extend;
extern float pw_go_penalty, pw_ge_penalty;
extern float dna_pw_go_penalty, dna_pw_ge_penalty;
extern float prot_pw_go_penalty, prot_pw_ge_penalty;
extern sint wind_gap,ktup,window,signif;
extern sint dna_wind_gap, dna_ktup, dna_window, dna_signif;
extern sint prot_wind_gap,prot_ktup,prot_window,prot_signif;
extern Boolean tossgaps; /* Ignore places in align. where ANY seq. has a gap*/
extern Boolean kimura; /* Use correction for multiple substitutions */
extern sint boot_ntrials; /* number of bootstrap trials */
extern unsigned sint boot_ran_seed; /* random number generator seed */
extern sint bootstrap_format;
extern sint struct_penalties,struct_penalties1,struct_penalties2;
extern sint output_struct_penalties;
extern sint profile1_nseqs;
extern sint nseqs;
extern Boolean use_ss1, use_ss2;
extern int inverted;
extern char mtrxname[], pw_mtrxname[];
extern char usermtrxname[], pw_usermtrxname[];
extern sint matnum,pw_matnum;
extern short usermat[], pw_usermat[];
extern short aa_xref[], pw_aa_xref[];
extern char dnamtrxname[], pw_dnamtrxname[];
extern char dnausermtrxname[], pw_dnausermtrxname[];
extern sint dnamatnum,pw_dnamatnum;
extern short userdnamat[], pw_userdnamat[];
extern short dna_xref[], pw_dna_xref[];
extern Boolean use_ambiguities;
extern MatMenu matrix_menu;
extern MatMenu dnamatrix_menu;
extern MatMenu pw_matrix_menu;
extern sint helix_penalty;
extern sint strand_penalty;
extern sint loop_penalty;
extern sint helix_end_minus;
extern sint helix_end_plus;
extern sint strand_end_minus;
extern sint strand_end_plus;
extern sint helix_end_penalty;
extern sint strand_end_penalty;
extern TexT savealntext;
extern GrouP slow_para,fast_para;
extern PrompT message; /* used in temporary message window */
extern Boolean mess_output;
extern FILE *save_log_fd;
extern color color_lut[];
extern spanel seq_panel; /* data for multiple alignment area */
extern spanel prf_panel[]; /* data for profile alignment areas */
extern Boolean aln_mode;
extern Boolean fixed_prf_scroll;
extern Boolean output_ss;
extern Boolean output_gp;
extern PrompT mattext,pwmattext;
extern PrompT dnamattext,pwdnamattext;
extern int save_format;
extern Boolean residue_exceptions;
extern Boolean segment_exceptions;
extern int font_size;
extern FonT datafont;
extern int av_font[];
extern TexT blocklentext;
extern IteM segment_item;
extern int pagesize;
extern int orientation;
extern Boolean ps_ruler,ps_header,resize,ps_curve,ps_resno;
extern int first_printres,last_printres,blocklen;
extern int firstres,lastres;
void set_go_penalty(TexT t)
{
char str[10];
float temp;
GetTitle(t,str,10);
temp = atof(str);
if (temp < 0 || temp > 100)
return;
gap_open=temp;
if(dnaflag)
dna_gap_open = gap_open;
else
prot_gap_open = gap_open;
}
void set_ge_penalty(TexT t)
{
char str[10];
float temp;
GetTitle(t,str,10);
temp = atof(str);
if (temp < 0 || temp > 100)
return;
gap_extend=temp;
if(dnaflag)
dna_gap_extend = gap_extend;
else
prot_gap_extend = gap_extend;
}
void set_gap_dist(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 100)
return;
gap_dist = temp;
}
void set_ntrials(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
if (str == NULL) return;
temp = atoi(str);
if (temp < 0 || temp > 10000)
return;
boot_ntrials = temp;
}
void set_ran_seed(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 1000)
return;
boot_ran_seed = temp;
}
void set_div_seq(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 100)
return;
divergence_cutoff = temp;
}
void set_pw_go_penalty(TexT t)
{
char str[10];
float temp;
GetTitle(t,str,10);
temp = atof(str);
if (temp < 0 || temp > 100)
return;
pw_go_penalty = temp;
if(dnaflag)
dna_pw_go_penalty = pw_go_penalty;
else
prot_pw_go_penalty = pw_go_penalty;
}
void set_pw_ge_penalty(TexT t)
{
char str[10];
float temp;
GetTitle(t,str,10);
temp = atof(str);
if (temp < 0 || temp > 100)
return;
pw_ge_penalty = temp;
if(dnaflag)
dna_pw_ge_penalty = pw_ge_penalty;
else
prot_pw_ge_penalty = pw_ge_penalty;
}
void set_gp(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 100)
return;
wind_gap = temp;
if(dnaflag)
dna_wind_gap = wind_gap;
else
prot_wind_gap = wind_gap;
}
void set_ktuple(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 100)
return;
ktup = temp;
if(dnaflag)
dna_ktup = ktup;
else
prot_ktup = ktup;
}
void set_topdiags(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 100)
return;
signif = temp;
if(dnaflag)
dna_signif = signif;
else
prot_signif = signif;
}
void set_window(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 100)
return;
window = temp;
if(dnaflag)
dna_window = window;
else
prot_window = window;
}
void set_hyd_res(TexT t)
{
int i,j;
char tstr[27];
GetTitle(t,tstr,27);
for (i=0,j=0;i<strlen(hyd_residues) && i<27;i++)
{
if (isalpha(tstr[i]))
hyd_residues[j++] = tstr[i];
}
hyd_residues[j]='\0';
}
void set_button(ButtoN l,Boolean *value)
{
int tmp;
tmp = GetStatus(l);
if (tmp == TRUE)
*value = TRUE;
else
*value = FALSE;
}
void set_toggle(PopuP l,Boolean *value)
{
int tmp;
tmp = GetValue(l);
if (tmp == 1)
*value = TRUE;
else
*value = FALSE;
}
void set_pref_penalties(PopuP l)
{
set_toggle(l,&no_pref_penalties);
}
void set_hyd_penalties(PopuP l)
{
set_toggle(l,&no_hyd_penalties);
}
void set_var_penalties(PopuP l)
{
set_toggle(l,&no_var_penalties);
}
void set_endgaps(PopuP l)
{
set_toggle(l,&use_endgaps);
}
void set_align_endgappenalties(PopuP l)
{
set_toggle(l,&align_endgappenalties);
}
void set_realign_endgappenalties(PopuP l)
{
set_toggle(l,&realign_endgappenalties);
}
void set_case(PopuP l)
{
set_toggle(l,&lowercase);
}
void set_snos(PopuP l)
{
set_toggle(l,&cl_seq_numbers);
}
void set_save_paras(PopuP l)
{
set_toggle(l,&save_parameters);
}
void set_transitions(TexT t)
{
char str[10];
float temp;
GetTitle(t,str,10);
temp = atof(str);
if (temp < 0 || temp > 100)
return;
transition_weight = temp;
}
void set_ambiguities(PopuP l)
{
set_toggle(l,&use_ambiguities);
}
void set_neg_matrix(PopuP l)
{
set_toggle(l,&neg_matrix);
}
void set_output_nbrf(ButtoN l)
{
set_button(l,&output_nbrf);
}
void set_output_phylip(ButtoN l)
{
set_button(l,&output_phylip);
}
void set_output_gcg(ButtoN l)
{
set_button(l,&output_gcg);
}
void set_output_order(PopuP g)
{
int tmp;
tmp = GetValue(g);
if (tmp == 1)
output_order=INPUT;
else
output_order=ALIGNED;
}
void set_pagesize(PopuP g)
{
int tmp;
char tstr[10];
tmp = GetValue(g);
if (tmp == 1)
pagesize=A4;
else if (tmp == 2)
pagesize=A3;
else
pagesize=USLETTER;
if(orientation==LANDSCAPE)
{
if(pagesize==A4) blocklen=150;
else if (pagesize==A3) blocklen=250;
else blocklen=150;
}
else
{
if(pagesize==A4) blocklen=80;
else if (pagesize==A3) blocklen=150;
else blocklen=150;
}
sprintf(tstr,"%d",blocklen);
SetTitle(blocklentext,tstr);
}
void set_orientation(PopuP g)
{
int tmp;
char tstr[10];
tmp = GetValue(g);
if (tmp == 1)
orientation=LANDSCAPE;
else
orientation=PORTRAIT;
if(orientation==LANDSCAPE)
{
if(pagesize==A4) blocklen=150;
else if (pagesize==A3) blocklen=250;
else blocklen=150;
}
else
{
if(pagesize==A4) blocklen=80;
else if (pagesize==A3) blocklen=150;
else blocklen=150;
}
sprintf(tstr,"%d",blocklen);
SetTitle(blocklentext,tstr);
}
void set_resno(PopuP l)
{
set_toggle(l,&ps_resno);
}
void set_curve(PopuP l)
{
set_toggle(l,&ps_curve);
}
void set_ruler(PopuP l)
{
set_toggle(l,&ps_ruler);
}
void set_header(PopuP l)
{
set_toggle(l,&ps_header);
}
void set_resize(PopuP l)
{
set_toggle(l,&resize);
}
void set_fres(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
if (str == NULL) return;
temp = atoi(str);
if (temp < 0 || temp > 100000)
return;
firstres = temp;
}
void set_lres(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
if (str == NULL) return;
temp = atoi(str);
if (temp < 0 || temp > 100000)
return;
lastres = temp;
}
void set_fpres(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
if (str == NULL) return;
temp = atoi(str);
if (temp < 0 || temp > 10000)
return;
first_printres = temp;
}
void set_lpres(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
if (str == NULL) return;
temp = atoi(str);
if (temp < 0 || temp > 10000)
return;
last_printres = temp;
}
void set_blocklen(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
if (str == NULL) return;
temp = atoi(str);
if (temp < 0 || temp > 10000)
return;
blocklen = temp;
}
void set_output_tree_nexus(ButtoN l)
{
set_button(l,&output_tree_nexus);
}
void set_output_tree_clustal(ButtoN l)
{
set_button(l,&output_tree_clustal);
}
void set_output_tree_phylip(ButtoN l)
{
set_button(l,&output_tree_phylip);
}
void set_output_tree_distances(ButtoN l)
{
set_button(l,&output_tree_distances);
}
void set_tossgaps(IteM i)
{
tossgaps=GetStatus(i);
}
void set_kimura(IteM i)
{
kimura=GetStatus(i);
}
void set_boot_format(PopuP g)
{
int tmp;
tmp = GetValue(g);
if (tmp == 1)
bootstrap_format=BS_NODE_LABELS;
else
bootstrap_format=BS_BRANCH_LABELS;
}
char prompt_for_yes_no(char *title,char *prompt)
{
char lin2[MESSLENGTH*MESSLINES];
if(!x_menus) return;
strcpy(lin2,title);
strcat(lin2,".\n");
strcat(lin2,prompt);
strcat(lin2,"?");
if (Message(MSG_YN,lin2)==ANS_NO)
return('n');
else
return('y');
}
/*
* fatal()
*
* Prints error msg and exits.
* Variadic parameter list can be passed.
*
* Return values:
* none
*/
void fatal( char *msg,...)
{
va_list ap;
char istr[MESSLENGTH*MESSLINES] = "FATAL ERROR: ";
char vstr[1000];
va_start(ap,msg);
vsprintf(vstr,msg,ap);
va_end(ap);
strncat(istr,vstr,MESSLENGTH*MESSLINES-20);
Message(MSG_FATAL,istr);
}
/*
* error()
*
* Prints error msg.
* Variadic parameter list can be passed.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -