annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
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::TranscriptAdaptor - An adaptor which performs database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 interaction relating to the storage and retrieval of Transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 use Bio::EnsEMBL::Registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 Bio::EnsEMBL::Registry->load_registry_from_db(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 -host => 'ensembldb.ensembl.org',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 -user => 'anonymous'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 $transcript_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Bio::EnsEMBL::Registry->get_adaptor( 'Human', 'Core',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 'Transcript' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 $transcript = $transcript_adaptor->fetch_by_dbID(1234);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 $transcript =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 $transcript_adaptor->fetch_by_stable_id('ENST00000201961');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $slice_adaptor->fetch_by_region( 'Chromosome', '3', 1, 1000000 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 @transcripts = @{ $transcript_adaptor->fetch_all_by_Slice($slice) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 ($transcript) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 @{ $transcript_adaptor->fetch_all_by_external_name('NP_065811.1') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 This adaptor provides a means to retrieve and store information related
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 to Transcripts. Primarily this involves the retrieval or storage of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 Bio::EnsEMBL::Transcript objects from a database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 See Bio::EnsEMBL::Transcript for details of the Transcript class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 package Bio::EnsEMBL::DBSQL::TranscriptAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 use Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 use Bio::EnsEMBL::Gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 use Bio::EnsEMBL::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 use Bio::EnsEMBL::Transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 use Bio::EnsEMBL::Translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 use Bio::EnsEMBL::Utils::Exception qw( deprecate throw warning );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 @ISA = qw( Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 # _tables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 # Description: PROTECTED implementation of superclass abstract method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 # Returns the names, aliases of the tables to use for queries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 # Returntype : list of listrefs of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 # Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 sub _tables {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 [ 'transcript', 't' ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 [ 'xref', 'x' ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 [ 'external_db', 'exdb' ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 #_columns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 # Description: PROTECTED implementation of superclass abstract method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 # Returns a list of columns to use for queries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 # Returntype : list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 # Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 sub _columns {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 my $created_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 $self->db()->dbc()->from_date_to_seconds("created_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 my $modified_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 $self->db()->dbc()->from_date_to_seconds("modified_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 't.transcript_id', 't.seq_region_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 't.seq_region_start', 't.seq_region_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 't.seq_region_strand', 't.analysis_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 't.gene_id', 't.is_current',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 't.stable_id', 't.version',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $created_date, $modified_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 't.description', 't.biotype',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 't.status', 'exdb.db_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 'exdb.status', 'exdb.db_display_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 'x.xref_id', 'x.display_label',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 'x.dbprimary_acc', 'x.version',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 'x.description', 'x.info_type',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 'x.info_text'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 sub _left_join {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 [ 'xref', "x.xref_id = t.display_xref_id" ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 [ 'external_db', "exdb.external_db_id = x.external_db_id" ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 =head2 fetch_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Arg [1] : String $stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 The stable id of the transcript to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Example : my $tr = $tr_adaptor->fetch_by_stable_id('ENST00000309301');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Description: Retrieves a transcript via its stable id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Returntype : Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 sub fetch_by_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my ($self, $stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my $constraint = "t.stable_id = ? AND t.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 $self->bind_param_generic_fetch($stable_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 my ($transcript) = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 return $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 sub fetch_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 my $constraint = 't.biotype != "LRG_gene" and t.is_current = 1';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 my @trans = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 return \@trans ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =head2 fetch_all_versions_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 Arg [1] : String $stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 The stable ID of the transcript to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 Example : my $tr = $tr_adaptor->fetch_all_version_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 ('ENST00000309301');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Description : Similar to fetch_by_stable_id, but retrieves all versions of a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 transcript stored in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Returntype : listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Exceptions : if we cant get the gene in given coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 sub fetch_all_versions_by_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 my ($self, $stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 my $constraint = "t.stable_id = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 $self->bind_param_generic_fetch($stable_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 return $self->generic_fetch($constraint);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 =head2 fetch_by_translation_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Arg [1] : String $transl_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 The stable identifier of the translation of the transcript to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Example : my $tr = $tr_adaptor->fetch_by_translation_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 ('ENSP00000311007');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 Description: Retrieves a Transcript object using the stable identifier of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 its translation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Returntype : Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 sub fetch_by_translation_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my ($self, $transl_stable_id ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 SELECT t.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 FROM translation tl,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 transcript t
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 WHERE tl.stable_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 AND tl.transcript_id = t.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 AND t.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $sth->bind_param(1, $transl_stable_id, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 my ($id) = $sth->fetchrow_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 if ($id){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 return $self->fetch_by_dbID($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 =head2 fetch_by_translation_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 Arg [1] : Int $id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 The internal identifier of the translation whose transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 is to be retrieved
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Example : my $tr = $tr_adaptor->fetch_by_translation_id($transl->dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Description: Given the internal identifier of a translation this method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 retrieves the transcript associated with that translation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 If the transcript cannot be found undef is returned instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Returntype : Bio::EnsEMBL::Transcript or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 sub fetch_by_translation_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 my ( $self, $p_dbID ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 if ( !defined($p_dbID) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 throw("dbID argument is required");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 my $sth =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $self->prepare( "SELECT transcript_id "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 . "FROM translation "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 . "WHERE translation_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 $sth->bind_param( 1, $p_dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 my ($dbID) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 if ($dbID) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 return $self->fetch_by_dbID($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 =head2 fetch_all_by_Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Arg [1] : Bio::EnsEMBL::Gene $gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 The gene to fetch transcripts of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Example : my $gene = $gene_adaptor->fetch_by_stable_id('ENSG0000123');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 my @transcripts = { $tr_adaptor->fetch_all_by_Gene($gene) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Description: Retrieves Transcript objects for given gene. Puts Genes slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 in each Transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Returntype : Listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 Caller : Gene->get_all_Transcripts()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 sub fetch_all_by_Gene {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 my ( $self, $gene ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 my $constraint = "t.gene_id = " . $gene->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 # Use the fetch_all_by_Slice_constraint method because it handles the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 # difficult Haps/PARs and coordinate remapping.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 # Get a slice that entirely overlaps the gene. This is because we
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 # want all transcripts to be retrieved, not just ones overlapping
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 # the slice the gene is on (the gene may only partially overlap the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 # slice). For speed reasons, only use a different slice if necessary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 # though.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 my $gslice = $gene->slice();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 if ( !defined($gslice) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 throw("Gene must have attached slice to retrieve transcripts.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 my $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 if ( $gene->start() < 1 || $gene->end() > $gslice->length() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 if ( $gslice->is_circular() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $slice = $gslice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $slice = $self->db->get_SliceAdaptor->fetch_by_Feature($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 $slice = $gslice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 my $transcripts =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 $self->fetch_all_by_Slice_constraint( $slice, $constraint );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 if ( $slice != $gslice ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 foreach my $tr ( @{$transcripts} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 push( @out, $tr->transfer($gslice) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 $transcripts = \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my $canonical_t = $gene->canonical_transcript();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 foreach my $t ( @{$transcripts} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 if ( $t->equals($canonical_t) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 $t->is_canonical(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 return $transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 } ## end sub fetch_all_by_Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 =head2 fetch_all_by_Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 Arg [1] : Bio::EnsEMBL::Slice $slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 The slice to fetch transcripts on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Arg [2] : (optional) Boolean $load_exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 If true, exons will be loaded immediately rather than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 lazy loaded later
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 Arg [3] : (optional) String $logic_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 The logic name of the type of features to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 ARG [4] : (optional) String $constraint
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 An extra contraint.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Example : my @transcripts = @{ $tr_adaptor->fetch_all_by_Slice($slice) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Description: Overrides superclass method to optionally load exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 immediately rather than lazy-loading them later. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 is more efficient when there are a lot of transcripts whose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 exons are going to be used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Returntype : Listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 Exceptions : thrown if exon cannot be placed on transcript slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Caller : Slice::get_all_Transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 sub fetch_all_by_Slice {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 my ( $self, $slice, $load_exons, $logic_name, $constraint ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 my $transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 if ( defined($constraint) && $constraint ne '' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 $transcripts = $self->SUPER::fetch_all_by_Slice_constraint( $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 't.is_current = 1 AND ' . $constraint, $logic_name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 $transcripts = $self->SUPER::fetch_all_by_Slice_constraint( $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 't.is_current = 1', $logic_name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 # if there are 0 or 1 transcripts still do lazy-loading
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 if ( !$load_exons || @$transcripts < 2 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 return $transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 # preload all of the exons now, instead of lazy loading later
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 # faster than 1 query per transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 # first check if the exons are already preloaded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 # @todo FIXME: Should test all exons.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 if ( exists( $transcripts->[0]->{'_trans_exon_array'} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 return $transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 # get extent of region spanned by transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 my ( $min_start, $max_end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 foreach my $tr (@$transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 if ( !defined($min_start) || $tr->seq_region_start() < $min_start )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $min_start = $tr->seq_region_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 if ( !defined($max_end) || $tr->seq_region_end() > $max_end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 $max_end = $tr->seq_region_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 my $ext_slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 if ( $min_start >= $slice->start() && $max_end <= $slice->end() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 $ext_slice = $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 my $sa = $self->db()->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $ext_slice = $sa->fetch_by_region(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 $slice->coord_system->name(), $slice->seq_region_name(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 $min_start, $max_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 $slice->strand(), $slice->coord_system->version() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 # associate exon identifiers with transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my %tr_hash = map { $_->dbID => $_ } @{$transcripts};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 my $tr_id_str = join( ',', keys(%tr_hash) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 my $sth =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 $self->prepare( "SELECT transcript_id, exon_id, rank "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 . "FROM exon_transcript "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 . "WHERE transcript_id IN ($tr_id_str)" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 my ( $tr_id, $ex_id, $rank );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $sth->bind_columns( \( $tr_id, $ex_id, $rank ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 my %ex_tr_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 $ex_tr_hash{$ex_id} ||= [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 push( @{ $ex_tr_hash{$ex_id} }, [ $tr_hash{$tr_id}, $rank ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 my $ea = $self->db()->get_ExonAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 my $exons = $ea->fetch_all_by_Slice_constraint(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 $ext_slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 sprintf( "e.exon_id IN (%s)",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 join( ',', sort { $a <=> $b } keys(%ex_tr_hash) ) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 # move exons onto transcript slice, and add them to transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 foreach my $ex ( @{$exons} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 my $new_ex;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 if ( $slice != $ext_slice ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 $new_ex = $ex->transfer($slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 if ( !defined($new_ex) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 throw("Unexpected. "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 . "Exon could not be transfered onto Transcript slice." );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $new_ex = $ex;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 foreach my $row ( @{ $ex_tr_hash{ $new_ex->dbID() } } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 my ( $tr, $rank ) = @{$row};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 $tr->add_Exon( $new_ex, $rank );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 my $tla = $self->db()->get_TranslationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 # load all of the translations at once
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 $tla->fetch_all_by_Transcript_list($transcripts);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 return $transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 } ## end sub fetch_all_by_Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 =head2 fetch_all_by_external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 Arg [1] : String $external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 An external identifier of the transcript to be obtained
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 Arg [2] : (optional) String $external_db_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 The name of the external database from which the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 identifier originates.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 Arg [3] : Boolean override. Force SQL regex matching for users
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 who really do want to find all 'NM%'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 Example : my @transcripts =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 @{ $tr_adaptor->fetch_all_by_external_name( 'NP_065811.1') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 my @more_transcripts =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 @{$tr_adaptor->fetch_all_by_external_name( 'NP_0658__._')};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 Description: Retrieves all transcripts which are associated with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 an external identifier such as a GO term, Swissprot
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 identifer, etc. Usually there will only be a single
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 transcript returned in the list reference, but not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 always. Transcripts are returned in their native
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 coordinate system, i.e. the coordinate system in which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 they are stored in the database. If they are required
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 in another coordinate system the Transcript::transfer or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 Transcript::transform method can be used to convert them.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 If no transcripts with the external identifier are found,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 a reference to an empty list is returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 SQL wildcards % and _ are supported in the $external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 but their use is somewhat restricted for performance reasons.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 Users that really do want % and _ in the first three characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 should use argument 3 to prevent optimisations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 Returntype : listref of Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 sub fetch_all_by_external_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 my ( $self, $external_name, $external_db_name, $override) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 my $entryAdaptor = $self->db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 my @ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 $entryAdaptor->list_transcript_ids_by_extids( $external_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 $external_db_name, $override );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 return $self->fetch_all_by_dbID_list( \@ids );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 =head2 fetch_all_by_GOTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 Arg [1] : Bio::EnsEMBL::OntologyTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 The GO term for which transcripts should be fetched.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 Example: @transcripts = @{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 $transcript_adaptor->fetch_all_by_GOTerm(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 $go_adaptor->fetch_by_accession('GO:0030326') ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 Description : Retrieves a list of transcripts that are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 associated with the given GO term, or with any of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 its descendent GO terms. The transcripts returned
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 are in their native coordinate system, i.e. in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 the coordinate system in which they are stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 in the database. If another coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 is required then the Transcript::transfer or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 Transcript::transform method can be used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 Return type : listref of Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 Exceptions : Throws of argument is not a GO term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 sub fetch_all_by_GOTerm {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 my ( $self, $term ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 assert_ref( $term, 'Bio::EnsEMBL::OntologyTerm' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 if ( $term->ontology() ne 'GO' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 throw('Argument is not a GO term');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 my $entryAdaptor = $self->db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 my %unique_dbIDs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 foreach my $accession ( map { $_->accession() }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 ( $term, @{ $term->descendants() } ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 my @ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 $entryAdaptor->list_transcript_ids_by_extids( $accession, 'GO' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 foreach my $dbID (@ids) { $unique_dbIDs{$dbID} = 1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 my @result = @{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 $self->fetch_all_by_dbID_list(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 [ sort { $a <=> $b } keys(%unique_dbIDs) ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 return \@result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 } ## end sub fetch_all_by_GOTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 =head2 fetch_all_by_GOTerm_accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 Arg [1] : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 The GO term accession for which genes should be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 fetched.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 @genes =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 @{ $gene_adaptor->fetch_all_by_GOTerm_accession(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 'GO:0030326') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 Description : Retrieves a list of genes that are associated with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 the given GO term, or with any of its descendent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 GO terms. The genes returned are in their native
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 coordinate system, i.e. in the coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 in which they are stored in the database. If
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 another coordinate system is required then the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 Gene::transfer or Gene::transform method can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 Return type : listref of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 Exceptions : Throws of argument is not a GO term accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 sub fetch_all_by_GOTerm_accession {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 my ( $self, $accession ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 if ( $accession !~ /^GO:/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 throw('Argument is not a GO term accession');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 my $goAdaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 Bio::EnsEMBL::Registry->get_adaptor( 'Multi', 'Ontology',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 'OntologyTerm' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 my $term = $goAdaptor->fetch_by_accession($accession);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 return $self->fetch_all_by_GOTerm($term);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 =head2 fetch_by_display_label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 Arg [1] : String $label - display label of transcript to fetch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 Example : my $tr = $tr_adaptor->fetch_by_display_label("BRCA2");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 Description: Returns the transcript which has the given display label or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 undef if there is none. If there are more than 1, only the first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 is reported.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 Returntype : Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 sub fetch_by_display_label {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 my $label = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 my $constraint = "x.display_label = ? AND t.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 $self->bind_param_generic_fetch($label,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 my ($transcript) = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 return $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 =head2 fetch_all_by_exon_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 Arg [1] : String $stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 The stable id of an exon in a transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 Example : my $tr = $tr_adaptor->fetch_all_by_exon_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 ('ENSE00000309301');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 Description: Retrieves a list of transcripts via an exon stable id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 Returntype : Listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 sub fetch_all_by_exon_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 my ($self, $stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 my @trans ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 SELECT t.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 FROM exon_transcript et, exon e, transcript t
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 WHERE e.exon_id = et.exon_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 AND et.transcript_id = t.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 AND e.stable_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 AND t.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 $sth->bind_param(1, $stable_id, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 while( my $id = $sth->fetchrow_array ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 my $transcript = $self->fetch_by_dbID($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 push(@trans, $transcript) if $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 if (!@trans) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 return \@trans;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 =head2 fetch_all_by_biotype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 Arg [1] : String $biotype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 listref of $biotypes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 The biotype of the gene to retrieve. You can also have a reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 to a list of biotypes in the event of needing several.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 Example : $transcript = $transcript_adaptor->fetch_all_by_biotype('pseudogene');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 $transcript = $transcript_adaptor->fetch_all_by_biotype(['protein_coding','ambiguous_orf']);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 Description: Retrieves an array reference of transcript objects from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 database via its biotype or biotypes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 The transcript will be retrieved in its native coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 (i.e. in the coordinate system it is stored in the database).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 It may be converted to a different coordinate system through a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 call to transform() or transfer(). If the transcript is not found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 undef is returned instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 Returntype : listref of Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 Exceptions : if we cant get the transcript in given coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 sub fetch_all_by_biotype {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 my ($self, $biotype) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 if (!defined $biotype){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 throw("Biotype or listref of biotypes expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 my $constraint;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 if (ref($biotype) eq 'ARRAY'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 $constraint = "t.biotype IN (";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 foreach my $b (@{$biotype}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 $constraint .= "?,";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 $self->bind_param_generic_fetch($b,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 chop($constraint); #remove last , from expression
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 $constraint .= ") and t.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 $constraint = "t.biotype = ? and t.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 $self->bind_param_generic_fetch($biotype,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 my @transcripts = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 return \@transcripts ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 The transcript to be written to the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 Arg [2] : Int $gene_dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 The identifier of the gene that this transcript is associated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 Arg [3] : DEPRECATED (optional) Int $analysis_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 The analysis_id to use when storing this gene. This is for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 backward compatibility only and used to fall back to the gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 analysis_id if no analysis object is attached to the transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 (which you should do for new code).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 Example : $transID = $tr_adaptor->store($transcript, $gene->dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 Description: Stores a transcript in the database and returns the new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 internal identifier for the stored transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 Returntype : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 my ( $self, $transcript, $gene_dbID, $analysis_id ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 if ( !ref($transcript)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 || !$transcript->isa('Bio::EnsEMBL::Transcript') )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 throw("$transcript is not a EnsEMBL transcript - not storing");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 my $db = $self->db();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 if ( $transcript->is_stored($db) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 return $transcript->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 # Force lazy-loading of exons and ensure coords are correct.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 $transcript->recalculate_coordinates();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 my $is_current = ( defined( $transcript->is_current() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 ? $transcript->is_current()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 : 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 # store analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 my $analysis = $transcript->analysis();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 my $new_analysis_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 if ($analysis) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 if ( $analysis->is_stored($db) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 $new_analysis_id = $analysis->dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 $new_analysis_id = $db->get_AnalysisAdaptor->store($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 } elsif ($analysis_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 # Fall back to analysis passed in (usually from gene) if analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 # wasn't set explicitely for the transcript. This is deprectated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 # though.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 warning( "You should explicitely attach "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 . "an analysis object to the Transcript. "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 . "Will fall back to Gene analysis, "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 . "but this behaviour is deprecated." );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 $new_analysis_id = $analysis_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 throw("Need an analysis_id to store the Transcript.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 # Store exons - this needs to be done before the possible transfer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 # of the transcript to another slice (in _prestore()). Transfering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 # results in copies being made of the exons and we need to preserve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 # the object identity of the exons so that they are not stored twice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 # by different transcripts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 my $exons = $transcript->get_all_Exons();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 my $exonAdaptor = $db->get_ExonAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 foreach my $exon ( @{$exons} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 $exonAdaptor->store($exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 my $original_translation = $transcript->translation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 my $original = $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 my $seq_region_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 ( $transcript, $seq_region_id ) = $self->_pre_store($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 # First store the transcript without a display xref. The display xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 # needs to be set after xrefs are stored which needs to happen after
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 # transcript is stored.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 # Store transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 my $store_transcript_sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 INSERT INTO transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 SET gene_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 analysis_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 seq_region_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 seq_region_start = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 seq_region_end = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 seq_region_strand = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 biotype = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 status = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 description = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 is_current = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 canonical_translation_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 if ( defined( $transcript->stable_id() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 my $created = $self->db->dbc->from_seconds_to_date($transcript->created_date());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 my $modified = $self->db->dbc->from_seconds_to_date($transcript->modified_date());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 $store_transcript_sql .= ", stable_id = ?, version = ?, created_date = " . $created . " , modified_date = " . $modified;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 my $tst = $self->prepare($store_transcript_sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 $tst->bind_param( 1, $gene_dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 $tst->bind_param( 2, $new_analysis_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 $tst->bind_param( 3, $seq_region_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 $tst->bind_param( 4, $transcript->start(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 $tst->bind_param( 5, $transcript->end(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 $tst->bind_param( 6, $transcript->strand(), SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 $tst->bind_param( 7, $transcript->biotype(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 $tst->bind_param( 8, $transcript->status(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 $tst->bind_param( 9, $transcript->description(), SQL_LONGVARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 $tst->bind_param( 10, $is_current, SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 # If the transcript has a translation, this is updated later:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 $tst->bind_param( 11, undef, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 if ( defined( $transcript->stable_id() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 $tst->bind_param( 12, $transcript->stable_id(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 my $version = ($transcript->version()) ? $transcript->version() : 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 $tst->bind_param( 13, $version, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 $tst->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 $tst->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 my $transc_dbID = $tst->{'mysql_insertid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 # Store translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 my $alt_translations =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 $transcript->get_all_alternative_translations();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 my $translation = $transcript->translation();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 if ( defined($translation) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 # Make sure that the start and end exon are set correctly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 my $start_exon = $translation->start_Exon();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 my $end_exon = $translation->end_Exon();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 if ( !defined($start_exon) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 throw("Translation does not define a start exon.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 if ( !defined($end_exon) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 throw("Translation does not defined an end exon.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 # If the dbID is not set, this means the exon must have been a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 # different object in memory than the the exons of the transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 # Try to find the matching exon in all of the exons we just stored.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 if ( !defined( $start_exon->dbID() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 my $key = $start_exon->hashkey();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 ($start_exon) = grep { $_->hashkey() eq $key } @$exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 if ( defined($start_exon) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 $translation->start_Exon($start_exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 throw( "Translation's start_Exon does not appear "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 . "to be one of the exons in "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 . "its associated Transcript" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 if ( !defined( $end_exon->dbID() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 my $key = $end_exon->hashkey();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 ($end_exon) = grep { $_->hashkey() eq $key } @$exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 if ( defined($end_exon) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 $translation->end_Exon($end_exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 throw( "Translation's end_Exon does not appear "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 . "to be one of the exons in "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 . "its associated Transcript." );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 my $old_dbid = $translation->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 $db->get_TranslationAdaptor()->store( $translation, $transc_dbID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 # Need to update the canonical_translation_id for this transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 my $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 q(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 UPDATE transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 SET canonical_translation_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 WHERE transcript_id = ?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 $sth->bind_param( 1, $translation->dbID(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 $sth->bind_param( 2, $transc_dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 # Set values of the original translation, we may have copied it when
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 # we transformed the transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 $original_translation->dbID( $translation->dbID() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 $original_translation->adaptor( $translation->adaptor() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 } ## end if ( defined($translation...))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 # Store the alternative translations, if there are any.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 if ( defined($alt_translations)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 && scalar( @{$alt_translations} ) > 0 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 foreach my $alt_translation ( @{$alt_translations} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 my $start_exon = $alt_translation->start_Exon();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 my $end_exon = $alt_translation->end_Exon();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 if ( !defined($start_exon) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 throw("Translation does not define a start exon.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 } elsif ( !defined($end_exon) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 throw("Translation does not defined an end exon.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 if ( !defined( $start_exon->dbID() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 my $key = $start_exon->hashkey();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 ($start_exon) = grep { $_->hashkey() eq $key } @{$exons};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 if ( defined($start_exon) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 $alt_translation->start_Exon($start_exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 throw( "Translation's start_Exon does not appear "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 . "to be one of the exon in"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 . "its associated Transcript" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 } elsif ( !defined( $end_exon->dbID() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 my $key = $end_exon->hashkey();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 ($end_exon) = grep { $_->hashkey() eq $key } @$exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 if ( defined($end_exon) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 $translation->end_Exon($end_exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 throw( "Translation's end_Exon does not appear "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 . "to be one of the exons in "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 . "its associated Transcript." );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 $db->get_TranslationAdaptor()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998 ->store( $alt_translation, $transc_dbID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 } ## end foreach my $alt_translation...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000 } ## end if ( defined($alt_translations...))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 # Store the xrefs/object xref mapping.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 my $dbEntryAdaptor = $db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 foreach my $dbe ( @{ $transcript->get_all_DBEntries() } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 $dbEntryAdaptor->store( $dbe, $transc_dbID, "Transcript", 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 # Update transcript to point to display xref if it is set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 if ( my $dxref = $transcript->display_xref() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 my $dxref_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 if ( $dxref->is_stored($db) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018 $dxref_id = $dxref->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 $dxref_id = $dbEntryAdaptor->exists($dxref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 if ( defined($dxref_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 my $sth =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 $self->prepare( "UPDATE transcript "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026 . "SET display_xref_id = ? "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 . "WHERE transcript_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 $sth->bind_param( 1, $dxref_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 $sth->bind_param( 2, $transc_dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 $dxref->dbID($dxref_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 $dxref->adaptor($dbEntryAdaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 warning(sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 "Display_xref %s:%s is not stored in database.\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 . "Not storing relationship to this transcript.",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 $dxref->dbname(), $dxref->display_id() ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 $dxref->dbID(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 $dxref->adaptor(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042 } ## end if ( my $dxref = $transcript...)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 # Link transcript to exons in exon_transcript table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 my $etst = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 "INSERT INTO exon_transcript (exon_id,transcript_id,rank) "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049 . "VALUES (?,?,?)" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 my $rank = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 foreach my $exon ( @{ $transcript->get_all_Exons } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 $etst->bind_param( 1, $exon->dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 $etst->bind_param( 2, $transc_dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 $etst->bind_param( 3, $rank, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 $etst->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 $rank++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 $etst->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 # Now the supporting evidence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062 my $tsf_adaptor = $db->get_TranscriptSupportingFeatureAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 $tsf_adaptor->store( $transc_dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 $transcript->get_all_supporting_features() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 # store transcript attributes if there are any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 my $attr_adaptor = $db->get_AttributeAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 $attr_adaptor->store_on_Transcript( $transc_dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070 $transcript->get_all_Attributes() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 # store the IntronSupportingEvidence features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 my $ise_adaptor = $db->get_IntronSupportingEvidenceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 my $intron_supporting_evidence = $transcript->get_all_IntronSupportingEvidence();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075 foreach my $ise (@{$intron_supporting_evidence}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 $ise_adaptor->store($ise);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 $ise_adaptor->store_transcript_linkage($ise, $transcript, $transc_dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 # Update the original transcript object - not the transfered copy that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081 # we might have created.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 $original->dbID($transc_dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 $original->adaptor($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085 return $transc_dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 } ## end sub store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 =head2 get_Interpro_by_transid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 Arg [1] : String $trans_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 The stable if of the transcript to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 Example : @i = $tr_adaptor->get_Interpro_by_transid($trans->stable_id());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 Description: Gets interpro accession numbers by transcript stable id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 A hack really - we should have a much more structured
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 system than this.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 Returntype : listref of strings (Interpro_acc:description)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 Caller : domainview? , GeneView
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 sub get_Interpro_by_transid {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105 my ($self,$trans_stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108 SELECT STRAIGHT_JOIN i.interpro_ac, x.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 FROM transcript t,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 translation tl,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111 protein_feature pf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112 interpro i,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113 xref x
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 WHERE t.stable_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115 AND tl.transcript_id = t.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116 AND tl.translation_id = pf.translation_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 AND i.id = pf.hit_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 AND i.interpro_ac = x.dbprimary_acc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 AND t.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 $sth->bind_param(1, $trans_stable_id, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 my %h;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127 while( (my $arr = $sth->fetchrow_arrayref()) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 if( $h{$arr->[0]} ) { next; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129 $h{$arr->[0]}=1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130 my $string = $arr->[0] .":".$arr->[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131 push(@out,$string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 return \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 =head2 is_Transcript_canonical()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140 The transcript to query with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 Example : $tr_adaptor->is_Transcript_canonical($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 Description : Returns a boolean if the given transcript is considered
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143 canonical with respect to a gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 Returntype : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 Caller : Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147 Status : Beta
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152 sub is_Transcript_canonical {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153 my ($self, $transcript) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154 return $self->dbc()->sql_helper()->execute_single_result(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 -SQL => 'select count(*) from gene where canonical_transcript_id =?',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156 -PARAMS => [$transcript->dbID()]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161 =head2 remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164 The transcript to remove from the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165 Example : $tr_adaptor->remove($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166 Description: Removes a transcript completely from the database, and all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167 associated information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168 This method is usually called by the GeneAdaptor::remove method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169 because this method will not preform the removal of genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170 which are associated with this transcript. Do not call this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 method directly unless you know there are no genes associated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 with the transcript!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174 Exceptions : throw on incorrect arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175 warning if transcript is not in this database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176 Caller : GeneAdaptor::remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181 sub remove {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 my $transcript = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 if(!ref($transcript) || !$transcript->isa('Bio::EnsEMBL::Transcript')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186 throw("Bio::EnsEMBL::Transcript argument expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189 # sanity check: make sure nobody tries to slip past a prediction transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190 # which inherits from transcript but actually uses different tables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1191 if($transcript->isa('Bio::EnsEMBL::PredictionTranscript')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1192 throw("TranscriptAdaptor can only remove Transcripts " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1193 "not PredictionTranscripts");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1194 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1196 if ( !$transcript->is_stored($self->db()) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1197 warning("Cannot remove transcript ". $transcript->dbID .". Is not stored ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1198 "in this database.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1199 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1202 # remove the supporting features of this transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1204 my $prot_adp = $self->db->get_ProteinAlignFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1205 my $dna_adp = $self->db->get_DnaAlignFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1207 my $sfsth = $self->prepare("SELECT feature_type, feature_id " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1208 "FROM transcript_supporting_feature " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1209 "WHERE transcript_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1211 $sfsth->bind_param(1, $transcript->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1212 $sfsth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1214 # statements to check for shared align_features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1215 my $sth1 = $self->prepare("SELECT count(*) FROM supporting_feature " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1216 "WHERE feature_type = ? AND feature_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1217 my $sth2 = $self->prepare("SELECT count(*) " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1218 "FROM transcript_supporting_feature " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1219 "WHERE feature_type = ? AND feature_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1221 SUPPORTING_FEATURE:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1222 while(my ($type, $feature_id) = $sfsth->fetchrow()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1224 # only remove align_feature if this is the last reference to it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1225 $sth1->bind_param(1, $type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1226 $sth1->bind_param(2, $feature_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1227 $sth1->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1228 $sth2->bind_param(1, $type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1229 $sth2->bind_param(2, $feature_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1230 $sth2->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1231 my ($count1) = $sth1->fetchrow;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1232 my ($count2) = $sth2->fetchrow;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1233 if ($count1 + $count2 > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1234 #warn "transcript: shared feature, not removing $type|$feature_id\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1235 next SUPPORTING_FEATURE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1236 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1238 #warn "transcript: removing $type|$feature_id\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1240 if($type eq 'protein_align_feature'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1241 my $f = $prot_adp->fetch_by_dbID($feature_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1242 $prot_adp->remove($f);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1243 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1244 elsif($type eq 'dna_align_feature'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1245 my $f = $dna_adp->fetch_by_dbID($feature_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1246 $dna_adp->remove($f);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1247 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1248 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1249 warning("Unknown supporting feature type $type. Not removing feature.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1250 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1251 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1252 $sfsth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1253 $sth1->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1254 $sth2->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1256 # delete the association to supporting features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1258 $sfsth = $self->prepare("DELETE FROM transcript_supporting_feature WHERE transcript_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1259 $sfsth->bind_param(1, $transcript->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1260 $sfsth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1261 $sfsth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1263 # delete the associated IntronSupportingEvidence and if the ISE had no more
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1264 # linked transcripts remove it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1265 my $ise_adaptor = $self->db->get_IntronSupportingEvidenceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1266 foreach my $ise (@{$transcript->get_all_IntronSupportingEvidence()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1267 $ise_adaptor->remove_transcript_linkage($ise, $transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1268 if(! $ise->has_linked_transcripts()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1269 $ise_adaptor->remove($ise);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1271 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1273 # remove all xref linkages to this transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1275 my $dbeAdaptor = $self->db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1276 foreach my $dbe (@{$transcript->get_all_DBEntries}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1277 $dbeAdaptor->remove_from_object($dbe, $transcript, 'Transcript');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1278 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1280 # remove the attributes associated with this transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1281 my $attrib_adp = $self->db->get_AttributeAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1282 $attrib_adp->remove_from_Transcript($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1284 # remove the translation associated with this transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1286 my $translationAdaptor = $self->db->get_TranslationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1287 if( defined($transcript->translation()) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1288 $translationAdaptor->remove( $transcript->translation );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1289 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1291 # remove exon associations to this transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1293 my $exonAdaptor = $self->db->get_ExonAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1294 foreach my $exon ( @{$transcript->get_all_Exons()} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1295 # get the number of transcript references to this exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1296 # only remove the exon if this is the last transcript to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1297 # reference it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1299 my $sth = $self->prepare( "SELECT count(*)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1300 FROM exon_transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1301 WHERE exon_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1302 $sth->bind_param(1, $exon->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1303 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1304 my ($count) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1305 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1307 if($count == 1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1308 $exonAdaptor->remove( $exon );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1309 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1310 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1312 my $sth = $self->prepare( "DELETE FROM exon_transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1313 WHERE transcript_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1314 $sth->bind_param(1, $transcript->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1315 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1316 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1319 $sth = $self->prepare( "DELETE FROM transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1320 WHERE transcript_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1321 $sth->bind_param(1, $transcript->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1322 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1323 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1325 $transcript->dbID(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1326 $transcript->adaptor(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1328 return;
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 =head2 update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1334 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1335 The transcript to update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1336 Example : $tr_adaptor->update($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1337 Description: Updates a transcript in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1338 Returntype : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1339 Exceptions : thrown if the $transcript is not a Bio::EnsEMBL::Transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1340 warn if the method is called on a transcript that does not exist
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1341 in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1342 Should warn if trying to update the number of attached exons, but
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1343 this is a far more complex process and is not yet implemented.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1344 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1345 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1347 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1349 sub update {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1350 my ( $self, $transcript ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1352 if ( !defined($transcript)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1353 || !ref($transcript)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1354 || !$transcript->isa('Bio::EnsEMBL::Transcript') )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1355 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1356 throw("Must update a transcript object, not a $transcript");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1357 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1359 my $update_transcript_sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1360 UPDATE transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1361 SET analysis_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1362 display_xref_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1363 description = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1364 biotype = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1365 status = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1366 is_current = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1367 canonical_translation_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1368 WHERE transcript_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1369 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1371 my $display_xref = $transcript->display_xref();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1372 my $display_xref_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1374 if ( defined($display_xref) && $display_xref->dbID() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1375 $display_xref_id = $display_xref->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1376 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1377 $display_xref_id = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1378 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1380 my $sth = $self->prepare($update_transcript_sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1382 $sth->bind_param( 1, $transcript->analysis()->dbID(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1383 $sth->bind_param( 2, $display_xref_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1384 $sth->bind_param( 3, $transcript->description(), SQL_LONGVARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1385 $sth->bind_param( 4, $transcript->biotype(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1386 $sth->bind_param( 5, $transcript->status(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1387 $sth->bind_param( 6, $transcript->is_current(), SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1388 $sth->bind_param( 7, (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1389 defined( $transcript->translation() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1390 ? $transcript->translation()->dbID()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1391 : undef ),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1392 SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1393 $sth->bind_param( 8, $transcript->dbID(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1395 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1396 } ## end sub update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1399 =head2 list_dbIDs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1401 Example : @transcript_ids = @{ $t_adaptor->list_dbIDs };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1402 Description: Gets a list of internal ids for all transcripts in the db.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1403 Arg[1] : <optional> int. not 0 for the ids to be sorted by the seq_region. Returntype : Listref of Ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1404 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1405 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1406 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1408 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1410 sub list_dbIDs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1411 my ($self, $ordered) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1413 return $self->_list_dbIDs("transcript",undef, $ordered);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1414 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1417 =head2 list_stable_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1419 Example : @stable_trans_ids = @{ $transcript_adaptor->list_stable_ids };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1420 Description: Gets a list of stable ids for all transcripts in the current
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1421 database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1422 Returntype : Listref of Strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1423 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1424 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1425 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1427 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1429 sub list_stable_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1430 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1432 return $self->_list_dbIDs("transcript", "stable_id");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1433 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1436 #_objs_from_sth
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1438 # Arg [1] : StatementHandle $sth
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1439 # Arg [2] : Bio::EnsEMBL::AssemblyMapper $mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1440 # Arg [3] : Bio::EnsEMBL::Slice $dest_slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1441 # Description: PROTECTED implementation of abstract superclass method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1442 # Responsible for the creation of Transcripts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1443 # Returntype : Listref of Bio::EnsEMBL::Transcripts in target coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1444 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1445 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1446 # Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1448 sub _objs_from_sth {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1449 my ($self, $sth, $mapper, $dest_slice) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1451 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1452 # This code is ugly because an attempt has been made to remove as many
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1453 # function calls as possible for speed purposes. Thus many caches and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1454 # a fair bit of gymnastics is used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1455 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1456
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1457 my $sa = $self->db()->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1458 my $aa = $self->db->get_AnalysisAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1459 my $dbEntryAdaptor = $self->db()->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1461 my @transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1462 my %analysis_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1463 my %slice_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1464 my %sr_name_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1465 my %sr_cs_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1467 my (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1468 $transcript_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1469 $seq_region_end, $seq_region_strand, $analysis_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1470 $gene_id, $is_current, $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1471 $version, $created_date, $modified_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1472 $description, $biotype, $status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1473 $external_db, $external_status, $external_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1474 $xref_id, $xref_display_label, $xref_primary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1475 $xref_version, $xref_description, $xref_info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1476 $xref_info_text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1477 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1478
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1479 $sth->bind_columns(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1480 \(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1481 $transcript_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1482 $seq_region_end, $seq_region_strand, $analysis_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1483 $gene_id, $is_current, $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1484 $version, $created_date, $modified_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1485 $description, $biotype, $status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1486 $external_db, $external_status, $external_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1487 $xref_id, $xref_display_label, $xref_primary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1488 $xref_version, $xref_description, $xref_info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1489 $xref_info_text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1490 ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1492 my $asm_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1493 my $cmp_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1494 my $asm_cs_vers;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1495 my $asm_cs_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1496 my $cmp_cs_vers;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1497 my $cmp_cs_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1498 if($mapper) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1499 $asm_cs = $mapper->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1500 $cmp_cs = $mapper->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1501 $asm_cs_name = $asm_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1502 $asm_cs_vers = $asm_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1503 $cmp_cs_name = $cmp_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1504 $cmp_cs_vers = $cmp_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1505 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1507 my $dest_slice_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1508 my $dest_slice_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1509 my $dest_slice_strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1510 my $dest_slice_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1511 my $dest_slice_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1512 my $dest_slice_sr_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1513 my $dest_slice_sr_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1515 my $asma;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1516 if($dest_slice) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1517 $dest_slice_start = $dest_slice->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1518 $dest_slice_end = $dest_slice->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1519 $dest_slice_strand = $dest_slice->strand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1520 $dest_slice_length = $dest_slice->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1521 $dest_slice_cs = $dest_slice->coord_system();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1522 $dest_slice_sr_name = $dest_slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1523 $dest_slice_sr_id = $dest_slice->get_seq_region_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1524 $asma = $self->db->get_AssemblyMapperAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1525 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1527 FEATURE: while($sth->fetch()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1529 #get the analysis object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1530 my $analysis = $analysis_hash{$analysis_id} ||=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1531 $aa->fetch_by_dbID($analysis_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1532 #need to get the internal_seq_region, if present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1533 $seq_region_id = $self->get_seq_region_id_internal($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1534 my $slice = $slice_hash{"ID:".$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1535 my $dest_mapper = $mapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1537 if(!$slice) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1538 $slice = $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1539 $slice_hash{"ID:".$seq_region_id} = $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1540 $sr_name_hash{$seq_region_id} = $slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1541 $sr_cs_hash{$seq_region_id} = $slice->coord_system();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1542 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1544 #obtain a mapper if none was defined, but a dest_seq_region was
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1545 if(!$dest_mapper && $dest_slice &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1546 !$dest_slice_cs->equals($slice->coord_system)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1547 $dest_mapper = $asma->fetch_by_CoordSystems($dest_slice_cs,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1548 $slice->coord_system);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1549 $asm_cs = $dest_mapper->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1550 $cmp_cs = $dest_mapper->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1551 $asm_cs_name = $asm_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1552 $asm_cs_vers = $asm_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1553 $cmp_cs_name = $cmp_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1554 $cmp_cs_vers = $cmp_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1555 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1557 my $sr_name = $sr_name_hash{$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1558 my $sr_cs = $sr_cs_hash{$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1559 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1560 # remap the feature coordinates to another coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1561 # if a mapper was provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1562 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1563 if($dest_mapper) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1564
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1565 if (defined $dest_slice && $dest_mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1566 ( $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1567 $seq_region_end, $seq_region_strand )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1568 =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1569 $dest_mapper->map( $sr_name, $seq_region_start, $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1570 $seq_region_strand, $sr_cs, 1, $dest_slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1572 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1574 ( $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1575 $seq_region_end, $seq_region_strand )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1576 = $dest_mapper->fastmap( $sr_name, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1577 $seq_region_end, $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1578 $sr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1579 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1581 #skip features that map to gaps or coord system boundaries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1582 next FEATURE if(!defined($seq_region_id));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1584 #get a slice in the coord system we just mapped to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1585 if($asm_cs == $sr_cs || ($cmp_cs != $sr_cs && $asm_cs->equals($sr_cs))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1586 $slice = $slice_hash{"ID:".$seq_region_id} ||=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1587 $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1588 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1589 $slice = $slice_hash{"ID:".$seq_region_id} ||=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1590 $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1591 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1592 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1594 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1595 # If a destination slice was provided convert the coords.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1596 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1597 if (defined($dest_slice)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1598 if ( $dest_slice_strand == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1599 $seq_region_start = $seq_region_start - $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1600 $seq_region_end = $seq_region_end - $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1601
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1602 if ( $dest_slice->is_circular ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1603 if ( $seq_region_start > $seq_region_end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1604 # Looking at a feature overlapping the chromsome origin.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1605 if ( $seq_region_end > $dest_slice_start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1606 # Looking at the region in the beginning of the chromosome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1607 $seq_region_start -= $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1608 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1609 if ( $seq_region_end < 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1610 $seq_region_end += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1611 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1612 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1613 if ( $dest_slice_start > $dest_slice_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1614 && $seq_region_end < 0 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1615 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1616 # Looking at the region overlapping the chromosome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1617 # origin and a feature which is at the beginning of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1618 # chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1619 $seq_region_start += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1620 $seq_region_end += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1621 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1622 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1623 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1624 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1625 if ( $dest_slice->is_circular()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1626 && $seq_region_start > $seq_region_end )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1627 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1628 if ( $seq_region_end > $dest_slice_start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1629 # Looking at the region in the beginning of the chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1630 $seq_region_start = $dest_slice_end - $seq_region_end + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1631 $seq_region_end =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1632 $seq_region_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1633 $dest_slice->seq_region_length() -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1634 $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1635 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1636 my $tmp_seq_region_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1637 $seq_region_start =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1638 $dest_slice_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1639 $seq_region_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1640 $dest_slice->seq_region_length() + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1641 $seq_region_end =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1642 $dest_slice_end - $tmp_seq_region_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1643 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1645 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1646 my $tmp_seq_region_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1647 $seq_region_start = $dest_slice_end - $seq_region_end + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1648 $seq_region_end = $dest_slice_end - $tmp_seq_region_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1649 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1650
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1651 $seq_region_strand = -$seq_region_strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1652 } ## end else [ if ( $dest_slice_strand...)]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1653
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1654 # Throw away features off the end of the requested slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1655 if ( $seq_region_end < 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1656 || $seq_region_start > $dest_slice_length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1657 || ( $dest_slice_sr_id ne $seq_region_id ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1658 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1659 next FEATURE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1660 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1661
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1662 $slice = $dest_slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1663 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1664
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1665 my $display_xref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1667 if ($xref_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1668 $display_xref = Bio::EnsEMBL::DBEntry->new_fast( {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1669 'dbID' => $xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1670 'display_id' => $xref_display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1671 'primary_id' => $xref_primary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1672 'version' => $xref_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1673 'description' => $xref_description,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1674 'info_type' => $xref_info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1675 'info_text' => $xref_info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1676 'adaptor' => $dbEntryAdaptor,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1677 'db_display_name' => $external_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1678 'dbname' => $external_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1679 } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1683 # Finally, create the new Transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1684 push(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1685 @transcripts,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1686 $self->_create_feature_fast(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1687 'Bio::EnsEMBL::Transcript',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1688 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1689 'analysis' => $analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1690 'start' => $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1691 'end' => $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1692 'strand' => $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1693 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1694 'slice' => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1695 'dbID' => $transcript_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1696 'stable_id' => $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1697 'version' => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1698 'created_date' => $created_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1699 'modified_date' => $modified_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1700 'external_name' => $xref_display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1701 'external_db' => $external_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1702 'external_status' => $external_status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1703 'external_display_name' => $external_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1704 'display_xref' => $display_xref,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1705 'description' => $description,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1706 'biotype' => $biotype,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1707 'status' => $status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1708 'is_current' => $is_current,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1709 'edits_enabled' => 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1710 } ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1711
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1712 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1713
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1714 return \@transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1715 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1718 =head2 fetch_all_by_exon_supporting_evidence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1720 Arg [1] : String $hit_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1721 Name of supporting feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1722 Arg [2] : String $feature_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1723 one of "dna_align_feature" or "protein_align_feature"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1724 Arg [3] : (optional) Bio::Ensembl::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1725 Example : $tr = $tr_adaptor->fetch_all_by_exon_supporting_evidence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1726 ('XYZ', 'dna_align_feature');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1727 Description: Gets all the transcripts with exons which have a specified hit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1728 on a particular type of feature. Optionally filter by analysis.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1729 Returntype : Listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1730 Exceptions : If feature_type is not of correct type.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1731 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1732 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1733
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1734 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1736 sub fetch_all_by_exon_supporting_evidence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1737 my ($self, $hit_name, $feature_type, $analysis) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1739 if($feature_type !~ /(dna)|(protein)_align_feature/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1740 throw("feature type must be dna_align_feature or protein_align_feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1741 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1743 my $anal_from = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1744 $anal_from = ", analysis a " if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1745 my $anal_where = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1746 $anal_where = "AND a.analysis_id = f.analysis_id AND a.analysis_id=? "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1747 if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1749 my $sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1750 SELECT DISTINCT(t.transcript_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1751 FROM transcript t,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1752 exon_transcript et,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1753 supporting_feature sf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1754 $feature_type f
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1755 $anal_from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1756 WHERE t.transcript_id = et.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1757 AND t.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1758 AND et.exon_id = sf.exon_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1759 AND sf.feature_id = f.${feature_type}_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1760 AND sf.feature_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1761 AND f.hit_name=?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1762 $anal_where
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1763 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1765 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1766
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1767 $sth->bind_param(1, $feature_type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1768 $sth->bind_param(2, $hit_name, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1769 $sth->bind_param(3, $analysis->dbID(), SQL_INTEGER) if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1770
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1771 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1773 my @transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1774
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1775 while( my $id = $sth->fetchrow_array ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1776 my $transcript = $self->fetch_by_dbID( $id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1777 push(@transcripts, $transcript) if $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1778 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1779
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1780 return \@transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1781 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1784 =head2 fetch_all_by_transcript_supporting_evidence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1786 Arg [1] : String $hit_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1787 Name of supporting feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1788 Arg [2] : String $feature_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1789 one of "dna_align_feature" or "protein_align_feature"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1790 Arg [3] : (optional) Bio::Ensembl::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1791 Example : $transcripts = $transcript_adaptor->fetch_all_by_transcript_supporting_evidence('XYZ', 'dna_align_feature');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1792 Description: Gets all the transcripts with evidence from a specified hit_name on a particular type of feature, stored in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1793 transcript_supporting_feature table. Optionally filter by analysis. For hits stored in the supporting_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1794 table (linked to exons) use fetch_all_by_exon_supporting_evidence instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1795 Returntype : Listref of Bio::EnsEMBL::Transcript objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1796 Exceptions : If feature_type is not of correct type.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1797 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1798 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1800 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1802 sub fetch_all_by_transcript_supporting_evidence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1803
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1804 my ($self, $hit_name, $feature_type, $analysis) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1805
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1806 if($feature_type !~ /(dna)|(protein)_align_feature/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1807 throw("feature type must be dna_align_feature or protein_align_feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1808 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1809
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1810 my $anal_from = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1811 $anal_from = ", analysis a " if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1812 my $anal_where = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1813 $anal_where = "AND a.analysis_id = f.analysis_id AND a.analysis_id=? "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1814 if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1816 my $sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1817 SELECT DISTINCT(t.transcript_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1818 FROM transcript t,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1819 transcript_supporting_feature sf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1820 $feature_type f
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1821 $anal_from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1822 WHERE t.transcript_id = sf.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1823 AND t.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1824 AND sf.feature_id = f.${feature_type}_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1825 AND sf.feature_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1826 AND f.hit_name=?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1827 $anal_where
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1828 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1829
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1830 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1832 $sth->bind_param(1, $feature_type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1833 $sth->bind_param(2, $hit_name, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1834 $sth->bind_param(3, $analysis->dbID(), SQL_INTEGER) if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1836 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1838 my @transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1840 while( my $id = $sth->fetchrow_array ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1841 my $transcript = $self->fetch_by_dbID( $id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1842 push(@transcripts, $transcript) if $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1843 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1844
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1845 return \@transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1846 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1848
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1849 ##########################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1850 # #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1851 # DEPRECATED METHODS #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1852 # #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1853 ##########################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1854
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1855
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1856 =head2 get_display_xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1857
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1858 Description: DEPRECATED. Use $transcript->display_xref() instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1859
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1860 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1861
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1862 sub get_display_xref {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1863 my ($self, $transcript) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1864
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1865 deprecate("display_xref should be retreived from Transcript object directly.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1867 if ( !defined $transcript ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1868 throw("Must call with a Transcript object");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1869 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1871 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1872 SELECT e.db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1873 x.display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1874 e.db_external_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1875 x.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1876 FROM transcript t,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1877 xref x,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1878 external_db e
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1879 WHERE t.transcript_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1880 AND t.display_xref_id = x.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1881 AND x.external_db_id = e.external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1882 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1883
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1884 $sth->bind_param(1, $transcript->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1885 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1887 my ($db_name, $display_label, $xref_id, $display_db_name ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1888 $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1890 if ( !defined $xref_id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1891 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1892 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1893
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1894 my $db_entry = Bio::EnsEMBL::DBEntry->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1895 -dbid => $xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1896 -adaptor => $self->db->get_DBEntryAdaptor(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1897 -dbname => $db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1898 -display_id => $display_label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1899 -db_display_name => $display_db_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1900 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1901
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1902 return $db_entry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1903 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1904
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1905
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1906 =head2 get_stable_entry_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1907
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1908 Description: DEPRECATED. Use $transcript->stable_id() instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1909
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1910 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1911
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1912 sub get_stable_entry_info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1913 my ($self, $transcript) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1914
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1915 deprecate("Stable ids should be loaded directly now");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1916
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1917 unless ( defined $transcript && ref $transcript &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1918 $transcript->isa('Bio::EnsEMBL::Transcript') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1919 throw("Needs a Transcript object, not a $transcript");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1920 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1921
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1922 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1923 SELECT stable_id, version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1924 FROM transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1925 WHERE transcript_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1926 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1927
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1928 $sth->bind_param(1, $transcript->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1929 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1930
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1931 my @array = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1932 $transcript->{'_stable_id'} = $array[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1933 $transcript->{'_version'} = $array[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1934
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1935 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1936 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1937
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1938
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1939 =head2 fetch_all_by_DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1940
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1941 Description: DEPRECATED. Use fetch_all_by_external_name() instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1942
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1943 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1944
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1945 sub fetch_all_by_DBEntry {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1946 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1947 deprecate('Use fetch_all_by_external_name instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1948 return $self->fetch_all_by_external_name(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1949 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1950
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1951
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1952 1;