annotate variant_effect_predictor/Bio/Graphics/Glyph/translation.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 package Bio::Graphics::Glyph::translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 use Bio::Graphics::Glyph::generic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 use Bio::Graphics::Util qw(frame_and_offset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 use vars '@ISA';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 @ISA = qw(Bio::Graphics::Glyph::generic);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 my %default_colors = qw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 frame0f cadetblue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 frame1f blue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 frame2f darkblue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 frame0r darkred
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 frame1r red
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 frame2r crimson
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 # turn off description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 sub description { 0 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # turn off label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 # sub label { 1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 sub default_color {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 my ($self,$key) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 return $self->factory->translate_color($default_colors{$key});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 sub height {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 my $font = $self->font;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 my $lines = $self->translation_type eq '3frame' ? 3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 : $self->translation_type eq '6frame' ? 6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 : 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 return $self->protein_fits ? $lines*$font->height
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 : $self->SUPER::height;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 sub pixels_per_base {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 return $self->scale;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 sub pixels_per_residue {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 return $self->scale * 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 sub gridcolor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 my $color = $self->option('gridcolor') || 'lightgrey';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 $self->factory->translate_color($color);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 sub protein_fits {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 my $pixels_per_base = $self->pixels_per_residue;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 my $font = $self->font;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 my $font_width = $font->width;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 return $pixels_per_base >= $font_width;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 sub translation_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 return $self->option('translation') || '1frame';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 sub arrow_height {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 $self->option('arrow_height') || 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 sub show_stop_codons {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 my $show = $self->option('stop_codons');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 return $show if defined $show;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 sub show_start_codons {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 my $show = $self->option('start_codons');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 return $show if defined $show;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 sub strand {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 return $self->option('strand') || '+1';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 sub draw_component {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 my $gd = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 my ($x1,$y1,$x2,$y2) = $self->bounds(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 my $type = $self->translation_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my $strand = $self->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 my @strands = $type eq '6frame' ? (1,-1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 : $strand > 0 ? (1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 : -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 my @phase = (0,2,1); # looks weird, but gives correct effect
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 for my $s (@strands) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 for (my $i=0; $i < @phase; $i++) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 $self->draw_frame($self->feature,$s,$i,$phase[$i],$gd,$x1,$y1,$x2,$y2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 sub draw_frame {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 my ($feature,$strand,$base_offset,$phase,$gd,$x1,$y1,$x2,$y2) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 return unless $feature->seq; # no sequence, arggh.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 my ($seq,$pos) = $strand < 0 ? ($feature->revcom,$feature->end)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 : ($feature,$feature->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 my ($frame,$offset) = frame_and_offset($pos,$strand,$phase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 ($strand >= 0 ? $x1 : $x2) += $self->pixels_per_base * $offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my $lh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 if ($self->translation_type eq '6frame') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $lh = $self->height / 6;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 $y1 += $lh * $frame;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 $y1 += $self->height/2 if $strand < 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $lh = $self->height / 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 $y1 += $lh * $frame;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 $y2 = $y1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 my $protein = $seq->translate(undef,undef,$base_offset)->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 my $k = $strand>=0 ? 'f' : 'r';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 my $color = $self->color("frame$frame$k") ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 $self->color("frame$frame") ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 $self->default_color("frame$frame$k") || $self->fgcolor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 if ($self->protein_fits) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 $self->draw_protein(\$protein,$strand,$color,$gd,$x1,$y1,$x2,$y2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $self->draw_orfs(\$protein,$strand,$color,$gd,$x1,$y1,$x2,$y2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 sub draw_protein {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my ($protein,$strand,$color,$gd,$x1,$y1,$x2,$y2) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my $pixels_per_base = $self->pixels_per_base;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 my $font = $self->font;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 my @residues = split '',$$protein;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 for (my $i=0;$i<@residues;$i++) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my $x = $strand > 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 ? $x1 + 3 * $i * $pixels_per_base
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 : $x2 - 3 * $i * $pixels_per_base;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 next if $x+1 < $x1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 last if $x > $x2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $gd->char($font,$x,$y1,$residues[$i],$color);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 sub draw_orfs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 my ($protein,$strand,$color,$gd,$x1,$y1,$x2,$y2) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 my $pixels_per_base = $self->pixels_per_base * 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $y1++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my $gcolor = $self->gridcolor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 $gd->line($x1,$y1,$x2,$y1,$gcolor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 if ($self->show_stop_codons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 my $stops = $self->find_codons($protein,'*');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 for my $stop (@$stops) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 my $pos = $strand > 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 ? $x1 + $stop * $pixels_per_base
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 : $x2 - $stop * $pixels_per_base;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 next if $pos+1 < $x1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 last if $pos > $x2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 $gd->line($pos,$y1-2,$pos,$y1+2,$color);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 my $arrowhead_height = $self->arrow_height;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 if ($self->show_start_codons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 my $starts = $self->find_codons($protein,'M');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 for my $start (@$starts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 my $pos = $strand > 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 ? $x1 + $start * $pixels_per_base
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 : $x2 - $start * $pixels_per_base;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 next if $pos+1 < $x1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 last if $pos > $x2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 # little arrowheads at the start codons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $strand > 0 ? $self->arrowhead($gd,$pos-$arrowhead_height,$y1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $arrowhead_height,+1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 : $self->arrowhead($gd,$pos+$arrowhead_height,$y1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $arrowhead_height,-1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $strand > 0 ? $self->arrowhead($gd,$x2-1,$y1,3,+1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 : $self->arrowhead($gd,$x1,$y1,3,-1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 sub find_codons {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my $protein = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my $codon = shift || '*';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 my $pos = -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 my @stops;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 while ( ($pos = index($$protein,$codon,$pos+1)) >= 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 push @stops,$pos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 \@stops;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 sub make_key_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 my @gatc = qw(g a t c);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 my $offset = $self->panel->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $scale = 1/$self->scale; # base pairs/pixel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 my $start = $offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my $stop = $offset + 100 * $scale;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 my $seq = join('',map{$gatc[rand 4]} (1..500));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 my $feature =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Bio::Graphics::Feature->new(-start=> $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 -end => $stop,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 -seq => $seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 -name => $self->option('key')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 __END__
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Bio::Graphics::Glyph::translation - The "6-frame translation" glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 See L<Bio::Graphics::Panel> and L<Bio::Graphics::Glyph>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 This glyph draws the conceptual translation of DNA sequences. At high
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 magnifications, it simply draws lines indicating open reading frames.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 At low magnifications, it draws a conceptual protein translation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 Options can be used to set 1-frame, 3-frame or 6-frame translations.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 =head2 OPTIONS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 The following options are standard among all Glyphs. See
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 L<Bio::Graphics::Glyph> for a full explanation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Option Description Default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 ------ ----------- -------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 -fgcolor Foreground color black
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 -outlinecolor Synonym for -fgcolor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 -bgcolor Background color turquoise
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 -fillcolor Synonym for -bgcolor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 -linewidth Line width 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 -height Height of glyph 10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 -font Glyph font gdSmallFont
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 -connector Connector type 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 -connector_color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Connector color black
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 -label Whether to draw a label 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 -description Whether to draw a description 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 In addition to the common options, the following glyph-specific
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 options are recognized:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Option Description Default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 ------ ----------- -------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 -translation Type of translation to 1frame
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 perform. One of "1frame",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 "3frame", or "6frame"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 -strand Forward (+1) or reverse (-1) +1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 translation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 -frame0 Color for the first frame fgcolor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 -frame1 Color for the second frame fgcolor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 -frame2 Color for the third frame fgcolor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 -gridcolor Color for the horizontal lightgrey
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 lines of the reading frames
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 -start_codons Draw little arrowheads 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 indicating start codons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 -stop_codons Draw little vertical ticks 1 (true)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 indicating stop codons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 -arrow_height Height of the start codon 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 arrowheads
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 =head1 SUGGESTED STANZA FOR GENOME BROWSER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 This produces a nice gbrowse display in which the DNA/GC Content glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 is sandwiched between the forward and reverse three-frame
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 translations. The frames are color-coordinated with the example
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 configuration for the "cds" glyph.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 [TranslationF]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 glyph = translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 global feature = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 frame0 = cadetblue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 frame1 = blue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 frame2 = darkblue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 height = 20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 fgcolor = purple
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 strand = +1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 translation = 3frame
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 key = 3-frame translation (forward)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 [DNA/GC Content]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 glyph = dna
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 global feature = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 height = 40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 do_gc = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 fgcolor = red
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 axis_color = blue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 [TranslationR]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 glyph = translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 global feature = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 frame0 = darkred
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 frame1 = red
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 frame2 = crimson
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 height = 20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 fgcolor = blue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 strand = -1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 translation = 3frame
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 key = 3-frame translation (reverse)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 =head1 BUGS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Please report them.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 L<Bio::Graphics::Panel>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 L<Bio::Graphics::Glyph>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 L<Bio::Graphics::Glyph::arrow>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 L<Bio::Graphics::Glyph::cds>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 L<Bio::Graphics::Glyph::crossbox>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 L<Bio::Graphics::Glyph::diamond>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 L<Bio::Graphics::Glyph::dna>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 L<Bio::Graphics::Glyph::dot>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 L<Bio::Graphics::Glyph::ellipse>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 L<Bio::Graphics::Glyph::extending_arrow>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 L<Bio::Graphics::Glyph::generic>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 L<Bio::Graphics::Glyph::graded_segments>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 L<Bio::Graphics::Glyph::heterogeneous_segments>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 L<Bio::Graphics::Glyph::line>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 L<Bio::Graphics::Glyph::pinsertion>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 L<Bio::Graphics::Glyph::primers>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 L<Bio::Graphics::Glyph::rndrect>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 L<Bio::Graphics::Glyph::segments>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 L<Bio::Graphics::Glyph::ruler_arrow>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 L<Bio::Graphics::Glyph::toomany>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 L<Bio::Graphics::Glyph::transcript>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 L<Bio::Graphics::Glyph::transcript2>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 L<Bio::Graphics::Glyph::translation>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 L<Bio::Graphics::Glyph::triangle>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 L<Bio::DB::GFF>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 L<Bio::SeqI>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 L<Bio::SeqFeatureI>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 L<Bio::Das>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 L<GD>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 Lincoln Stein E<lt>lstein@cshl.orgE<gt>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Copyright (c) 2001 Cold Spring Harbor Laboratory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 This library is free software; you can redistribute it and/or modify
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 it under the same terms as Perl itself. See DISCLAIMER.txt for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 disclaimers of warranty.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 =cut