[Bioperl-l] Graphics:Panel /SeqFeature::Generic
Lincoln Stein
lstein at cshl.edu
Wed Dec 3 08:41:53 EST 2003
Hi Dan,
I think the issue here is that the top level feature is a
Bio::SeqFeature::Generic, while the subfeatures are actually Bio::Search::Hit
objects. Therefore you've got to be careful about whether you're looking at
the top level or the subfeature.
I can't explain the black & white problem. I'm using Bio::Graphics in a
mod_perl environment on a site that gets a hundred thousand hits per week and
have not observed this at all. Perhaps you are memory limited?
Lincoln
On Wednesday 03 December 2003 04:06 am, Daniel Lang wrote:
> Thanks a lot Lincoln! That worked for me:)
>
> Of course there are some questions remaining;)
> I wounder why I can use something like $feature->significance if I
> didn´t set that tag? Are the whole hits attributes available once a hit
> is linked to a feature?
>
> I´m using this (BLAST overview graphics with Bio::Graphics::panel)in a
> modperl handler...Most of the time everything works out absolutely fine,
> but sometimes when the handler is called the graphics are black´n
> white?! (Apache/1.3.27 (Unix)(Red-Hat/Linux) Embperl/2.0b5
> mod_perl/1.26) (All the modules are preloaded in a startup script)
> I fear this might be off-topic but has anyone also experienced behaviour
> like this?
>
> Thanks in advance.
>
> Daniel
>
> Lincoln Stein wrote:
> > Make sure to set the tag on the subfeatures and to use the segments
> > glyph. The attached demo script encodes the score as red/blue and the
> > significance as height.
> >
> > Lincoln
> >
> > On Monday 24 November 2003 07:25 am, Daniel Lang wrote:
> >>Hi Lincoln,
> >>Thanks for your help, but this didn´t improve the situation:(
> >>I know now for sure, that the $feature->score is not the evalue, that is
> >>set in the while loop, but the normal score!!
> >>Additionally, I tried again introducing it as an additional tag, but
> >>this tag isn´t available in the callback with e.g.
> >>get_tag_values('evalue'). I´m using it in a mod_perl Handler, could this
> >> be part of the problem? Thanks in advance,
> >>Daniel
> >>
> >>Lincoln Stein wrote:
> >>>Hi Dan,
> >>>
> >>>Try changing the "generic" glyph to "segments." The first glyph doesn't
> >>>know how to deal with subparts (such as HSPs), the second does.
> >>>
> >>>Lincoln
> >>>
> >>>On Monday 17 November 2003 05:06 am, Daniel Lang wrote:
> >>>>Hi,
> >>>>I want to generate overview graphics from BLAST reports, where the hits
> >>>>are sorted and colored (>1e-10 -->green, ...)according their evalues...
> >>>>
> >>>>So I thought, I could solve this using a callback function for the
> >>>>bgcolor and using the 'low_score' sort_order, but when applied to a
> >>>>BLAST report, it results in sorted but only red hits?
> >>>>I also tried introducing the evalues as additional tags like done with
> >>>>'bits' or 'range', but when testing for this tag in the callback
> >>>>(has_tag) its not available?
> >>>>So I wander if the function is envoked for each hit in the while loop?
> >>>>
> >>>>Here the code sniplet:
> >>>>
> >>>>my $track = $panel->add_track(-glyph => 'generic',
> >>>> -label => 1,
> >>>> -connector => 'dashed',
> >>>> -height => 5,
> >>>> -bgcolor => sub {
> >>>> my $feature = shift;
> >>>> my $evalue = $feature->score;
> >>>> if ($evalue < 1e-10) {return 'green';}
> >>>> else {return 'red';}}
> >>>> ,
> >>>> -fontcolor => 'green',
> >>>> -font2color => 'red',
> >>>> -sort_order => 'low_score',
> >>>> -min_score => '1e-1000',
> >>>> -max_score => '10000',
> >>>> -description => sub {
> >>>> my $feature = shift;
> >>>> return unless
> >>>>$feature->has_tag('bits'); my ($description) =
> >>>>$feature->each_tag_value('bits');
> >>>> my $score = $feature->score;
> >>>> my ($range) =
> >>>>$feature->each_tag_value('range');
> >>>> "Score=$description bits, E-value=$score, $range";
> >>>> });
> >>>>
> >>>> while( my $hit = $result->next_hit ) {
> >>>> my $evalue = $hit->significance;
> >>>> my $feature = Bio::SeqFeature::Generic->new(-score => $evalue,
> >>>> -display_name => $hit->name,
> >>>> -tag => { 'bits' => $hit->bits,
> >>>> 'range' => "from ". $hit->start('query') . " to " .
> >>>>$hit->end('query'),
> >>>> },
> >>>> );
> >>>> while( my $hsp = $hit->next_hsp ) {
> >>>> $feature->add_sub_SeqFeature($hsp,'EXPAND');
> >>>> }
> >>>> $track->add_feature($feature);
> >>>> }
> >>>>
> >>>>Thanks in advance,
> >>>>Daniel
> >>>>
> >>>>_______________________________________________
> >>>>Bioperl-l mailing list
> >>>>Bioperl-l at portal.open-bio.org
> >>>>http://portal.open-bio.org/mailman/listinfo/bioperl-l
> >>
> >>_______________________________________________
> >>Bioperl-l mailing list
> >>Bioperl-l at portal.open-bio.org
> >>http://portal.open-bio.org/mailman/listinfo/bioperl-l
> >
> > ------------------------------------------------------------------------
> >
> > full_length:
> >
> > hit:
> > description Human non-histone chromatin protein HMG1 (HMG1) gene,
> > complete cds. name U51677
> >
> > hit:
> > description Mus musculus (clone Clebp-1) high mobility group 1 protein
> > (HMG-1) name L38477
> >
> > hit:
> > description M.musculus HMG1 gene
> > name X80457
> >
> > hit:
> > description Mus musculus HMG-1 mRNA, complete cds.
> > name U00431
> >
> > hit:
> > description Human non-histone chromosomal protein (HMG-1)
> > retropseudogene. name L08048
> >
> > hit:
> > description Human mRNA for high mobility group-1 protein (HMG-1).
> > name X12597
> >
> > hit:
> > description Rat amphoterin mRNA, complete cds.
> > name M64986
> >
> > hit:
> > description M.musculus mRNA for non-histone chromosomal high-mobility
> > group 1 name Z11997
> >
> > hit:
> > description Human mRNA for HMG-1, complete cds.
> > name D63874
> >
> > hit:
> > description Human DNA sequence from BAC 445C9 on chromosome 22q12.1.
> > name Z95115
> >
> > hit:
> > description Bovine mRNA for high mobility group 1 (HMG1) protein
> > name X12796
> >
> > hit:
> > description Bovine high-mobility-group protein (HMG-1) mRNA, 3' end.
> > name M26110
> >
> > hit:
> > description Mus musculus HMG-like protein (Trf) mRNA, complete cds.
> > name AF009343
> >
> > hit:
> > description Pig nonhistone protein HMG1 mRNA, complete cds.
> > name M21683;M21684
> >
> > hit:
> > description Homo sapiens (clone 06) high mobility group 1 protein mRNA
> > name L13805
> >
> > hit:
> > description Human chromosomal protein HMG1 related gene.
> > name D14718
> >
> > hit:
> > description Chinese hamster HMG-1 gene for high mobility group protein 1
> > name Y00365
> >
> > hit:
> > description Rat high mobility group 1 protein synthetic gene, complete
> > cds. name M63852
> >
> > hit:
> > description Rat mRNA for high mobility group protein HMG1
> > name Y00463
> >
> > hit:
> > description M.musculus HMG1-R-227 gene
> > name X80466
> >
> > hit:
> > description M.musculus HMG1-R-154 gene
> > name X80462
> >
> > hit:
> > description M.musculus HMG1-R-145 gene
> > name X80461
> >
> > hit:
> > description M.musculus HMG1-R-177 gene
> > name X80459
> >
> > hit:
> > description M.musculus HMG1-R-87 gene
> > name X80467
> >
> > hit:
> > description M.musculus HMG1-R-168 gene
> > name X80465
> >
> > hit:
> > description M.musculus HMG1-R-159 gene
> > name X80463
> >
> > hit:
> > description Rainbow trout HMG-1 gene exons 2-5, complete cds.
> > name L32859
> >
> > hit:
> > description M.musculus HMG1-R-135 gene
> > name X80460
> >
> > hit:
> > description M.musculus HMG1-R-161 gene
> > name X80464
> >
> > hit:
> > description Trout mRNA for high mobility group protein HMG-T
> > name X02666
> >
> > hit:
> > description Xenopus laevis high mobility group protein-1 (HMG-1) mRNA,
> > complete name U21933
> >
> >
> >
> > ------------------------------------------------------------------------
> >
> > #!/lab/bin/perl
> >
> > use strict;
> > use lib '.';
> > use Bio::Graphics;
> > use Bio::SearchIO;
> >
> > use constant BLAST_FILE => './doc/howto/examples/graphics/blastn.out';
> >
> > my $searchio = new Bio::SearchIO (-format => 'blast',
> > -file => BLAST_FILE);
> >
> > my $result = $searchio->next_result;
> >
> > #Create a panel object
> > my $panel = Bio::Graphics::Panel->new( -length => $result->query_length,
> > -width => 1000,
> > -pad_left => 10,
> > -pad_right => 10,
> > );
> >
> > my $full_length = Bio::SeqFeature::Generic->new(-start => 1,
> > -end =>
> > $result->query_length, -primary_tag => 'full_length',
> > -seq_id=>
> > $result->query_name );
> > $panel->add_track($full_length,
> > -glyph => 'arrow',
> > -tick => 2,
> > -fgcolor => 'black',
> > -double => 1,
> > -label => 1,
> > );
> >
> > my $track = $panel->add_track(-glyph => 'segments',
> > -label => 1,
> > -connector => 'dashed',
> > -bgcolor => sub {
> > my $feature = shift;
> > my $score = $feature->score;
> > $score < 50 ? 'blue' : 'red';
> > },
> > -height => sub {
> > my $feature = shift;
> > $feature->significance < 1e-50 ? 20 : 10;
> > },
> > -font2color => 'red',
> > -sort_order => 'high_score',
> > -description => sub {
> > my $feature = shift;
> > return unless
> > $feature->has_tag('desription'); my ($description) =
> > $feature->each_tag_value('description'); my $score = $feature->score;
> > "$description, score=$score";
> > }
> > );
> >
> > while( my $hit = $result->next_hit ) {
> > next unless $hit->significance < 1e-20;
> > my $feature = Bio::SeqFeature::Generic->new(-score =>
> > $hit->raw_score, -seq_id => $hit->name,
> > -primary_tag => 'hit',
> > -tag => {
> > description => $hit->description,
> > name => $hit->name,
> > },
> > );
> > while( my $hsp = $hit->next_hsp ) {
> > $feature->add_sub_SeqFeature($hsp,'EXPAND');
> > }
> >
> > $track->add_feature($feature);
> > }
> >
> > print $panel->png;
> >
> > __END__
> >
> > my @boxes = $panel->boxes;
> > foreach ( $panel->boxes() ) {
> > my $feature_box = $_->[0];
> > my $coords = join( ',', @{$_}[1..4] );
> >
> > print $feature_box->primary_tag,":\n";
> > my @tags = $feature_box->get_all_tags();
> > for my $x (@tags) {
> > print $x,"\t",$feature_box->each_tag_value($x),"\n";
> > }
> > print "\n";
> > }
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at portal.open-bio.org
> http://portal.open-bio.org/mailman/listinfo/bioperl-l
--
Lincoln Stein
lstein at cshl.edu
Cold Spring Harbor Laboratory
1 Bungtown Road
Cold Spring Harbor, NY 11724
(516) 367-8380 (voice)
(516) 367-8389 (fax)
More information about the Bioperl-l
mailing list