0
|
1 package Bio::Graphics;
|
|
2
|
|
3 use Bio::Graphics::Panel;
|
|
4 use strict;
|
|
5
|
|
6 use vars '$VERSION';
|
|
7 $VERSION = 1.2003;
|
|
8
|
|
9 1;
|
|
10
|
|
11 =head1 NAME
|
|
12
|
|
13 Bio::Graphics - Generate GD images of Bio::Seq objects
|
|
14
|
|
15 =head1 SYNOPSIS
|
|
16
|
|
17 # This script generates a PNG picture of a 10K region containing a
|
|
18 # set of red features and a set of blue features. Call it like this:
|
|
19 # red_and_blue.pl > redblue.png
|
|
20 # you can now view the picture with your favorite image application
|
|
21
|
|
22
|
|
23 # This script parses a GenBank or EMBL file named on the command
|
|
24 # line and produces a PNG rendering of it. Call it like this:
|
|
25 # render.pl my_file.embl | display -
|
|
26
|
|
27 use strict;
|
|
28 use Bio::Graphics;
|
|
29 use Bio::SeqIO;
|
|
30
|
|
31 my $file = shift or die "provide a sequence file as the argument";
|
|
32 my $io = Bio::SeqIO->new(-file=>$file) or die "could not create Bio::SeqIO";
|
|
33 my $seq = $io->next_seq or die "could not find a sequence in the file";
|
|
34
|
|
35 my @features = $seq->all_SeqFeatures;
|
|
36
|
|
37 # sort features by their primary tags
|
|
38 my %sorted_features;
|
|
39 for my $f (@features) {
|
|
40 my $tag = $f->primary_tag;
|
|
41 push @{$sorted_features{$tag}},$f;
|
|
42 }
|
|
43
|
|
44 my $wholeseq = Bio::SeqFeature::Generic->new(-start=>1,-end=>$seq->length);
|
|
45
|
|
46 my $panel = Bio::Graphics::Panel->new(
|
|
47 -length => $seq->length,
|
|
48 -key_style => 'between',
|
|
49 -width => 800,
|
|
50 -pad_left => 10,
|
|
51 -pad_right => 10,
|
|
52 );
|
|
53 $panel->add_track($wholeseq,
|
|
54 -glyph => 'arrow',
|
|
55 -bump => 0,
|
|
56 -double=>1,
|
|
57 -tick => 2);
|
|
58
|
|
59 $panel->add_track($seq,
|
|
60 -glyph => 'generic',
|
|
61 -bgcolor => 'blue',
|
|
62 -label => 1,
|
|
63 );
|
|
64
|
|
65 # general case
|
|
66 my @colors = qw(cyan orange blue purple green chartreuse magenta yellow aqua);
|
|
67 my $idx = 0;
|
|
68 for my $tag (sort keys %sorted_features) {
|
|
69 my $features = $sorted_features{$tag};
|
|
70 $panel->add_track($features,
|
|
71 -glyph => 'generic',
|
|
72 -bgcolor => $colors[$idx++ % @colors],
|
|
73 -fgcolor => 'black',
|
|
74 -font2color => 'red',
|
|
75 -key => "${tag}s",
|
|
76 -bump => +1,
|
|
77 -height => 8,
|
|
78 -label => 1,
|
|
79 -description => 1,
|
|
80 );
|
|
81 }
|
|
82
|
|
83 print $panel->png;
|
|
84 exit 0;
|
|
85
|
|
86 =head1 DESCRIPTION
|
|
87
|
|
88 Please see L<Bio::Graphics::Panel> for the full interface.
|
|
89
|
|
90 =head1 SEE ALSO
|
|
91
|
|
92 L<Bio::Graphics::Panel>,
|
|
93 L<Bio::Graphics::Glyph>,
|
|
94 L<Bio::SeqI>,
|
|
95 L<Bio::SeqFeatureI>,
|
|
96 L<Bio::Das>,
|
|
97 L<Bio::DB::GFF::Feature>,
|
|
98 L<Ace::Sequence>,
|
|
99 L<GD>
|
|
100
|
|
101 =head1 AUTHOR
|
|
102
|
|
103 Lincoln Stein E<lt>lstein@cshl.orgE<gt>.
|
|
104
|
|
105 Copyright (c) 2001 Cold Spring Harbor Laboratory
|
|
106
|
|
107 This library is free software; you can redistribute it and/or modify
|
|
108 it under the same terms as Perl itself. See DISCLAIMER.txt for
|
|
109 disclaimers of warranty.
|
|
110
|
|
111 =cut
|
|
112
|