Ewan Birney

NAME

Bio::Graphics - Generate GD images of Bio::Seq objects

SYNOPSIS

  use Bio::Graphics;
  use Bio::DB::BioFetch;  # or some other Bio::SeqI generator
  # get a Bio::SeqI object somehow
  my $bf     = Bio::DB::BioFetch->new;
  my $cosmid = $bf->getSeq_by_id('CEF58D5');

  my @features = $seq->all_SeqFeatures;
  my @CDS      = grep {$_->primary_tag eq 'CDS'}  @features;
  my @gene     = grep {$_->primary_tag eq 'gene'} @features;
  my @tRNAs    = grep {$_->primary_tag eq 'tRNA'} @features;
  # let the drawing begin...
  my $panel = Bio::Graphics::Panel->new(
                                      -segment => $cosmid,
                                      -width  => 800
                                     );

  $panel->add_track(arrow => $cosmid,
                   -bump => 0,
                   -double=>1,
                   -tick => 2);

  $panel->add_track(transcript  => \@gene,
                   -bgcolor    =>  'blue',
                   -fgcolor    =>  'black',
                   -key        => 'Genes',
                   -bump       =>  +1,
                   -height     =>  10,
                   -label      => 1,
                   -description=> 1
                 ) ;

  $panel->add_track(transcript2  => \@CDS,
                    -bgcolor    =>  'cyan',
                    -fgcolor    =>  'black',
                    -key        => 'CDS',
                    -bump       =>  +1,
                    -height     =>  10,
                    -label      => \&cds_label,
                    -description=> \&cds_description,
                 );

  $panel->add_track(generic    => \@tRNAs,
                    -bgcolor   =>  'red',
                    -fgcolor   =>  'black',
                    -key       => 'tRNAs',
                    -bump      =>  +1,
                    -height    =>  8,
                    -label      => 1,
                   );

  my $gd = $panel->gd;
  print $gd->can('png') ? $gd->png : $gd->gif;

  # these are callbacks used to generate nice labels and descriptions for
  # the features...
  sub cds_label {
    my $feature = shift;
    my @notes;
    foreach (qw(product gene)) {
      next unless $feature->has_tag($_);
      @notes = $feature->each_tag_value($_);
      last;
    }
    $notes[0];
  }

  sub cds_description {
    my $feature = shift;
    my @notes = $feature->each_tag_value('notes')
                if $feature->has_tag('notes');
    return unless @notes;
    substr($notes[0],30) = '...' if length $notes[0] > 30;
    $notes[0];
  }

DESCRIPTION

Please see Bio::Graphics::Panel for the full API.

SEE ALSO

Bio::Graphics::Panel, Bio::Graphics::Glyph, Bio::SeqI, Bio::SeqFeatureI, Bio::Das, Bio::DB::GFF::Feature, Ace::Sequence, GD

AUTHOR

Lincoln Stein <lstein@cshl.org>.

Copyright (c) 2001 Cold Spring Harbor Laboratory

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See DISCLAIMER.txt for disclaimers of warranty.