annotate variant_effect_predictor/Bio/SeqFeature/Gene/GeneStructure.pm @ 0:21066c0abaf5 draft

Uploaded
author willmclaren
date Fri, 03 Aug 2012 10:04:48 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 # $Id: GeneStructure.pm,v 1.14 2002/10/22 07:38:41 lapp Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 # BioPerl module for Bio::SeqFeature::Gene::GeneStructure
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # Cared for by Hilmar Lapp <hlapp@gmx.net>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 # Copyright Hilmar Lapp
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 # POD documentation - main docs before the code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 Bio::SeqFeature::Gene::GeneStructure - A feature representing an arbitrarily
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 complex structure of a gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 See documentation of methods.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 A feature representing a gene structure. As of now, a gene structure
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 really is only a collection of transcripts. See
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 Bio::SeqFeature::Gene::TranscriptI (interface) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 Bio::SeqFeature::Gene::Transcript (implementation) for the features of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 such objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 =head1 FEEDBACK
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 =head2 Mailing Lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 User feedback is an integral part of the evolution of this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 and other Bioperl modules. Send your comments and suggestions preferably
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 to one of the Bioperl mailing lists.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 Your participation is much appreciated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 bioperl-l@bioperl.org - General discussion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 http://bio.perl.org/MailList.html - About the mailing lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 =head2 Reporting Bugs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 Report bugs to the Bioperl bug tracking system to help us keep track
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 the bugs and their resolution.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 Bug reports can be submitted via email or the web:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 bioperl-bugs@bio.perl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 http://bugzilla.bioperl.org/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 =head1 AUTHOR - Hilmar Lapp
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 Email hlapp@gmx.net
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 Describe contact details here
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 # Let the code begin...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 package Bio::SeqFeature::Gene::GeneStructure;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 use Bio::SeqFeature::Generic;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 use Bio::SeqFeature::Gene::GeneStructureI;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 @ISA = qw(Bio::SeqFeature::Generic Bio::SeqFeature::Gene::GeneStructureI);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 my ($caller, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 my $self = $caller->SUPER::new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 my ($primary) =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 $self->_rearrange([qw(PRIMARY
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 )],@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 $primary = 'genestructure' unless $primary;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 $self->primary_tag($primary);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 $self->strand(0) if(! defined($self->strand()));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 =head2 transcripts
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 Title : transcripts
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 Usage : @transcripts = $gene->transcripts();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 Function: Get the transcripts of this gene structure. Many gene structures
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 will have only one transcript.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 Returns : An array of Bio::SeqFeature::Gene::TranscriptI implementing objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 sub transcripts {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 return () unless exists($self->{'_transcripts'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 return @{$self->{'_transcripts'}};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 =head2 add_transcript
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 Title : add_transcript()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 Usage : $gene->add_transcript($transcript);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 Function: Add a transcript to this gene structure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 Returns :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 Args : A Bio::SeqFeature::Gene::TranscriptI implementing object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 sub add_transcript {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 my ($self, $fea) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 if(!$fea || ! $fea->isa('Bio::SeqFeature::Gene::TranscriptI') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 $self->throw("$fea does not implement Bio::SeqFeature::Gene::TranscriptI");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 if(! exists($self->{'_transcripts'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 $self->{'_transcripts'} = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 $self->_expand_region($fea);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 $fea->parent($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 push(@{$self->{'_transcripts'}}, $fea);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 =head2 flush_transcripts
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 Title : flush_transcripts()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 Usage : $gene->flush_transcripts();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 Function: Remove all transcripts from this gene structure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 Returns :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 sub flush_transcripts {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 if(exists($self->{'_transcripts'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 delete($self->{'_transcripts'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 =head2 add_transcript_as_features
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 Title : add_transcript_as_features
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 Usage : $gene->add_transcript_as_features(@featurelist);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 Function: take a list of Bio::SeqFeatureI objects and turn them into a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 Bio::SeqFeature::Gene::Transcript object. Add that transcript to the gene.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 Returns : nothing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 Args : a list of Bio::SeqFeatureI compliant objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 sub add_transcript_as_features{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 my ($self,@features) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 my $transcript=Bio::SeqFeature::Gene::Transcript->new;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 foreach my $fea (@features) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 if ($fea->primary_tag =~ /utr/i) { #UTR / utr/ 3' utr / utr5 etc.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 $transcript->add_utr($fea);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 } elsif ($fea->primary_tag =~ /promot/i) { #allow for spelling differences
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 $transcript->add_promoter($fea);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 } elsif ($fea->primary_tag =~ /poly.*A/i) { #polyA, POLY_A, etc.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 $transcript->poly_A_site($fea);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 } else { #assume the rest are exons
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 $transcript->add_exon($fea);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 $self->add_transcript($transcript);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 =head2 promoters
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 Title : promoters
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Usage : @prom_sites = $gene->promoters();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 Function: Get the promoter features of this gene structure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 This method basically merges the promoters returned by transcripts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 Note that OO-modeling of regulatory elements is not stable yet.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 This means that this method might change or even disappear in a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 future release. Be aware of this if you use it.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 Returns : An array of Bio::SeqFeatureI implementing objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 sub promoters {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 my @transcripts = $self->transcripts();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 my @feas = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 foreach my $tr (@transcripts) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 push(@feas, $tr->promoters());
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 return @feas;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 =head2 exons
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 Title : exons()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 Usage : @exons = $gene->exons();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 @inital_exons = $gene->exons('Initial');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 Function: Get all exon features or all exons of a specified type of this gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 structure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 Exon type is treated as a case-insensitive regular expression and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 optional. For consistency, use only the following types:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 initial, internal, terminal, utr, utr5prime, and utr3prime.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 A special and virtual type is 'coding', which refers to all types
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 except utr.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 This method basically merges the exons returned by transcripts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 Returns : An array of Bio::SeqFeature::Gene::ExonI implementing objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 Args : An optional string specifying the type of exon.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 sub exons {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 my ($self, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 my @transcripts = $self->transcripts();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 my @feas = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 foreach my $tr (@transcripts) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 push(@feas, $tr->exons(@args));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 return @feas;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 =head2 introns
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 Title : introns()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 Usage : @introns = $gene->introns();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 Function: Get all introns of this gene structure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 Note that this class currently generates these features on-the-fly,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 that is, it simply treats all regions between exons as introns.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 It assumes that the exons in the transcripts do not overlap.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 This method basically merges the introns returned by transcripts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 Returns : An array of Bio::SeqFeatureI implementing objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 sub introns {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 my @transcripts = $self->transcripts();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 my @feas = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 foreach my $tr (@transcripts) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 push(@feas, $tr->introns());
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 return @feas;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 =head2 poly_A_sites
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 Title : poly_A_sites()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 Usage : @polyAsites = $gene->poly_A_sites();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 Function: Get the poly-adenylation sites of this gene structure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 This method basically merges the poly-adenylation sites returned by
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 transcripts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 Returns : An array of Bio::SeqFeatureI implementing objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 sub poly_A_sites {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 my @transcripts = $self->transcripts();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 my @feas = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 foreach my $tr (@transcripts) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 push(@feas, $tr->poly_A_site());
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 return @feas;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 =head2 utrs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 Title : utrs()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 Usage : @utr_sites = $gene->utrs('3prime');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 @utr_sites = $gene->utrs('5prime');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 @utr_sites = $gene->utrs();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 Function: Get the features representing untranslated regions (UTR) of this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 gene structure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 You may provide an argument specifying the type of UTR. Currently
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 the following types are recognized: 5prime 3prime for UTR on the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 5' and 3' end of the CDS, respectively.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 This method basically merges the UTRs returned by transcripts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 Returns : An array of Bio::SeqFeature::Gene::ExonI implementing objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 representing the UTR regions or sites.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321 Args : Optionally, either 3prime, or 5prime for the the type of UTR
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322 feature.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 sub utrs {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 my ($self,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 my @transcripts = $self->transcripts();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 my @feas = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 foreach my $tr (@transcripts) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 push(@feas, $tr->utrs(@args));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 return @feas;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 =head2 sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 Title : sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 Usage : @feats = $gene->sub_SeqFeature();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 Function: Returns an array of all subfeatures.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 This method is defined in Bio::SeqFeatureI. We override this here
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 to include the transcripts.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 Returns : An array Bio::SeqFeatureI implementing objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 sub sub_SeqFeature {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 my ($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 my @feas = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 # get what the parent already has
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 @feas = $self->SUPER::sub_SeqFeature();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 push(@feas, $self->transcripts());
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 return @feas;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 =head2 flush_sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 Title : flush_sub_SeqFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 Usage : $gene->flush_sub_SeqFeature();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 $gene->flush_sub_SeqFeature(1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368 Function: Removes all subfeatures.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370 This method is overridden from Bio::SeqFeature::Generic to flush
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 all additional subfeatures, i.e., transcripts, which is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 almost certainly not what you want. To remove only features added
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 through $gene->add_sub_SeqFeature($feature) pass any
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374 argument evaluating to TRUE.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 Returns : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 Args : Optionally, an argument evaluating to TRUE will suppress flushing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 of all gene structure-specific subfeatures (transcripts).
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 sub flush_sub_SeqFeature {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385 my ($self,$fea_only) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387 $self->SUPER::flush_sub_SeqFeature();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 if(! $fea_only) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 $self->flush_transcripts();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401