boolean protcdna_ascii_display(AlnBlock * alb,char * protsequence,char * protname,int protoff,cDNA * cdna,CodonTable * ct,int name,int main,boolean mult,FILE * ofp) { boolean ret; btCanvas * btc; btc = new_Ascii_btCanvas(ofp,name+6,main,0,6); ret = protdna_btc_display(alb,protsequence,protname,protoff,cdna->baseseq,ct,name,main,btc,match_central_line_std,mult); free_btCanvas(btc); return ret; }
btCanvas * ascii_btCanvas_from_commandline(int * argc,char ** argv,int default_left,int default_main,int default_right,FILE * ofp,int height) { int left = default_left; int main_length = default_main; int right = default_right; strip_out_integer_argument(argc,argv,"acleft",&left); strip_out_integer_argument(argc,argv,"acright",&right); strip_out_integer_argument(argc,argv,"acmain",&main_length); return new_Ascii_btCanvas(ofp,left,main_length,right,height); }
boolean write_pretty_str_align(AlnBlock * alb,char * qname,char * query,char * tname,char * target,int name,int main,FILE * ofp) { boolean out; btCanvas * btc; btc = new_Ascii_btCanvas(ofp,name+6,main,0,3); /*+6 in case we want to put in numbers */ out = write_pretty_str_align_btc(alb,qname,query,tname,target,btc); /** destroy btc canvas **/ free_btCanvas(btc); return out; }
void print_hsp(gpointer key,gpointer value,gpointer user_data) { Sequence * query; HSPset * set; btCanvas * btc; btPasteArea * btp; int i,j; char q,t; query = (Sequence *)user_data; set = (HSPset *) value; btc = new_Ascii_btCanvas(stdout,12,50,5,3); for(i=0;i<set->len;i++) { for(j=0;j<set->hsp[i]->length;) { btp = get_reserved_left_btCanvas(btc); paste_string_btPasteArea(btp,0,0,query->name,BC_RIGHT,0); paste_string_btPasteArea(btp,0,2,set->hsp[i]->target->name,BC_RIGHT,0); free_btPasteArea(btp); for(;j<set->hsp[i]->length && can_get_paste_area_btCanvas(btc,1) == TRUE;j++) { btp = get_paste_area_btCanvas(btc,1); q = query->seq[set->hsp[i]->query_start+j]; t = set->hsp[i]->target->seq[set->hsp[i]->target_start+j]; paste_char_btPasteArea(btp,0,0,q,0); paste_char_btPasteArea(btp,0,2,t,0); if( q == t ) { paste_char_btPasteArea(btp,0,1,t,0); } free_btPasteArea(btp); } advance_line_btCanvas(btc); } advance_line_btCanvas(btc); } free_btCanvas(btc); }
boolean write_pretty_seq_align(AlnBlock * alb,Sequence * q,Sequence * t,int name,int main,FILE * ofp) { char qname[64]; char tname[64]; btCanvas * btc; if( alb == NULL || q == NULL || t == NULL ) { warn("NULL objects being passed into write_pretty_seq_align"); return FALSE; } if( name > 64 ) { warn("Sorry - hard coded limited, can't have names longer than 64"); return FALSE; } if( strlen(q->name) > name ) { warn("Name %s is longer than allowed name block (%d). Truncating\n",q->name,name); strncpy(qname,q->name,name); qname[name] = '\0'; } else { strcpy(qname,q->name); } if( strlen(t->name) > name ) { warn("Name %s is longer than allowed name block (%d). Truncating\n",t->name,name); strncpy(tname,t->name,name); tname[name] = '\0'; } else { strcpy(tname,t->name); } btc = new_Ascii_btCanvas(ofp,name+6,main,0,3); /*+6 in case we want to put in numbers */ write_pretty_str_align_btc(alb,qname,q->seq,tname,t->seq,btc); /** destroy btc canvas **/ free_btCanvas(btc); return TRUE; }