annotate variant_effect_predictor/Bio/Graphics/Glyph/cds.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::cds;
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::segments;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 use Bio::Graphics::Util qw(frame_and_offset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 use Bio::Tools::CodonTable;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 use Bio::Graphics::Glyph::translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 use vars '@ISA';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 @ISA = qw(Bio::Graphics::Glyph::segmented_keyglyph Bio::Graphics::Glyph::translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 my %default_colors = qw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 frame0f cadetblue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 frame1f blue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 frame2f darkblue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 frame0r darkred
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 frame1r red
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 frame2r crimson
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 sub connector { 0 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 sub description {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 return if $self->level;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 return $self->SUPER::description;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 sub default_color {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 my ($self,$key) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 return $self->factory->translate_color($default_colors{$key});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 sub sixframe {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 $self->{sixframe} = $self->option('sixframe')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 unless exists $self->{sixframe};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 return $self->{sixframe};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 sub require_subparts {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 my $rs = $self->option('require_subparts');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 $rs = $self->feature->type eq 'coding' if !defined $rs; # shortcut for the "coding" aggregator
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $rs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 # figure out (in advance) the color of each component
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 sub draw {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 my ($gd,$left,$top) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 my @parts = $self->parts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 @parts = $self if !@parts && $self->level == 0 && !$self->require_subparts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 my $fits = $self->protein_fits;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 # draw the staff (musically speaking)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 my ($x1,$y1,$x2,$y2) = $self->bounds($left,$top);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 my $line_count = $self->sixframe ? 6 : 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 my $height = ($y2-$y1)/$line_count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 my $grid = $self->gridcolor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 for (0..$line_count-1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 my $offset = $y1+$height*$_+1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 $gd->line($x1,$offset,$x2,$offset,$grid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 $self->{cds_part2color} ||= {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 my $fill = $self->bgcolor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 my $strand = $self->feature->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 # figure out the colors of each part
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 # sort minus strand features backward
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 @parts = map { $_->[0] }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 sort { $b->[1] <=> $a->[1] }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 map { [$_, $_->left ] } @parts if $strand < 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 my $translate_table = Bio::Tools::CodonTable->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 for (my $i=0; $i < @parts; $i++) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 my $part = $parts[$i];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 my $feature = $part->feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 my $pos = $strand > 0 ? $feature->start : $feature->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 my $phase = eval {$feature->phase} || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 my ($frame,$offset) = frame_and_offset($pos,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 $feature->strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 -$phase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 my $suffix = $strand < 0 ? 'r' : 'f';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 my $key = "frame$frame$suffix";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 $self->{cds_frame2color}{$key} ||= $self->color($key) || $self->default_color($key) || $fill;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 $part->{cds_partcolor} = $self->{cds_frame2color}{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 $part->{cds_frame} = $frame;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 $part->{cds_offset} = $offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 if ($fits && $part->feature->seq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 # do in silico splicing in order to find the codon that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 # arises from the splice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 my $protein = $part->feature->translate(undef,undef,$phase)->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 $part->{cds_translation} = $protein;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 BLOCK: {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 length $protein >= $feature->length/3 and last BLOCK;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 ($feature->length - $phase) % 3 == 0 and last BLOCK;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $next_part = $parts[$i+1]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 or do {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 $part->{cds_splice_residue} = '?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 last BLOCK; };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my $next_feature = $next_part->feature or last BLOCK;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 my $next_phase = eval {$next_feature->phase} or last BLOCK;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 my $splice_codon = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my $left_of_splice = substr($feature->seq,-$next_phase,$next_phase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my $right_of_splice = substr($next_feature->seq,0,3-$next_phase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 $splice_codon = $left_of_splice . $right_of_splice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 length $splice_codon == 3 or last BLOCK;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my $amino_acid = $translate_table->translate($splice_codon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $part->{cds_splice_residue} = $amino_acid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 $self->Bio::Graphics::Glyph::generic::draw($gd,$left,$top);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 # draw the notes on the staff
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 sub draw_component {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my $gd = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 my ($x1,$y1,$x2,$y2) = $self->bounds(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 my $color = $self->{cds_partcolor} or return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 my $feature = $self->feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 my $frame = $self->{cds_frame};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 my $linecount = $self->sixframe ? 6 : 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 unless ($self->protein_fits) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 my $height = ($y2-$y1)/$linecount;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 my $offset = $y1 + $height*$frame;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $offset += ($y2-$y1)/2 if $self->sixframe && $self->strand < 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 $gd->filledRectangle($x1,$offset,$x2,$offset+2,$color);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 # we get here if there's room to draw the primary sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 my $font = $self->font;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 my $pixels_per_residue = $self->pixels_per_residue;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 my $strand = $feature->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my $y = $y1-1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 $strand *= -1 if $self->{flip};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 # have to remap feature start and end into pixel coords in order to:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 # 1) correctly align the amino acids with the nucleotide seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 # 2) correct for the phase offset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 my $start = $self->map_no_trunc($feature->start + $self->{cds_offset});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 my $stop = $self->map_no_trunc($feature->end + $self->{cds_offset});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 ($start,$stop) = ($stop,$start) if $self->{flip};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 my @residues = split '',$self->{cds_translation};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 push @residues,$self->{cds_splice_residue} if $self->{cds_splice_residue};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 for (my $i=0;$i<@residues;$i++) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 my $x = $strand > 0 ? $start + $i * $pixels_per_residue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 : $stop - $i * $pixels_per_residue;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 next unless ($x >= $x1 && $x <= $x2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 $gd->char($font,$x+1,$y,$residues[$i],$color);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 sub make_key_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 my @gatc = qw(g a t c);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 my $offset = $self->panel->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my $scale = 1/$self->scale; # base pairs/pixel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 my $start = $offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 my $stop = $offset + 100 * $scale;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 my $seq = join('',map{$gatc[rand 4]} (1..1500));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 my $feature =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Bio::Graphics::Feature->new(-start=> $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 -end => $stop,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 -seq => $seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 -name => $self->option('key'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 -strand=> +1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 $feature->add_segment(Bio::Graphics::Feature->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 -start=> $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 -end => $start + ($stop - $start)/2,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 -seq => $seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 -name => $self->option('key'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 -strand=> +1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 ),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Bio::Graphics::Feature->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 -start=> $start + ($stop - $start)/2+1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 -end => $stop,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 -seq => $seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 -name => $self->option('key'),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 -phase=> 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 -strand=> +1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 # never allow our components to bump
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 sub bump {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 return $self->SUPER::bump(@_) if $self->all_callbacks;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 __END__
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 Bio::Graphics::Glyph::cds - The "cds" glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 See L<Bio::Graphics::Panel> and L<Bio::Graphics::Glyph>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 This glyph draws features that are associated with a protein coding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 region. At high magnifications, draws a series of boxes that are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 color-coded to indicate the frame in which the translation occurs. At
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 low magnifications, draws the amino acid sequence of the resulting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 protein. Amino acids that are created by a splice are optionally
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 shown in a distinctive color.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 =head2 OPTIONS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 The following options are standard among all Glyphs. See
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 L<Bio::Graphics::Glyph> for a full explanation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 Option Description Default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 ------ ----------- -------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 -fgcolor Foreground color black
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 -outlinecolor Synonym for -fgcolor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 -bgcolor Background color turquoise
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 -fillcolor Synonym for -bgcolor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 -linewidth Line width 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 -height Height of glyph 10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 -font Glyph font gdSmallFont
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 -connector Connector type 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 -connector_color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Connector color black
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 -label Whether to draw a label 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 -description Whether to draw a description 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 -strand_arrow Whether to indicate 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 strandedness
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 In addition, the alignment glyph recognizes the following
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 glyph-specific options:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Option Description Default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 ------ ----------- -------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 -frame0f Color for first (+) frame background color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 -frame1f Color for second (+) frame background color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 -frame2f Color for third (+) frame background color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 -frame0r Color for first (-) frame background color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 -frame1r Color for second (-) frame background color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 -frame2r Color for third (-) frame background color
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 -gridcolor Color for the "staff" lightslategray
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 -sixframe Draw a six-frame staff 0 (false; usually draws 3 frame)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 -require_subparts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 Don't draw the reading frame 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 unless it is a feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 subpart.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 The -require_subparts option is suggested when rendering spliced
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 transcripts which contain multiple CDS subparts. Otherwise, the glyph
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 will hickup when zoomed way down onto an intron between two CDSs (a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 phantom reading frame will appear). For unspliced sequences, do *not*
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 use -require_subparts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 =head1 SUGGESTED STANZA FOR GENOME BROWSER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Using the "coding" aggregator, this produces a nice gbrowse display.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 [CDS]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 feature = coding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 glyph = cds
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 frame0f = cadetblue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 frame1f = blue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 frame2f = darkblue
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 frame0r = darkred
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 frame1r = red
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 frame2r = crimson
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 description = 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 height = 13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 label = CDS frame
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 key = CDS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 citation = This track shows CDS reading frames.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 =head1 BUGS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 Please report them.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 =head1 SEE ALSO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 L<Bio::Graphics::Panel>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 L<Bio::Graphics::Glyph>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 L<Bio::Graphics::Glyph::arrow>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 L<Bio::Graphics::Glyph::cds>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 L<Bio::Graphics::Glyph::crossbox>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 L<Bio::Graphics::Glyph::diamond>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 L<Bio::Graphics::Glyph::dna>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 L<Bio::Graphics::Glyph::dot>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 L<Bio::Graphics::Glyph::ellipse>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 L<Bio::Graphics::Glyph::extending_arrow>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 L<Bio::Graphics::Glyph::generic>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 L<Bio::Graphics::Glyph::graded_segments>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 L<Bio::Graphics::Glyph::heterogeneous_segments>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 L<Bio::Graphics::Glyph::line>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 L<Bio::Graphics::Glyph::pinsertion>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 L<Bio::Graphics::Glyph::primers>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 L<Bio::Graphics::Glyph::rndrect>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 L<Bio::Graphics::Glyph::segments>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 L<Bio::Graphics::Glyph::ruler_arrow>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 L<Bio::Graphics::Glyph::toomany>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 L<Bio::Graphics::Glyph::transcript>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 L<Bio::Graphics::Glyph::transcript2>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 L<Bio::Graphics::Glyph::translation>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 L<Bio::Graphics::Glyph::triangle>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 L<Bio::DB::GFF>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 L<Bio::SeqI>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 L<Bio::SeqFeatureI>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 L<Bio::Das>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 L<GD>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 Lincoln Stein E<lt>lstein@cshl.orgE<gt>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 Copyright (c) 2001 Cold Spring Harbor Laboratory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 This library is free software; you can redistribute it and/or modify
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 it under the same terms as Perl itself. See DISCLAIMER.txt for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 disclaimers of warranty.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 =cut