annotate variant_effect_predictor/Bio/EnsEMBL/Transcript.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::Transcript - object representing an Ensembl transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 Creation:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 my $tran = new Bio::EnsEMBL::Transcript();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 my $tran = new Bio::EnsEMBL::Transcript( -EXONS => \@exons );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 Manipulation:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 # Returns an array of Exon objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 my @exons = @{ $tran->get_all_Exons() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 # Returns the peptide translation of the exons as a Bio::Seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 if ( $tran->translation() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 my $pep = $tran->translate();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 print "Transcript ", $tran->stable_id(), " is non-coding\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 A representation of a transcript within the Ensembl system. A transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 consists of a set of Exons and (possibly) a Translation which defines the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 coding and non-coding regions of the exons.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 package Bio::EnsEMBL::Transcript;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 use Bio::EnsEMBL::Feature;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 use Bio::EnsEMBL::Intron;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 use Bio::EnsEMBL::TranscriptMapper;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 use Bio::EnsEMBL::Utils::TranscriptSNPs;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 use Bio::EnsEMBL::SeqEdit;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 use Bio::EnsEMBL::Utils::Argument qw( rearrange );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 use Bio::EnsEMBL::Utils::Exception qw( deprecate warning throw );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 use Bio::EnsEMBL::Utils::Scalar qw( assert_ref );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 @ISA = qw(Bio::EnsEMBL::Feature);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 Arg [-EXONS] :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 reference to list of Bio::EnsEMBL::Exon objects - exons which make up
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 Arg [-STABLE_ID] :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 string - the stable identifier of this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77 Arg [-VERSION] :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 int - the version of the stable identifier of this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 Arg [-EXTERNAL_NAME] :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 string - the external database name associated with this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 Arg [-EXTERNAL_DB] :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 string - the name of the database the external name is from
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 Arg [-EXTERNAL_STATUS]:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 string - the status of the external identifier
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 Arg [-DISPLAY_XREF]:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 Bio::EnsEMBL::DBEntry - The external database entry that is used
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 to label this transcript when it is displayed.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 Arg [-CREATED_DATE]:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 string - the date the transcript was created
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 Arg [-MODIFIED_DATE]:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 string - the date the transcript was last modified
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 Arg [-DESCRIPTION]:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 string - the transcipts description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 Arg [-BIOTYPE]:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 string - the biotype e.g. "protein_coding"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 Arg [-STATUS]:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 string - the transcripts status i.e. "KNOWN","NOVEL"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 Arg [-IS_CURRENT]:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 Boolean - specifies if this is the current version of the transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 Example : $tran = new Bio::EnsEMBL::Transcript(-EXONS => \@exons);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 Description: Constructor. Instantiates a Transcript object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 Returntype : Bio::EnsEMBL::Transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 Exceptions : throw on bad arguments
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 my $proto = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 my $class = ref($proto) || $proto;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 my $self = $class->SUPER::new(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 my (
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 $exons, $stable_id, $version,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 $external_name, $external_db, $external_status,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 $display_xref, $created_date, $modified_date,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 $description, $biotype, $confidence,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 $external_db_name, $status, $is_current
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 # Catch for old style constructor calling:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 if ( ( @_ > 0 ) && ref( $_[0] ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 $exons = [@_];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 deprecate( "Transcript constructor should use named arguments.\n"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 . "Use Bio::EnsEMBL::Transcript->new(-EXONS => \@exons);\n"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 . "instead of Bio::EnsEMBL::Transcript->new(\@exons);" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 (
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 $exons, $stable_id, $version,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 $external_name, $external_db, $external_status,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 $display_xref, $created_date, $modified_date,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 $description, $biotype, $confidence,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 $external_db_name, $status, $is_current
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 = rearrange( [
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 'EXONS', 'STABLE_ID',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 'VERSION', 'EXTERNAL_NAME',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 'EXTERNAL_DB', 'EXTERNAL_STATUS',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 'DISPLAY_XREF', 'CREATED_DATE',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 'MODIFIED_DATE', 'DESCRIPTION',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 'BIOTYPE', 'CONFIDENCE',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 'EXTERNAL_DB_NAME', 'STATUS',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 'IS_CURRENT'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 ],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 @_
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 if ($exons) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 $self->{'_trans_exon_array'} = $exons;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 $self->recalculate_coordinates();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 $self->stable_id($stable_id);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 $self->version($version);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 $self->{'created_date'} = $created_date;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 $self->{'modified_date'} = $modified_date;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 $self->external_name($external_name) if ( defined $external_name );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 $self->external_db($external_db) if ( defined $external_db );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 $self->external_status($external_status)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 if ( defined $external_status );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 $self->display_xref($display_xref) if ( defined $display_xref );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 $self->edits_enabled(1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 $self->description($description);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 $self->status($confidence); # old style name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 $self->status($status); # new style name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 $self->biotype($biotype);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 # default is_current
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 $is_current = 1 unless ( defined($is_current) );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 $self->{'is_current'} = $is_current;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 } ## end sub new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 =head2 get_all_DBLinks
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 Arg [1] : String database name (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 SQL wildcard characters (_ and %) can be used to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 specify patterns.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 Example : my @dblinks = @{ $transcript->get_all_DBLinks() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 my @dblinks = @{ $transcript->get_all_DBLinks('Uniprot%') };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 Description: Retrieves *all* related DBEntries for this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 transcript. This includes all DBEntries that are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 associated with the corresponding translation.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 If you only want to retrieve the DBEntries associated
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 with the transcript (and not the translation) then
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 you should use the get_all_DBEntries() call instead.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 Note: Each entry may be listed more than once. No
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 uniqueness checks are done. Also if you put in an
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 incorrect external database name no checks are done
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 to see if this exists, you will just get an empty
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 list.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 Return type: Listref of Bio::EnsEMBL::DBEntry objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 sub get_all_DBLinks {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 my ( $self, $db_name_exp, $ex_db_type ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 my @links =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 @{ $self->get_all_DBEntries( $db_name_exp, $ex_db_type ) };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 # Add all of the transcript and translation xrefs to the return list.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 my $translation = $self->translation();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 if ( defined($translation) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 push( @links,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 @{$translation->get_all_DBEntries( $db_name_exp, $ex_db_type ) }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 @links = sort { _compare_xrefs() } @links;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 return \@links;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 =head2 get_all_xrefs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 Arg [1] : String database name (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 SQL wildcard characters (_ and %) can be used to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 specify patterns.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 Example : @xrefs = @{ $transcript->get_all_xrefs() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 @xrefs = @{ $transcript->get_all_xrefs('Uniprot%') };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 Description: Retrieves *all* related xrefs for this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 This includes all xrefs that are associated with the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 corresponding translation of this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 If you want to retrieve the xrefs associated with
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 only the transcript (and not the translation) then
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 you should use the get_all_object_xrefs() method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 instead.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 Note: Each entry may be listed more than once. No
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 uniqueness checks are done. Also if you put in an
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 incorrect external database name no checks are done
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 to see if this exists, you will just get an empty
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 list.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 NB: This method is an alias for the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 get_all_DBLinks() method.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 Return type: Listref of Bio::EnsEMBL::DBEntry objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 sub get_all_xrefs {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 return $self->get_all_DBLinks(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 =head2 get_all_DBEntries
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 Arg [1] : (optional) String, external database name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 Arg [2] : (optional) String, external database type
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 Example : my @dbentries = @{ $transcript->get_all_DBEntries() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 Description: Retrieves DBEntries (xrefs) for this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 This does *not* include the corresponding
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 translations DBEntries (see get_all_DBLinks()).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 This method will attempt to lazy-load DBEntries
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 from a database if an adaptor is available and no
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 DBEntries are present on the transcript (i.e. they
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282 have not already been added or loaded).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 Returntype : Listref of Bio::EnsEMBL::DBEntry objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 Caller : get_all_DBLinks, TranscriptAdaptor::store
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 sub get_all_DBEntries {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 my ( $self, $ex_db_exp, $ex_db_type ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 my $cache_name = 'dbentries';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 if ( defined($ex_db_exp) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297 $cache_name .= $ex_db_exp;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 if ( defined($ex_db_type) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 $cache_name .= $ex_db_type;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304 # if not cached, retrieve all of the xrefs for this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 if ( !defined( $self->{$cache_name} ) && defined( $self->adaptor() ) )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 $self->{$cache_name} =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 $self->adaptor()->db()->get_DBEntryAdaptor()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 ->fetch_all_by_Transcript( $self, $ex_db_exp, $ex_db_type );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 $self->{$cache_name} ||= [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 return $self->{$cache_name};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 } ## end sub get_all_DBEntries
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 =head2 get_all_object_xrefs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 Arg [1] : (optional) String, external database name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 Arg [2] : (optional) String, external_db type
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 Example : @oxrefs = @{ $transcript->get_all_object_xrefs() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325 Description: Retrieves xrefs for this transcript. This does
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 *not* include xrefs that are associated with the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 corresponding translations of this transcript (see
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 get_all_xrefs()).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 This method will attempt to lazy-load xrefs from a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 database if an adaptor is available and no xrefs are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 present on the transcript (i.e. they have not already
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 been added or loaded).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 NB: This method is an alias for the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 get_all_DBentries() method.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 Return type: Listref of Bio::EnsEMBL::DBEntry objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 sub get_all_object_xrefs {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 return $self->get_all_DBEntries(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 =head2 add_DBEntry
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 Arg [1] : Bio::EnsEMBL::DBEntry $dbe
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 The dbEntry to be added
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 Example : my $dbe = Bio::EnsEMBL::DBEntery->new(...);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 $transcript->add_DBEntry($dbe);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 Description: Associates a DBEntry with this transcript. Note that adding
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 DBEntries will prevent future lazy-loading of DBEntries for this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 gene (see get_all_DBEntries).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 Returntype : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359 Exceptions : thrown on incorrect argument type
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 sub add_DBEntry {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 my $dbe = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 unless($dbe && ref($dbe) && $dbe->isa('Bio::EnsEMBL::DBEntry')) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 throw('Expected DBEntry argument');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 $self->{'dbentries'} ||= [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374 push @{$self->{'dbentries'}}, $dbe;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 =head2 get_all_supporting_features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 Example : my @evidence = @{ $transcript->get_all_supporting_features };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 Description: Retreives any supporting features added manually by
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382 calls to add_supporting_features.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 Returntype : Listref of Bio::EnsEMBL::FeaturePair objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390 sub get_all_supporting_features {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393 if( !exists $self->{_supporting_evidence} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 if($self->adaptor) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395 my $tsfa = $self->adaptor->db->get_TranscriptSupportingFeatureAdaptor();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 $self->{_supporting_evidence} = $tsfa->fetch_all_by_Transcript($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400 return $self->{_supporting_evidence} || [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 =head2 add_supporting_features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406 Arg [1-N] : Bio::EnsEMBL::FeaturePair $feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407 The supporting features to add
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408 Example : $transcript->add_supporting_features(@features);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409 Description: Adds a list of supporting features to this Transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410 The added features can be retieved by
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411 get_all_supporting_features().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 Returntype : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 Exceptions : throw if any of the features are not FeaturePairs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414 throw if any of the features are not in the same coordinate
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 system as the Transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421 sub add_supporting_features {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422 my ($self, @features) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424 return unless @features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426 $self->{_supporting_evidence} ||= [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428 # check whether this feature object has been added already
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429 FEATURE: foreach my $feature (@features) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431 if (!defined($feature) || ref($feature) eq "ARRAY") {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432 throw("Element in transcript supporting features array is undefined or is an ARRAY for " . $self->dbID);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434 if (!$feature || !$feature->isa("Bio::EnsEMBL::FeaturePair")) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435 print "feature = " . $feature . "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436 throw("Supporting feat [$feature] not a " .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437 "Bio::EnsEMBL::FeaturePair");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440 if ((defined $self->slice() && defined $feature->slice())&&
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
441 ( $self->slice()->name() ne $feature->slice()->name())){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
442 throw("Supporting feat not in same coord system as exon\n" .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
443 "exon is attached to [".$self->slice()->name()."]\n" .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
444 "feat is attached to [".$feature->slice()->name()."]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
445 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
446
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
447 foreach my $added_feature ( @{ $self->{_supporting_evidence} } ){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
448 # compare objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
449 if ( $feature == $added_feature ){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
450 #this feature has already been added
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
451 next FEATURE;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
452 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
453 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
454
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
455 #no duplicate was found, add the feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
456 push(@{$self->{_supporting_evidence}}, $feature);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
457 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
458 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
459
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
460
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
461 =head2 flush_supporting_features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
462
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
463 Example : $transcript->flush_supporting_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
464 Description : Removes all supporting evidence from the transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
465 Return type : (Empty) listref
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
466 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
467 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
468 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
469
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
470 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
471
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
472 sub flush_supporting_features {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
473 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
474 $self->{'_supporting_evidence'} = [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
475 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
476
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
477
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
478 =head2 external_db
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
479
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
480 Arg [1] : (optional) String - name of external db to set
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
481 Example : $transcript->external_db('HGNC');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
482 Description: Getter/setter for attribute external_db. The db is the one that
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
483 belongs to the external_name.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
484 Returntype : String
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
485 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
486 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
487 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
488
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
489 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
490
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
491 sub external_db {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
492 my ( $self, $ext_dbname ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
493
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
494 if(defined $ext_dbname) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
495 return ( $self->{'external_db'} = $ext_dbname );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
496 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
497
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
498 if( exists $self->{'external_db'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
499 return $self->{'external_db'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
500 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
501
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
502 my $display_xref = $self->display_xref();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
503
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
504 if( defined $display_xref ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
505 return $display_xref->dbname()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
506 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
507 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
508 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
509 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
510
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
511
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
512 =head2 external_status
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
513
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
514 Arg [1] : (optional) String - status of the external db
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
515 Example : $transcript->external_status('KNOWNXREF');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
516 Description: Getter/setter for attribute external_status. The status of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
517 the external db of the one that belongs to the external_name.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
518 Returntype : String
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
519 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
520 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
521 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
522
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
523 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
524
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
525 sub external_status {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
526 my ( $self, $ext_status ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
527
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
528 if(defined $ext_status) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
529 return ( $self->{'external_status'} = $ext_status );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
530 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
531
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
532 if( exists $self->{'external_status'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
533 return $self->{'external_status'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
534 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
535
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
536 my $display_xref = $self->display_xref();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
537
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
538 if( defined $display_xref ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
539 return $display_xref->status()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
540 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
541 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
542 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
543 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
544
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
545
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
546 =head2 external_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
547
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
548 Arg [1] : (optional) String - the external name to set
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
549 Example : $transcript->external_name('BRCA2-001');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
550 Description: Getter/setter for attribute external_name.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
551 Returntype : String or undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
552 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
553 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
554 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
555
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
556 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
557
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
558 sub external_name {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
559 my ($self, $ext_name) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
560
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
561 if(defined $ext_name) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
562 return ( $self->{'external_name'} = $ext_name );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
563 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
564
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
565 if( exists $self->{'external_name'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
566 return $self->{'external_name'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
567 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
568
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
569 my $display_xref = $self->display_xref();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
570
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
571 if( defined $display_xref ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
572 return $display_xref->display_id()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
573 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
574 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
575 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
576 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
577
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
578
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
579 =head2 is_known
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
580
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
581 Example : print "Transcript ".$transcript->stable_id." is KNOWN\n" if
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
582 $transcript->is_known;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
583 Description: Returns TRUE if this gene has a status of 'KNOWN'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
584 Returntype : TRUE if known, FALSE otherwise
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
585 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
586 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
587 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
588
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
589 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
590
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
591 sub is_known {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
592 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
593 return ( $self->{'status'} eq "KNOWN" || $self->{'status'} eq "KNOWN_BY_PROJECTION" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
594 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
595
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
596
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
597 =head2 status
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
598
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
599 Arg [1] : string $status
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
600 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
601 Description: get/set for attribute status
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
602 Returntype : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
603 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
604 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
605 Status : Medium Risk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
606
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
607 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
608
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
609 sub status {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
610 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
611 $self->{'status'} = shift if( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
612 return $self->{'status'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
613 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
614
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
615 =head2 biotype
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
616
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
617 Arg [1] : string $biotype
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
618 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
619 Description: get/set for attribute biotype
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
620 Returntype : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
621 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
622 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
623 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
624
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
625 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
626
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
627 sub biotype {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
628 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
629 $self->{'biotype'} = shift if( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
630 return ( $self->{'biotype'} || "protein_coding" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
631 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
632
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
633
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
634 =head2 display_xref
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
635
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
636 Arg [1] : (optional) Bio::EnsEMBL::DBEntry - the display xref to set
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
637 Example : $transcript->display_xref($db_entry);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
638 Description: Getter/setter for display_xref for this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
639 Returntype : Bio::EnsEMBL::DBEntry
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
640 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
641 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
642 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
643
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
644 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
645
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
646 sub display_xref {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
647 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
648 $self->{'display_xref'} = shift if(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
649 return $self->{'display_xref'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
650 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
651
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
652 =head2 is_canonical
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
653
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
654 Args [1] : (optional) Boolean is_canonical
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
655
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
656 Example : if ($transcript->is_canonical()) { ... }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
657
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
658 Description : Returns true (non-zero) if the transcript is the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
659 canonical transcript of its gene, false (0) if not. If the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
660 returns an undefined it is because its state is not currently
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
661 known. Internally the code will consult the database for this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
662 value if it is unknown and the transcript has a dbID and an
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
663 attached adaptor
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
664
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
665 Return type : Boolean
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
666
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
667 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
668
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
669 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
670
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
671 sub is_canonical {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
672 my ( $self, $value ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
673
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
674 #Shortcut call
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
675 return $self->{is_canonical} if defined $self->{is_canonical};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
676
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
677 if ( defined($value) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
678 $self->{is_canonical} = ( $value ? 1 : 0 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
679 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
680 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
681 if(! defined $self->{is_canonical} && $self->dbID() && $self->adaptor()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
682 $self->{is_canonical} = $self->adaptor()->is_Transcript_canonical($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
683 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
684 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
685
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
686 return $self->{is_canonical};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
687 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
688
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
689 =head2 translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
690
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
691 Args : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
692 Example : if ( $transcript->translation() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
693 print( $transcript->translation()->stable_id(), "\n" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
694 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
695 print("Pseudogene\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
696 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
697 Description: Getter/setter for the Translation object which
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
698 defines the CDS (and as a result the peptide encoded
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
699 by) this transcript. This function will return
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
700 undef if this transcript is a pseudogene, i.e. a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
701 non-translating transcript such as an ncRNA. This
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
702 is the accepted method of determining whether a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
703 transcript is a pseudogene or not.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
704 Returntype : Bio::EnsEMBL::Translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
705 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
706 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
707 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
708
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
709 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
710
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
711 sub translation {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
712 my ( $self, $translation ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
713
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
714 if ( defined($translation) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
715 assert_ref( $translation, 'Bio::EnsEMBL::Translation' );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
716
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
717 $self->{'translation'} = $translation;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
718 $translation->transcript($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
719
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
720 $self->{'cdna_coding_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
721 $self->{'cdna_coding_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
722
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
723 $self->{'coding_region_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
724 $self->{'coding_region_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
725
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
726 $self->{'transcript_mapper'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
727
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
728 } elsif ( @_ > 1 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
729 if ( defined( $self->{'translation'} ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
730 # Removing existing translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
731
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
732 $self->{'translation'}->transcript(undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
733 delete( $self->{'translation'} );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
734
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
735 $self->{'cdna_coding_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
736 $self->{'cdna_coding_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
737
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
738 $self->{'coding_region_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
739 $self->{'coding_region_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
740
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
741 $self->{'transcript_mapper'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
742 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
743 } elsif ( !exists( $self->{'translation'} )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
744 && defined( $self->adaptor() ) )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
745 {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
746 $self->{'translation'} =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
747 $self->adaptor()->db()->get_TranslationAdaptor()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
748 ->fetch_by_Transcript($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
749 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
750
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
751 return $self->{'translation'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
752 } ## end sub translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
753
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
754 =head2 get_all_alternative_translations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
755
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
756 Args : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
757 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
758
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
759 my @alt_translations =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
760 @{ $transcript->get_all_alternative_translations() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
761
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
762 Description: Fetches all alternative translations defined for this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
763 transcript. The canonical translation is not returned.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
764
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
765 Returntype : Arrayref to Bio::EnsEMBL::Translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
766 Exceptions : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
767 Caller : General
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
768 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
769
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
770 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
771
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
772 sub get_all_alternative_translations {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
773 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
774
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
775 if ( !exists( $self->{'alternative_translations'} )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
776 && defined( $self->adaptor() ) )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
777 {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
778 my $pa = $self->adaptor()->db()->get_TranslationAdaptor();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
779 my @translations =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
780 @{ $pa->fetch_all_alternative_by_Transcript($self) };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
781
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
782 $self->{'alternative_translations'} = \@translations;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
783 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
784
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
785 return $self->{'alternative_translations'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
786 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
787
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
788 =head2 add_alternative_translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
789
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
790 Args : Bio::EnsEMBL::Translation $translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
791 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
792
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
793 $transcript->add_alternative_translation($translation);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
794
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
795 Description: Adds an alternative translation to this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
796 Returntype : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
797 Exceptions : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
798 Caller : General
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
799 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
800
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
801 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
802
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
803 sub add_alternative_translation {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
804 my ( $self, $translation ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
805
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
806 if ( !( defined($translation)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
807 && ref($translation)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
808 && $translation->isa('Bio::EnsEMBL::Translation') ) )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
809 {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
810 throw("Bio::EnsEMBL::Translation argument expected.");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
811 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
812
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
813 # Load the existsing alternative translations from the database if
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
814 # they haven't already been loaded.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
815 $self->get_all_alternative_translations();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
816
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
817 push( @{ $self->{'alternative_translations'} }, $translation );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
818 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
819
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
820 =head2 spliced_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
821
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
822 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
823 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
824 Description: Retrieves all Exon sequences and concats them together.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
825 No phase padding magic is done, even if phases do not align.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
826 Returntype : Text
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
827 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
828 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
829 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
830
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
831 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
832
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
833 sub spliced_seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
834 my ( $self ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
835
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
836 my $seq_string = "";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
837 for my $ex ( @{$self->get_all_Exons()} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
838 my $seq = $ex->seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
839
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
840 if(!$seq) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
841 warning("Could not obtain seq for exon. Transcript sequence may not " .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
842 "be correct.");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
843 $seq_string .= 'N' x $ex->length();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
844 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
845 $seq_string .= $seq->seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
846 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
847 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
848
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
849 # apply post transcriptional edits
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
850 if($self->edits_enabled()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
851 my @seqeds = @{$self->get_all_SeqEdits()};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
852
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
853 # sort edits in reverse order to remove complication of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
854 # adjusting downstream edits
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
855 @seqeds = sort {$b->start() <=> $a->start()} @seqeds;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
856
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
857 foreach my $se (@seqeds) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
858 $se->apply_edit(\$seq_string);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
859 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
860 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
861
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
862 return $seq_string;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
863 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
864
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
865
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
866 =head2 translateable_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
867
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
868 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
869 Example : print $transcript->translateable_seq(), "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
870 Description: Returns a sequence string which is the the translateable part
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
871 of the transcripts sequence. This is formed by splicing all
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
872 Exon sequences together and apply all defined RNA edits.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
873 Then the coding part of the sequence is extracted and returned.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
874 The code will not support monkey exons any more. If you want to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
875 have non phase matching exons, defined appropriate _rna_edit
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
876 attributes!
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
877
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
878 An empty string is returned if this transcript is a pseudogene
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
879 (i.e. is non-translateable).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
880 Returntype : Text
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
881 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
882 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
883 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
884
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
885 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
886
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
887 sub translateable_seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
888 my ( $self ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
889
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
890 if ( !$self->translation() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
891 return '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
892 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
893
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
894 my $mrna = $self->spliced_seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
895
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
896 my $start = $self->cdna_coding_start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
897 my $end = $self->cdna_coding_end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
898
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
899 $mrna = substr( $mrna, $start - 1, $end - $start + 1 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
900
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
901 my $start_phase = $self->translation->start_Exon->phase();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
902 if( $start_phase > 0 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
903 $mrna = "N"x$start_phase . $mrna;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
904 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
905 if( ! $start || ! $end ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
906 return "";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
907 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
908
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
909 return $mrna;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
910 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
911
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
912
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
913 =head2 cdna_coding_start
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
914
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
915 Arg [1] : (optional) $value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
916 Example : $relative_coding_start = $transcript->cdna_coding_start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
917 Description: Retrieves the position of the coding start of this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
918 in cdna coordinates (relative to the start of the 5prime end of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
919 the transcript, excluding introns, including utrs).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
920
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
921 This will return undef if this is a pseudogene (i.e. a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
922 transcript with no translation).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
923 Returntype : int
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
924 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
925 Caller : five_prime_utr, get_all_snps, general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
926 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
927
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
928 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
929
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
930 sub cdna_coding_start {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
931 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
932
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
933 if( @_ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
934 $self->{'cdna_coding_start'} = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
935 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
936
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
937 if(!defined $self->{'cdna_coding_start'} && defined $self->translation){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
938 # calc coding start relative from the start of translation (in cdna coords)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
939 my $start = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
940
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
941 my @exons = @{$self->get_all_Exons};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
942 my $exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
943
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
944 while($exon = shift @exons) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
945 if($exon == $self->translation->start_Exon) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
946 #add the utr portion of the start exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
947 $start += $self->translation->start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
948 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
949 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
950 #add the entire length of this non-coding exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
951 $start += $exon->length;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
952 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
953 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
954
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
955 # adjust cdna coords if sequence edits are enabled
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
956 if($self->edits_enabled()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
957 my @seqeds = @{$self->get_all_SeqEdits()};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
958 # sort in reverse order to avoid adjustment of downstream edits
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
959 @seqeds = sort {$b->start() <=> $a->start()} @seqeds;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
960
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
961 foreach my $se (@seqeds) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
962 # use less than start so that start of CDS can be extended
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
963 if($se->start() < $start) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
964 $start += $se->length_diff();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
965 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
966 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
967 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
968
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
969 $self->{'cdna_coding_start'} = $start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
970 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
971
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
972 return $self->{'cdna_coding_start'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
973 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
974
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
975
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
976 =head2 cdna_coding_end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
977
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
978 Arg [1] : (optional) $value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
979 Example : $cdna_coding_end = $transcript->cdna_coding_end;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
980 Description: Retrieves the end of the coding region of this transcript in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
981 cdna coordinates (relative to the five prime end of the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
982 transcript, excluding introns, including utrs).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
983
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
984 This will return undef if this transcript is a pseudogene
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
985 (i.e. a transcript with no translation and therefor no CDS).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
986 Returntype : int
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
987 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
988 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
989 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
990
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
991 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
992
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
993 sub cdna_coding_end {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
994 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
995
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
996 if( @_ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
997 $self->{'cdna_coding_end'} = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
998 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
999
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1000 if(!defined $self->{'cdna_coding_end'} && defined $self->translation) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1001 my @exons = @{$self->get_all_Exons};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1002
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1003 my $end = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1004 while(my $exon = shift @exons) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1005 if($exon == $self->translation->end_Exon) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1006 # add coding portion of the final coding exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1007 $end += $self->translation->end;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1008 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1009 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1010 # add entire exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1011 $end += $exon->length;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1012 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1013 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1014
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1015 # adjust cdna coords if sequence edits are enabled
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1016 if($self->edits_enabled()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1017 my @seqeds = @{$self->get_all_SeqEdits()};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1018 # sort in reverse order to avoid adjustment of downstream edits
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1019 @seqeds = sort {$b->start() <=> $a->start()} @seqeds;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1020
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1021 foreach my $se (@seqeds) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1022 # use less than or equal to end+1 so end of the CDS can be extended
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1023 if($se->start() <= $end + 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1024 $end += $se->length_diff();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1025 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1026 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1027 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1028
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1029 $self->{'cdna_coding_end'} = $end;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1030 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1031
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1032 return $self->{'cdna_coding_end'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1033 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1034
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1035
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1036 =head2 coding_region_start
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1037
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1038 Arg [1] : (optional) $value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1039 Example : $coding_region_start = $transcript->coding_region_start
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1040 Description: Retrieves the start of the coding region of this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1041 in genomic coordinates (i.e. in either slice or contig coords).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1042 By convention, the coding_region_start is always lower than
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1043 the value returned by the coding_end method.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1044 The value returned by this function is NOT the biological
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1045 coding start since on the reverse strand the biological coding
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1046 start would be the higher genomic value.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1047
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1048 This function will return undef if this is a pseudogene
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1049 (a non-translated transcript).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1050 Returntype : int
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1051 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1052 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1053 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1054
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1055 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1056
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1057 sub coding_region_start {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1058 my ($self, $value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1059
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1060 if( defined $value ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1061 $self->{'coding_region_start'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1062 } elsif(!defined $self->{'coding_region_start'} &&
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1063 defined $self->translation) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1064 #calculate the coding start from the translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1065 my $start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1066 my $strand = $self->translation()->start_Exon->strand();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1067 if( $strand == 1 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1068 $start = $self->translation()->start_Exon->start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1069 $start += ( $self->translation()->start() - 1 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1070 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1071 $start = $self->translation()->end_Exon->end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1072 $start -= ( $self->translation()->end() - 1 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1073 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1074 $self->{'coding_region_start'} = $start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1075 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1076
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1077 return $self->{'coding_region_start'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1078 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1079
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1080
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1081 =head2 coding_region_end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1082
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1083 Arg [1] : (optional) $value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1084 Example : $coding_region_end = $transcript->coding_region_end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1085 Description: Retrieves the end of the coding region of this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1086 in genomic coordinates (i.e. in either slice or contig coords).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1087 By convention, the coding_region_end is always higher than the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1088 value returned by the coding_region_start method.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1089 The value returned by this function is NOT the biological
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1090 coding end since on the reverse strand the biological coding
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1091 end would be the lower genomic value.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1092
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1093 This function will return undef if this is a pseudogene
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1094 (a non-translated transcript).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1095 Returntype : int
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1096 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1097 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1098 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1099
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1100 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1101
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1102 sub coding_region_end {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1103 my ($self, $value ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1105 my $strand;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1106 my $end;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1107
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1108 if( defined $value ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1109 $self->{'coding_region_end'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1110 } elsif( ! defined $self->{'coding_region_end'}
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1111 && defined $self->translation() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1112 $strand = $self->translation()->start_Exon->strand();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1113 if( $strand == 1 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1114 $end = $self->translation()->end_Exon->start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1115 $end += ( $self->translation()->end() - 1 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1116 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1117 $end = $self->translation()->start_Exon->end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1118 $end -= ( $self->translation()->start() - 1 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1119 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1120 $self->{'coding_region_end'} = $end;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1121 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1122
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1123 return $self->{'coding_region_end'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1124 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1125
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1126
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1127 =head2 edits_enabled
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1128
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1129 Arg [1] : (optional) boolean $newval
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1130 Example : $transcript->edits_enabled(1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1131 Description: Enables/Disables the application of SeqEdits to this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1132 Edits are enabled by default, and affect the cdna/mrna
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1133 sequences coordinates and the resultant translation.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1134 Returntype : boolean - the current value of the edits
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1135 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1136 Caller : general, cdna_coding_start, cdna_coding_end, length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1137 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1138
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1139 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1140
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1141 sub edits_enabled {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1142 my ( $self, $boolean ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1143
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1144 if ( defined($boolean) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1145 $self->{'edits_enabled'} = $boolean;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1146
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1147 # flush cached values that will be different with/without edits
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1148 $self->{'cdna_coding_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1149 $self->{'cdna_coding_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1150 $self->{'transcript_mapper'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1151 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1152
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1153 return $self->{'edits_enabled'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1154 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1155
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1156
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1157 =head2 get_all_SeqEdits
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1158
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1159 Arg [1] : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1160 Example : my @seqeds = @{$transcript->get_all_SeqEdits()};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1161 Description: Retrieves all post transcriptional sequence modifications for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1162 this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1163 Returntype : Bio::EnsEMBL::SeqEdit
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1164 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1165 Caller : spliced_seq()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1166 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1167
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1168 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1169
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1170 sub get_all_SeqEdits {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1171 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1172
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1173 my @seqeds;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1174
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1175 my $attribs = $self->get_all_Attributes('_rna_edit');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1176
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1177 # convert attributes to SeqEdit objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1178 foreach my $a (@$attribs) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1179 push @seqeds, Bio::EnsEMBL::SeqEdit->new(-ATTRIB => $a);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1180 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1181
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1182 return \@seqeds;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1183 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1184
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1185
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1186 =head2 get_all_Attributes
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1187
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1188 Arg [1] : optional string $attrib_code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1189 The code of the attribute type to retrieve values for.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1190 Example : ($rna_edits) = @{$transcript->get_all_Attributes('_rna_edit')};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1191 @transc_attributes = @{$transcript->get_all_Attributes()};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1192 Description: Gets a list of Attributes of this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1193 Optionally just get Attrubutes for given code.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1194 Returntype : listref Bio::EnsEMBL::Attribute
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1195 Exceptions : warning if transcript does not have attached adaptor and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1196 attempts lazy load.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1197 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1198 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1199
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1200 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1201
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1202 sub get_all_Attributes {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1203 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1204 my $attrib_code = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1205
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1206 if( ! exists $self->{'attributes' } ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1207 if(!$self->adaptor() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1208 return [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1209 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1210
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1211 my $attribute_adaptor = $self->adaptor->db->get_AttributeAdaptor();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1212 $self->{'attributes'} = $attribute_adaptor->fetch_all_by_Transcript($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1213 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1214
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1215 if( defined $attrib_code) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1216 my @results = grep { uc($_->code()) eq uc($attrib_code) }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1217 @{$self->{'attributes'}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1218 return \@results;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1219 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1220 return $self->{'attributes'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1221 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1222 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1223
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1224
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1225 =head2 add_Attributes
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1226
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1227 Arg [1...] : Bio::EnsEMBL::Attribute $attribute
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1228 You can have more Attributes as arguments, all will be added.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1229 Example : $transcript->add_Attributes($rna_edit_attribute);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1230 Description: Adds an Attribute to the Transcript. Usefull to do _rna_edits.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1231 If you add an attribute before you retrieve any from database,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1232 lazy load will be disabled.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1233 Returntype : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1234 Exceptions : throw on incorrect arguments
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1235 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1236 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1238 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1239
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1240 sub add_Attributes {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1241 my ( $self, @attribs ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1242
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1243 if ( !exists( $self->{'attributes'} ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1244 $self->{'attributes'} = [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1245 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1246
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1247 my $seq_change = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1248 foreach my $attrib (@attribs) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1249 assert_ref( $attrib, 'Bio::EnsEMBL::Attribute' );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1251 push( @{ $self->{'attributes'} }, $attrib );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1252
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1253 if ( $attrib->code() eq "_rna_edit" ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1254 $seq_change = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1255 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1256 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1257
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1258 if ($seq_change) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1259 my $translation = $self->translation();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1260 if ( defined($translation) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1261 delete( $translation->{'seq'} );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1262 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1263 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1264
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1265 # flush cdna coord cache b/c we may have added a SeqEdit
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1266 delete( $self->{'cdna_coding_start'} );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1267 delete( $self->{'cdna_coding_end'} );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1268 delete( $self->{'transcript_mapper'} );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1269 } ## end sub add_Attributes
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1270
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1271
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1272 =head2 add_Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1273
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1274 Title : add_Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1275 Usage : $trans->add_Exon($exon)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1276 Returns : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1277 Args [1]: Bio::EnsEMBL::Exon object to add
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1278 Args [2]: rank
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1279 Exceptions: throws if not a valid Bio::EnsEMBL::Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1280 : or exon clashes with another one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1281 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1283 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1284
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1285 sub add_Exon {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1286 my ( $self, $exon, $rank ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1287
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1288 assert_ref( $exon, 'Bio::EnsEMBL::Exon' );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1289
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1290 $self->{'_trans_exon_array'} ||= [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1291
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1292 if ( defined($rank) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1293 $self->{'_trans_exon_array'}->[ $rank - 1 ] = $exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1294 return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1295 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1296
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1297 my $was_added = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1298
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1299 my $ea = $self->{'_trans_exon_array'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1300
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1301 if ( @{$ea} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1302 if ( $exon->strand() == 1 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1303
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1304 my $exon_start = $exon->start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1305
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1306 if ( $exon_start > $ea->[-1]->end() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1307 push( @{$ea}, $exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1308 $was_added = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1309 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1310 # Insert it at correct place
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1311
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1312 my $i = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1313 foreach my $e ( @{$ea} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1314 if ( $exon_start < $e->start() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1315 if ( $exon->end() >= $e->start() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1316 # Overlap
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1317 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1318 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1319 if ( $i and $exon_start <= $ea->[$i-1]->end() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1320 # Overlap
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1321 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1322 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1323 splice( @{$ea}, $i, 0, $exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1324 $was_added = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1325 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1326 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1327 ++$i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1328 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1329
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1330 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1331
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1332 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1333
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1334 my $exon_end = $exon->end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1335
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1336 if ( $exon_end < $ea->[-1]->start() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1337 push( @{$ea}, $exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1338 $was_added = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1339 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1340 # Insert it at correct place
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1341
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1342 my $i = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1343 foreach my $e ( @{$ea} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1344 if ( $exon_end > $e->end() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1345 if ( $exon->start() <= $e->end() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1346 # Overlap
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1347 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1348 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1349 if ( $i and $exon_end >= $ea->[$i-1]->start() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1350 # Overlap
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1351 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1352 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1353 splice( @{$ea}, $i, 0, $exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1354 $was_added = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1355 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1356 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1357 ++$i;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1358 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1359
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1360 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1361
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1362 } ## end else [ if ( $exon->strand() ==...)]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1363 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1364 push( @{$ea}, $exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1365 $was_added = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1366 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1367
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1368 # sanity check:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1369 if ( !$was_added ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1370 # The exon was not added because it was overloapping with an
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1371 # existing exon.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1372 my $all_str = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1373
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1374 foreach my $e ( @{$ea} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1375 $all_str .= ' '
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1376 . $e->start() . '-'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1377 . $e->end() . ' ('
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1378 . $e->strand() . ') '
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1379 . ( $e->stable_id() || '' ) . "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1380 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1381
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1382 my $cur_str = ' '
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1383 . $exon->start() . '-'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1384 . $exon->end() . ' ('
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1385 . $exon->strand() . ') '
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1386 . ( $exon->stable_id() || '' ) . "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1387
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1388 throw( "Exon overlaps with other exon in same transcript.\n"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1389 . "Transcript Exons:\n$all_str\n"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1390 . "This Exon:\n$cur_str" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1391 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1392
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1393 # recalculate start, end, slice, strand
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1394 $self->recalculate_coordinates();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1395 } ## end sub add_Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1396
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1397
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1398 =head2 get_all_Exons
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1399
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1400 Arg [CONSTITUTIVE] : Boolean
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1401 Only return constitutive exons if true (non-zero)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1402
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1403 Examples : my @exons = @{ $transcript->get_all_Exons() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1404
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1405 my @exons =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1406 @{ $transcript->get_all_Exons( -constitutive => 1 ) };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1407
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1408 Description: Returns an listref of the exons in this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1409 in order, i.e. the first exon in the listref is the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1410 5prime most exon in the transcript. Only returns
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1411 constitutive exons if the CONSTITUTIVE argument is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1412 true.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1413
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1414 Returntype : listref to Bio::EnsEMBL::Exon objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1415 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1416 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1417 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1418
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1419 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1420
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1421 sub get_all_Exons {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1422 my ( $self, @args ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1423
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1424 my $constitutive;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1425 if (@args) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1426 $constitutive = rearrange( ['CONSTITUTIVE'], @args );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1427 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1428
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1429 if (!defined( $self->{'_trans_exon_array'} )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1430 && defined( $self->adaptor() ) )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1431 {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1432 $self->{'_trans_exon_array'} =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1433 $self->adaptor()->db()->get_ExonAdaptor()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1434 ->fetch_all_by_Transcript($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1435 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1436
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1437 my @result;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1438 if ( defined($constitutive) && $constitutive != 0 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1439 foreach my $exon ( @{ $self->{'_trans_exon_array'} } ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1440 if ( $exon->is_constitutive() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1441 push( @result, $exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1442 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1443 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1444 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1445 @result = @{ $self->{'_trans_exon_array'} };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1446 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1447
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1448 return \@result;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1449 } ## end sub get_all_Exons
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1450
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1451 =head2 get_all_constitutive_Exons
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1452
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1453 Arg : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1454
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1455 Examples : my @exons = @{ $transcript->get_all_constitutive_Exons() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1456
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1457 Description: Returns an listref of the constitutive exons in this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1458 transcript in order, i.e. the first exon in the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1459 listref is the 5prime most exon in the transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1460
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1461 Returntype : listref to Bio::EnsEMBL::Exon objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1462 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1463 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1464 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1465
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1466 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1467
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1468 sub get_all_constitutive_Exons {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1469 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1470 return $self->get_all_Exons( '-constitutive' => 1 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1471 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1472
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1473 =head2 get_all_IntronSupportingEvidence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1474
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1475 Example : $ise->get_all_IntronSupportingEvidence();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1476 Description : Fetches all ISE instances linked to this Transript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1477 Returntype : ArrayRef[Bio::EnsEMBL::IntronSupportEvidence] retrieved from
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1478 the DB or from those added via C<add_IntronSupportingEvidence>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1479 Exceptions : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1480
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1481 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1482
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1483 sub get_all_IntronSupportingEvidence {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1484 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1485 if(! defined $self->{_ise_array} && defined $self->adaptor()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1486 my $isea = $self->adaptor()->db()->get_IntronSupportingEvidenceAdaptor();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1487 $self->{_ise_array} = $isea->fetch_all_by_Transcript($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1488 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1489 return $self->{_ise_array};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1490 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1491
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1492
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1493 =head2 add_IntronSupportingEvidence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1494
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1495 Arg [1] : Bio::EnsEMBL::IntronSupportEvidence Object to add
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1496 Example : $ise->add_IntronSupportingEvidence($ise);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1497 Description : Adds the IntronSupportEvidence instance to this Transcript. The
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1498 code checks to see if it is a unique ISE instance
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1499 Returntype : Boolean; true means it was added. False means it was not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1500 as this ISE was already attached
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1501 Exceptions : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1502
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1503 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1504
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1505 sub add_IntronSupportingEvidence {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1506 my ($self, $ise) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1507 assert_ref($ise, 'Bio::EnsEMBL::IntronSupportingEvidence', 'IntronSupportingEvidence');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1508 my $unique = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1509 foreach my $other_ise (@{$self->{_ise_array}}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1510 if($ise->equals($other_ise)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1511 $unique = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1512 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1513 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1514 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1515 if($unique) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1516 push(@{$self->{_ise_array}}, $ise);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1517 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1518 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1519 return 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1520 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1521
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1522 =head2 get_all_Introns
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1523
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1524 Arg [1] : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1525 Example : my @introns = @{$transcript->get_all_Introns()};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1526 Description: Returns an listref of the introns in this transcript in order.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1527 i.e. the first intron in the listref is the 5prime most exon in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1528 the transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1529 Returntype : listref to Bio::EnsEMBL::Intron objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1530 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1531 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1532 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1533
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1534 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1535
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1536 sub get_all_Introns {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1537 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1538 if( ! defined $self->{'_trans_exon_array'} && defined $self->adaptor() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1539 $self->{'_trans_exon_array'} = $self->adaptor()->db()->
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1540 get_ExonAdaptor()->fetch_all_by_Transcript( $self );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1541 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1542
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1543 my @introns=();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1544 my @exons = @{$self->{'_trans_exon_array'}};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1545 for(my $i=0; $i < scalar(@exons)-1; $i++){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1546 my $intron = new Bio::EnsEMBL::Intron($exons[$i],$exons[$i+1]);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1547 push(@introns, $intron)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1548 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1549 return \@introns;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1550 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1551
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1552
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1553 =head2 length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1554
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1555 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1556 Example : my $t_length = $transcript->length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1557 Description: Returns the sum of the length of all the exons in the transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1558 Returntype : int
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1559 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1560 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1561 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1562
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1563 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1564
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1565 sub length {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1566 my( $self ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1567
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1568 my $length = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1569 foreach my $ex (@{$self->get_all_Exons}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1570 $length += $ex->length;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1571 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1572
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1573 # adjust the length if post transcriptional edits are enabled
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1574 if($self->edits_enabled()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1575 foreach my $se (@{$self->get_all_SeqEdits()}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1576 $length += $se->length_diff();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1577 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1578 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1579
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1580 return $length;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1581 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1582
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1583
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1584 =head2 flush_Exons
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1585
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1586 Arg [1] : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1587 Example : $transcript->flush_Exons();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1588 Description: Removes all Exons from this transcript and flushes related
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1589 internal caches.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1590 Returntype : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1591 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1592 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1593 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1594
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1595 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1596
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1597 sub flush_Exons {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1598 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1599
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1600 $self->{'transcript_mapper'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1601 $self->{'coding_region_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1602 $self->{'coding_region_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1603 $self->{'cdna_coding_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1604 $self->{'cdna_coding_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1605 $self->{'start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1606 $self->{'end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1607 $self->{'strand'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1608
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1609 $self->{'_trans_exon_array'} = [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1610 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1611
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1612 =head2 flush_IntronSupportingEvidence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1613
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1614 Example : $transcript->flush_IntronSupportingEvidence();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1615 Description: Removes all IntronSupportingEvidence from this transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1616 Returntype : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1617 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1618 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1619 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1620
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1621 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1622
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1623 sub flush_IntronSupportingEvidence {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1624 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1625 $self->{_ise_array} = [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1626 return;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1627 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1628
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1629 =head2 five_prime_utr
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1630
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1631 Arg [1] : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1632 Example : my $five_prime = $transcrpt->five_prime_utr
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1633 or warn "No five prime UTR";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1634 Description: Obtains a Bio::Seq object of the five prime UTR of this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1635 transcript. If this transcript is a pseudogene
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1636 (i.e. non-translating) or has no five prime UTR undef is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1637 returned instead.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1638 Returntype : Bio::Seq or undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1639 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1640 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1641 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1642
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1643 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1644
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1645 sub five_prime_utr {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1646 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1647
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1648 my $cdna_coding_start = $self->cdna_coding_start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1649
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1650 return undef if(!$cdna_coding_start);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1651
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1652 my $seq = substr($self->spliced_seq, 0, $cdna_coding_start - 1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1653
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1654 return undef if(!$seq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1655
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1656 return
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1657 Bio::Seq->new( -id => $self->display_id,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1658 -moltype => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1659 -alphabet => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1660 -seq => $seq );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1661 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1662
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1663
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1664 =head2 three_prime_utr
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1665
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1666 Arg [1] : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1667 Example : my $three_prime = $transcrpt->three_prime_utr
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1668 or warn "No three prime UTR";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1669 Description: Obtains a Bio::Seq object of the three prime UTR of this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1670 transcript. If this transcript is a pseudogene
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1671 (i.e. non-translating) or has no three prime UTR,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1672 undef is returned instead.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1673 Returntype : Bio::Seq or undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1674 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1675 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1676 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1677
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1678 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1679
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1680 sub three_prime_utr {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1681 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1682
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1683 my $cdna_coding_end = $self->cdna_coding_end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1684
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1685 return undef if(!$cdna_coding_end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1686
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1687 my $seq = substr($self->spliced_seq, $cdna_coding_end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1688
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1689 return undef if(!$seq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1690
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1691 return
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1692 Bio::Seq->new( -id => $self->display_id,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1693 -moltype => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1694 -alphabet => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1695 -seq => $seq );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1696 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1697
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1698 =head2 five_prime_utr_Feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1699
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1700 Example : my $five_prime = $transcrpt->five_prime_utr_Feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1701 or warn "No five prime UTR";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1702 Description: Returns the genomic coordinates of the start and end of the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1703 5' UTR of this transcript. Note that if you want the sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1704 of the 5' UTR use C<five_prime_utr> as this will return the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1705 sequence from the spliced transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1706 Returntype : Bio::EnsEMBL::Feature or undef if there is no UTR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1707 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1708
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1709 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1710
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1711 sub five_prime_utr_Feature {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1712 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1713 my ($start, $end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1714 my $cdna_coding = $self->cdna_coding_start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1715 my ($genomic_pos) = $self->cdna2genomic($cdna_coding, $cdna_coding);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1716 if($self->strand() == 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1717 $start = $self->seq_region_start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1718 if($start == $genomic_pos->start()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1719 return; # just return as we have no UTR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1720 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1721 $end = $genomic_pos->start() - 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1722 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1723 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1724 $end = $self->seq_region_end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1725 if($end == $genomic_pos->start()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1726 return; # just return as we have no UTR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1727 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1728 $start = $genomic_pos->start() + 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1729 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1730
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1731 my $feature = Bio::EnsEMBL::Feature->new(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1732 -START => $start,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1733 -END => $end,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1734 -STRAND => $self->strand(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1735 -SLICE => $self->slice(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1736 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1737 return $feature;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1738 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1739
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1740 =head2 three_prime_utr_Feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1741
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1742 Example : my $five_prime = $transcrpt->three_prime_utr_Feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1743 or warn "No three prime UTR";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1744 Description: Returns the genomic coordinates of the start and end of the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1745 3' UTR of this transcript. Note that if you want the sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1746 of the 3' UTR use C<three_prime_utr> as this will return the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1747 sequence from the spliced transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1748 Returntype : Bio::EnsEMBL::Feature or undef if there is no UTR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1749 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1750
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1751 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1752
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1753 sub three_prime_utr_Feature {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1754 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1755 my ($start, $end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1756 my $cdna_coding = $self->cdna_coding_end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1757 my ($genomic_pos) = $self->cdna2genomic($cdna_coding, $cdna_coding);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1758 if($self->strand() == 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1759 $end = $self->seq_region_end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1760 if($end == $genomic_pos->start()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1761 return; # just return as we have no UTR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1762 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1763 $start = $genomic_pos->start() + 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1764 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1765 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1766 $start = $self->seq_region_start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1767 if($start == $genomic_pos->start()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1768 return; # just return as we have no UTR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1769 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1770 $end = $genomic_pos->start() - 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1771 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1772 my $feature = Bio::EnsEMBL::Feature->new(
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1773 -START => $start,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1774 -END => $end,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1775 -STRAND => $self->strand(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1776 -SLICE => $self->slice(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1777 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1778 return $feature;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1779 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1780
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1781
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1782 =head2 get_all_translateable_Exons
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1783
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1784 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1785 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1786 Description: Returns a list of exons that translate with the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1787 start and end exons truncated to the CDS regions.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1788 This function does not take into account any SeqEdits
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1789 (post transcriptional RNA modifictions) when constructing the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1790 the 'translateable' exons, and it does not update the phase
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1791 information of the created 'translateable' exons.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1792
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1793 If this transcript is a pseudogene (i.e. non-translateable)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1794 a reference to an empty list is returned.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1795
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1796 Returntype : listref Bio::EnsEMBL::Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1797 Exceptions : throw if translation has invalid information
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1798 Caller : Genebuild
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1799 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1800
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1801 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1802
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1803
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1804 sub get_all_translateable_Exons {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1805 my ( $self ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1806
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1807 #return an empty list if there is no translation (i.e. pseudogene)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1808 my $translation = $self->translation or return [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1809 my $start_exon = $translation->start_Exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1810 my $end_exon = $translation->end_Exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1811 my $t_start = $translation->start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1812 my $t_end = $translation->end;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1813
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1814 my( @translateable );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1815
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1816 foreach my $ex (@{$self->get_all_Exons}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1817
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1818 if ($ex ne $start_exon and ! @translateable) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1819 next; # Not yet in translated region
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1820 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1821
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1822 my $length = $ex->length;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1823
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1824 my $adjust_start = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1825 my $adjust_end = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1826 # Adjust to translation start if this is the start exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1827 if ($ex == $start_exon ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1828 if ($t_start < 1 or $t_start > $length) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1829 warning("WARN: Translation start '$t_start' is outside exon $ex length=$length");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1830 return [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1831 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1832 $adjust_start = $t_start - 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1833 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1834
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1835 # Adjust to translation end if this is the end exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1836 if ($ex == $end_exon) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1837 # if ($t_end < 1 or $t_end > $length) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1838 # throw("Translation end '$t_end' is outside exon $ex length=$length");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1839 # }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1840 $adjust_end = $t_end - $length;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1841 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1842
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1843 # Make a truncated exon if the translation start or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1844 # end causes the coordinates to be altered.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1845 if ($adjust_end || $adjust_start) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1846 my $newex = $ex->adjust_start_end( $adjust_start, $adjust_end );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1847
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1848 push( @translateable, $newex );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1849 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1850 push(@translateable, $ex);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1851 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1852
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1853 # Exit the loop when we've found the last exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1854 last if $ex eq $end_exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1855 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1856 return \@translateable;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1857 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1858
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1859
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1860 =head2 translate
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1861
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1862 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1863 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1864 Description: Return the peptide (plus eventual stop codon) for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1865 this transcript. Does N-padding of non-phase
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1866 matching exons. It uses translateable_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1867 internally. Returns undef if this Transcript does
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1868 not have a translation (i.e. pseudogene).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1869 Returntype : Bio::Seq or undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1870 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1871 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1872 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1873
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1874 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1875
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1876 sub translate {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1877 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1878
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1879 if ( !defined( $self->translation() ) ) { return undef }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1880
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1881 my $mrna = $self->translateable_seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1882
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1883 # Alternative codon tables (such as the mitochondrial codon table)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1884 # can be specified for a sequence region via the seq_region_attrib
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1885 # table. A list of codon tables and their codes is at:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1886 # http://www.ncbi.nlm.nih.gov/htbin-post/Taxonomy/wprintgc?mode=c
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1887
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1888 my $codon_table_id;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1889 my ( $complete5, $complete3 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1890 if ( defined( $self->slice() ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1891 my $attrib;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1892
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1893 ($attrib) = @{ $self->slice()->get_all_Attributes('codon_table') };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1894 if ( defined($attrib) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1895 $codon_table_id = $attrib->value();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1896 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1897
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1898 ($attrib) = @{ $self->slice()->get_all_Attributes('complete5') };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1899 if ( defined($attrib) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1900 $complete5 = $attrib->value();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1901 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1902
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1903 ($attrib) = @{ $self->slice()->get_all_Attributes('complete3') };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1904 if ( defined($attrib) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1905 $complete3 = $attrib->value();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1906 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1907 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1908 $codon_table_id ||= 1; # default vertebrate codon table
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1909
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1910 # Remove final stop codon from the mrna if it is present. Produced
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1911 # peptides will not have '*' at end. If terminal stop codon is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1912 # desired call translatable_seq directly and produce a translation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1913 # from it.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1914
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1915 if ( CORE::length($mrna) % 3 == 0 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1916 my $codon_table =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1917 Bio::Tools::CodonTable->new( -id => $codon_table_id );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1918
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1919 if ( $codon_table->is_ter_codon( substr( $mrna, -3, 3 ) ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1920 substr( $mrna, -3, 3, '' );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1921 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1922 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1923
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1924 if ( CORE::length($mrna) < 1 ) { return undef }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1925
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1926 my $display_id = $self->translation->display_id()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1927 || scalar( $self->translation() );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1928
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1929 my $peptide = Bio::Seq->new( -seq => $mrna,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1930 -moltype => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1931 -alphabet => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1932 -id => $display_id );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1933
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1934 my $translation =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1935 $peptide->translate( undef, undef, undef, $codon_table_id, undef,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1936 undef, $complete5, $complete3 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1937
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1938 if ( $self->edits_enabled() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1939 $self->translation()->modify_translation($translation);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1940 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1941
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1942 return $translation;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1943 } ## end sub translate
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1944
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1945
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1946 =head2 seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1947
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1948 Description: Returns a Bio::Seq object which consists of just
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1949 : the sequence of the exons concatenated together,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1950 : without messing about with padding with N\'s from
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1951 : Exon phases like B<dna_seq> does.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1952 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1953 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1954 Returntype : Bio::Seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1955 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1956 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1957 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1958
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1959 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1960
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1961 sub seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1962 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1963
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1964 return
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1965 Bio::Seq->new( -id => $self->display_id,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1966 -moltype => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1967 -alphabet => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1968 -seq => $self->spliced_seq );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1969 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1970
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1971
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1972 =head2 pep2genomic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1973
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1974 Description: See Bio::EnsEMBL::TranscriptMapper::pep2genomic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1975
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1976 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1977
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1978 sub pep2genomic {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1979 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1980 return $self->get_TranscriptMapper()->pep2genomic(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1981 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1982
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1983
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1984 =head2 genomic2pep
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1985
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1986 Description: See Bio::EnsEMBL::TranscriptMapper::genomic2pep
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1987
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1988 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1989
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1990 sub genomic2pep {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1991 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1992 return $self->get_TranscriptMapper()->genomic2pep(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1993 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1994
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1995
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1996 =head2 cdna2genomic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1997
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1998 Description: See Bio::EnsEMBL::TranscriptMapper::cdna2genomic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1999
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2000 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2001
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2002 sub cdna2genomic {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2003 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2004 return $self->get_TranscriptMapper()->cdna2genomic(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2005 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2006
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2007
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2008 =head2 genomic2cdna
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2009
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2010 Description: See Bio::EnsEMBL::TranscriptMapper::genomic2cdna
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2011
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2012 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2013
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2014 sub genomic2cdna {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2015 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2016 return $self->get_TranscriptMapper->genomic2cdna(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2017 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2018
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2019
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2020 =head2 get_TranscriptMapper
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2021
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2022 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2023 Example : my $trans_mapper = $transcript->get_TranscriptMapper();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2024 Description: Gets a TranscriptMapper object which can be used to perform
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2025 a variety of coordinate conversions relating this transcript,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2026 genomic sequence and peptide resulting from this transcripts
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2027 translation.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2028 Returntype : Bio::EnsEMBL::TranscriptMapper
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2029 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2030 Caller : cdna2genomic, pep2genomic, genomic2cdna, cdna2genomic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2031 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2032
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2033 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2034
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2035 sub get_TranscriptMapper {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2036 my ( $self ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2037 return $self->{'transcript_mapper'} ||=
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2038 Bio::EnsEMBL::TranscriptMapper->new($self);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2039 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2040
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2041
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2042 =head2 start_Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2043
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2044 Title : start_Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2045 Usage : $start_exon = $transcript->start_Exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2046 Returntype : Bio::EnsEMBL::Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2047 Description : The first exon in the transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2048 Args : NONE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2049 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2050
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2051 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2052
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2053 sub start_Exon {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2054 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2055 return $self->get_all_Exons()->[0];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2056 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2057
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2058
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2059 =head2 end_Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2060
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2061 Title : end_exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2062 Usage : $end_exon = $transcript->end_Exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2063 Description : The last exon in the transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2064 Returntype : Bio::EnsEMBL::Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2065 Args : NONE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2066 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2067
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2068 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2069
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2070 sub end_Exon {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2071 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2072 return $self->get_all_Exons()->[-1];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2073 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2074
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2075
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2076 =head2 description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2077
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2078 Title : description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2079 Usage : $obj->description($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2080 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2081 Returns : String
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2082 Args : newvalue (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2083 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2084
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2085 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2086
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2087 sub description {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2088 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2089 $self->{'description'} = shift if( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2090 return $self->{'description'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2091 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2092
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2093
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2094 =head2 version
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2095
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2096 Title : version
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2097 Usage : $obj->version()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2098 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2099 Returns : String
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2100 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2101 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2102
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2103 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2105 sub version {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2106 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2107 $self->{'version'} = shift if( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2108 return $self->{'version'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2109 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2110
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2111
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2112 =head2 stable_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2114 Title : stable_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2115 Usage : $obj->stable_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2116 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2117 Returns : String
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2118 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2119 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2120
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2121 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2122
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2123 sub stable_id {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2124 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2125 $self->{'stable_id'} = shift if( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2126 return $self->{'stable_id'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2127 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2128
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2129
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2130 =head2 is_current
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2131
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2132 Arg [1] : Boolean $is_current
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2133 Example : $transcript->is_current(1)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2134 Description: Getter/setter for is_current state of this transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2135 Returntype : Int
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2136 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2137 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2138 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2139
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2140 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2141
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2142 sub is_current {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2143 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2144 $self->{'is_current'} = shift if (@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2145 return $self->{'is_current'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2146 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2147
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2148
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2149 =head2 created_date
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2150
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2151 Arg [1] : (optional) string to be used for the created date
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2152 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2153 Description: get/set for attribute created date
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2154 Returntype : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2155 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2156 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2157 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2158
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2159 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2160
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2161 sub created_date {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2162 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2163 $self->{'created_date'} = shift if ( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2164 return $self->{'created_date'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2165 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2166
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2167
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2168 =head2 modified_date
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2169
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2170 Arg [1] : (optional) string to be used for the modified date
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2171 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2172 Description: get/set for attribute modified date
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2173 Returntype : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2174 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2175 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2176 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2177
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2178 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2179
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2180 sub modified_date {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2181 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2182 $self->{'modified_date'} = shift if ( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2183 return $self->{'modified_date'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2184 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2185
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2186
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2187 =head2 swap_exons
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2188
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2189 Arg [1] : Bio::EnsEMBL::Exon $old_Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2190 An exon that should be replaced
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2191 Arg [2] : Bio::EnsEMBL::Exon $new_Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2192 The replacement Exon
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2193 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2194 Description: exchange an exon in the current Exon list with a given one.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2195 Usually done before storing of Gene, so the Exons can
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2196 be shared between Transcripts.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2197 Returntype : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2198 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2199 Caller : GeneAdaptor->store()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2200 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2201
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2202 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2203
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2204 sub swap_exons {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2205 my ( $self, $old_exon, $new_exon ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2206
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2207 my $arref = $self->{'_trans_exon_array'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2208 for(my $i = 0; $i < @$arref; $i++) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2209 if($arref->[$i] == $old_exon) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2210 $arref->[$i] = $new_exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2211 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2212 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2213 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2214
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2215 if( defined $self->{'translation'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2216 if( $self->translation()->start_Exon() == $old_exon ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2217 $self->translation()->start_Exon( $new_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2218 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2219 if( $self->translation()->end_Exon() == $old_exon ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2220 $self->translation()->end_Exon( $new_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2221 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2222 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2223 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2224
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2225
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2226 =head2 equals
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2227
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2228 Arg [1] : Bio::EnsEMBL::Transcript transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2229 Example : if ($transcriptA->equals($transcriptB)) { ... }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2230 Description : Compares two transcripts for equality.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2231 The test for eqality goes through the following list
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2232 and terminates at the first true match:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2233
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2234 1. If Bio::EnsEMBL::Feature::equals() returns false,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2235 then the transcripts are *not* equal.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2236 2. If the biotypes differ, then the transcripts are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2237 *not* equal.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2238 3. If both transcripts have stable IDs: if these are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2239 the same, the transcripts are equal, otherwise not.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2240 4. If both transcripts have the same number of exons
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2241 and if these are (when compared pair-wise sorted by
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2242 start-position and length) the same, then they are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2243 equal, otherwise not.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2244
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2245 Return type : Boolean (0, 1)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2246
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2247 Exceptions : Thrown if a non-transcript is passed as the argument.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2248
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2249 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2251 sub equals {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2252 my ( $self, $transcript ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2253
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2254 if ( !defined($transcript) ) { return 0 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2255 if ( $self eq $transcript ) { return 1 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2256
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2257 assert_ref( $transcript, 'Bio::EnsEMBL::Transcript' );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2258
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2259 my $feature_equals = $self->SUPER::equals($transcript);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2260 if ( defined($feature_equals) && $feature_equals == 0 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2261 return 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2262 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2263
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2264 if ( $self->biotype() ne $transcript->biotype() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2265 return 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2266 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2267
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2268 if ( defined( $self->stable_id() ) &&
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2269 defined( $transcript->stable_id() ) )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2270 {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2271 if ( $self->stable_id() eq $transcript->stable_id() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2272 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2273 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2274 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2275 return 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2276 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2277 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2278
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2279 my @self_exons = sort {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2280 $a->start() <=> $b->start() ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2281 $a->length() <=> $b->length()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2282 } @{ $self->get_all_Exons() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2283 my @transcript_exons = sort {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2284 $a->start() <=> $b->start() ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2285 $a->length() <=> $b->length()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2286 } @{ $transcript->get_all_Exons() };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2287
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2288 if ( scalar(@self_exons) != scalar(@transcript_exons) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2289 return 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2290 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2291
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2292 while (@self_exons) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2293 my $self_exon = shift(@self_exons);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2294 my $transcript_exon = shift(@transcript_exons);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2295
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2296 if ( !$self_exon->equals($transcript_exon) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2297 return 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2298 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2299 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2300
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2301 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2302 } ## end sub equals
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2303
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2304 =head2 transform
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2305
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2306 Arg 1 : String $coordinate_system_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2307 Arg [2] : String $coordinate_system_version
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2308 Example : $transcript = $transcript->transform('contig');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2309 $transcript = $transcript->transform('chromosome', 'NCBI33');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2310 Description: Moves this Transcript to the given coordinate system.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2311 If this Transcript has Exons attached, they move as well.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2312 A new Transcript is returned. If the transcript cannot be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2313 transformed to the destination coordinate system undef is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2314 returned instead.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2315 Returntype : Bio::EnsEMBL::Transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2316 Exceptions : wrong parameters
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2317 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2318 Status : Medium Risk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2319 : deprecation needs to be removed at some time
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2320
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2321 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2322
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2323
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2324 sub transform {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2325 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2326
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2327 # catch for old style transform calls
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2328 if( ref $_[0] eq 'HASH') {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2329 deprecate("Calling transform with a hashref is deprecate.\n" .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2330 'Use $trans->transfer($slice) or ' .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2331 '$trans->transform("coordsysname") instead.');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2332 my (undef, $new_ex) = each(%{$_[0]});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2333 return $self->transfer($new_ex->slice);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2334 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2335
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2336 my $new_transcript = $self->SUPER::transform(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2337 if ( !defined($new_transcript) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2338 my @segments = @{ $self->project(@_) };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2339 # if it projects, maybe the exons transform well?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2340 # lazy load them here
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2341 if ( !@segments ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2342 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2343 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2344 $self->get_all_Exons();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2345 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2346
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2347
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2348 if( exists $self->{'_trans_exon_array'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2349 my @new_exons;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2350 my ( $low_start, $hi_end, $slice );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2351 # we want to check whether the transform preserved 5prime 3prime
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2352 # ordering. This assumes 5->3 order. No complaints on transsplicing.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2353
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2354 my ( $last_new_start, $last_old_strand,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2355 $last_new_strand, $start_exon, $end_exon,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2356 $last_seq_region_name );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2357 my $first = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2358 my $ignore_order = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2359 my $order_broken = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2360
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2361 for my $old_exon ( @{$self->{'_trans_exon_array'}} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2362 my $new_exon = $old_exon->transform( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2363 return undef if( !defined $new_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2364 if( ! defined $new_transcript ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2365 if( !$first ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2366 if( $old_exon->strand() != $last_old_strand ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2367 # transsplicing, ignore ordering
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2368 $ignore_order = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2369 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2370
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2371 if( $new_exon->slice()->seq_region_name() ne
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2372 $last_seq_region_name ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2373 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2374 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2375
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2376 if( $last_new_strand == 1 and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2377 $new_exon->start() < $last_new_start ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2378 $order_broken = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2379 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2380
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2381 if( $last_new_strand == -1 and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2382 $new_exon->start() > $last_new_start ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2383 $order_broken = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2384 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2385
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2386 #additional check that if exons were on same strand previously, they should be again
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2387 if(($last_old_strand == $old_exon->strand()) and !($last_new_strand == $new_exon->strand())){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2388 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2389 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2390
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2391 if( $new_exon->start() < $low_start ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2392 $low_start = $new_exon->start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2393 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2394 if( $new_exon->end() > $hi_end ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2395 $hi_end = $new_exon->end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2396 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2397 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2398 $first = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2399 $low_start = $new_exon->start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2400 $hi_end = $new_exon->end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2401 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2402
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2403 $last_seq_region_name = $new_exon->slice()->seq_region_name();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2404 $last_old_strand = $old_exon->strand();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2405 $last_new_start = $new_exon->start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2406 $last_new_strand = $new_exon->strand();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2407 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2408
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2409 if( defined $self->{'translation'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2410 if( $self->translation()->start_Exon() == $old_exon ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2411 $start_exon = $new_exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2412 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2413 if( $self->translation()->end_Exon() == $old_exon ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2414 $end_exon = $new_exon;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2415 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2416 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2417 push( @new_exons, $new_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2418 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2419
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2420 if( $order_broken && !$ignore_order ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2421 warning( "Order of exons broken in transform of ".$self->dbID() );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2422 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2423 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2424
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2425 if( !defined $new_transcript ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2426 %$new_transcript = %$self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2427 bless $new_transcript, ref( $self );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2428 $new_transcript->start( $low_start );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2429 $new_transcript->end( $hi_end );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2430 $new_transcript->slice( $new_exons[0]->slice() );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2431 $new_transcript->strand( $new_exons[0]->strand() );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2432 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2433
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2434 $new_transcript->{'_trans_exon_array'} = \@new_exons;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2435
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2436 # should be ok to do inside exon array loop
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2437 # translations only exist together with the exons ...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2438
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2439 if( defined $self->{'translation'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2440 my $new_translation;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2441 %$new_translation = %{$self->{'translation'}};;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2442 bless $new_translation, ref( $self->{'translation'} );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2443 $new_transcript->{'translation'} = $new_translation;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2444 $new_translation->start_Exon( $start_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2445 $new_translation->end_Exon( $end_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2446 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2447 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2448
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2449 if( exists $self->{'_supporting_evidence'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2450 my @new_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2451 for my $old_feature ( @{$self->{'_supporting_evidence'}} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2452 my $new_feature = $old_feature->transform( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2453 if (defined $new_feature) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2454 push @new_features, $new_feature;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2455 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2456 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2457 $new_transcript->{'_supporting_evidence'} = \@new_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2458 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2459
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2460 if(exists $self->{_ise_array}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2461 my @new_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2462 foreach my $old_feature ( @{$self->{_ise_array}} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2463 my $new_feature = $old_feature->transform(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2464 push( @new_features, $new_feature );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2465 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2466 $new_transcript->{_ise_array} = \@new_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2467 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2468
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2469
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2470 # flush cached internal values that depend on the exon coords
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2471 $new_transcript->{'transcript_mapper'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2472 $new_transcript->{'coding_region_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2473 $new_transcript->{'coding_region_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2474 $new_transcript->{'cdna_coding_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2475 $new_transcript->{'cdna_coding_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2476
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2477 return $new_transcript;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2478 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2479
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2480
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2481 =head2 transfer
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2482
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2483 Arg 1 : Bio::EnsEMBL::Slice $destination_slice
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2484 Example : $transcript = $transcript->transfer($slice);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2485 Description: Moves this transcript to the given slice.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2486 If this Transcripts has Exons attached, they move as well.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2487 Returntype : Bio::EnsEMBL::Transcript
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2488 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2489 Caller : general
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2490 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2491
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2492 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2493
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2494
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2495 sub transfer {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2496 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2497
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2498 my $new_transcript = $self->SUPER::transfer( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2499 return undef unless $new_transcript;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2500
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2501 if( defined $self->{'translation'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2502 my $new_translation;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2503 %$new_translation = %{$self->{'translation'}};;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2504 bless $new_translation, ref( $self->{'translation'} );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2505 $new_transcript->{'translation'} = $new_translation;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2506 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2507
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2508 if( exists $self->{'_trans_exon_array'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2509 my @new_exons;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2510 for my $old_exon ( @{$self->{'_trans_exon_array'}} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2511 my $new_exon = $old_exon->transfer( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2512 if( defined $new_transcript->{'translation'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2513 if( $new_transcript->translation()->start_Exon() == $old_exon ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2514 $new_transcript->translation()->start_Exon( $new_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2515 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2516 if( $new_transcript->translation()->end_Exon() == $old_exon ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2517 $new_transcript->translation()->end_Exon( $new_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2518 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2519 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2520 push( @new_exons, $new_exon );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2521 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2522
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2523 $new_transcript->{'_trans_exon_array'} = \@new_exons;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2524 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2525
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2526 if( exists $self->{'_supporting_evidence'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2527 my @new_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2528 for my $old_feature ( @{$self->{'_supporting_evidence'}} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2529 my $new_feature = $old_feature->transfer( @_ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2530 push( @new_features, $new_feature );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2531 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2532 $new_transcript->{'_supporting_evidence'} = \@new_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2533 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2534
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2535 if(exists $self->{_ise_array}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2536 my @new_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2537 foreach my $old_feature ( @{$self->{_ise_array}} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2538 my $new_feature = $old_feature->transfer(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2539 push( @new_features, $new_feature );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2540 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2541 $new_transcript->{_ise_array} = \@new_features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2542 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2543
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2544
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2545 # flush cached internal values that depend on the exon coords
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2546 $new_transcript->{'transcript_mapper'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2547 $new_transcript->{'coding_region_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2548 $new_transcript->{'coding_region_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2549 $new_transcript->{'cdna_coding_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2550 $new_transcript->{'cdna_coding_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2551
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2552 return $new_transcript;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2553 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2554
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2555
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2556 =head recalculate_coordinates
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2557
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2558 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2559 Example : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2560 Description: called when exon coordinate change happened to recalculate the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2561 coords of the transcript. This method should be called if one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2562 of the exons has been changed.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2563 Returntype : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2564 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2565 Caller : internal
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2566 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2567
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2568 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2569
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2570 sub recalculate_coordinates {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2571 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2572
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2573 my $exons = $self->get_all_Exons();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2574
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2575 if ( !$exons || !@{$exons} ) { return }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2576
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2577 my ( $slice, $start, $end, $strand );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2578
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2579 my $e_index;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2580 for ( $e_index = 0; $e_index < @{$exons}; $e_index++ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2581 my $e = $exons->[$e_index];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2582
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2583 # Skip missing or unmapped exons!
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2584 if ( defined($e) && defined( $e->start() ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2585 $slice = $e->slice();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2586 $strand = $e->strand();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2587 $start = $e->start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2588 $end = $e->end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2589
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2590 last;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2591 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2592 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2593
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2594 my $transsplicing = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2595
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2596 # Start loop after first exon with coordinates
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2597 for ( ; $e_index < @{$exons}; $e_index++ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2598 my $e = $exons->[$e_index];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2599
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2600 # Skip missing or unmapped exons!
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2601 if ( !defined($e) || !defined( $e->start() ) ) { next }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2602
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2603 if ( $e->start() < $start ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2604 $start = $e->start();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2605 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2606
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2607 if ( $e->end() > $end ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2608 $end = $e->end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2609 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2610
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2611 if ( defined($slice)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2612 && $e->slice()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2613 && $e->slice()->name() ne $slice->name() )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2614 {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2615 throw( "Exons with different slices "
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2616 . "are not allowed on one Transcript" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2617 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2618
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2619 if ( $e->strand() != $strand ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2620 $transsplicing = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2621 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2622 } ## end for ( ; $e_index < @{$exons...})
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2623 if ($transsplicing) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2624 warning("Transcript contained trans splicing event");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2625 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2626
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2627 $self->start($start);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2628 $self->end($end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2629 $self->strand($strand);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2630 $self->slice($slice);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2631
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2632 # flush cached internal values that depend on the exon coords
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2633 $self->{'transcript_mapper'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2634 $self->{'coding_region_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2635 $self->{'coding_region_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2636 $self->{'cdna_coding_start'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2637 $self->{'cdna_coding_end'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2638 } ## end sub recalculate_coordinates
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2639
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2640
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2641 =head2 display_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2642
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2643 Arg [1] : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2644 Example : print $transcript->display_id();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2645 Description: This method returns a string that is considered to be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2646 the 'display' identifier. For transcripts this is (depending on
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2647 availability and in this order) the stable Id, the dbID or an
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2648 empty string.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2649 Returntype : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2650 Exceptions : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2651 Caller : web drawing code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2652 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2653
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2654 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2655
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2656 sub display_id {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2657 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2658 return $self->{'stable_id'} || $self->dbID || '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2659 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2660
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2661
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2662 =head2 get_all_peptide_variations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2663
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2664 Description: See Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_peptide_variations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2665 Status : At Risk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2666 : Will be replaced with modules from the ensembl-variation package
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2667
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2668
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2669 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2670
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2671 sub get_all_peptide_variations {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2672 my ($self, $source, $snps) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2673
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2674 if(!$snps) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2675 my $shash = Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_cdna_SNPs($self, $source);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2676 $snps = $shash->{'coding'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2677 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2678
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2679 return Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_peptide_variations($self,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2680 $snps);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2681 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2682
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2683
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2684 =head2 get_all_SNPs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2685
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2686 Description: See Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_SNPs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2687
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2688 Status : At Risk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2689 : Will be replaced with modules from the ensembl-variation package
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2690
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2691 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2692
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2693 sub get_all_SNPs {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2694 return Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_SNPs(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2695 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2696
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2697
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2698 =head2 get_all_cdna_SNPs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2699
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2700 Description: See Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_cdna_SNPs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2701
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2702 Status : At Risk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2703 : Will be replaced with modules from the ensembl-variation package
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2704
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2705 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2706
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2707 sub get_all_cdna_SNPs {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2708 return Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_cdna_SNPs(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2709 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2710
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2711
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2712 =head2 get_all_DASFactories
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2713
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2714 Arg [1] : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2715 Function : Retrieves a listref of registered DAS objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2716 Returntype: [ DAS_objects ]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2717 Exceptions:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2718 Caller :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2719 Example : $dasref = $prot->get_all_DASFactories
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2720 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2721
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2722 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2723
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2724 sub get_all_DASFactories {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2725 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2726 return [ $self->adaptor()->db()->_each_DASFeatureFactory ];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2727 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2728
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2729
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2730 =head2 get_all_DAS_Features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2731
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2732 Arg [1] : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2733 Example : $features = $prot->get_all_DAS_Features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2734 Description: Retreives a hash reference to a hash of DAS feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2735 sets, keyed by the DNS, NOTE the values of this hash
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2736 are an anonymous array containing:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2737 (1) a pointer to an array of features;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2738 (2) a pointer to the DAS stylesheet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2739 Returntype : hashref of Bio::SeqFeatures
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2740 Exceptions : ?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2741 Caller : webcode
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2742 Status : Stable
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2743
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2744
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2745 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2746
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2747 sub get_all_DAS_Features {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2748 my ($self,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2749
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2750 my $db = $self->adaptor->db;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2751 my $GeneAdaptor = $db->get_GeneAdaptor;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2752 my $Gene = $GeneAdaptor->fetch_by_transcript_stable_id($self->stable_id);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2753 my $slice = $Gene->feature_Slice;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2754 return $self->SUPER::get_all_DAS_Features($slice);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2755 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2756
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2757
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2758
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2759 =head2 _compare_xrefs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2760
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2761 Description: compare xrefs based on priority (descending), then
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2762 name (ascending), then display_label (ascending)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2763
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2764 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2765
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2766 sub _compare_xrefs {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2767 # compare on priority first (descending)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2768 if ( $a->priority() != $b->priority() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2769 return $b->priority() <=> $a->priority();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2770 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2771 # equal priorities, compare on external_db name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2772 if ( $a->dbname() ne $b->dbname() ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2773 return $a->dbname() cmp $b->dbname();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2774 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2775 # equal priorities and names, compare on display_label
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2776 return $a->display_id() cmp $b->display_id();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2777 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2778 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2779 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2780
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2781
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2782 =head2 load
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2783
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2784 Arg [1] : Boolean $load_xrefs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2785 Load (or don't load) xrefs. Default is to load xrefs.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2786 Example : $transcript->load();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2787 Description : The Ensembl API makes extensive use of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2788 lazy-loading. Under some circumstances (e.g.,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2789 when copying genes between databases), all data of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2790 an object needs to be fully loaded. This method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2791 loads the parts of the object that are usually
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2792 lazy-loaded. It will also call the equivalent
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2793 method on any translation and on all exons of the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2794 transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2795 Returntype : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2796
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2797 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2798
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2799 sub load {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2800 my ( $self, $load_xrefs ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2801
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2802 if ( !defined($load_xrefs) ) { $load_xrefs = 1 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2803
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2804 my $translation = $self->translation();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2805 if ( defined($translation) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2806 $translation->load($load_xrefs);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2807
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2808 my $alt_translations = $self->get_all_alternative_translations();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2809
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2810 if ( defined($alt_translations) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2811 foreach my $alt_translation ( @{$alt_translations} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2812 $alt_translation->load($load_xrefs);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2813 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2814 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2815 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2816
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2817 foreach my $exon ( @{ $self->get_all_Exons() } ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2818 $exon->load();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2819 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2820
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2821 $self->stable_id();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2822 $self->analysis();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2823 $self->get_all_Attributes();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2824 $self->get_all_supporting_features();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2825
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2826 if ($load_xrefs) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2827 $self->get_all_DBEntries();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2828 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2829
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2830 } ## end sub load
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2831
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2832 =head2 summary_as_hash
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2833
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2834 Example : $transcript_summary = $transcript->summary_as_hash();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2835 Description : Extends Feature::summary_as_hash
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2836 Retrieves a summary of this Transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2837 Returns : hashref of descriptive strings
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2838 Status : Intended for internal use
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2839 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2840
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2841 sub summary_as_hash {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2842 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2843 my $summary_ref = $self->SUPER::summary_as_hash;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2844 $summary_ref->{'description'} = $self->description;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2845 $summary_ref->{'biotype'} = $self->biotype;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2846 my $parent_gene = $self->get_Gene();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2847 $summary_ref->{'Parent'} = $parent_gene->display_id;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2848 return $summary_ref;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2849 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2850
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2851 =head2 get_Gene
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2852
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2853 Example : $gene = $transcript->get_Gene;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2854 Description : Locates the parent Gene using a transcript dbID
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2855 Returns : Bio::EnsEMBL::Gene
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2856
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2857 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2858
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2859 sub get_Gene {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2860 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2861 my $gene_adaptor = $self->adaptor->db->get_GeneAdaptor();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2862 my $parent_gene = $gene_adaptor->fetch_by_transcript_id($self->dbID);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2863 return $parent_gene;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2864 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2865
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2866 ###########################
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2867 # DEPRECATED METHODS FOLLOW
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2868 ###########################
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2869
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2870 =head2 sort
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2871
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2872 Description: DEPRECATED. This method is no longer needed. Exons are sorted
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2873 automatically when added to the transcript.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2874
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2875 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2876
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2877 sub sort {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2878 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2879
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2880 deprecate( "Exons are kept sorted, you dont have to call sort any more" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2881 # Fetch all the features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2882 my @exons = @{$self->get_all_Exons()};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2883
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2884 # Empty the feature table
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2885 $self->flush_Exons();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2886
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2887 # Now sort the exons and put back in the feature table
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2888 my $strand = $exons[0]->strand;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2889
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2890 if ($strand == 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2891 @exons = sort { $a->start <=> $b->start } @exons;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2892 } elsif ($strand == -1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2893 @exons = sort { $b->start <=> $a->start } @exons;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2894 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2895
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2896 foreach my $e (@exons) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2897 $self->add_Exon($e);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2898 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2899 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2900
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2901
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2902 # _translation_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2903 # Usage : DEPRECATED - not needed anymore
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2904
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2905 sub _translation_id {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2906 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2907 deprecate( "This method shouldnt be necessary any more" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2908 if( @_ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2909 my $value = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2910 $self->{'_translation_id'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2911 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2912 return $self->{'_translation_id'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2913
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2914 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2915
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2916
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2917 =head2 created
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2918
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2919 Description: DEPRECATED - this attribute is not part of transcript anymore
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2920
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2921 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2922
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2923 sub created{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2924 my $obj = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2925 deprecate( "This attribute is no longer supported" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2926 if( @_ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2927 my $value = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2928 $obj->{'created'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2929 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2930 return $obj->{'created'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2931 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2932
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2933
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2934 =head2 modified
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2935
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2936 Description: DEPRECATED - this attribute is not part of transcript anymore
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2937
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2938 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2939
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2940 sub modified{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2941 my $obj = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2942 deprecate( "This attribute is no longer supported" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2943 if( @_ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2944 my $value = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2945 $obj->{'modified'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2946 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2947 return $obj->{'modified'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2948 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2949
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2950
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2951 =head2 temporary_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2952
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2953 Function: DEPRECATED: Use dbID or stable_id or something else instead
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2954
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2955 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2956
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2957 sub temporary_id{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2958 my ($obj,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2959 deprecate( "I cant see what a temporary_id is good for, please use dbID" .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2960 "or stableID or\ntry without an id." );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2961 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2962 $obj->{'temporary_id'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2963 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2964 return $obj->{'temporary_id'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2965 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2966
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2967
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2968 =head2 type
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2969
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2970 Description: DEPRECATED. Use biotype() instead.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2971
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2972 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2973
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2974 sub type {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2975 deprecate("Use biotype() instead");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2976 biotype(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2977 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2978
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2979
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2980 =head2 confidence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2981
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2982 Description: DEPRECATED. Use status() instead.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2983
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2984 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2985
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2986 sub confidence {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2987 deprecate("Use status() instead");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2988 status(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2989 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2990
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2991
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2992 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2993