Ejemplo n.º 1
0
boolean write_intron_desc(btPasteArea * btp,int start,int stop,int in_number,boolean is_split,char prot,char trans,char * dna)
{
  char buffer[15];

  if( is_split ) {
    sprintf(buffer,"  %c:%c[%s]  ",prot,trans,dna);
    paste_string_btPasteArea(btp,0,2,buffer,BC_RIGHT,0);
  }

  sprintf(buffer,"  Intron %-2d  ",in_number);
  paste_string_btPasteArea(btp,0,3,buffer,BC_RIGHT,0);
  sprintf(buffer,"[%-5d:%5d]",start,stop);
  paste_string_btPasteArea(btp,0,4,buffer,BC_RIGHT,0);

  return TRUE;
}
Ejemplo n.º 2
0
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);
  
}
Ejemplo n.º 3
0
boolean write_name_start_stuff(btCanvas * btc,char * protname,int protoff,char * dnaname,Sequence * dna,int name_len,AlnColumn * alc)
{
  char buffer[64];
  btPasteArea * btp;

  btp = get_reserved_left_btCanvas(btc);
	  
  paste_string_btPasteArea(btp,0,0,protname,BC_RIGHT,0);    
  paste_string_btPasteArea(btp,0,3,dnaname,BC_RIGHT,0);
  
  sprintf(buffer,"%d",alc->alu[0]->start+1+protoff);
  paste_string_btPasteArea(btp,name_len+5-strlen(buffer),0,buffer,BC_RIGHT,0);
  
  if( dna->offset < dna->end ) 
    sprintf(buffer,"%d",alc->alu[1]->start+1+dna->offset);
  else 
    sprintf(buffer,"-%d",dna->offset - (alc->alu[1]->start+1)); 

  paste_string_btPasteArea(btp,name_len+5-strlen(buffer),3,buffer,BC_RIGHT,0);
  
  free_btPasteArea(btp);

  return TRUE;
}
Ejemplo n.º 4
0
boolean write_alignment_separator(btCanvas * btc,int aln,int score)
{
  char buffer[64];
  btPasteArea * btp;

  sprintf(buffer,"Alignment %d Score %4.2f (Bits)",aln,Score2Bits(score));

  btp = get_paste_area_btCanvas(btc,strlen(buffer));

  paste_string_btPasteArea(btp,0,5,buffer,BC_RIGHT,0);

  free_btPasteArea(btp);

  advance_line_btCanvas(btc);

  return TRUE;
}
Ejemplo n.º 5
0
boolean paste_substr_btPasteArea(btPasteArea * bta,int x,int y,const char * str,int len,char (*map_func)(char),btCanvasDirection dir,int format)
{
  char buf[64];
  const char *run;
  int i;

  for(run=str,i=0;i<len;i++,run++) {
    if( map_func == NULL ) {
      buf[i] = *run;
    } else {
      buf[i] = (*map_func)(*run);
    }
  }

  buf[i] = '\0';

  return paste_string_btPasteArea(bta,x,y,buf,dir,format);
}
Ejemplo n.º 6
0
boolean write_pretty_str_align_btc(AlnBlock * alb,char * qname,char * query,char * tname,char * target,btCanvas * btc)
{
  AlnColumn * alc;
  AlnUnit * q;
  AlnUnit * t;
  char buffer[14];

  int number_position;

  btPasteArea * btp;


  number_position = strlen(qname);
  if( strlen(tname) > number_position ) {
      number_position = strlen(tname);
   }



  for(alc=alb->start;alc != NULL;) {

    /** put names in **/

    btp = get_reserved_left_btCanvas(btc);
    paste_string_btPasteArea(btp,0,0,qname,BC_RIGHT,0);
    paste_string_btPasteArea(btp,0,2,tname,BC_RIGHT,0);
    
    sprintf(buffer,"%d",alc->alu[0]->start+1+1);

    paste_string_btPasteArea(btp,number_position+2,0,buffer,BC_RIGHT,0);

    sprintf(buffer,"%d",alc->alu[1]->start+1+1);

    paste_string_btPasteArea(btp,number_position+2,2,buffer,BC_RIGHT,0);
    
    free_btPasteArea(btp);
    /** now loop over this block **/

    for(;alc != NULL &&  can_get_paste_area_btCanvas(btc,1) == TRUE;alc=alc->next) {
      
      q = alc->alu[0];
      t = alc->alu[1];

      /*
       * at the end, break
       */
      if( strcmp(q->text_label,"END") == 0 ) {
	alc = NULL;
	break;
      }

      if( strcmp(t->text_label,"LOOP") == 0 ) {
	btp = get_paste_area_btCanvas(btc,1);

	paste_char_btPasteArea(btp,0,0,'L',0);
	paste_char_btPasteArea(btp,0,1,'$',0);
	paste_char_btPasteArea(btp,0,2,'L',0);
	    
	free_btPasteArea(btp);

	advance_line_btCanvas(btc);
	for(;alc != NULL && strcmp(alc->alu[1]->text_label,"LOOP") == 0;alc = alc->next) {
	  ;
	}
	break;
      }

      /*
       * Get the paste area, length 1, depth will be 3
       */

      btp = get_paste_area_btCanvas(btc,1);

      /*
       * Write in the query sequence
       *
       */

      if( strcmp(q->text_label,"SEQUENCE") == 0 || strstr(q->text_label,"BOUND") != NULL ) {
	paste_char_btPasteArea(btp,0,0,((int)query[q->start+1]),0);
      } else if( strcmp(q->text_label,"UNMATCHED_SEQUENCE") == 0 ) {
	paste_char_btPasteArea(btp,0,0,tolower((int)query[q->start+1]),0);
      } else {
	/** is insert- we could check **/
	if( strcmp(q->text_label,"INSERT") != 0 ) {
	  warn("Got an uninterpretable label, %s",q->text_label);
	  paste_char_btPasteArea(btp,0,0,'?',0);
	} else {
	  paste_char_btPasteArea(btp,0,0,'-',0);
	}
      }

      /*
       * Write in the target sequence
       *
       */

      if( strcmp(t->text_label,"SEQUENCE") == 0 ) {
	paste_char_btPasteArea(btp,0,2,toupper((int)target[t->start+1]),0);
      } else if( strcmp(t->text_label,"UNMATCHED_SEQUENCE") == 0 ) {
	paste_char_btPasteArea(btp,0,2,tolower((int)target[t->start+1]),0);
      } else {
	/** is insert- we could check **/
	if( strcmp(t->text_label,"INSERT") != 0 ) {
	  warn("Got an uninterpretable label, %s",t->text_label);
	  paste_char_btPasteArea(btp,0,2,'?',0);
	} else {
	  paste_char_btPasteArea(btp,0,2,'-',0);
	}
      }

      /*
       * Match line
       */



      if( strcmp(q->text_label,"SEQUENCE") == 0 && strcmp(t->text_label,"SEQUENCE") == 0 ) {
	if( q->score[0] > 0 ) {
	  if( query[q->start+1] == target[t->start+1] ) {
	    paste_char_btPasteArea(btp,0,1,target[t->start+1],0);
	  } else {	   
	    paste_char_btPasteArea(btp,0,1,'+',0);
	  }
	}
      } else 
	paste_char_btPasteArea(btp,0,1,' ',0);
      
      free_btPasteArea(btp);

    } /* end of for this block */

    advance_line_btCanvas(btc);
  } /* end of for the alignment */

  return TRUE; /* we never returned false. Ooops! */
}