annotate variant_effect_predictor/Bio/Graphics/Glyph/Factory.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Bio::Graphics::Glyph::Factory - Factory for Bio::Graphics::Glyph objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 See L<Bio::Graphics::Panel>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 This class is used internally by Bio::Graphics to generate new Glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 objects by combining a list of features with the user's desired
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 configuration. It is intended to be used internally by Bio::Graphics.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =head1 AUTHOR - Lincoln Stein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 Email - lstein@cshl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 L<Bio::Graphics::Panel>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 methods. Internal methods are usually preceded with an "_"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 (underscore).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 package Bio::Graphics::Glyph::Factory;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 use Carp qw(:DEFAULT cluck);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 use GD;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 my %LOADED_GLYPHS = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 my %GENERIC_OPTIONS = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 bgcolor => 'turquoise',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 fgcolor => 'black',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 fontcolor => 'black',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 font2color => 'turquoise',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 height => 8,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 font => gdSmallFont,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 bump => +1, # bump by default (perhaps a mistake?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Usage : $f = Bio::Graphics::Glyph::Factory->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 -stylesheet => $stylesheet,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 -glyph_map => $glyph_map,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 -options => $options);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Function : create a new Bio::Graphics::Glyph::Factory object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 Returns : the new object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 Args : $stylesheet is a Bio::Das::Stylesheet object that can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 convert Bio::Das feature objects into glyph names and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 associated options.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 $glyph_map is a hash that maps primary tags to glyph names.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 $options is a hash that maps option names to their values.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 my $panel = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 my %args = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 my $stylesheet = $args{-stylesheet}; # optional, for Bio::Das compatibility
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 my $map = $args{-map}; # map type name to glyph name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 my $options = $args{-options}; # map type name to glyph options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 return bless {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 stylesheet => $stylesheet,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 glyph_map => $map,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 options => $options,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 panel => $panel,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 },$class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 =head2 clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Title : clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Usage : $f2 = $f->clone
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Function : Deep copy of a factory object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Returns : a deep copy of the factory object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 sub clone {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my %new = %$self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my $new = bless \%new,ref($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 =head2 stylesheet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 Title : stylesheet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Usage : $stylesheet = $f->stylesheet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 Function : accessor for stylesheet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 Returns : a Bio::Das::Stylesheet object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 sub stylesheet { shift->{stylesheet} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 =head2 glyph_map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Title : glyph_map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 Usage : $map = $f->glyph_map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Function : accessor for the glyph map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Returns : a hash mapping primary tags to glyphs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 sub glyph_map { shift->{glyph_map} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 =head2 option_map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Title : option_map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Usage : $map = $f->option_map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 Function : accessor for the option map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 Returns : a hash mapping option names to values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 sub option_map { shift->{options} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 =head2 global_opts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Title : global_opts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Usage : $map = $f->global_opts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Function : accessor for global options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Returns : a hash mapping option names to values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 This returns a set of defaults for option values.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 sub global_opts{ shift->{global_opts} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 =head2 panel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Title : panel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Usage : $panel = $f->panel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Function : accessor for Bio::Graphics::Panel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Returns : a Bio::Graphics::Panel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 This returns the panel with which the factory is associated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 sub panel { shift->{panel} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =head2 scale
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Title : scale
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Usage : $scale = $f->scale
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Function : accessor for the scale
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 Returns : a floating point number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 This returns the scale, in pixels/bp for glyphs constructed by this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 factory.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 sub scale { shift->{panel}->scale }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 =head2 font
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Title : font
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Usage : $font = $f->font
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Function : accessor for the font
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Returns : a font name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 This returns a GD font name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 sub font {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 my $glyph = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 $self->option($glyph,'font') || $self->{font};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 =head2 map_pt
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Title : map_pt
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Usage : @pixel_positions = $f->map_pt(@bp_positions)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Function : map bp positions to pixel positions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Returns : a list of pixel positions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Args : a list of bp positions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 The real work is done by the panel, but factory subclasses can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 override if desired.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 sub map_pt {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 my @result = $self->panel->map_pt(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 return wantarray ? @result : $result[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 =head2 map_no_trunc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Title : map_no_trunc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Usage : @pixel_positions = $f->map_no_trunc(@bp_positions)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Function : map bp positions to pixel positions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Returns : a list of pixel positions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Args : a list of bp positions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 Same as map_pt(), but it will NOT clip pixel positions to be within
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 the drawing frame.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 sub map_no_trunc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 my @result = $self->panel->map_no_trunc(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 return wantarray ? @result : $result[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 =head2 translate_color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 Title : translate_color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 Usage : $index = $f->translate_color($color_name)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Function : translate symbolic color names into GD indexes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Returns : an integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Args : a color name in format "green" or "#00FF00"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 The real work is done by the panel, but factory subclasses can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 override if desired.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 sub translate_color {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my $color_name = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $self->panel->translate_color($color_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 =head2 glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Title : glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Usage : @glyphs = $f->glyph($level,$feature1,$feature2...)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 Function : transform features into glyphs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 Returns : a list of Bio::Graphics::Glyph objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Args : a feature "level", followed by a list of FeatureI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 The level is used to track the level of nesting of features that have
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 subfeatures.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 # create a glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 sub make_glyph {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 my $level = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 my @result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 my $panel = $self->panel;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 my ($leftmost,$rightmost) = ($panel->left,$panel->right);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 my $flip = $panel->flip;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 for my $f (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 my $type = $self->feature_to_glyph($f);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 my $glyphclass = 'Bio::Graphics::Glyph';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 $type ||= 'generic';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 $glyphclass .= "\:\:\L$type";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 unless ($LOADED_GLYPHS{$glyphclass}++) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 carp("the requested glyph class, ``$type'' is not available: $@")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 unless (eval "require $glyphclass");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 my $glyph = $glyphclass->new(-feature => $f,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 -factory => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 -flip => $flip,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 -level => $level);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 # this is removing glyphs that are not onscreen at all.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 # But never remove tracks!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 push @result,$glyph if $type eq 'track'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 || ($glyph->{left} + $glyph->{width} > $leftmost && $glyph->{left} < $rightmost);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 return wantarray ? @result : $result[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 =head2 feature_to_glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 Title : feature_to_glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 Usage : $glyph_name = $f->feature_to_glyph($feature)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 Function : choose the glyph name given a feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 Returns : a glyph name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Args : a Bio::Seq::FeatureI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 sub feature_to_glyph {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 my $feature = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 return scalar $self->{stylesheet}->glyph($feature) if $self->{stylesheet};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 my $map = $self->glyph_map or return 'generic';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 if (ref($map) eq 'CODE') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 my $val = eval {$map->($feature)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 warn $@ if $@;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 return $val || 'generic';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 return $map->{$feature->primary_tag} || 'generic';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 =head2 set_option
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Title : set_option
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Usage : $f->set_option($option_name=>$option_value)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Function : set or change an option
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Returns : nothing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Args : a name/value pair
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 sub set_option {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 my ($option_name,$option_value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 $self->{overriding_options}{lc $option_name} = $option_value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 # options:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 # the overriding_options hash has precedence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 # ...followed by the option_map
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 # ...followed by the stylesheet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 # ...followed by generic options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 sub option {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 my ($glyph,$option_name,$partno,$total_parts) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 return unless defined $option_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 $option_name = lc $option_name; # canonicalize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 return $self->{overriding_options}{$option_name}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 if exists $self->{overriding_options} && exists $self->{overriding_options}{$option_name};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 if (my $map = $self->option_map) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 if (defined(my $value = $map->{$option_name})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 my $feature = $glyph->feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 return $value unless ref $value eq 'CODE';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 return unless $feature->isa('Bio::SeqFeatureI');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 my $val = eval { $value->($feature,$option_name,$partno,$total_parts,$glyph)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 warn $@ if $@;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 return defined $val && $val eq '*default*' ? $GENERIC_OPTIONS{$option_name} : $val;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 if (my $ss = $self->stylesheet) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 my($glyph,%options) = $ss->glyph($glyph->feature);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my $value = $options{$option_name};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 return $value if defined $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 return $GENERIC_OPTIONS{$option_name};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 =head2 options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 Title : options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 Usage : @option_names = $f->options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 Function : return all configured option names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Returns : a list of option names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 Status : Internal to Bio::Graphics
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 # return names of all the options in the option hashes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 sub options {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my %options;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 if (my $map = $self->option_map) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 $options{lc($_)}++ foreach keys %$map;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 $options{lc($_)}++ foreach keys %GENERIC_OPTIONS;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 return keys %options;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 1;