[Bioperl-l] [Bio::Graphics::Panel] code reference cannot pass to -link, why?
Xianjun Dong
Xianjun.Dong at bccs.uib.no
Fri Jul 3 12:22:01 EDT 2009
Hi,
I have a problem while using the -link in Bio::Graphics (version 1.96):
As the POD of Bio::Graphics described
(http://search.cpan.org/~lds/Bio-Graphics-1.96/lib/Bio/Graphics/Panel.pm#Creating_Imagemaps),
link format like:
-link => 'http://www.google.com/search?q=$description'
works well in my code, but the format like
-link => sub {
my ($feature,$panel) = @_;
my $type = $feature->primary_tag;
my $name = $feature->display_name;
if ($primary_tag eq 'clone') {
return "http://www.google.com/search?q=$name";
} else {
return "http://www.yahoo.com/search?p=$name";
}
does not output image map as expected.
Here I attached a simple code as example for anyone who is willing to
test for me:
#!/usr/bin/perl
use strict;
use Bio::Graphics;
use Bio::Graphics::Feature;
my $ftr= 'Bio::Graphics::Feature';
# processed_transcript
my $trans1 =
$ftr->new(-start=>50,-end=>10,-display_name=>'ZK154.1',-type=>'UTR');
my $trans2 =
$ftr->new(-start=>100,-end=>50,-display_name=>'ZK154.2',-type=>'CDS');
my $trans3 =
$ftr->new(-start=>350,-end=>225,-display_name=>'ZK154.3',-type=>'CDS',
-source=>'a');
my $trans4 =
$ftr->new(-start=>700,-end=>650,-display_name=>'ZK154.4',-type=>'UTR');
my @trans = ($trans1,$trans2,$trans3,$trans4);
my $panel= Bio::Graphics::Panel->new(-start =>0,-length=>1050);
$panel->add_track(\@trans,
-glyph => 'transcript2',
# This works well!
#-link =>
'http://www.google.com/search?q=$name',
# while, the following code does not work as
expected.
-link => sub {
my ($feature,$panel) = @_;
my $type = $feature->primary_tag;
my $name = $feature->display_name;
if ($type eq 'CDS') {
return
"http://www.google.com/search?q=$name";
} else {
return
"http://www.yahoo.com/search?p=$name";
}
}
);
my $map = $panel->create_web_map("mapname");
print $map;
$panel->finished();
In my test (Bioperl 1.6.0), its output is:
<map name="mapname" id="mapname">
<area shape="rect" coords="11,0,58,7"
href="http://www.yahoo.com/search?p=" />
<area shape="rect" coords="57,10,115,17"
href="http://www.yahoo.com/search?p=" />
<area shape="rect" coords="257,0,401,7"
href="http://www.yahoo.com/search?p=" />
<area shape="rect" coords="743,0,801,7"
href="http://www.yahoo.com/search?p=" />
</map>
It seems $feature->primary_tag returns 'track' (I don't know where this
come from...), but not the type of features. Anyone has clue for this
problem?
Thanks
--
==========================================
Xianjun Dong
PhD student, Lenhard group
Computational Biology Unit
Bergen Center for Computational Science
University of Bergen
Hoyteknologisenteret, Thormohlensgate 55
N-5008 Bergen, Norway
E-mail: xianjun.dong at bccs.uib.no
Tel.: +47 555 84022
Fax : +47 555 84295
==========================================
More information about the Bioperl-l
mailing list