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

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::DBSQL::ExonAdaptor - An adaptor responsible for the retrieval and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 storage of exon objects
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 my $exon_adaptor = $registry->get_adaptor( 'Human', 'Core', 'Exon' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 my $exon = $exon_adaptor->fetch_by_dbID($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 The ExonAdaptor is responsible for retrieving and storing Exon objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 from an Ensembl database. Most of the ExonAdaptor functionality is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 inherited from the B<Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor> class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 package Bio::EnsEMBL::DBSQL::ExonAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 use Bio::EnsEMBL::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use Bio::EnsEMBL::Utils::Exception qw( warning throw deprecate );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 use vars qw( @ISA );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 @ISA = qw( Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 #_tables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 # Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 # Example : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 # Description: PROTECTED implementation of superclass abstract method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 # returns the names, aliases of the tables to use for queries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 # Returntype : list of listrefs of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 sub _tables {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 # Allow the table definition to be overridden by certain methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 if ( defined( $self->{'tables'} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 return @{ $self->{'tables'} };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 return ( [ 'exon', 'e' ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 # _columns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 # Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 # Example : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 # Description: PROTECTED implementation of superclass abstract method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 # returns a list of columns to use for queries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 # Returntype : list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 sub _columns {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 my $created_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 $self->db->dbc->from_date_to_seconds("created_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 my $modified_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 $self->db->dbc->from_date_to_seconds("modified_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 'e.exon_id', 'e.seq_region_id', 'e.seq_region_start',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 'e.seq_region_end', 'e.seq_region_strand', 'e.phase',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 'e.end_phase', 'e.is_current', 'e.is_constitutive',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 'e.stable_id', 'e.version', $created_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 $modified_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 # _final_clause
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 # Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 # Example : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 # Description: PROTECTED implementation of superclass abstract method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 # returns a default end for the SQL-query (ORDER BY)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 # Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 sub _final_clause {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 return $self->{'final_clause'} || '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 sub fetch_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 my $constraint = 'e.is_current = 1';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 my @exons = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 return \@exons ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 =head2 fetch_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Arg [1] : string $stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 the stable id of the exon to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 Example : $exon = $exon_adaptor->fetch_by_stable_id('ENSE0000988221');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 Description: Retrieves an Exon from the database via its stable id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 Returntype : Bio::EnsEMBL::Exon in native coordinates.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 sub fetch_by_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 my ($self, $stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 my $constraint = "e.stable_id = ? AND e.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 $self->bind_param_generic_fetch($stable_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my ($exon) = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 return $exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 =head2 fetch_all_versions_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 Arg [1] : String $stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 The stable ID of the exon to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Example : my $exon = $exon_adaptor->fetch_all_version_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 ('ENSE00000309301');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Description : Similar to fetch_by_stable_id, but retrieves all versions of an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 exon stored in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Returntype : listref of Bio::EnsEMBL::Exon objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Exceptions : if we cant get the gene in given coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 sub fetch_all_versions_by_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my ($self, $stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 my $constraint = "e.stable_id = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 $self->bind_param_generic_fetch($stable_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 return $self->generic_fetch($constraint);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 =head2 fetch_all_by_Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Example : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Description: Retrieves all Exons for the Transcript in 5-3 order
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Returntype : listref Bio::EnsEMBL::Exon on Transcript slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Exceptions : throws if transcript has no slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Caller : Transcript->get_all_Exons()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 sub fetch_all_by_Transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 my ( $self, $transcript ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my $tslice = $transcript->slice();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 my $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 if ( !defined($tslice) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 throw("Transcript must have attached slice to retrieve exons.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 # use a small slice the same size as the transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 if ( !$tslice->is_circular() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $self->db()->get_SliceAdaptor()->fetch_by_Feature($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 # Circular.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 $slice = $tslice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 # Override the tables definition to provide an additional join to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 # exon_transcript table. For efficiency we cannot afford to have this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 # in as a left join every time.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 my @tables = $self->_tables();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 # Be extra cautious so that we do not add 'exon_transcript' twice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 my $found = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 foreach my $table (@tables) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 if ( $table->[0] eq 'exon_transcript' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 $found = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 if ( !$found ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 push @tables, [ 'exon_transcript', 'et' ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $self->{'tables'} = \@tables;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $self->{'final_clause'} = "ORDER BY et.transcript_id, et.rank";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 my $constraint =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 "et.transcript_id = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 . $transcript->dbID()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 . " AND e.exon_id = et.exon_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 # fetch all of the exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 my $exons = $self->fetch_all_by_Slice_constraint($slice, $constraint);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 # un-override the table definition
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 delete( $self->{'tables'} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 delete( $self->{'final_clause'} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 # remap exon coordinates if necessary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 if($slice->name() ne $tslice->name()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 foreach my $ex (@$exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 push @out, $ex->transfer($tslice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 $exons = \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 return $exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 Arg [1] : Bio::EnsEMBL::Exon $exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 the exon to store in this database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 Example : $exon_adaptor->store($exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 Description: Stores an exon in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 Exceptions : thrown if exon (or component exons) do not have a contig_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 or if $exon->start, $exon->end, $exon->strand, or $exon->phase
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 are not defined or if $exon is not a Bio::EnsEMBL::Exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 my ($self, $exon) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 if( ! $exon->isa('Bio::EnsEMBL::Exon') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 throw("$exon is not a EnsEMBL exon - not storing.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 my $db = $self->db();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 if($exon->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 return $exon->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 if( ! $exon->start || ! $exon->end ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 ! $exon->strand || ! defined $exon->phase ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 throw("Exon does not have all attributes to store");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 # Default to is_current = 1 if this attribute is not set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 my $is_current = $exon->is_current();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 if ( !defined($is_current) ) { $is_current = 1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 # Default to is_constitutive = 0 if this attribute is not set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 my $is_constitutive = $exon->is_constitutive();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 if ( !defined($is_constitutive) ) { $is_constitutive = 0 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my $exon_sql = q{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 INSERT into exon ( seq_region_id, seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 seq_region_end, seq_region_strand, phase,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 end_phase, is_current, is_constitutive
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 if ( defined($exon->stable_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 my $created = $self->db->dbc->from_seconds_to_date($exon->created_date());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 my $modified = $self->db->dbc->from_seconds_to_date($exon->modified_date());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 $exon_sql .= ", stable_id, version, created_date, modified_date) VALUES ( ?,?,?,?,?,?,?,?,?,?,". $created . ",". $modified ." )";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 $exon_sql .= q{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 ) VALUES ( ?,?,?,?,?,?,?,?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 my $exonst = $self->prepare($exon_sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my $exonId = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 my $original = $exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 my $seq_region_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 ($exon, $seq_region_id) = $self->_pre_store($exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 #store the exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 $exonst->bind_param( 1, $seq_region_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 $exonst->bind_param( 2, $exon->start, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 $exonst->bind_param( 3, $exon->end, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 $exonst->bind_param( 4, $exon->strand, SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 $exonst->bind_param( 5, $exon->phase, SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $exonst->bind_param( 6, $exon->end_phase, SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 $exonst->bind_param( 7, $is_current, SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 $exonst->bind_param( 8, $is_constitutive, SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 if ( defined($exon->stable_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 $exonst->bind_param( 9, $exon->stable_id, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my $version = ($exon->version()) ? $exon->version() : 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 $exonst->bind_param( 10, $version, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 $exonst->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 $exonId = $exonst->{'mysql_insertid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 # Now the supporting evidence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 my $esf_adaptor = $db->get_SupportingFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 $esf_adaptor->store($exonId, $exon->get_all_supporting_features);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 # Finally, update the dbID and adaptor of the exon (and any component exons)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 # to point to the new database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $original->adaptor($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 $original->dbID($exonId);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 return $exonId;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 =head2 remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Arg [1] : Bio::EnsEMBL::Exon $exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 the exon to remove from the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Example : $exon_adaptor->remove($exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Description: Removes an exon from the database. This method is generally
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 called by the TranscriptAdaptor::store method. Database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 integrity will not be maintained if this method is simply
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 called on its own without taking into account transcripts which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 may refer to the exon being removed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 sub remove {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 my $exon = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 if(!ref($exon) || !$exon->isa('Bio::EnsEMBL::Exon')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 throw('Bio::EnsEMBL::Exon argument expected.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 if(!$exon->is_stored($self->db())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 warning("Cannot remove exon " .$exon->dbID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 "Is not stored in this database.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 # sanity check: make sure nobdody tries to slip past a prediction exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 # which inherits from exon but actually uses different tables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 if($exon->isa('Bio::EnsEMBL::PredictionExon')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 throw("ExonAdaptor can only remove Exons not PredictionExons.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 # Remove the supporting features of this exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 my $prot_adp = $self->db->get_ProteinAlignFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 my $dna_adp = $self->db->get_DnaAlignFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 my $sth = $self->prepare("SELECT feature_type, feature_id " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 "FROM supporting_feature " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 "WHERE exon_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 $sth->bind_param(1, $exon->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 # statements to check for shared align_features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 my $sth1 = $self->prepare("SELECT count(*) FROM supporting_feature " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 "WHERE feature_type = ? AND feature_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 my $sth2 = $self->prepare("SELECT count(*) " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 "FROM transcript_supporting_feature " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 "WHERE feature_type = ? AND feature_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 SUPPORTING_FEATURE:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 while(my ($type, $feature_id) = $sth->fetchrow()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 # only remove align_feature if this is the last reference to it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 $sth1->bind_param(1, $type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 $sth1->bind_param(2, $feature_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 $sth1->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 $sth2->bind_param(1, $type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 $sth2->bind_param(2, $feature_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 $sth2->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my ($count1) = $sth1->fetchrow;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 my ($count2) = $sth2->fetchrow;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 if ($count1 + $count2 > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 #warn "shared feature, not removing $type|$feature_id\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 next SUPPORTING_FEATURE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 #warn "removing $type|$feature_id\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 if($type eq 'protein_align_feature'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 my $f = $prot_adp->fetch_by_dbID($feature_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 $prot_adp->remove($f);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 elsif($type eq 'dna_align_feature'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 my $f = $dna_adp->fetch_by_dbID($feature_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 $dna_adp->remove($f);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 warning("Unknown supporting feature type $type. Not removing feature.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 $sth1->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 $sth2->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 # delete the association to supporting features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 $sth = $self->prepare("DELETE FROM supporting_feature WHERE exon_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 $sth->bind_param(1, $exon->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 # delete the exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 $sth = $self->prepare( "DELETE FROM exon WHERE exon_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 $sth->bind_param(1, $exon->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $exon->dbID(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $exon->adaptor(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 =head2 list_dbIDs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 Example : @exon_ids = @{$exon_adaptor->list_dbIDs()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 Description: Gets an array of internal ids for all exons in the current db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 Arg[1] : <optional> int. not 0 for the ids to be sorted by the seq_region.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 Returntype : list of ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 sub list_dbIDs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 my ($self, $ordered) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 return $self->_list_dbIDs("exon",undef, $ordered);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 =head2 list_stable_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 Example : @stable_exon_ids = @{$exon_adaptor->list_stable_dbIDs()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 Description: Gets an array of stable ids for all exons in the current db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 Returntype : list of ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 sub list_stable_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 return $self->_list_dbIDs("exon", "stable_id");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 #_objs_from_sth
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 # Arg [1] : StatementHandle $sth
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 # Example : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 # Description: PROTECTED implementation of abstract superclass method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 # responsible for the creation of Exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 # Returntype : listref of Bio::EnsEMBL::Exons in target coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 sub _objs_from_sth {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 my ( $self, $sth, $mapper, $dest_slice ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 # This code is ugly because an attempt has been made to remove as many
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 # function calls as possible for speed purposes. Thus many caches and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 # a fair bit of gymnastics is used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 my $sa = $self->db()->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 my @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 my %slice_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 my %sr_name_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 my %sr_cs_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 my ( $exon_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 $seq_region_end, $seq_region_strand, $phase,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 $end_phase, $is_current, $is_constitutive,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 $stable_id, $version, $created_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 $modified_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 $sth->bind_columns( \( $exon_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 $seq_region_end, $seq_region_strand, $phase,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 $end_phase, $is_current, $is_constitutive,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 $stable_id, $version, $created_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 $modified_date ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 my $asm_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 my $cmp_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 my $asm_cs_vers;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 my $asm_cs_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 my $cmp_cs_vers;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 my $cmp_cs_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 if ($mapper) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 $asm_cs = $mapper->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 $cmp_cs = $mapper->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 $asm_cs_name = $asm_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 $asm_cs_vers = $asm_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 $cmp_cs_name = $cmp_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 $cmp_cs_vers = $cmp_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 my $dest_slice_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 my $dest_slice_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 my $dest_slice_strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 my $dest_slice_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 my $dest_slice_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 my $dest_slice_sr_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 my $dest_slice_sr_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 my $asma;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 if ($dest_slice) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 $dest_slice_start = $dest_slice->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 $dest_slice_end = $dest_slice->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 $dest_slice_strand = $dest_slice->strand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 $dest_slice_length = $dest_slice->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 $dest_slice_cs = $dest_slice->coord_system();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 $dest_slice_sr_name = $dest_slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 $dest_slice_sr_id = $dest_slice->get_seq_region_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 $asma = $self->db->get_AssemblyMapperAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 FEATURE: while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 #need to get the internal_seq_region, if present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 $seq_region_id = $self->get_seq_region_id_internal($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 my $slice = $slice_hash{ "ID:" . $seq_region_id };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 my $dest_mapper = $mapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 if ( !$slice ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 $slice = $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 $slice_hash{ "ID:" . $seq_region_id } = $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 $sr_name_hash{$seq_region_id} = $slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 $sr_cs_hash{$seq_region_id} = $slice->coord_system();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 #obtain a mapper if none was defined, but a dest_seq_region was
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 if ( !$dest_mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 && $dest_slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 && !$dest_slice_cs->equals( $slice->coord_system ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 $dest_mapper =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 $asma->fetch_by_CoordSystems( $dest_slice_cs,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 $slice->coord_system );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 $asm_cs = $dest_mapper->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 $cmp_cs = $dest_mapper->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 $asm_cs_name = $asm_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 $asm_cs_vers = $asm_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 $cmp_cs_name = $cmp_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 $cmp_cs_vers = $cmp_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 my $sr_name = $sr_name_hash{$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 my $sr_cs = $sr_cs_hash{$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 # Remap the feature coordinates to another coord system if a mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 # was provided.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 if ( defined($dest_mapper) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 if (defined $dest_slice && $dest_mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 ( $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 $seq_region_end, $seq_region_strand )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 $dest_mapper->map( $sr_name, $seq_region_start, $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 $seq_region_strand, $sr_cs, 1, $dest_slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 ( $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 $seq_region_end, $seq_region_strand )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 = $dest_mapper->fastmap( $sr_name, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 $seq_region_end, $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 $sr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 # Skip features that map to gaps or coord system boundaries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 if ( !defined($seq_region_id) ) { next FEATURE }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 # Get a slice in the coord system we just mapped to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 $slice = $slice_hash{ "ID:" . $seq_region_id } ||=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 # If a destination slice was provided convert the coords.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 if ( defined($dest_slice) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 if ( $dest_slice_strand == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 # On the positive strand.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 $seq_region_start = $seq_region_start - $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 $seq_region_end = $seq_region_end - $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 if ( ( $seq_region_end > $dest_slice_start || $seq_region_end < 0 || ( $dest_slice_start > $dest_slice_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 && $seq_region_end < 0 ) ) && $dest_slice->is_circular() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 # Handle circular chromosomes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 if ( $seq_region_start > $seq_region_end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 # Looking at a feature overlapping the chromsome origin.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 if ( $seq_region_end > $dest_slice_start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 # Looking at the region in the beginning of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 # chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 $seq_region_start -= $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 if ( $seq_region_end < 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 $seq_region_end += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 if ( $dest_slice_start > $dest_slice_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 && $seq_region_end < 0 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 # Looking at the region overlapping the chromosome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 # origin and a feature which is at the beginning of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 # chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 $seq_region_start += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 $seq_region_end += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 # On the negative strand.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 if ( $seq_region_start > $seq_region_end && $dest_slice->is_circular() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 # Handle circular chromosomes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 if ( $dest_slice_start > $dest_slice_end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 my $tmp_seq_region_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 $seq_region_start = $dest_slice_end - $seq_region_end + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 $seq_region_end =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 $dest_slice_end +
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 $dest_slice->seq_region_length() -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 $tmp_seq_region_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 if ( $seq_region_end > $dest_slice_start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 # Looking at the region in the beginning of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 # chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 $seq_region_start = $dest_slice_end - $seq_region_end + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 $seq_region_end =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 $seq_region_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 $dest_slice->seq_region_length() -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 my $tmp_seq_region_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 $seq_region_start =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 $dest_slice_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 $seq_region_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 $dest_slice->seq_region_length() + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 $seq_region_end =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 $dest_slice_end - $tmp_seq_region_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 # Non-circular chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 my $tmp_seq_region_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 $seq_region_start = $dest_slice_end - $seq_region_end + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 $seq_region_end = $dest_slice_end - $tmp_seq_region_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 $seq_region_strand = -$seq_region_strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 } ## end else [ if ( $dest_slice_strand...)]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 # Throw away features off the end of the requested slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 if ( $seq_region_end < 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 || $seq_region_start > $dest_slice_length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 || ( $dest_slice_sr_id != $seq_region_id ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 next FEATURE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 $slice = $dest_slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 } ## end if ( defined($dest_slice...))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 # Finally, create the new exon.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 push( @exons,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 $self->_create_feature_fast(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 'Bio::EnsEMBL::Exon', {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 'start' => $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 'end' => $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 'strand' => $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 'slice' => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 'dbID' => $exon_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 'stable_id' => $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 'version' => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 'created_date' => $created_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 'modified_date' => $modified_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 'phase' => $phase,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 'end_phase' => $end_phase,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 'is_current' => $is_current,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 'is_constitutive' => $is_constitutive } )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 } ## end while ( $sth->fetch() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 return \@exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 } ## end sub _objs_from_sth
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 =head1 DEPRECATED METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 =head2 get_stable_entry_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 Description: DEPRECATED. This method is no longer necessary. Exons are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 always fetched with their stable identifiers (if they exist) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 no lazy loading is necessary.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 sub get_stable_entry_info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 my ($self,$exon) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 deprecated( "This method call shouldnt be necessary" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 if( !$exon || !ref $exon || !$exon->isa('Bio::EnsEMBL::Exon') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 $self->throw("Needs a exon object, not a $exon");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 if(!$exon->dbID){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 #$self->throw("can't fetch stable info with no dbID");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 my $created_date = $self->db->dbc->from_date_to_seconds("created_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 my $modified_date = $self->db->dbc->from_date_to_seconds("modified_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 my $sth = $self->prepare("SELECT stable_id, " . $created_date . ",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 " . $modified_date . ", version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 FROM exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 WHERE exon_id = ");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 $sth->bind_param(1, $exon->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 # my @array = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 if( my $aref = $sth->fetchrow_arrayref() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 $exon->{'_stable_id'} = $aref->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 $exon->{'_created'} = $aref->[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 $exon->{'_modified'} = $aref->[2];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 $exon->{'_version'} = $aref->[3];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 =head2 fetch_all_by_gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 Description: DEPRECATED. This method should not be needed - Exons can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 be fetched by Transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 sub fetch_all_by_gene_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 my ( $self, $gene_id ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 my %exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 my $hashRef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 my ( $currentId, $currentTranscript );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 deprecated( "Hopefully this method is not needed any more. Exons should be fetched by Transcript" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 if( !$gene_id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 $self->throw("Gene dbID not defined");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 $self->{rchash} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 my $query = qq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 SELECT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 STRAIGHT_JOIN
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 e.exon_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 , e.contig_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 , e.contig_start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 , e.contig_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 , e.contig_strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 , e.phase
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 , e.end_phase
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 , e.sticky_rank
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 FROM transcript t
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 , exon_transcript et
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 , exon e
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 WHERE t.gene_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 AND et.transcript_id = t.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 AND e.exon_id = et.exon_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 ORDER BY t.transcript_id,e.exon_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 , e.sticky_rank DESC
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 my $sth = $self->prepare( $query );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 $sth->bind_param(1,$gene_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 while( $hashRef = $sth->fetchrow_hashref() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 if( ! exists $exons{ $hashRef->{exon_id} } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 my $exon = $self->_exon_from_sth( $sth, $hashRef );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 $exons{$exon->dbID} = $exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 delete $self->{rchash};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 my @out = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 push @out, values %exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 return \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883