annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/SplicingEventAdaptor.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::SlicingEventAdaptor - Database adaptor for the retrieval and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 storage of SplicingEvent 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 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 $se_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Bio::EnsEMBL::Registry->get_adaptor( "human", "core", "SplicingEvent" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 $se = $se_adaptor->fetch_by_dbID(12);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 $slice_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 Bio::EnsEMBL::Registry->get_adaptor( "human", "core", "slice" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 $slice_adaptor->fetch_by_region( 'chromosome', '1', 1, 1000000 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 @ase = @{ $se_adaptor->fetch_all_by_Slice($slice) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 This is a database aware adaptor for the retrieval and storage ofSlicingEvents
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 package Bio::EnsEMBL::DBSQL::SplicingEventAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 use Bio::EnsEMBL::Utils::Exception qw( deprecate throw warning );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 use Bio::EnsEMBL::DBSQL::SliceAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 use Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 use Bio::EnsEMBL::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 use Bio::EnsEMBL::SplicingEvent;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 use vars '@ISA';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 @ISA = qw(Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 =head2 list_dbIDs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 Example : @gene_ids = @{$gene_adaptor->list_dbIDs()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 Description: Gets an array of internal ids for all genes in the current db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 Arg[1] : <optional> int. not 0 for the ids to be sorted by the seq_region.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Returntype : Listref of Ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 sub list_dbIDs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 my ($self,$ordered) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 return $self->_list_dbIDs("splicing_event", undef, $ordered);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 =head2 fetch_all_by_Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 Arg [1] : Bio::EnsEMBL::Slice $slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 The slice to fetch genes on.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Arg [2] : type of Transcript event
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Arg [3] : (optional) boolean $load_features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 If true, transcript will be loaded immediately rather
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 than lazy loaded later.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 sub fetch_all_by_Slice {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my ( $self, $slice, $type, $load_features ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 my $constraint = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 if ( defined($type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 $constraint .= sprintf( " AND at.code = %s",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 $self->dbc()->db_handle()->quote($type) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 my $tes =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 $self->SUPER::fetch_all_by_Slice_constraint( $slice, $constraint );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 # Is there any use in having a splice event without the pairs and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 # features??
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 if ( !$load_features || scalar( @{$tes} ) < 2 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 return $tes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 # Load pairs and features.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 foreach my $te ( @{$tes} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 $te->get_all_Features();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 $te->get_all_Pairs();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 return $tes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 } ## end sub fetch_all_by_Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 sub fetch_all_by_Gene {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 my ( $self, $gene ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 my $sth = $self->dbc->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 q(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 SELECT se.splicing_event_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 se.seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 se.seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 se.seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 se.seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 se.name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 at.code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 FROM splicing_event se
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 JOIN attrib_type at USING (attrib_type_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 WHERE se.gene_id =) . $gene->dbID() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 my ( $splicing_event_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 $seq_region_end, $seq_region_strand, $name, $type );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 $sth->bind_columns(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 \( $splicing_event_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 $seq_region_end, $seq_region_strand, $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 $type ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 my @splicing_events;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 my $sa = $self->db()->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 my $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $sa->fetch_by_seq_region_id( $seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 $seq_region_strand );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 push( @splicing_events,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $self->_create_feature_fast( 'Bio::EnsEMBL::SplicingEvent', {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 'start' => $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 'end' => $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 'strand' => $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 'slice' => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 'dbID' => $splicing_event_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 'name' => $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 'gene_id' => $gene->dbID(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 'type' => $type } ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 foreach my $te (@splicing_events) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 $te->get_all_Features();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 $te->get_all_Pairs();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 return \@splicing_events;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 } ## end sub fetch_all_by_Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 sub fetch_all_by_Exon {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 my ( $self, $exon ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 my $sth = $self->dbc()->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 q(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 SELECT DISTINCT splicing_event_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 FROM splicing_event_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 WHERE exon_id =) . $exon->dbID() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 my $se_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $sth->bind_col( 1, \$se_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 my @list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 push( @list, $se_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 $sth = $self->dbc->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 q(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 SELECT se.splicing_event_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 se.seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 se.seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 se.seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 se.seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 se.name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 at.code,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 se.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 FROM splicing_event se
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 JOIN attrib_type at USING (attrib_type_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 WHERE se.splicing_event_id in ) . '(' . join( ',', @list ) . ')' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my ( $splicing_event_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $seq_region_end, $seq_region_strand, $name, $type, $gene_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 $sth->bind_columns(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 \( $splicing_event_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 $seq_region_end, $seq_region_strand, $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $type, $gene_id ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 my @splicing_events;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 my $sa = $self->db->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 while ( $sth->fetch ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 my $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 $sa->fetch_by_seq_region_id( $seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $seq_region_strand );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 push( @splicing_events,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $self->_create_feature_fast( 'Bio::EnsEMBL::SplicingEvent', {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 'start' => $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 'end' => $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 'strand' => $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 'slice' => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 'dbID' => $splicing_event_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 'name' => $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 'gene_id' => $gene_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 'type' => $type } ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 foreach my $te (@splicing_events) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 $te->get_all_Features();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $te->get_all_Pairs();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 return \@splicing_events;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 } ## end sub fetch_all_by_Exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 sub fetch_all_by_Transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 my ( $self, $transcript ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 my $sth = $self->dbc->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 q(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 SELECT DISTINCT splicing_event_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 FROM splicing_event_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 WHERE transcript_id =) . $transcript->dbID() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 my $se_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 $sth->bind_col( 1, \$se_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 my @list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 push( @list, $se_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 $sth = $self->dbc->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 q(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 SELECT se.splicing_event_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 se.seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 se.seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 se.seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 se.seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 se.name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 at.code,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 se.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 FROM splicing_event se
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 JOIN attrib_type at USING (attrib_type_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 WHERE se.splicing_event_id in ) . '(' . join( ',', @list ) . ')' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my ( $splicing_event_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 $seq_region_end, $seq_region_strand, $name, $type, $gene_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 $sth->bind_columns(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 \( $splicing_event_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 $seq_region_end, $seq_region_strand, $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 $type, $gene_id ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 my @splicing_events;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 my $sa = $self->db()->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 my $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 $sa->fetch_by_seq_region_id( $seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $seq_region_strand );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 push( @splicing_events,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $self->_create_feature_fast( 'Bio::EnsEMBL::SplicingEvent', {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 'start' => $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 'end' => $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 'strand' => $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 'slice' => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 'dbID' => $splicing_event_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 'name' => $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 'gene_id' => $gene_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 'type' => $type } ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 foreach my $te (@splicing_events) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 $te->get_all_Features();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 $te->get_all_Pairs();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 return \@splicing_events;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 } ## end sub fetch_all_by_Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 # _tables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 # Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 # Description: PROTECTED implementation of superclass abstract method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 # Returns the names, aliases of the tables to use for queries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 # Returntype : list of listrefs of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 # Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 sub _tables {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 return ( [ 'splicing_event', 'se' ], [ 'attrib_type', 'at' ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 # _columns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 # Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 # Example : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 # Description: PROTECTED implementation of superclass abstract method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 # Returns a list of columns to use for queries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 # Returntype : list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 # Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 sub _columns {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 return ( 'se.splicing_event_id', 'se.seq_region_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 'se.seq_region_start', 'se.seq_region_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 'se.seq_region_strand', 'se.name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 'se.gene_id', 'at.code' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 sub _left_join {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 return ( [ 'attrib_type', 'at.attrib_type_id = se.attrib_type_id' ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 sub _objs_from_sth {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 my ( $self, $sth, $mapper, $dest_slice ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 my ( $splicing_event_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 $seq_region_end, $seq_region_strand, $name, $gene_id, $type );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 $sth->bind_columns(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 \( $splicing_event_id, $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 $seq_region_end, $seq_region_strand, $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 $gene_id, $type ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 my $sa = $self->db()->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 my @splicing_events;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 my %slice_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 my %sr_name_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 my %sr_cs_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 my $asm_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 my $cmp_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 my $asm_cs_vers;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 my $asm_cs_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 my $cmp_cs_vers;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 my $cmp_cs_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 if ( defined($mapper) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 $asm_cs = $mapper->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $cmp_cs = $mapper->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 $asm_cs_name = $asm_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 $asm_cs_vers = $asm_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $cmp_cs_name = $cmp_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $cmp_cs_vers = $cmp_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 my $dest_slice_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 my $dest_slice_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 my $dest_slice_strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 my $dest_slice_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 my $dest_slice_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 my $dest_slice_sr_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 my $dest_slice_sr_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 my $asma;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 if ( defined($dest_slice) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $dest_slice_start = $dest_slice->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 $dest_slice_end = $dest_slice->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 $dest_slice_strand = $dest_slice->strand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 $dest_slice_length = $dest_slice->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 $dest_slice_cs = $dest_slice->coord_system();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 $dest_slice_sr_name = $dest_slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 $dest_slice_sr_id = $dest_slice->get_seq_region_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 $asma = $self->db->get_AssemblyMapperAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 FEATURE:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 # Need to get the internal_seq_region, if present.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 $seq_region_id = $self->get_seq_region_id_internal($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 my $slice = $slice_hash{ "ID:" . $seq_region_id };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 my $dest_mapper = $mapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 if ( !$slice ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 $slice = $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $slice_hash{ "ID:" . $seq_region_id } = $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 $sr_name_hash{$seq_region_id} = $slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 $sr_cs_hash{$seq_region_id} = $slice->coord_system();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 # Obtain a mapper if none was defined, but a dest_seq_region was.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 if ( !defined($dest_mapper)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 && defined($dest_slice)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 && !$dest_slice_cs->equals( $slice->coord_system ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 $dest_mapper =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 $asma->fetch_by_CoordSystems( $dest_slice_cs,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 $slice->coord_system );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 $asm_cs = $dest_mapper->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 $cmp_cs = $dest_mapper->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 $asm_cs_name = $asm_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 $asm_cs_vers = $asm_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $cmp_cs_name = $cmp_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 $cmp_cs_vers = $cmp_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 my $sr_name = $sr_name_hash{$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 my $sr_cs = $sr_cs_hash{$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 # Remap the feature coordinates to another coord system if a mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 # was provided.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 if ( defined($dest_mapper) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 if (defined $dest_slice && $dest_mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 ( $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 $seq_region_end, $seq_region_strand )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 $dest_mapper->map( $sr_name, $seq_region_start, $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 $seq_region_strand, $sr_cs, 1, $dest_slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 ( $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 $seq_region_end, $seq_region_strand )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 = $dest_mapper->fastmap( $sr_name, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 $seq_region_end, $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 $sr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 # Skip features that map to gaps or coord system boundaries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 if ( !defined($seq_region_id) ) { next FEATURE }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 # Get a slice in the coord system we just mapped to.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 $slice = $slice_hash{ "ID:" . $seq_region_id } ||=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 # If a destination slice was provided convert the coords. If the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 # dest_slice starts at 1 and is foward strand, nothing needs doing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 if ( defined($dest_slice) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 if ( $dest_slice_start != 1 || $dest_slice_strand != 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 if ( $dest_slice_strand == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 $seq_region_start = $seq_region_start - $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 $seq_region_end = $seq_region_end - $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 my $tmp_seq_region_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 $seq_region_start = $dest_slice_end - $seq_region_end + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 $seq_region_end = $dest_slice_end - $tmp_seq_region_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 $seq_region_strand = -$seq_region_strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 # Throw away features off the end of the requested slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 if ( $seq_region_end < 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 || $seq_region_start > $dest_slice_length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 || ( $dest_slice_sr_id != $seq_region_id ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 next FEATURE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 $slice = $dest_slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 # Finally, create the new splicing_event.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 push( @splicing_events,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 $self->_create_feature_fast( 'Bio::EnsEMBL::SplicingEvent', {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 'start' => $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 'end' => $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 'strand' => $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 'slice' => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 'dbID' => $splicing_event_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 'name' => $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 'gene_id' => $gene_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 'type' => $type } ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 } ## end while ( $sth->fetch() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 return \@splicing_events;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 } ## end sub _objs_from_sth
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 1;