📄 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 + -