0
|
1 =head1 LICENSE
|
|
2
|
|
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
|
|
4 Genome Research Limited. All rights reserved.
|
|
5
|
|
6 This software is distributed under a modified Apache license.
|
|
7 For license details, please see
|
|
8
|
|
9 http://www.ensembl.org/info/about/code_licence.html
|
|
10
|
|
11 =head1 CONTACT
|
|
12
|
|
13 Please email comments or questions to the public Ensembl
|
|
14 developers list at <dev@ensembl.org>.
|
|
15
|
|
16 Questions may also be sent to the Ensembl help desk at
|
|
17 <helpdesk@ensembl.org>.
|
|
18
|
|
19 =cut
|
|
20
|
|
21 =head1 NAME
|
|
22
|
|
23 Bio::EnsEMBL::PredictionExon - A class representing an Exon from an ab
|
|
24 initio prediction method
|
|
25
|
|
26 =head1 SYNOPSIS
|
|
27
|
|
28 $exon = new Bio::EnsEMBL::PredictionExon(
|
|
29 -START => 100,
|
|
30 -END => 200,
|
|
31 -STRAND => 1,
|
|
32 -SLICE => $slice,
|
|
33 -DBID => $dbID,
|
|
34 -P_VALUE => 23.5,
|
|
35 -SCORE => 99
|
|
36 );
|
|
37
|
|
38 # seq() returns a Bio::Seq
|
|
39 my $seq = $exon->seq->seq();
|
|
40
|
|
41 # peptide() only makes sense within transcript context
|
|
42 my $pep = $exon->peptide($transcript)->seq();
|
|
43
|
|
44 # Normal feature operations can be performed:
|
|
45 $exon = $exon->transform('clone');
|
|
46 $exon->move( $new_start, $new_end, $new_strand );
|
|
47 print $exon->slice->seq_region_name();
|
|
48
|
|
49 =head1 DESCRIPTION
|
|
50
|
|
51 This is a class which represents an prediction exon which is part of a
|
|
52 predcition transcript. See Bio::EnsEMBL:PredictionTranscript
|
|
53
|
|
54 =head1 METHODS
|
|
55
|
|
56 =cut
|
|
57
|
|
58 package Bio::EnsEMBL::PredictionExon;
|
|
59 use vars qw(@ISA);
|
|
60 use strict;
|
|
61
|
|
62 use Bio::EnsEMBL::Feature;
|
|
63 use Bio::EnsEMBL::Exon;
|
|
64 use Bio::EnsEMBL::Utils::Exception qw( warning throw deprecate );
|
|
65 use Bio::EnsEMBL::Utils::Argument qw( rearrange );
|
|
66
|
|
67
|
|
68 @ISA = qw(Bio::EnsEMBL::Exon);
|
|
69
|
|
70
|
|
71 =head2 new
|
|
72
|
|
73 Args : see SUPERCLASS Bio::EnsEMBL::Exon
|
|
74 Example : none
|
|
75 Description: create an Exon object
|
|
76 Returntype : Bio::EnsEMBL::PredictionExon
|
|
77 Exceptions : none
|
|
78 Caller : general
|
|
79 Status : Stable
|
|
80
|
|
81 =cut
|
|
82
|
|
83 sub new {
|
|
84 my $class = shift;
|
|
85
|
|
86 $class = ref $class || $class;
|
|
87
|
|
88 my $self = $class->SUPER::new( @_ );
|
|
89
|
|
90 my ( $p_value, $score ) =
|
|
91 rearrange( [ "P_VALUE", "SCORE" ], @_ );
|
|
92
|
|
93 $self->{'p_value'} = $p_value;
|
|
94 $self->{'score'} = $score;
|
|
95
|
|
96 return $self;
|
|
97 }
|
|
98
|
|
99
|
|
100 =head2 score
|
|
101
|
|
102 Arg [1] : string $newval (optional)
|
|
103 The new value to set the score attribute to
|
|
104 Example : $score = $obj->score()
|
|
105 Description: Getter/Setter for the score attribute
|
|
106 Returntype : string
|
|
107 Exceptions : none
|
|
108 Caller : general
|
|
109 Status : Stable
|
|
110
|
|
111 =cut
|
|
112
|
|
113 sub score{
|
|
114 my $self = shift;
|
|
115 $self->{'score'} = shift if(@_);
|
|
116 return $self->{'score'};
|
|
117 }
|
|
118
|
|
119
|
|
120
|
|
121 =head2 p_value
|
|
122
|
|
123 Arg [1] : string $newval (optional)
|
|
124 The new value to set the p_value attribute to
|
|
125 Example : $p_value = $obj->p_value()
|
|
126 Description: Getter/Setter for the p_value attribute
|
|
127 Returntype : string
|
|
128 Exceptions : none
|
|
129 Caller : general
|
|
130 Status : Stable
|
|
131
|
|
132 =cut
|
|
133
|
|
134 sub p_value{
|
|
135 my $self = shift;
|
|
136 $self->{'p_value'} = shift if(@_);
|
|
137 return $self->{'p_value'};
|
|
138 }
|
|
139
|
|
140
|
|
141 =head2 end_phase
|
|
142
|
|
143 Arg [1] : (optional) int $end_phase
|
|
144 Example : $end_phase = $feat->end_phase;
|
|
145 Description: Gets/Sets the end phase of the exon.
|
|
146 end_phase = number of bases from the last incomplete codon of
|
|
147 this exon.
|
|
148 Usually, end_phase = (phase + exon_length)%3
|
|
149 but end_phase could be -1 if the exon is half-coding and its 3
|
|
150 prime end is UTR.
|
|
151 Returntype : int
|
|
152 Exceptions : warning if end_phase is called without an argument and the
|
|
153 value is not set.
|
|
154 Caller : general
|
|
155 Status : Stable
|
|
156
|
|
157 =cut
|
|
158
|
|
159
|
|
160
|
|
161 sub end_phase {
|
|
162 my $self = shift;
|
|
163 if( @_ ) {
|
|
164 throw( "End_phase setting not supported" );
|
|
165 }
|
|
166 return ($self->phase() + $self->length()) % 3;
|
|
167 }
|
|
168
|
|
169
|
|
170 =head2 transform
|
|
171
|
|
172 Arg 1 : String $coordinate_system_name
|
|
173 Arg [2] : String $coordinate_system_version
|
|
174 Description: moves this exon to the given coordinate system. If this exon has
|
|
175 attached supporting evidence, they move as well.
|
|
176 Returntype : Bio::EnsEMBL::Exon
|
|
177 Exceptions : wrong parameters
|
|
178 Caller : general
|
|
179 Status : Stable
|
|
180
|
|
181 =cut
|
|
182
|
|
183
|
|
184 sub transform {
|
|
185 my $self = shift;
|
|
186
|
|
187 # catch for old style transform calls
|
|
188 if( !@_ || ( ref $_[0] && ($_[0]->isa( "Bio::EnsEMBL::Slice" ) or $_[0]->isa( "Bio::EnsEMBL::LRGSlice" )))) {
|
|
189 throw( "transform needs coordinate systems details now," .
|
|
190 "please use transfer" );
|
|
191 }
|
|
192
|
|
193 my $new_exon = Bio::EnsEMBL::Feature::transform( $self, @_ );
|
|
194 return undef unless $new_exon;
|
|
195
|
|
196 #dont want to share the same sequence cache
|
|
197 delete $new_exon->{'_seq_cache'};
|
|
198
|
|
199 return $new_exon;
|
|
200 }
|
|
201
|
|
202
|
|
203
|
|
204 =head2 transfer
|
|
205
|
|
206 Arg [1] : Bio::EnsEMBL::Slice $destination_slice
|
|
207 Example : none
|
|
208 Description: Moves this Exon to given target slice coordinates. If Features
|
|
209 are attached they are moved as well. Returns a new exon.
|
|
210 Returntype : Bio::EnsEMBL::Gene
|
|
211 Exceptions : none
|
|
212 Caller : general
|
|
213 Status : Stable
|
|
214
|
|
215 =cut
|
|
216
|
|
217 sub transfer {
|
|
218 my $self = shift;
|
|
219
|
|
220 my $new_exon = Bio::EnsEMBL::Feature::transfer( $self, @_ );
|
|
221 return undef unless $new_exon;
|
|
222
|
|
223 #dont want to share the same sequence cache
|
|
224 delete $new_exon->{'_seq_cache'};
|
|
225
|
|
226 return $new_exon;
|
|
227 }
|
|
228
|
|
229
|
|
230 =head2 add_supporting_features
|
|
231
|
|
232 Description: For compatibility with Bio::EnsEMBL::Exon
|
|
233 Does nothing.
|
|
234 Returntype : none
|
|
235 Status : Stable
|
|
236
|
|
237 =cut
|
|
238
|
|
239 sub add_supporting_features { }
|
|
240
|
|
241
|
|
242 =head2 get_all_supporting_features
|
|
243
|
|
244 Description: For compatibility with Bio::EnsEMBL::Exon
|
|
245 Does nothing and returns empty list
|
|
246 Returntype : empty list.
|
|
247 Status : Stable
|
|
248
|
|
249 =cut
|
|
250
|
|
251 sub get_all_supporting_features { return []; }
|
|
252
|
|
253
|
|
254 =head2 find_supporting_evidence
|
|
255
|
|
256 Description: For compatibility with Bio::EnsEMBL::Exon
|
|
257 Does nothing.
|
|
258 Returntype : empty list.
|
|
259 Status : Stable
|
|
260
|
|
261 =cut
|
|
262
|
|
263 sub find_supporting_evidence { return []; }
|
|
264
|
|
265
|
|
266 1;
|