[Bioperl-l] Can't add track to Panel Bio::Graphics

Emmanuel Quevillon tuco at pasteur.fr
Mon Aug 31 14:13:41 UTC 2009


Hi,

I'm trying to create png image using Bio::Graphics.
I followed the Howto available at bioperl.org.

I'm stacked when trying to add new track to my panel. So far, I can
create the panel, add 2 tracks, then, probably mistaking, I can add
more tracks to my panel. Here is the code.

my $panel = Bio::Graphics::Panel->new(
        -length     => $self->seq()->length(),
        -width      => 800,
        -pad_top    => 5,
        -pad_bottom => 5,
        -pad_left   => 5,
        -pad_right  => 5,
        #-key_style  => 'between',
       );

    my $bsg = Bio::SeqFeature::Generic->new(
        -start        => 1,
        -seq          => $self->seq()->seq(),
        -end          => $self->seq()->length(),
        -display_name => $self->seq()->id(). "
(".$self->seq->length()." na)",
       );

    $bsg->attach_seq($self->seq());

    #Display the reference sequence
    ############
    #### Those 2 tracks are well displayed on the final image
    ###########
    $panel->add_track($bsg, -glyph => 'dna', -label => 1);
    $panel->add_track($bsg, -glyph => 'arrow', -tick => 2, -fgcolor
=> 'black');


    #Build, if present, the single cut
    if(keys %$spositions){

        #Create the specail track for the single cut
        my $strack = $panel->add_track(
            -glyph     => 'crossbox',
            -label     => 1,
            -fgcolor   => 'red',
            -key       => 'Single cut',
            -connector => 'dashed',
           );

        foreach my $enz (sort { $a cmp $b } keys
%{$spositions->{$strand}}){

            my $bsfg = Bio::SeqFeature::Generic->new(
                -display_name => $enz,
                -start        =>
$spositions->{$strand}->{$enz}->{$enz}->start(),
                -end          =>
$spositions->{$strand}->{$enz}->{$enz}->start());

            my $bsfg2 = Bio::SeqFeature::Generic->new(
                -display_name => $enz,
                -start        =>
$spositions->{$strand}->{$enz}->{$enz}->end(),
                -end          =>
$spositions->{$strand}->{$enz}->{$enz}->end());

            $strack->add_feature($bsfg);
            $strack->add_feature($bsfg2);
        }
    }

    #Build, if present, the double cut
    if(keys %$dpositions){

        my $dtrack = $panel->add_track(
            -glyph  => 'crossbox',
            -label  => 1,
            -key    => 'Double cut',
            -connector => 'dashed',
           );

        foreach my $couple (sort { $a cmp $b } keys
%{$dpositions->{$strand}}){

            foreach my $cc_enz (sort { $a cmp $b } keys
%{$dpositions->{$strand}->{$couple}}){

                my $bsfg = Bio::SeqFeature::Generic->new(
                        -display_name => $couple,
                        -start        =>
$dpositions->{$strand}->{$couple}->{$cc_enz}->start(),
                        -end          =>
$dpositions->{$strand}->{$couple}->{$cc_enz}->start());

                my $bsfg2 = Bio::SeqFeature::Generic->new(
                    -display_name => $cc_enz,
                    -start        =>
$dpositions->{$strand}->{$couple}->{$cc_enz}->end(),
                    -end          =>
$dpositions->{$strand}->{$couple}->{$cc_enz}->end());

                $dtrack->add_feature($bsfg);
                $dtrack->add_feature($bsfg2);
            }
        }
    }

    print $panel->png();


Can somebody tell me what I'm missing or doing wrong?
Thanks for any help

Regards

Emmanuel

-- 
-------------------------
Emmanuel Quevillon
Biological Software and Databases Group
Institut Pasteur
+33 1 44 38 95 98
tuco at_ pasteur dot fr
-------------------------



More information about the Bioperl-l mailing list