Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/Graphics/Glyph/transcript.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1f6dce3d34e0 |
---|---|
1 package Bio::Graphics::Glyph::transcript; | |
2 # $Id: transcript.pm,v 1.12.2.1 2003/07/05 00:32:04 lstein Exp $ | |
3 | |
4 use strict; | |
5 use Bio::Graphics::Glyph::segments; | |
6 use vars '@ISA'; | |
7 @ISA = qw( Bio::Graphics::Glyph::segments); | |
8 | |
9 sub pad_left { | |
10 my $self = shift; | |
11 my $pad = $self->SUPER::pad_left; | |
12 return $pad if $self->{level} > 0; | |
13 my $strand = $self->feature->strand; | |
14 return $pad unless defined $strand && $strand < 0; | |
15 return $self->arrow_length > $pad ? $self->arrow_length : $pad; | |
16 } | |
17 | |
18 sub pad_right { | |
19 my $self = shift; | |
20 my $pad = $self->SUPER::pad_right; | |
21 return $pad if $self->{level} > 0; | |
22 my $strand = $self->feature->strand; | |
23 return $pad unless defined($strand) && $strand > 0; | |
24 return $self->arrow_length > $pad ? $self->arrow_length : $pad; | |
25 } | |
26 | |
27 sub draw_component { | |
28 my $self = shift; | |
29 return unless $self->level > 0; | |
30 $self->SUPER::draw_component(@_); | |
31 } | |
32 | |
33 sub draw_connectors { | |
34 my $self = shift; | |
35 my $gd = shift; | |
36 my ($left,$top) = @_; | |
37 $self->SUPER::draw_connectors($gd,$left,$top); | |
38 my @parts = $self->parts; | |
39 | |
40 # H'mmm. No parts. Must be in an intron, so draw intron | |
41 # spanning entire range | |
42 if (!@parts) { | |
43 my($x1,$y1,$x2,$y2) = $self->bounds(0,0); | |
44 $self->_connector($gd,$left,$top,$x1,$y1,$x1,$y2,$x2,$y1,$x2,$y2); | |
45 @parts = $self; | |
46 } | |
47 | |
48 # flip argument makes this confusing | |
49 # certainly there's a simpler way to express this idea | |
50 my $strand = $self->feature->strand; | |
51 my ($first,$last) = ($parts[0],$parts[-1]); | |
52 ($first,$last) = ($last,$first) if exists $self->{flip}; | |
53 | |
54 if ($strand >= 0) { | |
55 my($x1,$y1,$x2,$y2) = $last->bounds(@_); | |
56 my $center = ($y2+$y1)/2; | |
57 $self->{flip} ? | |
58 $self->arrow($gd,$x1,$x1-$self->arrow_length,$center) | |
59 : | |
60 $self->arrow($gd,$x2,$x2+$self->arrow_length,$center); | |
61 } else { | |
62 my($x1,$y1,$x2,$y2) = $first->bounds(@_); | |
63 my $center = ($y2+$y1)/2; | |
64 $self->{flip } ? | |
65 $self->arrow($gd,$x2,$x2+$self->arrow_length,$center) | |
66 : | |
67 $self->arrow($gd,$x1,$x1 - $self->arrow_length,$center); | |
68 } | |
69 } | |
70 | |
71 sub arrow_length { | |
72 my $self = shift; | |
73 return $self->option('arrow_length') || 8; | |
74 } | |
75 | |
76 # override option() for force the "hat" type of connector | |
77 sub connector { | |
78 my $self = shift; | |
79 return $self->SUPER::connector(@_) if $self->all_callbacks; | |
80 return ($self->option('connector') || 'hat'); | |
81 } | |
82 | |
83 | |
84 1; | |
85 | |
86 __END__ | |
87 | |
88 =head1 NAME | |
89 | |
90 Bio::Graphics::Glyph::transcript - The "transcript" glyph | |
91 | |
92 =head1 SYNOPSIS | |
93 | |
94 See L<Bio::Graphics::Panel> and L<Bio::Graphics::Glyph>. | |
95 | |
96 =head1 DESCRIPTION | |
97 | |
98 This glyph is used for drawing transcripts. It is essentially a | |
99 "segments" glyph in which the connecting segments are hats. The | |
100 direction of the transcript is indicated by an arrow attached to the | |
101 end of the glyph. | |
102 | |
103 =head2 OPTIONS | |
104 | |
105 The following options are standard among all Glyphs. See | |
106 L<Bio::Graphics::Glyph> for a full explanation. | |
107 | |
108 Option Description Default | |
109 ------ ----------- ------- | |
110 | |
111 -fgcolor Foreground color black | |
112 | |
113 -outlinecolor Synonym for -fgcolor | |
114 | |
115 -bgcolor Background color turquoise | |
116 | |
117 -fillcolor Synonym for -bgcolor | |
118 | |
119 -linewidth Line width 1 | |
120 | |
121 -height Height of glyph 10 | |
122 | |
123 -font Glyph font gdSmallFont | |
124 | |
125 -connector Connector type 0 (false) | |
126 | |
127 -connector_color | |
128 Connector color black | |
129 | |
130 -label Whether to draw a label 0 (false) | |
131 | |
132 -description Whether to draw a description 0 (false) | |
133 | |
134 In addition, the alignment glyph recognizes the following | |
135 glyph-specific options: | |
136 | |
137 Option Description Default | |
138 ------ ----------- ------- | |
139 | |
140 -arrow_length Length of the directional 8 | |
141 arrow. | |
142 | |
143 =head1 BUGS | |
144 | |
145 Please report them. | |
146 | |
147 =head1 SEE ALSO | |
148 | |
149 | |
150 L<Bio::Graphics::Panel>, | |
151 L<Bio::Graphics::Glyph>, | |
152 L<Bio::Graphics::Glyph::arrow>, | |
153 L<Bio::Graphics::Glyph::cds>, | |
154 L<Bio::Graphics::Glyph::crossbox>, | |
155 L<Bio::Graphics::Glyph::diamond>, | |
156 L<Bio::Graphics::Glyph::dna>, | |
157 L<Bio::Graphics::Glyph::dot>, | |
158 L<Bio::Graphics::Glyph::ellipse>, | |
159 L<Bio::Graphics::Glyph::extending_arrow>, | |
160 L<Bio::Graphics::Glyph::generic>, | |
161 L<Bio::Graphics::Glyph::graded_segments>, | |
162 L<Bio::Graphics::Glyph::heterogeneous_segments>, | |
163 L<Bio::Graphics::Glyph::line>, | |
164 L<Bio::Graphics::Glyph::pinsertion>, | |
165 L<Bio::Graphics::Glyph::primers>, | |
166 L<Bio::Graphics::Glyph::rndrect>, | |
167 L<Bio::Graphics::Glyph::segments>, | |
168 L<Bio::Graphics::Glyph::ruler_arrow>, | |
169 L<Bio::Graphics::Glyph::toomany>, | |
170 L<Bio::Graphics::Glyph::transcript>, | |
171 L<Bio::Graphics::Glyph::transcript2>, | |
172 L<Bio::Graphics::Glyph::translation>, | |
173 L<Bio::Graphics::Glyph::triangle>, | |
174 L<Bio::DB::GFF>, | |
175 L<Bio::SeqI>, | |
176 L<Bio::SeqFeatureI>, | |
177 L<Bio::Das>, | |
178 L<GD> | |
179 | |
180 =head1 AUTHOR | |
181 | |
182 Lincoln Stein E<lt>lstein@cshl.orgE<gt> | |
183 | |
184 Copyright (c) 2001 Cold Spring Harbor Laboratory | |
185 | |
186 This library is free software; you can redistribute it and/or modify | |
187 it under the same terms as Perl itself. See DISCLAIMER.txt for | |
188 disclaimers of warranty. | |
189 | |
190 =cut |