[Bioperl-l] [Bio::Graphics::Panel] code reference cannot pass to -link, why?
Xianjun Dong
Xianjun.Dong at bccs.uib.no
Wed Jul 8 11:04:15 EDT 2009
Hi, Scott
Thanks for your help to my previous question about background layer. It
works well!
Now, I have another question regarding the -link function in imagemap. I
post to Bioperl mailist. It seems to detail to get much attention. I
followed the code in the Bio::Graphics POD, but it does not work. Could
you pls take a look?
Thanks again
Xianjun
Xianjun Dong wrote:
> 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