📄 amenu.c
字号:
fprintf(stdout," ********* PAIRWISE ALIGNMENT PARAMETERS *********\n"); fprintf(stdout,"\n\n"); fprintf(stdout," Slow/Accurate alignments:\n\n"); fprintf(stdout," 1. Gap Open Penalty :%4.2f\n",pw_go_penalty); fprintf(stdout," 2. Gap Extension Penalty :%4.2f\n",pw_ge_penalty); fprintf(stdout," 3. Protein weight matrix :%s\n" , matrix_menu.opt[pw_matnum-1].title); fprintf(stdout," 4. DNA weight matrix :%s\n" , dnamatrix_menu.opt[pw_dnamatnum-1].title); fprintf(stdout,"\n"); fprintf(stdout," Fast/Approximate alignments:\n\n"); fprintf(stdout," 5. Gap penalty :%d\n",(pint)wind_gap); fprintf(stdout," 6. K-tuple (word) size :%d\n",(pint)ktup); fprintf(stdout," 7. No. of top diagonals :%d\n",(pint)signif); fprintf(stdout," 8. Window size :%d\n\n",(pint)window); fprintf(stdout," 9. Toggle Slow/Fast pairwise alignments "); if(quick_pairalign) fprintf(stdout,"= FAST\n\n"); else fprintf(stdout,"= SLOW\n\n"); fprintf(stdout," H. HELP\n\n\n"); getstr("Enter number (or [RETURN] to exit)",lin2); if( *lin2 == EOS) { if(dnaflag) { dna_pw_go_penalty = pw_go_penalty; dna_pw_ge_penalty = pw_ge_penalty; dna_ktup = ktup; dna_window = window; dna_signif = signif; dna_wind_gap = wind_gap; } else { prot_pw_go_penalty = pw_go_penalty; prot_pw_ge_penalty = pw_ge_penalty; prot_ktup = ktup; prot_window = window; prot_signif = signif; prot_wind_gap = wind_gap; } return; } switch(toupper(*lin2)) { case '1': fprintf(stdout,"Gap Open Penalty Currently: %4.2f\n",pw_go_penalty); pw_go_penalty=(float)getreal("Enter number",(double)0.0,(double)100.0,(double)pw_go_penalty); break; case '2': fprintf(stdout,"Gap Extension Penalty Currently: %4.2f\n",pw_ge_penalty); pw_ge_penalty=(float)getreal("Enter number",(double)0.0,(double)10.0,(double)pw_ge_penalty); break; case '3': pw_matnum = read_matrix("PROTEIN",pw_matrix_menu,pw_mtrxname,pw_matnum,pw_usermat,pw_aa_xref); break; case '4': pw_dnamatnum = read_matrix("DNA",dnamatrix_menu,pw_dnamtrxname,pw_dnamatnum,pw_userdnamat,pw_dna_xref); break; case '5': fprintf(stdout,"Gap Penalty Currently: %d\n",(pint)wind_gap); wind_gap=getint("Enter number",1,500,wind_gap); break; case '6': fprintf(stdout,"K-tuple Currently: %d\n",(pint)ktup); if(dnaflag) ktup=getint("Enter number",1,4,ktup); else ktup=getint("Enter number",1,2,ktup); break; case '7': fprintf(stdout,"Top diagonals Currently: %d\n",(pint)signif); signif=getint("Enter number",1,50,signif); break; case '8': fprintf(stdout,"Window size Currently: %d\n",(pint)window); window=getint("Enter number",1,50,window); break; case '9': quick_pairalign ^= TRUE; break; case '?': case 'H': get_help('3'); break; default: fprintf(stdout,"\n\nUnrecognised Command\n\n"); break; } }}static void multi_menu(void){ int catchint; catchint = signal(SIGINT, SIG_IGN) != SIG_IGN; if (catchint) { if (setjmp(jmpbuf) != 0) fprintf(stdout,"\n.. Interrupt\n");#ifdef UNIX if (signal(SIGINT,jumper) == BADSIG) fprintf(stdout,"Error: signal\n");#else if (signal(SIGINT,SIG_DFL) == BADSIG) fprintf(stdout,"Error: signal\n");#endif } if(dnaflag) { gap_open = dna_gap_open; gap_extend = dna_gap_extend; } else { gap_open = prot_gap_open; gap_extend = prot_gap_extend; } while(TRUE) { fprintf(stdout,"\n\n\n"); fprintf(stdout," ********* MULTIPLE ALIGNMENT PARAMETERS *********\n"); fprintf(stdout,"\n\n"); fprintf(stdout," 1. Gap Opening Penalty :%4.2f\n",gap_open); fprintf(stdout," 2. Gap Extension Penalty :%4.2f\n",gap_extend); fprintf(stdout," 3. Delay divergent sequences :%d %%\n\n",(pint)divergence_cutoff); fprintf(stdout," 4. DNA Transitions Weight :%1.2f\n\n",transition_weight); fprintf(stdout," 5. Protein weight matrix :%s\n" ,matrix_menu.opt[matnum-1].title); fprintf(stdout," 6. DNA weight matrix :%s\n" ,dnamatrix_menu.opt[dnamatnum-1].title); fprintf(stdout," 7. Use negative matrix :%s\n\n",(!neg_matrix) ? "OFF" : "ON"); fprintf(stdout," 8. Protein Gap Parameters\n\n"); fprintf(stdout," H. HELP\n\n\n"); getstr("Enter number (or [RETURN] to exit)",lin2); if(*lin2 == EOS) { if(dnaflag) { dna_gap_open = gap_open; dna_gap_extend = gap_extend; } else { prot_gap_open = gap_open; prot_gap_extend = gap_extend; } return; } switch(toupper(*lin2)) { case '1': fprintf(stdout,"Gap Opening Penalty Currently: %4.2f\n",gap_open); gap_open=(float)getreal("Enter number",(double)0.0,(double)100.0,(double)gap_open); break; case '2': fprintf(stdout,"Gap Extension Penalty Currently: %4.2f\n",gap_extend); gap_extend=(float)getreal("Enter number",(double)0.0,(double)10.0,(double)gap_extend); break; case '3': fprintf(stdout,"Min Identity Currently: %d\n",(pint)divergence_cutoff); divergence_cutoff=getint("Enter number",0,100,divergence_cutoff); break; case '4': fprintf(stdout,"Transition Weight Currently: %1.2f\n",(pint)transition_weight); transition_weight=(float)getreal("Enter number",(double)0.0,(double)1.0,(double)transition_weight); break; case '5': matnum = read_matrix("PROTEIN",matrix_menu,mtrxname,matnum,usermat,aa_xref); break; case '6': dnamatnum = read_matrix("DNA",dnamatrix_menu,dnamtrxname,dnamatnum,userdnamat,dna_xref); break; case '7': neg_matrix ^= TRUE; break; case '8': gap_penalties_menu(); break; case '?': case 'H': get_help('4'); break; default: fprintf(stdout,"\n\nUnrecognised Command\n\n"); break; } }}static void gap_penalties_menu(void){ char c; sint i; int catchint; catchint = signal(SIGINT, SIG_IGN) != SIG_IGN; if (catchint) { if (setjmp(jmpbuf) != 0) fprintf(stdout,"\n.. Interrupt\n");#ifdef UNIX if (signal(SIGINT,jumper) == BADSIG) fprintf(stdout,"Error: signal\n");#else if (signal(SIGINT,SIG_DFL) == BADSIG) fprintf(stdout,"Error: signal\n");#endif } while(TRUE) { fprintf(stdout,"\n\n\n"); fprintf(stdout," ********* PROTEIN GAP PARAMETERS *********\n"); fprintf(stdout,"\n\n\n"); fprintf(stdout," 1. Toggle Residue-Specific Penalties :%s\n\n",(no_pref_penalties) ? "OFF" : "ON"); fprintf(stdout," 2. Toggle Hydrophilic Penalties :%s\n",(no_hyd_penalties) ? "OFF" : "ON"); fprintf(stdout," 3. Hydrophilic Residues :%s\n\n" ,hyd_residues); fprintf(stdout," 4. Gap Separation Distance :%d\n",(pint)gap_dist); fprintf(stdout," 5. Toggle End Gap Separation :%s\n\n",(!use_endgaps) ? "OFF" : "ON"); fprintf(stdout," H. HELP\n\n\n"); getstr("Enter number (or [RETURN] to exit)",lin2); if(*lin2 == EOS) return; switch(toupper(*lin2)) { case '1': no_pref_penalties ^= TRUE; break; case '2': no_hyd_penalties ^= TRUE; break; case '3': fprintf(stdout,"Hydrophilic Residues Currently: %s\n",hyd_residues); getstr("Enter residues (or [RETURN] to quit)",lin1); if (*lin1 != EOS) { for (i=0;i<strlen(hyd_residues) && i<26;i++) { c = lin1[i]; if (isalpha(c)) hyd_residues[i] = (char)toupper(c); else break; } hyd_residues[i] = EOS; } break; case '4': fprintf(stdout,"Gap Separation Distance Currently: %d\n",(pint)gap_dist); gap_dist=getint("Enter number",0,100,gap_dist); break; case '5': use_endgaps ^= TRUE; break; case '?': case 'H': get_help('A'); break; default: fprintf(stdout,"\n\nUnrecognised Command\n\n"); break; } }}static sint read_matrix(char *title,MatMenu menu, char *matnam, sint matn, short *mat, short *xref){ static char userfile[FILENAMELEN+1]; int i; while(TRUE) { fprintf(stdout,"\n\n\n"); fprintf(stdout," ********* %s WEIGHT MATRIX MENU *********\n",title); fprintf(stdout,"\n\n"); for(i=0;i<menu.noptions;i++) fprintf(stdout," %d. %s\n",i+1,menu.opt[i].title); fprintf(stdout," H. HELP\n\n"); fprintf(stdout," -- Current matrix is the %s ",menu.opt[matn-1].title); if(matn == menu.noptions) fprintf(stdout,"(file = %s)",userfile); fprintf(stdout,"--\n"); getstr("\n\nEnter number (or [RETURN] to exit)",lin2); if(*lin2 == EOS) return(matn); i=toupper(*lin2)-'0'; if(i>0 && i<menu.noptions) { strcpy(matnam,menu.opt[i-1].string); matn=i; } else if (i==menu.noptions) { if(user_mat(userfile, mat, xref)) { strcpy(matnam,userfile); matn=i; } } else switch(toupper(*lin2)) { case '?': case 'H': get_help('8'); break; default: fprintf(stdout,"\n\nUnrecognised Command\n\n"); break; } }}char prompt_for_yes_no(char *title,char *prompt){ char line[80]; char lin2[80]; fprintf(stdout,"\n%s\n",title); strcpy(line,prompt); strcat(line, "(y/n) ? [y]"); getstr(line,lin2); if ((*lin2 != 'n') && (*lin2 != 'N')) return('y'); else return('n');}/** fatal()** Prints error msg to stdout and exits.* Variadic parameter list can be passed.** Return values:* none*/void fatal( char *msg,...){ va_list ap; va_start(ap,msg); fprintf(stdout,"\n\nFATAL ERROR: "); vfprintf(stdout,msg,ap); fprintf(stdout,"\n\n"); va_end(ap); exit(1);}/** error()** Prints error msg to stdout.* Variadic parameter list can be passed.** Return values:* none*/void error( char *msg,...){ va_list ap; va_start(ap,msg); fprintf(stdout,"\n\nERROR: "); vfprintf(stdout,msg,ap); fprintf(stdout,"\n\n"); va_end(ap);}/** warning()** Prints warning msg to stdout.* Variadic parameter list can be passed.** Return values:* none*/void warning( char *msg,...){ va_list ap; va_start(ap,msg); fprintf(stdout,"\n\nWARNING: "); vfprintf(stdout,msg,ap); fprintf(stdout,"\n\n"); va_end(ap);}/** info()** Prints info msg to stdout.* Variadic parameter list can be passed.** Return values:* none*/void info( char *msg,...){ va_list ap; va_start(ap,msg); fprintf(stdout,"\n"); vfprintf(stdout,msg,ap); va_end(ap);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -