[Bioperl-l] Graphics:Panel /SeqFeature::Generic

Daniel Lang Daniel.Lang at biologie.uni-freiburg.de
Mon Nov 17 05:06:40 EST 2003


Hi,
I want to generate overview graphics from BLAST reports, where the hits
are sorted and colored (>1e-10 -->green, ...)according their evalues...

So I thought, I could solve this using a callback function for the
bgcolor and using the 'low_score' sort_order, but when applied to a
BLAST report, it results in sorted but only red hits?
I also tried introducing the evalues as additional tags like done with
'bits' or 'range', but when testing for this tag in the callback
(has_tag) its not available?
So I wander if the function is envoked for each hit in the while loop?

Here the code sniplet:

my $track = $panel->add_track(-glyph       => 'generic',
                                 -label       => 1,
                                 -connector   => 'dashed',
				-height      => 5,				
                                 -bgcolor     =>  sub {
						    my $feature = shift;
						    my $evalue = $feature->score;
						    if ($evalue < 1e-10) {return 'green';}
						    else {return 'red';}}
						    ,
				-fontcolor   => 'green',
                                 -font2color  => 'red',
                                 -sort_order  => 'low_score',
				-min_score => '1e-1000',
				-max_score => '10000',
                                 -description => sub {
                                   my $feature = shift;
                                   return unless $feature->has_tag('bits');
                                   my ($description) =
$feature->each_tag_value('bits');
                                   my $score = $feature->score;
                                   my ($range) =
$feature->each_tag_value('range');
				  "Score=$description bits, E-value=$score, $range";
                                  });

     while( my $hit = $result->next_hit ) {
	my $evalue = $hit->significance;
	my $feature = Bio::SeqFeature::Generic->new(-score   => $evalue,
						    -display_name => $hit->name,
						    -tag     => { 'bits' => $hit->bits,
								  'range' => "from ". $hit->start('query') . " to " .
$hit->end('query'),
								  },
						    );	
	while( my $hsp = $hit->next_hsp ) {
	   $feature->add_sub_SeqFeature($hsp,'EXPAND');
	 }
	$track->add_feature($feature);
   }

Thanks in advance,
Daniel



More information about the Bioperl-l mailing list