[Bioperl-l] Error for Bio::Graphics in the HOWTO script for rendering EMBL features
Joshua Steele
jsteele at caltech.edu
Wed Jul 27 15:44:30 UTC 2011
Dear All,
I'm getting an error (warning) message when I try to run examples 5 and 6 in
the Graphics HOWTO.
Error: Can't locate object method "has_tag" via package
"Bio::Location::Simple" at
/opt/local/lib/perl5/site_perl/5.12.3/Bio/Graphics/Glyph.pm line 704, <GEN0>
line 323.
This error occurs whether I'm using a genbank file or whether I'm using the
suggested EMBL file ( http://www.bioperl.org/wiki/Factor7 ). The
Bio::Graphics package seems to work fine to render BLAST outputs, I was able
to get both the BLAST examples and a BLAST output to work.
I'm using (macports)Perl 5.12.3, Bioperl 1.0069, and Bio::Graphics 2.24 on
Mac OS 10.6.7.
If there is something obvious that I could do to fix it I'd be quite
grateful.
Cheers,
Josh
Here is the script as I tried to run it:
#!/opt/local/bin/perl
# file: embl2picture.pl
# This is code example 5 in the Graphics-HOWTO
# Author: Lincoln Stein
use strict;
use lib '$ENV{HOME}/src/bioperl-live';
use Bio::Graphics;
use Bio::SeqIO;
use Bio::SeqFeature::Generic;
my $file = shift or die "provide a sequence file as
the argument";
my $io = Bio::SeqIO->new(-file=>$file) or die "couldn't create Bio::SeqIO";
my $seq = $io->next_seq or die "couldn't find a sequence in
the file";
my $wholeseq = Bio::SeqFeature::Generic->new(
-start => 1,
-end => $seq->length,
-display_name =>
$seq->display_name
);
my $seqname = $seq->display_name;
my @features = $seq->get_SeqFeatures;
# partition features by their primary tags
my %sorted_features;
for my $f (@features) {
my $tag = $f->primary_tag;
push @{$sorted_features{$tag}},$f;
}
my $panel = Bio::Graphics::Panel->new(
-length => $seq->length,
-key_style => 'between',
-width => 10000,
-pad_left => 50,
-pad_right => 50,
);
$panel->add_track($wholeseq,
-glyph => 'arrow',
-bump => 0,
-double => 1,
-tick => 2);
$panel->add_track($wholeseq,
-glyph => 'generic',
-bgcolor => 'blue',
-label => 1,
);
# general case
my @colors = qw(cyan orange blue purple green chartreuse magenta yellow
aqua);
my $idx = 0;
for my $tag (sort keys %sorted_features) {
my $features = $sorted_features{$tag};
$panel->add_track($features,
-glyph => 'generic',
-bgcolor => $colors[$idx++ % @colors],
-fgcolor => 'black',
-font2color => 'red',
-key => "${tag}s",
-bump => +1,
-height => 8,
-label => 1,
-description => 1,
);
}
## print PNG
open OUT, ">$seqname.png";
print OUT $panel->png;
close OUT;
exit 0;
More information about the Bioperl-l
mailing list