[Bioperl-l] Bio::Graphics - Howto Show Negative Start-End and Enable Connector

Wijaya Edward ewijaya at i2r.a-star.edu.sg
Thu Apr 19 09:59:05 EDT 2007


Dear expert,

My figure here: http://defiant.i2r.a-star.edu.sg/~ewijaya/misc/foo2.png <http://defiant.i2r.a-star.edu.sg/%7Eewijaya/misc/foo2.png> 
is created with the script (down below).

How can I modify the script such that:

1. The arrow track is represented in negative form.
   I.e. instead of 1 to 300, we use -300 to 0.

I tried this, but won't do:

my $flen = Bio::SeqFeature::Generic->new(
       -start => -300,
       -end => 0, );

And how can I make these number to appear
for every gridpoints (not just two as I have now).


2. How can I enable the connector with grid just like
  I had in the first panel? (as you can see, my script
  has connector added, but still doesn't show).

All, in all, I am trying to mimic this figure:
http://nar.oxfordjournals.org/content/vol31/issue13/images/large/gkg56702.jpeg <http://nar.oxfordjournals.org/content/vol31/issue13/images/large/gkg56702.jpeg> 

And here is my script:

__BEGIN__
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
use Bio::Graphics;
use Bio::SeqFeature::Generic;
use List::Compare;
use List::Util qw(max);

my %nofseq = ( 0 => 300, 1 => 300, 2 => 300, 3 => 300, 4 => 300, 5 => 300 );
my @seqid = keys %nofseq;
my @lenlist = values %nofseq;
my $maxlen = max (@lenlist);
#print Dumper \@seqid ;

my $panel = Bio::Graphics::Panel->new(
   -length    => 300,
   -width     => 500,
   -pad_left  => 70,
   -pad_right => 70,
   -key_style => 'left',
   -connector => 'solid',
);

my $flen = Bio::SeqFeature::Generic->new(
       -start => 1,   # tried -300
       -end => 300, # and 0, but failed.
);

   my $track1 = $panel->add_track(
       $flen,
       -glyph   => 'arrow',
       -tick    => 2,
       -fgcolor => 'black',
       -double  => 1,
   );



my %nlist;

while ( <DATA> ) {
   chomp;
   next if /^\#/;
   my ($sqi,$pos,$str,$progname) = split /\,/;
   my $start = $pos + $nofseq{$sqi};
   my $end = $start + length($str) + 1;
   push @{$nlist{$sqi}}, $start." ".$end." ".$progname;
}

# Check which sequence has no motifs;
my @bssi = keys %nlist;

my $lc = List::Compare->new(\@seqid, \@bssi);
my @comp = $lc->get_unique;


foreach my $comp ( @comp  ) {
   push @{$nlist{$comp}}, '0'." ".'0'." "."NONE";

}

my %prog_color = ( "WEEDER" => 3000, "MEME" => 200, "NONE" => 0 );

foreach my $seqid ( sort keys %nlist ) {


   my $track = $panel->add_track(
       -glyph     => 'graded_segments',
       -key       => "SEQ ". $seqid,
       -connector => "dashed"
       -label     => 1,
       -bgcolor   => 'blue',
               -bump      =>  +1,
               -height    =>  8,
       -min_score => 0,
       -max_score => 5000
   );


   foreach my $range ( @{$nlist{$seqid}} ) {

       my ($st,$en,$progname) = split(" ", $range);
       my $dname = " ";
       if ( $st != 0 and $en !=0  ) {
          $dname = "Seq ". $seqid;
       }

       my $score;
       if ( $progname eq "WEEDER" ) {
           $score = $prog_color{$progname};

       }
       elsif ($progname eq "MEME" ) {
           $score = $prog_color{$progname};
       }

       my $feature = Bio::SeqFeature::Generic->new(
           -display_name => $dname,
           -start        => $st,
           -end          => $en,
           -score        => $score
       );

       $track->add_feature($feature);

   }

}

print $panel->png;

#The DATA is simply just list of string and its location in their
respective sequence.
# The figure is just the plot of it out.
__DATA__
# sequence number,pos,binding sites,program
4,-63,AGCTTTCTCT,MEME
0,-22,AACTTTGTAC,WEEDER
1,-13,AAGTTTCTCT,WEEDER
5,-228,ACCTTTGCCA,MEME
5,-121,AAGTTTGTCT,WEEDER
5,-88,AAGTTTTTCC,SPACE
3,-148,AACTTAGTCA,MEME
0,-184,AACTTTGTCT,MEME
__END__


Thanks and hope to hear from you again.

--
Regards,

Edward WIJAYA

------------ Institute For Infocomm Research - Disclaimer -------------
This email is confidential and may be privileged.  If you are not the intended recipient, please delete it and notify us immediately. Please do not copy or use it for any purpose, or disclose its contents to any other person. Thank you.
--------------------------------------------------------


More information about the Bioperl-l mailing list