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