annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/TranslationAdaptor.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::DBSQL::TranslationAdaptor - Provides a means to fetch and store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 Translation objects from a database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 This adaptor provides a means to retrieve and store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Bio::EnsEMBL::Translation objects from/in a database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 Translation objects only truly make sense in the context of their
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 transcripts so the recommended means to retrieve Translations is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 by retrieving the Transcript object first, and then fetching the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 Translation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 use Bio::EnsEMBL::Registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 Bio::EnsEMBL::Registry->load_registry_from_db(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 -host => 'ensembldb.ensembl.org',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 -user => 'anonymous'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $transcript_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 Bio::EnsEMBL::Registry->get_adaptor( "human", "core",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 "transcript" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 $translation_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 Bio::EnsEMBL::Registry->get_adaptor( "human", "core",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 "translation" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 my $transcript = $transcript_adaptor->fetch_by_dbID(131243);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 my $translation =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 $translation_adaptor->fetch_by_Transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 print("Translation Start Site: "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 . $translation->start_Exon()->stable_id() . " "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 . $translation->start()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 . "\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 print("Translation Stop: "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 . $translation->end_Exon()->stable_id() . " "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 . $translation->end() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 package Bio::EnsEMBL::DBSQL::TranslationAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 use Bio::EnsEMBL::DBSQL::BaseAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use Bio::EnsEMBL::Translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use Bio::EnsEMBL::Utils::Exception qw( throw warning deprecate );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use Bio::EnsEMBL::Utils::Scalar qw( assert_ref );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 @ISA = qw( Bio::EnsEMBL::DBSQL::BaseAdaptor );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 =head2 fetch_all_alternative_by_Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 @tl = @{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 $translation_adaptor->fetch_all_alternative_by_Transcript(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 $transcript)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Description: Retrieves all alternative translations associated with a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 particular transcript. If no alternative translation is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 found, a reference to an empty list is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Returntype : listref of Bio::EnsEMBL::Translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Exceptions : throw on incorrect argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Caller : Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 sub fetch_all_alternative_by_Transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 my ( $self, $transcript ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 assert_ref($transcript, 'Bio::EnsEMBL::Transcript');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my $tl_created_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $self->db()->dbc()->from_date_to_seconds('tl.created_date');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 my $tl_modified_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 $self->db()->dbc()->from_date_to_seconds('tl.modified_date');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my $sql =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 sprintf( "SELECT tl.translation_id, tl.start_exon_id, "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 . "tl.end_exon_id, tl.seq_start, tl.seq_end, "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 . "tl.stable_id, tl.version, %s, %s "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 . "FROM translation tl "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 . "JOIN transcript t "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 . "ON (t.transcript_id = tl.transcript_id) "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 . "WHERE tl.transcript_id = ? "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 . "AND tl.translation_id != t.canonical_translation_id",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 $tl_created_date, $tl_modified_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 my $transcript_id = $transcript->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 $sth->bind_param( 1, $transcript_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 my (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 $translation_id, $start_exon_id, $end_exon_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 $seq_start, $seq_end, $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $version, $created_date, $modified_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $sth->bind_columns(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 \(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 $translation_id, $start_exon_id, $end_exon_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $seq_start, $seq_end, $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 $version, $created_date, $modified_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 # Get all alternative translations.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 my $translations = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 if ( !defined($translation_id) ) { next }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my ( $start_exon, $end_exon );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 # this will load all the exons whenever we load the translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 # but I guess thats ok ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 foreach my $exon ( @{ $transcript->get_all_Exons() } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 if ( $exon->dbID() == $start_exon_id ) { $start_exon = $exon }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 if ( $exon->dbID() == $end_exon_id ) { $end_exon = $exon }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 if ( !( defined($start_exon) && defined($end_exon) ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 throw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 "Could not find start or end exon in transcript_id=%d\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $transcript->dbID() ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 my $translation =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Bio::EnsEMBL::Translation->new_fast( {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 'dbID' => $translation_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 'start' => $seq_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 'end' => $seq_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 'start_exon' => $start_exon,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 'end_exon' => $end_exon,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 'stable_id' => $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 'version' => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 'created_date' => $created_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 'modified_date' => $modified_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $translation->transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 push( @{$translations}, $translation );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 } ## end while ( $sth->fetch() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 return $translations;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 } ## end sub fetch_all_by_Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =head2 fetch_by_Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Example : $tl = $translation_adaptor->fetch_by_Transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Description: Retrieves a Translation via its associated transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 If the Translation is not found, undef is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Returntype : Bio::EnsEMBL::Translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Exceptions : throw on incorrect argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 Caller : Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 sub fetch_by_Transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 my ( $self, $transcript ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 assert_ref( $transcript, 'Bio::EnsEMBL::Transcript' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 my $tl_created_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 $self->db()->dbc()->from_date_to_seconds('tl.created_date');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 my $tl_modified_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 $self->db()->dbc()->from_date_to_seconds('tl.modified_date');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my $sql =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 sprintf( "SELECT tl.translation_id, tl.start_exon_id, "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 . "tl.end_exon_id, tl.seq_start, tl.seq_end, "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 . "tl.stable_id, tl.version, %s, %s "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 . "FROM translation tl "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 . "JOIN transcript tr "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 . "ON (tl.translation_id = tr.canonical_translation_id) "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 . "WHERE tr.transcript_id = ?",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 $tl_created_date, $tl_modified_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my $transcript_id = $transcript->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $sth->bind_param( 1, $transcript_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $translation_id, $start_exon_id, $end_exon_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $seq_start, $seq_end, $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $version, $created_date, $modified_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 ) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 if ( !defined($translation_id) ) { return undef }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my ( $start_exon, $end_exon );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 # this will load all the exons whenever we load the translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 # but I guess thats ok ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 foreach my $exon ( @{ $transcript->get_all_Exons() } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 if ( $exon->dbID() == $start_exon_id ) { $start_exon = $exon }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 if ( $exon->dbID() == $end_exon_id ) { $end_exon = $exon }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 if ( !( defined($start_exon) && defined($end_exon) ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 throw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 sprintf( "Could not find start or end exon in transcript_id=%d\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 $transcript->dbID() ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 my $translation =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Bio::EnsEMBL::Translation->new_fast( {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 'dbID' => $translation_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 'start' => $seq_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 'end' => $seq_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 'start_exon' => $start_exon,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 'end_exon' => $end_exon,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 'stable_id' => $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 'version' => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 'created_date' => $created_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 'modified_date' => $modified_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $translation->transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 return $translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 } ## end sub fetch_by_Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 =head2 fetch_all_by_external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Arg [1] : string $external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 The external identifier for the translation(s) to be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 obtained.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 Arg [2] : (optional) string $external_db_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 The name of the external database from which the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 identifier originates.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Arg [3] : Boolean override. Force SQL regex matching for users
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 who really do want to find all 'NM%'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Example : my @translations =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 @{ $trl_adaptor->fetch_all_by_external_name('BRCA2') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 my @many_translations =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 @{ $trl_adaptor->fetch_all_by_external_name('BRCA%') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 Description: Retrieves a list of translations fetched via an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 external identifier. Note that this may not be a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 particularly useful method, because translations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 do not make much sense out of the context of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 their transcript. It may be better to use the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 TranscriptAdaptor::fetch_all_by_external_name instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 SQL wildcards % and _ are supported in the $external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 but their use is somewhat restricted for performance reasons.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Users that really do want % and _ in the first three characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 should use argument 3 to prevent optimisations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 Returntype : reference to a list of Translations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Status : Medium Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 : At some time may be deprecated to instead use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 : TranscriptAdaptor::fetch_all_by_external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 sub fetch_all_by_external_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 my ( $self, $external_name, $external_db_name, $override ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 my $entry_adaptor = $self->db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 my @ids = $entry_adaptor->list_translation_ids_by_extids(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $external_name, $external_db_name, $override );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 my $transcript_adaptor = $self->db()->get_TranscriptAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 foreach my $id (@ids) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 my $transcript = $transcript_adaptor->fetch_by_translation_id($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 if ( defined($transcript) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 push @out, $self->fetch_by_Transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 return \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 =head2 fetch_all_by_GOTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 Arg [1] : Bio::EnsEMBL::OntologyTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 The GO term for which translations should be fetched.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 Example: @translations = @{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 $translation_adaptor->fetch_all_by_GOTerm(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 $go_adaptor->fetch_by_accession('GO:0030326') ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Description : Retrieves a list of translations that are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 associated with the given GO term, or with any of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 its descendent GO terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 Return type : listref of Bio::EnsEMBL::Translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Exceptions : Throws of argument is not a GO term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 sub fetch_all_by_GOTerm {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 my ( $self, $term ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 assert_ref( $term, 'Bio::EnsEMBL::OntologyTerm' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 if ( $term->ontology() ne 'GO' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 throw('Argument is not a GO term');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 my $entryAdaptor = $self->db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 my %unique_dbIDs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 foreach my $accession ( map { $_->accession() }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 ( $term, @{ $term->descendants() } ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 my @ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 $entryAdaptor->list_translation_ids_by_extids( $accession, 'GO' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 foreach my $dbID (@ids) { $unique_dbIDs{$dbID} = 1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 my @result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 if ( scalar( keys(%unique_dbIDs) ) > 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 my $transcript_adaptor = $self->db()->get_TranscriptAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 foreach my $dbID ( sort { $a <=> $b } keys(%unique_dbIDs) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 my $transcript =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 $transcript_adaptor->fetch_by_translation_id($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 if ( defined($transcript) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 push( @result, $self->fetch_by_Transcript($transcript) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 return \@result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 } ## end sub fetch_all_by_GOTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 =head2 fetch_all_by_GOTerm_accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 Arg [1] : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 The GO term accession for which genes should be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 fetched.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 @genes =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 @{ $gene_adaptor->fetch_all_by_GOTerm_accession('GO:0030326') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 Description : Retrieves a list of genes that are associated with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 the given GO term, or with any of its descendent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 GO terms. The genes returned are in their native
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 coordinate system, i.e. in the coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 in which they are stored in the database. If
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 another coordinate system is required then the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 Gene::transfer or Gene::transform method can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 Return type : listref of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 Exceptions : Throws of argument is not a GO term accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 sub fetch_all_by_GOTerm_accession {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 my ( $self, $accession ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 if ( $accession !~ /^GO:/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 throw('Argument is not a GO term accession');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 my $goAdaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Bio::EnsEMBL::Registry->get_adaptor( 'Multi', 'Ontology',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 'OntologyTerm' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 my $term = $goAdaptor->fetch_by_accession($accession);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 return $self->fetch_all_by_GOTerm($term);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 Arg [1] : Bio::EnsEMBL::Translation $translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 The translation object to be stored in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 Example : $transl_id = $translation_adaptor->store($translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 Description: Stores a translation object in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 Returntype : int - the new dbID of the stored translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 Exceptions : thrown if the dbID of the start_Exon or end_Exon is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 defined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 thrown if only partial stable id information is present (e.g.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 identifier but not version number)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 Caller : Transcript::store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 my ( $self, $translation, $transcript_id ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 my $start_exon = $translation->start_Exon();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 my $end_exon = $translation->end_Exon();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 if(!$start_exon) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 throw("Translation must define a start_Exon to be stored.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 if(!$end_exon) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 throw("Translation must define an end_Exon to be stored.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 if(!$start_exon->dbID) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 throw("start_Exon must have a dbID for Translation to be stored.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 if(!$end_exon->dbID) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 throw("end_Exon must have a dbID for Translation to be stored.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 my $store_translation_sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 INSERT INTO translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 SET seq_start = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 start_exon_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 seq_end = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 end_exon_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 transcript_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 if (defined($translation->stable_id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 my $created = $self->db->dbc->from_seconds_to_date($translation->created_date());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 my $modified = $self->db->dbc->from_seconds_to_date($translation->modified_date());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 $store_translation_sql .= ", stable_id = ?, version = ?, created_date = " . $created . " , modified_date = " . $modified;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 my $sth = $self->prepare($store_translation_sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 $sth->bind_param(1,$translation->start,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 $sth->bind_param(2,$translation->start_Exon->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 $sth->bind_param(3,$translation->end,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 $sth->bind_param(4,$translation->end_Exon->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 $sth->bind_param(5,$transcript_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 if (defined($translation->stable_id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 $sth->bind_param(6, $translation->stable_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 my $version = ($translation->version()) ? $translation->version() : 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 $sth->bind_param(7, $version,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 my $transl_dbID = $sth->{'mysql_insertid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 # store object xref mappings to translations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 my $dbEntryAdaptor = $self->db()->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 # store each of the xrefs for this translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 foreach my $dbl ( @{$translation->get_all_DBEntries} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 $dbEntryAdaptor->store( $dbl, $transl_dbID, "Translation", 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 #storing the protein features associated with the translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 my $pfadaptor = $self->db->get_ProteinFeatureAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 foreach my $pf(@{$translation->get_all_ProteinFeatures}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 $pfadaptor->store($pf, $transl_dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 $translation->get_all_Attributes();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 # store any translation attributes that are defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 my $attr_adaptor = $self->db->get_AttributeAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 $attr_adaptor->store_on_Translation($transl_dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 $translation->get_all_Attributes());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 $translation->dbID($transl_dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 $translation->adaptor($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 return $transl_dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 =head2 remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 Arg [1] : Bio::EnsEMBL::Translation $translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 Example : $translation_adaptor->remove($translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 Description: Removes a translation completely from the database, and all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 associated information including protein features etc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 Exceptions : throw on incorrect arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 warning if translation is not in this database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 Caller : TranscriptAdaptor::remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 sub remove {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 my $translation = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 if(!ref($translation) || !$translation->isa('Bio::EnsEMBL::Translation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 throw("Bio::EnsEMBL::Translation argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 if( !$translation->is_stored($self->db()) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 warning("Cannot remove translation " . $translation->dbID() .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 ". Is not stored in this database.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 # remove athe attributes associated with this translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 my $attrib_adp = $self->db->get_AttributeAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 $attrib_adp->remove_from_Translation($translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 # remove all xref associations to this translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 my $dbe_adaptor = $self->db()->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 foreach my $dbe (@{$translation->get_all_DBEntries()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 $dbe_adaptor->remove_from_object($dbe, $translation, 'Translation');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 # remove all protein_features on this translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 my $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 ("DELETE FROM protein_feature WHERE translation_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 $sth->bind_param(1,$translation->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 # remove the translation itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 $sth = $self->prepare("DELETE FROM translation WHERE translation_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 $sth->bind_param(1,$translation->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 $translation->dbID( undef );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 $translation->adaptor(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 =head2 list_dbIDs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 Example : @translation_ids = @{$translation_adaptor->list_dbIDs()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 Description: Gets an array of internal ids for all translations in the current db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 Returntype : list of ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 sub list_dbIDs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 return $self->_list_dbIDs("translation");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 =head2 list_stable_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 Example : @transl_stable_ids = @{$transl_adaptor->list_stable_dbIDs()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 Description: Gets an array of stable ids for all translations in the current
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 Returntype : reference to a list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 sub list_stable_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 return $self->_list_dbIDs("translation", "stable_id");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 =head2 fetch_by_dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 Arg [1] : int $dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 The internal identifier of the Translation to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 Example : $translation = $translation_adaptor->fetch_by_dbID(1234);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Description: This fetches a Translation object via its internal id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 This is only debatably useful since translations do
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 not make much sense outside of the context of their
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 Transcript. Consider using fetch_by_Transcript instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 Returntype : Bio::EnsEMBL::Translation, or undef if the translation is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 found.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Exceptions : warning if an additional (old style) Transcript argument is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 sub fetch_by_dbID {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 my ( $self, $dbID, $transcript ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 if ($transcript) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 deprecate( "Use of fetch_by_dbID "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 . "with a Transcript argument is deprecated."
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 . "Use fetch_by_Transcript instead." );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 if ( !defined($dbID) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 throw("dbID argument is required");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 my $transcript_adaptor = $self->db()->get_TranscriptAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 $transcript = $transcript_adaptor->fetch_by_translation_id($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 if ( defined($transcript) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 my $translation = $self->fetch_by_Transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 if ( defined($translation) && $translation->dbID()==$dbID ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 return $translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 my @alt_translations =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 @{ $self->fetch_all_alternative_by_Transcript($transcript) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 foreach my $alt_translation (@alt_translations) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 if ( $alt_translation->dbID() == $dbID ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 return $alt_translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 } ## end sub fetch_by_dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 =head2 fetch_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 Arg [1] : string $stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 The stable identifier of the Translation to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 Example : $translation = $translation_adaptor->fetch_by_stable_id("ENSP00001");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Description: This fetches a Translation object via its stable id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 This is only debatably useful since translations do
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 not make much sense outside of the context of their
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 Transcript. Consider using fetch_by_Transcript instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 Returntype : Bio::EnsEMBL::Translation or undef if the translation is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 found.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 Exceptions : warning if an additional (old style) Transcript argument is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 sub fetch_by_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 my ($self,$stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 if(!$stable_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 throw("stable id argument is required");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 my $transcript_adaptor = $self->db()->get_TranscriptAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 my $transcript =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 $transcript_adaptor->fetch_by_translation_stable_id($stable_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 return undef if(!$transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 return $self->fetch_by_Transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 =head2 fetch_all_by_Transcript_list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 Arg [1] : reference to list of Bio::EnsEMBL::Transcripts $transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 The list of $transcripts to obtain Translation object for.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 Example : @translations = @{$tla->fetch_all_by_Transcript_list([$t1,$t2]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 Description: Fetches all translations associated with the list of transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 passed to this method. The passed transcripts will also have
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 their translation set by this method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 Returntype : Reference to list of Bio::EnsEMBL::Translations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 sub fetch_all_by_Transcript_list {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 my ($self,$transcripts) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 if(!defined($transcripts) || ref($transcripts) ne 'ARRAY') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 throw("reference to list of Transcripts argument is required");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 return [] if(!@$transcripts);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 my %trans_hash = map {$_->dbID() => $_} @$transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 my @id_list = keys %trans_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 # mysql is faster and we ensure that we do not exceed the max query size by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 # splitting large queries into smaller queries of 200 ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 my $max_size = 200;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 my ( $transcript_id, $translation_id, $start_exon_id, $end_exon_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 $seq_start, $seq_end, $stable_id, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 $created_date, $modified_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 my %ex_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 while(@id_list) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 my @ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 if(@id_list > $max_size) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 @ids = splice(@id_list, 0, $max_size);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 @ids = splice(@id_list, 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 my $id_str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 if(@ids > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 $id_str = " IN (" . join(',', @ids). ")";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 $id_str = " = " . $ids[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 my $canonical_lookup = $self->dbc()->sql_helper()->execute_into_hash(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 -SQL => 'SELECT transcript_id, canonical_translation_id FROM transcript WHERE transcript_id '.$id_str
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 my $created_date = $self->db->dbc->from_date_to_seconds("tl.created_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 my $modified_date = $self->db->dbc->from_date_to_seconds("tl.modified_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 my $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 ("SELECT tl.transcript_id, tl.translation_id, tl.start_exon_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 tl.end_exon_id, tl.seq_start, tl.seq_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 tl.stable_id, tl.version, " . $created_date . "," .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 $modified_date .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 " FROM translation tl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 WHERE tl.transcript_id $id_str");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 $sth->bind_columns( \$transcript_id, \$translation_id, \$start_exon_id, \$end_exon_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 \$seq_start, \$seq_end, \$stable_id, \$version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 \$created_date, \$modified_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 while($sth->fetch()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 my ($start_exon, $end_exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 # this will load all the exons whenever we load the translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 # but I guess thats ok ....
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 my $tr = $trans_hash{$transcript_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 foreach my $exon (@{$tr->get_all_Exons()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 if(!$start_exon && $exon->dbID() == $start_exon_id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 $start_exon = $exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 last if($end_exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 if(!$end_exon && $exon->dbID() == $end_exon_id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 $end_exon = $exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 last if($start_exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 unless($start_exon && $end_exon) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 throw("Could not find start or end exon in transcript\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 my $tl = Bio::EnsEMBL::Translation->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 (-dbID => $translation_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 -seq_start => $seq_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 -seq_end => $seq_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 -start_exon => $start_exon,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 -end_exon => $end_exon,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 -stable_id => $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 -version => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 -created_date => $created_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 -modified_date => $modified_date || undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 $tl->adaptor($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 my $canonical_translation_id = $canonical_lookup->{$transcript_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 $tr->translation($tl) if $translation_id == $canonical_translation_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 push @out, $tl;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 return \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 =head2 fetch_all_by_DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 Description: DEPRECATED, this has been renames fetch_all_by_external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 sub fetch_all_by_DBEntry {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 deprecate("Use fetch_all_by_external_name instead.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 return $self->fetch_all_by_external_name(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 =head2 get_stable_entry_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 Description: DEPRECATED - This method should no longer be needed. Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 id info is fetched when the transcript is.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 sub get_stable_entry_info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 my ($self,$translation) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 deprecate( "This method shouldnt be necessary any more" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 unless(defined $translation && ref $translation &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 $translation->isa('Bio::EnsEMBL::Translation') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 throw("Needs a Translation object, not a [$translation]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 my $sth = $self->prepare("SELECT stable_id, version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 FROM translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 WHERE translation_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 $sth->bind_param(1,$translation->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 my @array = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 $translation->{'_stable_id'} = $array[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 $translation->{'_version'} = $array[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 =head2 fetch_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 Example : $translations = $translation_adaptor->fetch_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 Description : Retrieves all canonical and alternative translations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 stored in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 Returntype : listref of Bio::EnsEMBL::Translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 sub fetch_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 my $transcript_adaptor = $self->db()->get_TranscriptAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 my @translations;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 foreach my $transcript (@{$transcript_adaptor->fetch_all}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 my $translation = $self->fetch_by_Transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 if ($translation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 push @translations, $translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 foreach my $alt_translation (@{$self->fetch_all_alternative_by_Transcript($transcript)}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 push @translations, $alt_translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 return \@translations;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 1;