annotate variant_effect_predictor/Bio/EnsEMBL/Transcript.pm @ 3:d30fa12e4cc5 default tip

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