📄 xutils.c
字号:
#include <stdio.h>#include <stdarg.h>#include <string.h> #include <vibrant.h> #include "clustalw.h"#include "xmenu.h"char fontbuf[80];FonT tmpFont=NULL;static void VSeqMgrFontProc ();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 Boolean seqRange;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 output_fasta;extern Boolean save_parameters;extern Boolean output_tree_clustal, output_tree_phylip, output_tree_distances, output_tree_nexus, output_pim;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 setRange(PopuP l){ set_toggle(l, &seqRange);}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_pim(ButtoN l){ set_button(l,&output_pim);}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.** 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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -