annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/GeneAdaptor.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::GeneAdaptor - Database adaptor for the retrieval and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 storage of Gene 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 $gene_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Bio::EnsEMBL::Registry->get_adaptor( "human", "core", "gene" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 $gene = $gene_adaptor->fetch_by_dbID(1234);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 $gene = $gene_adaptor->fetch_by_stable_id('ENSG00000184129');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 @genes = @{ $gene_adaptor->fetch_all_by_external_name('BRCA2') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 $slice_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 Bio::EnsEMBL::Registry->get_adaptor( "human", "core", "slice" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 $slice_adaptor->fetch_by_region( 'chromosome', '1', 1, 1000000 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 @genes = @{ $gene_adaptor->fetch_all_by_Slice($slice) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 This is a database aware adaptor for the retrieval and storage of gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 package Bio::EnsEMBL::DBSQL::GeneAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 use Bio::EnsEMBL::Utils::Exception qw( deprecate throw warning );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 use Bio::EnsEMBL::Utils::Scalar qw( assert_ref );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 use Bio::EnsEMBL::DBSQL::SliceAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 use Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 use Bio::EnsEMBL::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 use Bio::EnsEMBL::Gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 use vars '@ISA';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 @ISA = qw(Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 # _tables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 # Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 # Description: PROTECTED implementation of superclass abstract method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 # Returns the names, aliases of the tables to use for queries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 # Returntype : list of listrefs of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 # Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 sub _tables {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 [ 'gene', 'g' ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 [ 'xref', 'x' ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 [ 'external_db', 'exdb' ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 # _columns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 # Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 # Example : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 # Description: PROTECTED implementation of superclass abstract method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 # Returns a list of columns to use for queries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 # Returntype : list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 # Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 sub _columns {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 my $created_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 $self->db()->dbc()->from_date_to_seconds("g.created_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my $modified_date =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $self->db()->dbc()->from_date_to_seconds("g.modified_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 'g.gene_id', 'g.seq_region_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 'g.seq_region_start', 'g.seq_region_end',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 'g.seq_region_strand', 'g.analysis_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 'g.biotype', 'g.display_xref_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 'g.description', 'g.status',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 'g.source', 'g.is_current',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 'g.canonical_transcript_id', 'g.canonical_annotation',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 'g.stable_id', 'g.version',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $created_date, $modified_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 'x.display_label', 'x.dbprimary_acc',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 'x.description', 'x.version',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 'exdb.db_name', 'exdb.status',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 'exdb.db_release', 'exdb.db_display_name',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 'x.info_type', 'x.info_text'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 } ## end sub _columns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 sub _left_join {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 return (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 [ 'xref', "x.xref_id = g.display_xref_id" ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 [ 'external_db', "exdb.external_db_id = x.external_db_id" ] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 =head2 list_dbIDs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Example : @gene_ids = @{$gene_adaptor->list_dbIDs()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Description: Gets an array of internal ids for all genes in the current db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Arg[1] : <optional> int. not 0 for the ids to be sorted by the seq_region.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Returntype : Listref of Ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 sub list_dbIDs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 my ($self,$ordered) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 return $self->_list_dbIDs("gene",undef, $ordered);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 =head2 list_stable_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Example : @stable_gene_ids = @{$gene_adaptor->list_stable_ids()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Description: Gets an listref of stable ids for all genes in the current db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Returntype : reference to a list of strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 sub list_stable_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 return $self->_list_dbIDs("gene", "stable_id");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 sub list_seq_region_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 return $self->_list_seq_region_ids('gene');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 =head2 fetch_by_display_label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Arg [1] : String $label - display label of gene to fetch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Example : my $gene = $geneAdaptor->fetch_by_display_label("BRCA2");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Description: Returns the gene which has the given display label or undef if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 there is none. If there are more than 1, the gene on the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 reference slice is reported or if none are on the reference,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 the first one is reported.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Returntype : Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 sub fetch_by_display_label {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 my $label = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my $constraint = "x.display_label = ? AND g.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $self->bind_param_generic_fetch($label,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 my @genes = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 my $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 if (scalar(@genes) > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 foreach my $gene_tmp (@genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 if ($gene_tmp->slice->is_reference) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 $gene = $gene_tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 last if ($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 if (!$gene) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 $gene = $genes[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 } elsif (scalar(@genes) == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 $gene = $genes[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 return $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 =head2 fetch_all_by_display_label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 Arg [1] : String $label - display label of genes to fetch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 Example : my @genes = @{$geneAdaptor->fetch_all_by_display_label("PPP1R2P1")};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Description: Returns all genes which have the given display label or undef if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 there are none.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Returntype : listref of Bio::EnsEMBL::Gene objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 sub fetch_all_by_display_label {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my $label = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 my $constraint = "x.display_label = ? AND g.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $self->bind_param_generic_fetch($label,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 my $genes = $self->generic_fetch($constraint) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 return $genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 =head2 fetch_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Arg [1] : String $id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 The stable ID of the gene to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Example : $gene = $gene_adaptor->fetch_by_stable_id('ENSG00000148944');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 Description: Retrieves a gene object from the database via its stable id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 The gene will be retrieved in its native coordinate system (i.e.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 in the coordinate system it is stored in the database). It may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 be converted to a different coordinate system through a call to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 transform() or transfer(). If the gene or exon is not found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 undef is returned instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Returntype : Bio::EnsEMBL::Gene or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 Exceptions : if we cant get the gene in given coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 sub fetch_by_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 my ($self, $stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 my $constraint = "g.stable_id = ? AND g.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $self->bind_param_generic_fetch($stable_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 my ($gene) = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 return $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 =head2 fetch_all_by_biotype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Arg [1] : String $biotype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 listref of $biotypes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 The biotype of the gene to retrieve. You can have as an argument a reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 to a list of biotypes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Example : $gene = $gene_adaptor->fetch_all_by_biotype('protein_coding');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 $gene = $gene_adaptor->fetch_all_by_biotypes(['protein_coding', 'sRNA', 'miRNA']);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Description: Retrieves an array reference of gene objects from the database via its biotype or biotypes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 The genes will be retrieved in its native coordinate system (i.e.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 in the coordinate system it is stored in the database). It may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 be converted to a different coordinate system through a call to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 transform() or transfer(). If the gene or exon is not found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 undef is returned instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Returntype : listref of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 Exceptions : if we cant get the gene in given coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 sub fetch_all_by_biotype {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my ($self, $biotype) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 if (!defined $biotype){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 throw("Biotype or listref of biotypes expected");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 my $constraint;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 if (ref($biotype) eq 'ARRAY'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $constraint = "g.biotype IN (";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 foreach my $b (@{$biotype}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 $constraint .= "?,";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 $self->bind_param_generic_fetch($b,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 chop($constraint); #remove last , from expression
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 $constraint .= ") and g.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $constraint = "g.biotype = ? and g.is_current = 1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 $self->bind_param_generic_fetch($biotype,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 my @genes = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 return \@genes ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 sub fetch_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 my $constraint = 'g.biotype != "LRG_gene" and g.is_current = 1';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 my @genes = @{ $self->generic_fetch($constraint) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 return \@genes ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 =head2 fetch_all_versions_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 Arg [1] : String $stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 The stable ID of the gene to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 Example : $gene = $gene_adaptor->fetch_all_versions_by_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 ('ENSG00000148944');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Description : Similar to fetch_by_stable_id, but retrieves all versions of a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 gene stored in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 Returntype : listref of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 Exceptions : if we cant get the gene in given coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 sub fetch_all_versions_by_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 my ($self, $stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 my $constraint = "g.stable_id = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 $self->bind_param_generic_fetch($stable_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 return $self->generic_fetch($constraint);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 =head2 fetch_by_exon_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 Arg [1] : String $id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 The stable id of an exon of the gene to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Example : $gene = $gene_adptr->fetch_by_exon_stable_id('ENSE00000148944');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Description: Retrieves a gene object from the database via an exon stable id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 The gene will be retrieved in its native coordinate system (i.e.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 in the coordinate system it is stored in the database). It may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 be converted to a different coordinate system through a call to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 transform() or transfer(). If the gene or exon is not found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 undef is returned instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Returntype : Bio::EnsEMBL::Gene or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 sub fetch_by_exon_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 my ($self, $stable_id, $version) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 my $sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 SELECT t.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 FROM transcript as t,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 exon_transcript as et,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 exon as e
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 WHERE t.transcript_id = et.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 AND et.exon_id = e.exon_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 AND e.stable_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 AND e.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 $sth->bind_param(1, $stable_id, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 my ($dbID) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 return undef if(!defined($dbID));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 my $gene = $self->fetch_by_dbID($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 return $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 =head2 fetch_all_by_domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 Arg [1] : String $domain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 The domain to fetch genes from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 Example : my @genes = @{ $gene_adaptor->fetch_all_by_domain($domain) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 Description: Retrieves a listref of genes whose translation contain interpro
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 domain $domain. The genes are returned in their native coord
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 system (i.e. the coord_system they are stored in). If the coord
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 system needs to be changed, then tranform or transfer should be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 called on the individual objects returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 Returntype : list of Bio::EnsEMBL::Genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 Caller : domainview
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 sub fetch_all_by_domain {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 my ($self, $domain) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 throw("domain argument is required") unless ($domain);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 SELECT tr.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 FROM interpro i,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 protein_feature pf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 transcript tr,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 translation tl,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 seq_region sr,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 coord_system cs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 WHERE cs.species_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 AND cs.coord_system_id = sr.coord_system_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 AND sr.seq_region_id = tr.seq_region_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 AND tr.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 AND tr.transcript_id = tl.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 AND tl.translation_id = pf.translation_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 AND pf.hit_name = i.id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 AND i.interpro_ac = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 GROUP BY tr.gene_id));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $sth->bind_param( 1, $self->species_id(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 $sth->bind_param( 2, $domain, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 my @array = @{$sth->fetchall_arrayref()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 my @gene_ids = map {$_->[0]} @array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 return $self->fetch_all_by_dbID_list(\@gene_ids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 =head2 fetch_all_by_Slice_and_external_dbname_link
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 Arg [1] : Bio::EnsEMBL::Slice $slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 The slice to fetch genes on.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 Arg [2] : (optional) string $logic_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 the logic name of the type of features to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 Arg [3] : (optional) boolean $load_transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 if true, transcripts will be loaded immediately
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 rather than lazy loaded later.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 Arg [4] : Name of the external database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 Example : @genes = @{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 $ga->fetch_all_by_Slice_and_external_dbname_link(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 $slice, undef, undef, "HUGO" ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 Description: Overrides superclass method to optionally load
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 transcripts immediately rather than lazy-loading them
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 later. This is more efficient when there are a lot
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 of genes whose transcripts are going to be used. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 genes are then filtered to return only those with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 external database links of the type specified
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 Returntype : reference to list of genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 Exceptions : thrown if exon cannot be placed on transcript slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 sub fetch_all_by_Slice_and_external_dbname_link {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 my ( $self, $slice, $logic_name, $load_transcripts, $db_name ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 # Get the external_db_id(s) from the name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 my $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 "SELECT external_db_id FROM external_db WHERE db_name = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 $sth->bind_param( 1, $db_name, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 my $external_db_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 $sth->bind_columns( \$external_db_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 my @external_db_ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 push( @external_db_ids, $external_db_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 if ( scalar(@external_db_ids) == 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 warn sprintf( "Could not find external database "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 . "'%s' in the external_db table\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 . "Available are:\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 $db_name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 $sth = $self->prepare("SELECT DISTINCT db_name FROM external_db");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 $sth->bind_columns( \$external_db_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 warn "\t$external_db_id\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 return [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 # Get the gene_ids for those with links.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 my $dbe_adaptor = $self->db()->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 my %linked_genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 foreach $external_db_id (@external_db_ids) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 my @linked_genes =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 $dbe_adaptor->list_gene_ids_by_external_db_id($external_db_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 foreach my $gene_id (@linked_genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 $linked_genes{$gene_id} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 # Get all the genes on the slice.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 my $genes = $self->SUPER::fetch_all_by_Slice_constraint( $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 'g.is_current = 1', $logic_name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 # Create a list of those that are in the gene_ids list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 my @genes_passed;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 foreach my $gene (@$genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 if ( exists( $linked_genes{ $gene->dbID() } ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 push( @genes_passed, $gene );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 # Return the list of those that passed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 return \@genes_passed;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 } ## end sub fetch_all_by_Slice_and_external_dbname_link
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 =head2 fetch_all_by_Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 Arg [1] : Bio::EnsEMBL::Slice $slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 The slice to fetch genes on.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 Arg [2] : (optional) string $logic_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 the logic name of the type of features to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 Arg [3] : (optional) boolean $load_transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 if true, transcripts will be loaded immediately rather than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 lazy loaded later.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Arg [4] : (optional) string $source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 the source name of the features to obtain.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 Arg [5] : (optional) string biotype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 the biotype of the features to obtain.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 Example : @genes = @{$gene_adaptor->fetch_all_by_Slice()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 Description: Overrides superclass method to optionally load transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 immediately rather than lazy-loading them later. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 is more efficient when there are a lot of genes whose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 transcripts are going to be used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 Returntype : reference to list of genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 Exceptions : thrown if exon cannot be placed on transcript slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 Caller : Slice::get_all_Genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 sub fetch_all_by_Slice {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 my ( $self, $slice, $logic_name, $load_transcripts, $source,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 $biotype ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 my $constraint = 'g.is_current = 1';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 if ( defined($source) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 $constraint .= " and g.source = '$source'";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 if ( defined($biotype) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 $constraint .= " and g.biotype = '$biotype'";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 my $genes =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 $self->SUPER::fetch_all_by_Slice_constraint( $slice, $constraint,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 $logic_name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 # If there are less than two genes, still do lazy-loading.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 if ( !$load_transcripts || @$genes < 2 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 return $genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 # Preload all of the transcripts now, instead of lazy loading later,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 # faster than one query per transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 # First check if transcripts are already preloaded.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 # FIXME: Should check all transcripts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 if ( exists( $genes->[0]->{'_transcript_array'} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 return $genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 # Get extent of region spanned by transcripts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 my ( $min_start, $max_end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 foreach my $g (@$genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 if ( !defined($min_start) || $g->seq_region_start() < $min_start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 $min_start = $g->seq_region_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 if ( !defined($max_end) || $g->seq_region_end() > $max_end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 $max_end = $g->seq_region_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 my $ext_slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 if ( $min_start >= $slice->start() && $max_end <= $slice->end() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 $ext_slice = $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 my $sa = $self->db()->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 $ext_slice = $sa->fetch_by_region(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 $slice->coord_system->name(), $slice->seq_region_name(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 $min_start, $max_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 $slice->strand(), $slice->coord_system->version() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 # Associate transcript identifiers with genes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 my %g_hash = map { $_->dbID => $_ } @{$genes};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 my $g_id_str = join( ',', keys(%g_hash) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 my $sth =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 $self->prepare( "SELECT gene_id, transcript_id "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 . "FROM transcript "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 . "WHERE gene_id IN ($g_id_str)" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 my ( $g_id, $tr_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 $sth->bind_columns( \( $g_id, $tr_id ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 my %tr_g_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 $tr_g_hash{$tr_id} = $g_hash{$g_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 my $ta = $self->db()->get_TranscriptAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 my $transcripts = $ta->fetch_all_by_Slice(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 $ext_slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 1, undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 sprintf( "t.transcript_id IN (%s)",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 join( ',', sort { $a <=> $b } keys(%tr_g_hash) ) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 # Move transcripts onto gene slice, and add them to genes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 foreach my $tr ( @{$transcripts} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 if ( !exists( $tr_g_hash{ $tr->dbID() } ) ) { next }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 my $new_tr;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 if ( $slice != $ext_slice ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 $new_tr = $tr->transfer($slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 if ( !defined($new_tr) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 throw("Unexpected. "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 . "Transcript could not be transfered onto Gene slice." );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 $new_tr = $tr;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 $tr_g_hash{ $tr->dbID() }->add_Transcript($new_tr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 return $genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 } ## end sub fetch_all_by_Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 =head2 fetch_by_transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 Arg [1] : Int $trans_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 Unique database identifier for the transcript whose gene should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 be retrieved. The gene is returned in its native coord
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 system (i.e. the coord_system it is stored in). If the coord
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 system needs to be changed, then tranform or transfer should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 be called on the returned object. undef is returned if the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 gene or transcript is not found in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 Example : $gene = $gene_adaptor->fetch_by_transcript_id(1241);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 Description: Retrieves a gene from the database via the database identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 of one of its transcripts.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 Returntype : Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 sub fetch_by_transcript_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 my ($self, $trans_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 # this is a cheap SQL call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 SELECT tr.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 FROM transcript tr
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 WHERE tr.transcript_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 $sth->bind_param(1, $trans_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 my ($geneid) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 return undef if( !defined $geneid );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 my $gene = $self->fetch_by_dbID($geneid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 return $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 =head2 fetch_by_transcript_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 Arg [1] : string $trans_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 transcript stable ID whose gene should be retrieved
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 Example : my $gene = $gene_adaptor->fetch_by_transcript_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 ('ENST0000234');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 Description: Retrieves a gene from the database via the stable ID of one of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 its transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 Returntype : Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 sub fetch_by_transcript_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 my ($self, $trans_stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 SELECT gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 FROM transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 WHERE stable_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 AND is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 $sth->bind_param(1, $trans_stable_id, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 my ($geneid) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 return undef if (!defined $geneid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 my $gene = $self->fetch_by_dbID($geneid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 return $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 =head2 fetch_by_translation_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 Arg [1] : String $translation_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 The stable id of a translation of the gene to be obtained
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 Example : my $gene = $gene_adaptor->fetch_by_translation_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 ('ENSP00000278194');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 Description: Retrieves a gene via the stable id of one of its translations.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 Returntype : Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 sub fetch_by_translation_stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 my ($self, $translation_stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 SELECT tr.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 FROM transcript tr,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 translation tl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 WHERE tl.stable_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 AND tr.transcript_id = tl.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 AND tr.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 $sth->bind_param(1, $translation_stable_id, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 my ($geneid) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 if( !defined $geneid ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 return $self->fetch_by_dbID($geneid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 =head2 fetch_all_by_external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 Arg [1] : String $external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 The external identifier for the gene to be obtained
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 Arg [2] : (optional) String $external_db_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 The name of the external database from which the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 identifier originates.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 Arg [3] : Boolean override. Force SQL regex matching for users
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 who really do want to find all 'NM%'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 Example : @genes = @{$gene_adaptor->fetch_all_by_external_name('BRCA2')}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 @many_genes = @{$gene_adaptor->fetch_all_by_external_name('BRCA%')}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 Description: Retrieves a list of genes with an external database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 identifier $external_name. The genes returned are in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 their native coordinate system, i.e. in the coordinate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 system they are stored in the database in. If another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 coordinate system is required then the Gene::transfer or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 Gene::transform method can be used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 SQL wildcards % and _ are supported in the $external_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 but their use is somewhat restricted for performance reasons.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 Users that really do want % and _ in the first three characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 should use argument 3 to prevent optimisations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 Returntype : listref of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 Caller : goview, general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 Status : Stable
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_external_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 my ( $self, $external_name, $external_db_name, $override ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 my $entryAdaptor = $self->db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 my @ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 $entryAdaptor->list_gene_ids_by_extids( $external_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 $external_db_name, $override );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 my %genes_by_dbIDs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 map { $_->dbID(), $_ } @{ $self->fetch_all_by_dbID_list( \@ids ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 my @result = map { $genes_by_dbIDs{$_} } @ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 return \@result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 =head2 fetch_all_by_GOTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 Arg [1] : Bio::EnsEMBL::OntologyTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 The GO term for which genes should be fetched.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 Example: @genes = @{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 $gene_adaptor->fetch_all_by_GOTerm(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 $go_adaptor->fetch_by_accession('GO:0030326') ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 Description : Retrieves a list of genes that are associated with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 the given GO term, or with any of its descendent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 GO terms. The genes returned are in their native
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 coordinate system, i.e. in the coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 in which they are stored in the database. If
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 another coordinate system is required then the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 Gene::transfer or Gene::transform method can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 Return type : listref of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 Exceptions : Throws of argument is not a GO term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 sub fetch_all_by_GOTerm {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 my ( $self, $term ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 assert_ref( $term, 'Bio::EnsEMBL::OntologyTerm' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 if ( $term->ontology() ne 'GO' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 throw('Argument is not a GO term');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 my $entryAdaptor = $self->db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 my %unique_dbIDs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 foreach my $accession ( map { $_->accession() }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 ( $term, @{ $term->descendants() } ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 my @ids =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 $entryAdaptor->list_gene_ids_by_extids( $accession, 'GO' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 foreach my $dbID (@ids) { $unique_dbIDs{$dbID} = 1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 my @result = @{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 $self->fetch_all_by_dbID_list(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 [ sort { $a <=> $b } keys(%unique_dbIDs) ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 return \@result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 } ## end sub fetch_all_by_GOTerm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 =head2 fetch_all_by_GOTerm_accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 Arg [1] : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 The GO term accession for which genes should be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 fetched.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 @genes =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 @{ $gene_adaptor->fetch_all_by_GOTerm_accession(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 'GO:0030326') };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 Description : Retrieves a list of genes that are associated with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 the given GO term, or with any of its descendent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 GO terms. The genes returned are in their native
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 coordinate system, i.e. in the coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 in which they are stored in the database. If
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 another coordinate system is required then the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 Gene::transfer or Gene::transform method can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 Return type : listref of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 Exceptions : Throws of argument is not a GO term accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 sub fetch_all_by_GOTerm_accession {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 my ( $self, $accession ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 if ( $accession !~ /^GO:/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 throw('Argument is not a GO term accession');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 my $goAdaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 Bio::EnsEMBL::Registry->get_adaptor( 'Multi', 'Ontology',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 'OntologyTerm' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 my $term = $goAdaptor->fetch_by_accession($accession);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 return $self->fetch_all_by_GOTerm($term);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 =head2 fetch_all_alt_alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 Arg [1] : Bio::EnsEMBL::Gene $gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 The gene to fetch alternative alleles for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 Example : my @alt_genes = @{ $gene_adaptor->fetch_all_alt_alleles($gene) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 foreach my $alt_gene (@alt_genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 print "Alternate allele: " . $alt_gene->stable_id() . "\n" ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 Description: Retrieves genes which are alternate alleles to a provided gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 Alternate alleles in Ensembl are genes which are similar and are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 on an alternative haplotype of the same region. There are not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 currently very many of these. This method will return a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 reference to an empty list if no alternative alleles are found.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 Returntype : listref of Bio::EnsEMBL::Genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 Exceptions : throw if incorrect arg provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 warning if gene arg does not have dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 Caller : Gene::get_all_alt_alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 sub fetch_all_alt_alleles {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 my $gene = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 if(!ref($gene) || !$gene->isa('Bio::EnsEMBL::Gene')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 throw('Bio::EnsEMBL::Gene argument is required');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 my $gene_id = $gene->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 if(!$gene_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 warning('Cannot retrieve alternate alleles for gene without dbID');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 return [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 my $sth = $self->prepare("SELECT aa1.gene_id " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 "FROM alt_allele aa1, alt_allele aa2 " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 "WHERE aa1.alt_allele_id = aa2.alt_allele_id " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 "AND aa2.gene_id = ? " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 "AND aa1.gene_id <> ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 $sth->bind_param(1, $gene_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 $sth->bind_param(2, $gene_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 my @alt_ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 my $row;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 while($row = $sth->fetchrow_arrayref()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 push @alt_ids, $row->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 if (@alt_ids) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 return $self->fetch_all_by_dbID_list(\@alt_ids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 return [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 sub is_ref{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998 my ( $self, $gene_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 my $is_not_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 # easier to find if it is not an alt_Allele do this and then negate it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 my $sth = $self->prepare("select count(1) from alt_allele where gene_id = $gene_id and is_ref = 0");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 $sth->bind_columns(\$is_not_ref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 $sth->fetch;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 if(defined($is_not_ref) and $is_not_ref){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 =head2 store_alt_alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018 Arg [1] : reference to list of Bio::EnsEMBL::Genes $genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 Example : $gene_adaptor->store_alt_alleles([$gene1, $gene2, $gene3]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 Description: This method creates a group of alternative alleles (i.e. locus)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 from a set of genes. The genes should be genes from alternate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 haplotypes which are similar. The genes must already be stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 in this database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 Returntype : int alt_allele_id or undef if no alt_alleles were stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 Exceptions : throw on incorrect arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026 throw on sql error (e.g. duplicate unique id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 sub store_alt_alleles {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 my $genes = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 if(!ref($genes) eq 'ARRAY') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 throw('List reference of Bio::EnsEMBL::Gene argument expected.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 my @genes = @$genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 my $num_genes = scalar(@genes);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 if($num_genes < 2) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 warning('At least 2 genes must be provided to construct alternative alleles (gene id: '. $genes[0]->dbID() .'). Ignoring.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 my @is_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049 my @ref_genes = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 my @non_ref_genes = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 my @gene_ids = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 foreach my $gene (@genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 if(!ref($gene) || !$gene->isa('Bio::EnsEMBL::Gene')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 throw('List reference of Bio::EnsEMBL::Gene argument expected.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 my $gene_id = $gene->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 if (!$gene_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062 throw('Genes must have dbIDs in order to construct alternative alleles.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 push @gene_ids, $gene_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 my $is_ref = $gene->slice->is_reference();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 push @is_ref, $is_ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071 if ($is_ref) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 push @ref_genes, $gene->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 push @non_ref_genes, $gene->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 if (scalar(@ref_genes) > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 warning('More than one alternative allele on the reference sequence (gene ids: ' . join(',',@ref_genes) . '). Ignoring.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 #insert the first gene seperately in order to get a unique identifier for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 #the set of alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087 my $sth = $self->prepare("INSERT INTO alt_allele (gene_id, is_ref) VALUES (?,?)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 $sth->bind_param(1, $gene_ids[0], SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 $sth->bind_param(2, $is_ref[0], SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 my $alt_allele_id = $sth->{'mysql_insertid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 if (!$alt_allele_id || $@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 throw("An SQL error occured inserting alternative alleles:\n$@");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 # Insert all subsequent alt alleles using the alt_allele identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 # from the first insert
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 $sth = $self->prepare("INSERT INTO alt_allele (alt_allele_id, gene_id, is_ref) " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105 "VALUES (?,?,?)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 for (my $i = 1; $i < $num_genes; $i++) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 $sth->bind_param(1, $alt_allele_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 $sth->bind_param(2, $gene_ids[$i], SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111 $sth->bind_param(3, $is_ref[$i], SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116 if ($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 # an error occured, revert the db to the previous state
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 $sth = $self->prepare("DELETE FROM alt_allele WHERE alt_allele_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 $sth->bind_param(1, $alt_allele_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 throw("An SQL error occured inserting alternative alleles:\n$@");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 return $alt_allele_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 Arg [1] : Bio::EnsEMBL::Gene $gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 The gene to store in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136 Arg [2] : ignore_release in xrefs [default 1] set to 0 to use release info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 in external database references
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 Example : $gene_adaptor->store($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 Description: Stores a gene in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140 Returntype : the database identifier (dbID) of the newly stored gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 Exceptions : thrown if the $gene is not a Bio::EnsEMBL::Gene or if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 $gene does not have an analysis object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149 my ($self, $gene, $ignore_release) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151 if (!ref $gene || !$gene->isa('Bio::EnsEMBL::Gene') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152 throw("Must store a gene object, not a $gene");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154 if(!defined($ignore_release)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 $ignore_release = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157 my $db = $self->db();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159 if ($gene->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160 return $gene->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163 # ensure coords are correct before storing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164 $gene->recalculate_coordinates();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166 my $analysis = $gene->analysis();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167 throw("Genes must have an analysis object.") if(!defined($analysis));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169 my $analysis_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170 if ($analysis->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 $analysis_id = $analysis->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173 $analysis_id = $db->get_AnalysisAdaptor->store($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176 my $type = $gene->biotype || "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178 # default to is_current = 1 if this attribute is not set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179 my $is_current = $gene->is_current;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180 $is_current = 1 unless (defined($is_current));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182 my $original = $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 my $original_transcripts = $gene->get_all_Transcripts();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 my $seq_region_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187 ( $gene, $seq_region_id ) = $self->_pre_store($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189 my $store_gene_sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190 INSERT INTO gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1191 SET biotype = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1192 analysis_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1193 seq_region_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1194 seq_region_start = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1195 seq_region_end = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1196 seq_region_strand = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1197 description = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1198 source = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1199 status = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1200 is_current = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1201 canonical_transcript_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1202 canonical_annotation = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1203 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1205 if (defined($gene->stable_id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1206 my $created = $self->db->dbc->from_seconds_to_date($gene->created_date());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1207 my $modified = $self->db->dbc->from_seconds_to_date($gene->modified_date());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1208 $store_gene_sql .= ", stable_id = ?, version = ?, created_date = " . $created . " , modified_date = " . $modified;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1210 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1212 # column status is used from schema version 34 onwards (before it was
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1213 # confidence)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1215 my $sth = $self->prepare($store_gene_sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1216 $sth->bind_param( 1, $type, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1217 $sth->bind_param( 2, $analysis_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1218 $sth->bind_param( 3, $seq_region_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1219 $sth->bind_param( 4, $gene->start(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1220 $sth->bind_param( 5, $gene->end(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1221 $sth->bind_param( 6, $gene->strand(), SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1222 $sth->bind_param( 7, $gene->description(), SQL_LONGVARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1223 $sth->bind_param( 8, $gene->source(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1224 $sth->bind_param( 9, $gene->status(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1225 $sth->bind_param( 10, $is_current, SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1227 # Canonical transcript ID will be updated later.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1228 # Set it to zero for now.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1229 $sth->bind_param( 11, 0, SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1231 $sth->bind_param( 12, $gene->canonical_annotation(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1233 if ( defined($gene->stable_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1235 $sth->bind_param( 13, $gene->stable_id, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1236 my $version = ($gene->version()) ? $gene->version() : 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1237 $sth->bind_param( 14, $version, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1238 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1240 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1241 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1243 my $gene_dbID = $sth->{'mysql_insertid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1245 # store the dbentries associated with this gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1246 my $dbEntryAdaptor = $db->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1248 foreach my $dbe ( @{ $gene->get_all_DBEntries } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1249 $dbEntryAdaptor->store( $dbe, $gene_dbID, "Gene", $ignore_release );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1250 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1252 # We allow transcripts not to share equal exons and instead have
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1253 # copies. For the database we still want sharing though, to have
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1254 # easier time with stable ids. So we need to have a step to merge
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1255 # exons together before store.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1256 my %exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1258 foreach my $trans ( @{$gene->get_all_Transcripts} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1259 foreach my $e ( @{$trans->get_all_Exons} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1260 my $key = $e->hashkey();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1261 if( exists $exons{ $key } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1262 $trans->swap_exons( $e, $exons{$key} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1263 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1264 $exons{$key} = $e;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1265 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1266 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1267 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1269 my $transcript_adaptor = $db->get_TranscriptAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1271 my $transcripts = $gene->get_all_Transcripts();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1273 my $new_canonical_transcript_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1274 for ( my $i = 0; $i < @$transcripts; $i++ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1275 my $new = $transcripts->[$i];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1276 my $old = $original_transcripts->[$i];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1278 $transcript_adaptor->store( $new, $gene_dbID, $analysis_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1280 if ( !defined($new_canonical_transcript_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1281 && $new->is_canonical() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1282 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1283 $new_canonical_transcript_id = $new->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1284 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1286 # update the original transcripts since we may have made copies of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1287 # them by transforming the gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1288 $old->dbID( $new->dbID() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1289 $old->adaptor( $new->adaptor() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1291 if ( $new->translation ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1292 $old->translation->dbID( $new->translation()->dbID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1293 $old->translation->adaptor( $new->translation()->adaptor );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1294 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1295 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1297 if ( defined($new_canonical_transcript_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1298 # Now the canonical transcript has been stored, so update the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1299 # canonical_transcript_id of this gene with the new dbID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1300 my $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1301 q(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1302 UPDATE gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1303 SET canonical_transcript_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1304 WHERE gene_id = ?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1305 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1307 $sth->bind_param( 1, $new_canonical_transcript_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1308 $sth->bind_param( 2, $gene_dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1310 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1311 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1312 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1314 # update gene to point to display xref if it is set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1315 if(my $display_xref = $gene->display_xref) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1316 my $dxref_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1317 if($display_xref->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1318 $dxref_id = $display_xref->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1319 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1320 $dxref_id = $dbEntryAdaptor->exists($display_xref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1321 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1323 if(defined($dxref_id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1324 my $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1325 ("UPDATE gene SET display_xref_id = ? WHERE gene_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1326 $sth->bind_param(1, $dxref_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1327 $sth->bind_param(2, $gene_dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1328 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1329 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1330 $display_xref->dbID($dxref_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1331 $display_xref->adaptor($dbEntryAdaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1332 $display_xref->dbID($dxref_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1333 $display_xref->adaptor($dbEntryAdaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1334 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1335 warning("Display_xref ".$display_xref->dbname().":".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1336 $display_xref->display_id() . " is not stored in database.\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1337 "Not storing relationship to this gene.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1338 $display_xref->dbID(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1339 $display_xref->adaptor(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1340 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1343 # store gene attributes if there are any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1344 my $attr_adaptor = $db->get_AttributeAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1345 $attr_adaptor->store_on_Gene($gene_dbID, $gene->get_all_Attributes);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1347 # store unconventional transcript associations if there are any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1348 my $utaa = $db->get_UnconventionalTranscriptAssociationAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1349 foreach my $uta (@{$gene->get_all_unconventional_transcript_associations()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1350 $utaa->store($uta);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1351 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1353 # set the adaptor and dbID on the original passed in gene not the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1354 # transfered copy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1355 $original->adaptor($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1356 $original->dbID($gene_dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1358 return $gene_dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1359 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1362 =head2 remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1364 Arg [1] : Bio::EnsEMBL::Gene $gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1365 the gene to remove from the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1366 Example : $gene_adaptor->remove($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1367 Description: Removes a gene completely from the database. All associated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1368 transcripts, exons, stable_identifiers, descriptions, etc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1369 are removed as well. Use with caution!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1370 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1371 Exceptions : throw on incorrect arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1372 warning if gene is not stored in this database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1373 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1374 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1376 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1378 sub remove {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1379 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1380 my $gene = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1382 if (!ref($gene) || !$gene->isa('Bio::EnsEMBL::Gene')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1383 throw("Bio::EnsEMBL::Gene argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1384 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1386 if ( !$gene->is_stored($self->db()) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1387 warning("Cannot remove gene " . $gene->dbID() . ". Is not stored in " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1388 "this database.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1389 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1390 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1392 # remove all object xrefs associated with this gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1394 my $dbe_adaptor = $self->db()->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1395 foreach my $dbe (@{$gene->get_all_DBEntries()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1396 $dbe_adaptor->remove_from_object($dbe, $gene, 'Gene');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1397 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1399 # remove all alternative allele entries associated with this gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1400 my $sth = $self->prepare("DELETE FROM alt_allele WHERE gene_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1401 $sth->bind_param( 1, $gene->dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1402 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1403 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1405 # remove the attributes associated with this transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1406 my $attrib_adaptor = $self->db->get_AttributeAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1407 $attrib_adaptor->remove_from_Gene($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1409 # remove all of the transcripts associated with this gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1410 my $transcriptAdaptor = $self->db->get_TranscriptAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1411 foreach my $trans ( @{$gene->get_all_Transcripts()} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1412 $transcriptAdaptor->remove($trans);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1413 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1414
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1415 # remove any unconventional transcript associations involving this gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1417 $sth =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1418 $self->prepare( "DELETE FROM unconventional_transcript_association "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1419 . "WHERE gene_id = ? " );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1420 $sth->bind_param( 1, $gene->dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1421 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1422 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1424 # remove this gene from the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1426 $sth = $self->prepare("DELETE FROM gene WHERE gene_id = ? ");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1427 $sth->bind_param( 1, $gene->dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1428 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1429 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1431 # unset the gene identifier and adaptor thereby flagging it as unstored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1433 $gene->dbID(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1434 $gene->adaptor(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1436 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1437 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1440 =head2 get_Interpro_by_geneid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1442 Arg [1] : String $gene_stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1443 The stable ID of the gene to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1444 Example : @i = @{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1445 $gene_adaptor->get_Interpro_by_geneid(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1446 $gene->stable_id() ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1447 Description: Gets interpro accession numbers by gene stable id. A hack really
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1448 - we should have a much more structured system than this.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1449 Returntype : listref of strings (Interpro_acc:description)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1450 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1451 Caller : domainview
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1452 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1454 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1456 sub get_Interpro_by_geneid {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1457 my ($self, $gene_stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1459 my $sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1460 SELECT i.interpro_ac,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1461 x.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1462 FROM transcript t,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1463 translation tl,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1464 protein_feature pf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1465 interpro i,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1466 xref x,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1467 gene g
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1468 WHERE g.stable_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1469 AND t.gene_id = g.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1470 AND t.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1471 AND tl.transcript_id = t.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1472 AND tl.translation_id = pf.translation_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1473 AND i.id = pf.hit_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1474 AND i.interpro_ac = x.dbprimary_acc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1476 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1478 $sth->bind_param( 1, $gene_stable_id, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1480 $sth->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1482 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1483 my %h;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1484 while( (my $arr = $sth->fetchrow_arrayref()) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1485 if( $h{$arr->[0]} ) { next; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1486 $h{$arr->[0]}=1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1487 my $string = $arr->[0] .":".$arr->[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1488 push(@out,$string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1489 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1491 return \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1492 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1495 =head2 update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1496
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1497 Arg [1] : Bio::EnsEMBL::Gene $gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1498 The gene to update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1499 Example : $gene_adaptor->update($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1500 Description: Updates the type, analysis, display_xref, status, is_current and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1501 description of a gene in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1502 Returntype : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1503 Exceptions : thrown if the $gene is not a Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1504 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1505 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1507 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1508
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1509 sub update {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1510 my ($self, $gene) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1511 my $update = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1513 if ( !defined $gene || !ref $gene || !$gene->isa('Bio::EnsEMBL::Gene') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1514 throw("Must update a gene object, not a $gene");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1515 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1517 my $update_gene_sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1518 UPDATE gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1519 SET biotype = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1520 analysis_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1521 display_xref_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1522 status = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1523 description = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1524 is_current = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1525 canonical_transcript_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1526 canonical_annotation = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1527 WHERE gene_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1528 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1530 my $display_xref = $gene->display_xref();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1531 my $display_xref_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1532
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1533 if ( $display_xref && $display_xref->dbID() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1534 $display_xref_id = $display_xref->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1535 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1536 $display_xref_id = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1537 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1539 my $sth = $self->prepare( $update_gene_sql );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1541 $sth->bind_param( 1, $gene->biotype(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1542 $sth->bind_param( 2, $gene->analysis->dbID(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1543 $sth->bind_param( 3, $display_xref_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1544 $sth->bind_param( 4, $gene->status(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1545 $sth->bind_param( 5, $gene->description(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1546 $sth->bind_param( 6, $gene->is_current(), SQL_TINYINT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1548 if ( defined( $gene->canonical_transcript() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1549 $sth->bind_param( 7, $gene->canonical_transcript()->dbID(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1550 SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1551 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1552 $sth->bind_param( 7, 0, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1553 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1555 $sth->bind_param( 8, $gene->canonical_annotation(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1556 $sth->bind_param( 9, $gene->dbID(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1558 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1560 # maybe should update stable id ???
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1561 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1562
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1564 # _objs_from_sth
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1566 # Arg [1] : StatementHandle $sth
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1567 # Arg [2] : Bio::EnsEMBL::AssemblyMapper $mapper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1568 # Arg [3] : Bio::EnsEMBL::Slice $dest_slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1569 # Description: PROTECTED implementation of abstract superclass method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1570 # responsible for the creation of Genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1571 # Returntype : listref of Bio::EnsEMBL::Genes in target coordinate system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1572 # Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1573 # Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1574 # Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1576 sub _objs_from_sth {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1577 my ($self, $sth, $mapper, $dest_slice) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1579 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1580 # This code is ugly because an attempt has been made to remove as many
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1581 # function calls as possible for speed purposes. Thus many caches and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1582 # a fair bit of gymnastics is used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1583 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1584
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1585 my $sa = $self->db()->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1586 my $aa = $self->db()->get_AnalysisAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1587 my $dbEntryAdaptor = $self->db()->get_DBEntryAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1588
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1589 my @genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1590 my %analysis_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1591 my %slice_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1592 my %sr_name_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1593 my %sr_cs_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1595 my (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1596 $gene_id, $seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1597 $seq_region_start, $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1598 $seq_region_strand, $analysis_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1599 $biotype, $display_xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1600 $gene_description, $status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1601 $source, $is_current,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1602 $canonical_transcript_id, $canonical_annotation,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1603 $stable_id, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1604 $created_date, $modified_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1605 $xref_display_id, $xref_primary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1606 $xref_desc, $xref_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1607 $external_db, $external_status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1608 $external_release, $external_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1609 $info_type, $info_text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1610 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1612 $sth->bind_columns(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1613 \(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1614 $gene_id, $seq_region_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1615 $seq_region_start, $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1616 $seq_region_strand, $analysis_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1617 $biotype, $display_xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1618 $gene_description, $status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1619 $source, $is_current,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1620 $canonical_transcript_id, $canonical_annotation,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1621 $stable_id, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1622 $created_date, $modified_date,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1623 $xref_display_id, $xref_primary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1624 $xref_desc, $xref_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1625 $external_db, $external_status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1626 $external_release, $external_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1627 $info_type, $info_text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1628 ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1629
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1630 my $asm_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1631 my $cmp_cs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1632 my $asm_cs_vers;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1633 my $asm_cs_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1634 my $cmp_cs_vers;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1635 my $cmp_cs_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1637 if($mapper) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1638 $asm_cs = $mapper->assembled_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1639 $cmp_cs = $mapper->component_CoordSystem();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1640 $asm_cs_name = $asm_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1641 $asm_cs_vers = $asm_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1642 $cmp_cs_name = $cmp_cs->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1643 $cmp_cs_vers = $cmp_cs->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1644 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1646 my $dest_slice_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1647 my $dest_slice_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1648 my $dest_slice_strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1649 my $dest_slice_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1650 my $dest_slice_sr_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1651 my $dest_slice_sr_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1652
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1653 if($dest_slice) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1654 $dest_slice_start = $dest_slice->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1655 $dest_slice_end = $dest_slice->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1656 $dest_slice_strand = $dest_slice->strand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1657 $dest_slice_length = $dest_slice->length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1658 $dest_slice_sr_name = $dest_slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1659 $dest_slice_sr_id = $dest_slice->get_seq_region_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1660 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1661
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1662 FEATURE: while($sth->fetch()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1663 #get the analysis object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1664 my $analysis = $analysis_hash{$analysis_id} ||=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1665 $aa->fetch_by_dbID($analysis_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1667 #need to get the internal_seq_region, if present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1668 $seq_region_id = $self->get_seq_region_id_internal($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1669 my $slice = $slice_hash{"ID:".$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1671 if(!$slice) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1672 $slice = $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1673 $slice_hash{"ID:".$seq_region_id} = $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1674 $sr_name_hash{$seq_region_id} = $slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1675 $sr_cs_hash{$seq_region_id} = $slice->coord_system();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1676 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1678 my $sr_name = $sr_name_hash{$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1679 my $sr_cs = $sr_cs_hash{$seq_region_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1680
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1681 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1682 # remap the feature coordinates to another coord system
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1683 # if a mapper was provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1684 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1685 if($mapper) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1687 if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1688 ( $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1689 $seq_region_end, $seq_region_strand )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1690 =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1691 $mapper->map( $sr_name, $seq_region_start, $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1692 $seq_region_strand, $sr_cs, 1, $dest_slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1694 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1695
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1696 ( $seq_region_id, $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1697 $seq_region_end, $seq_region_strand )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1698 =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1699 $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1700 $seq_region_strand, $sr_cs );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1701 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1702
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1703 #skip features that map to gaps or coord system boundaries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1704 next FEATURE if(!defined($seq_region_id));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1705
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1706 #get a slice in the coord system we just mapped to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1707 # if($asm_cs == $sr_cs || ($cmp_cs != $sr_cs && $asm_cs->equals($sr_cs))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1708 $slice = $slice_hash{"ID:".$seq_region_id} ||=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1709 $sa->fetch_by_seq_region_id($seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1710 # } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1711 # $slice = $slice_hash{"NAME:$sr_name:$asm_cs_name:$asm_cs_vers"} ||=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1712 # $sa->fetch_by_region($asm_cs_name, $sr_name, undef, undef, undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1713 # $asm_cs_vers);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1714 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1715 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1717 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1718 # If a destination slice was provided convert the coords.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1719 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1720 if ( defined($dest_slice) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1721 if ( $dest_slice_strand == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1722 # Positive strand.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1724 $seq_region_start = $seq_region_start - $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1725 $seq_region_end = $seq_region_end - $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1726
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1727 if ( $dest_slice->is_circular() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1728 # Handle cicular chromosomes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1729
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1730 if ( $seq_region_start > $seq_region_end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1731 # Looking at a feature overlapping the chromsome origin.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1733 if ( $seq_region_end > $dest_slice_start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1734 # Looking at the region in the beginning of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1735 # chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1736 $seq_region_start -= $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1737 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1739 if ( $seq_region_end < 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1740 $seq_region_end += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1741 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1743 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1744
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1745 if ( $dest_slice_start > $dest_slice_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1746 && $seq_region_end < 0 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1747 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1748 # Looking at the region overlapping the chromosome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1749 # origin and a feature which is at the beginning of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1750 # chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1751 $seq_region_start += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1752 $seq_region_end += $dest_slice->seq_region_length();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1753 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1754 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1756 } ## end if ( $dest_slice->is_circular...)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1757
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1758 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1759 # Negative strand.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1760
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1761 if ( $dest_slice->is_circular()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1762 && $seq_region_start > $seq_region_end )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1763 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1764 # Handle cicular chromosomes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1765
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1766 if ( $seq_region_end > $dest_slice_start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1767 # Looking at the region in the beginning of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1768 # chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1769 $seq_region_start = $dest_slice_end - $seq_region_end + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1770 $seq_region_end =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1771 $seq_region_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1772 $dest_slice->seq_region_length -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1773 $dest_slice_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1774 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1775 my $tmp_seq_region_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1776 $seq_region_start =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1777 $dest_slice_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1778 $seq_region_end -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1779 $dest_slice->seq_region_length + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1780 $seq_region_end =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1781 $dest_slice_end - $tmp_seq_region_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1782 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1784 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1785 # Non-circular chromosome.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1786
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1787 my $tmp_seq_region_start = $seq_region_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1788 $seq_region_start = $dest_slice_end - $seq_region_end + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1789 $seq_region_end = $dest_slice_end - $tmp_seq_region_start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1790 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1791
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1792 $seq_region_strand = -$seq_region_strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1793
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1794 } ## end else [ if ( $dest_slice_strand...)]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1795
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1796 # Throw away features off the end of the requested slice or on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1797 # different seq_region.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1798
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1799 if ( $seq_region_end < 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1800 || $seq_region_start > $dest_slice_length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1801 || ( $dest_slice_sr_id ne $seq_region_id ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1802 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1803 next FEATURE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1804 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1805
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1806 $slice = $dest_slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1807 } ## end if ( defined($dest_slice...))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1808
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1809 my $display_xref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1810
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1811 if ($display_xref_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1812 $display_xref = Bio::EnsEMBL::DBEntry->new_fast( {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1813 'dbID' => $display_xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1814 'adaptor' => $dbEntryAdaptor,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1815 'display_id' => $xref_display_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1816 'primary_id' => $xref_primary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1817 'version' => $xref_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1818 'description' => $xref_desc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1819 'release' => $external_release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1820 'dbname' => $external_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1821 'db_display_name' => $external_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1822 'info_type' => $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1823 'info_text' => $info_text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1824 } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1825 $display_xref->status($external_status);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1826 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1827
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1828 # Finally, create the new Gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1829 push(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1830 @genes,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1831 $self->_create_feature_fast(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1832 'Bio::EnsEMBL::Gene',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1833 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1834 'analysis' => $analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1835 'biotype' => $biotype,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1836 'start' => $seq_region_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1837 'end' => $seq_region_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1838 'strand' => $seq_region_strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1839 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1840 'slice' => $slice,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1841 'dbID' => $gene_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1842 'stable_id' => $stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1843 'version' => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1844 'created_date' => $created_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1845 'modified_date' => $modified_date || undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1846 'description' => $gene_description,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1847 'external_name' => undef, # will use display_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1848 # from display_xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1849 'external_db' => $external_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1850 'external_status' => $external_status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1851 'display_xref' => $display_xref,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1852 'status' => $status,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1853 'source' => $source,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1854 'is_current' => $is_current,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1855 'canonical_transcript_id' => $canonical_transcript_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1856 'canonical_annotation' => $canonical_annotation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1857 } ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1859 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1860
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1861 return \@genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1862 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1863
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1864
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1865 =head2 cache_gene_seq_mappings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1867 Example : $gene_adaptor->cache_gene_seq_mappings();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1868 Description: caches all the assembly mappings needed for genes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1869 Returntype : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1870 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1871 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1872 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1873 : New experimental code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1875 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1877 sub cache_gene_seq_mappings {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1878 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1880 # get the sequence level to map too
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1881
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1882 my $sql =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1883 'SELECT name '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1884 . 'FROM coord_system '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1885 . 'WHERE attrib like "%%sequence_level%%"'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1886 . 'AND species_id = ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1887
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1888 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1889 $sth->bind_param( 1, $self->species_id(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1890 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1892 my $sequence_level = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1893
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1894 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1895
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1896 my $csa = $self->db->get_CoordSystemAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1897 my $ama = $self->db->get_AssemblyMapperAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1898
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1899 my $cs1 = $csa->fetch_by_name($sequence_level);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1900
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1901 # get level to map to two
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1902
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1903 my $mcc = $self->db->get_MetaCoordContainerAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1904 my $csnew = $mcc->fetch_all_CoordSystems_by_feature_type('gene');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1905
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1906 foreach my $cs2 (@$csnew) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1907 my $am = $ama->fetch_by_CoordSystems( $cs1, $cs2 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1908 $am->register_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1909 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1910
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1911 } ## end sub cache_gene_seq_mappings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1912
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1913
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1914 =head2 fetch_all_by_exon_supporting_evidence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1916 Arg [1] : String $hit_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1917 Name of supporting feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1918 Arg [2] : String $feature_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1919 one of "dna_align_feature" or "protein_align_feature"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1920 Arg [3] : (optional) Bio::Ensembl::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1921 Example : $genes = $gene_adaptor->fetch_all_by_exon_supporting_evidence(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1922 'XYZ', 'dna_align_feature');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1923 Description: Gets all the genes with transcripts with exons which have a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1924 specified hit on a particular type of feature. Optionally filter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1925 by analysis.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1926 Returntype : Listref of Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1927 Exceptions : If feature_type is not of correct type.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1928 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1929 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1930
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1931 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1932
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1933 sub fetch_all_by_exon_supporting_evidence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1934 my ($self, $hit_name, $feature_type, $analysis) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1935
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1936 if ($feature_type !~ /(dna)|(protein)_align_feature/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1937 throw("feature type must be dna_align_feature or protein_align_feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1938 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1939
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1940 my $anal_from = ", analysis a " if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1941 my $anal_where = "AND a.analysis_id = f.analysis_id AND a.analysis_id=? " if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1942
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1943 my $sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1944 SELECT DISTINCT(g.gene_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1945 FROM gene g,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1946 transcript t,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1947 exon_transcript et,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1948 supporting_feature sf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1949 $feature_type f
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1950 $anal_from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1951 WHERE g.gene_id = t.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1952 AND g.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1953 AND t.transcript_id = et.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1954 AND et.exon_id = sf.exon_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1955 AND sf.feature_id = f.${feature_type}_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1956 AND sf.feature_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1957 AND f.hit_name=?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1958 $anal_where
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1959 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1960
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1961 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1962
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1963 $sth->bind_param(1, $feature_type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1964 $sth->bind_param(2, $hit_name, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1965 $sth->bind_param(3, $analysis->dbID(), SQL_INTEGER) if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1966
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1967 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1968
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1969 my @genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1970
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1971 while ( my $id = $sth->fetchrow_array ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1972 my $gene = $self->fetch_by_dbID($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1973 push(@genes, $gene) if $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1974 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1975
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1976 return \@genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1977 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1978
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1979
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1980 =head2 fetch_all_by_transcript_supporting_evidence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1981
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1982 Arg [1] : String $hit_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1983 Name of supporting feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1984 Arg [2] : String $feature_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1985 one of "dna_align_feature" or "protein_align_feature"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1986 Arg [3] : (optional) Bio::Ensembl::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1987 Example : $genes = $gene_adaptor->fetch_all_by_transcript_supporting_evidence('XYZ', 'dna_align_feature');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1988 Description: Gets all the genes with transcripts with evidence for a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1989 specified hit on a particular type of feature. Optionally filter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1990 by analysis.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1991 Returntype : Listref of Bio::EnsEMBL::Gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1992 Exceptions : If feature_type is not of correct type.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1993 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1994 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1995
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1996 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1997
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1998 sub fetch_all_by_transcript_supporting_evidence {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1999 my ($self, $hit_name, $feature_type, $analysis) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2001 if($feature_type !~ /(dna)|(protein)_align_feature/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2002 throw("feature type must be dna_align_feature or protein_align_feature");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2003 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2004
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2005 my $anal_from = ", analysis a " if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2006 my $anal_where = "AND a.analysis_id = f.analysis_id AND a.analysis_id=? " if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2007
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2008 my $sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2009 SELECT DISTINCT(g.gene_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2010 FROM gene g,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2011 transcript t,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2012 transcript_supporting_feature sf,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2013 $feature_type f
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2014 $anal_from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2015 WHERE g.gene_id = t.gene_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2016 AND g.is_current = 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2017 AND t.transcript_id = sf.transcript_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2018 AND sf.feature_id = f.${feature_type}_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2019 AND sf.feature_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2020 AND f.hit_name=?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2021 $anal_where
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2022 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2023
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2024 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2025
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2026 $sth->bind_param(1, $feature_type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2027 $sth->bind_param(2, $hit_name, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2028 $sth->bind_param(3, $analysis->dbID(), SQL_INTEGER) if ($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2029
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2030 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2031
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2032 my @genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2033
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2034 while( my $id = $sth->fetchrow_array ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2035 my $gene = $self->fetch_by_dbID($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2036 push(@genes, $gene) if $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2037 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2038
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2039 return \@genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2040 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2041
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2042 =head2 fetch_nearest_Gene_by_Feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2043
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2044 Arg [1] : Feature object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2045 Example : $genes = $gene_adaptor->fetch_nearest_Gene_by_Feature($feat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2046 Description: Gets the nearest gene to the feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2047 Returntype : Listref of Bio::EnsEMBL::Gene, EMPTY list if no nearest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2048 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2049 Status : UnStable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2050
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2051 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2052
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2053 sub fetch_nearest_Gene_by_Feature{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2054 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2055 my $feat = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2056
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2057 my $stranded = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2058 my $stream = shift; # 1 up stream -1 downstream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2059 my @genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2060
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2061
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2062 my $strand = $feat->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2063 if(defined($stream) and !$strand){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2064 warn("stream specified but feature has no strand so +ve strand will be used");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2065 $strand = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2066 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2067 my $min_dist = 999;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2068 my $gene_id = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2069
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2070 my $overlapping = $feat->get_overlapping_Genes();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2071
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2072 return $overlapping if(defined(@{$overlapping}[0]));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2073
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2074 my $seq_region_id = $feat->slice->adaptor->get_seq_region_id($feat->slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2075 my $start = ($feat->start + $feat->slice->start) -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2076 my $end = ($feat->end + $feat->slice->start) -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2077
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2078
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2079 my @gene_ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2080 if(!defined($stream) or $stream == 0){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2081
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2082 my $sql1 = "select g.gene_id, (? - g.seq_region_end) as 'dist' from gene g where ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2083 if($stranded){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2084 $sql1 .= "g.seq_region_strand = ".$strand." and ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2085 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2086 $sql1 .= "seq_region_id = ? and g.seq_region_end < ? order by dist limit 10";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2087
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2088 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2089 # MAYBE set the result of prepare to be static in case lots of calls.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2090 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2091 my $sql1_sth = $self->prepare($sql1) || die "Could not prepare $sql1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2092 $sql1_sth->execute($start, $seq_region_id, $start) || die "Could not execute sql";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2093 $sql1_sth->bind_columns(\$gene_id, \$min_dist) || die "Could mot bin columns";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2094
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2095 my $last_dist = 99999999999999999;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2096 while($sql1_sth->fetch()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2097 if($min_dist <= $last_dist){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2098 push @gene_ids, $gene_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2099 $last_dist = $min_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2100 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2101 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2102 $sql1_sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2106 my $sql2 = "select g.gene_id, (g.seq_region_start - ?) as 'dist' from gene g where ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2107 if($stranded){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2108 $sql2 .= "g.seq_region_strand = ".$feat->strand." and ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2109 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2110 $sql2 .= "seq_region_id = ? and g.seq_region_start > ? order by dist limit 10";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2112 my $sql2_sth = $self->prepare($sql2) || die "could not prepare $sql2";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2114 my ($tmp_min_dist, $tmp_gene_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2115 $sql2_sth->execute($end, $seq_region_id, $end) || die "Could not execute sql";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2116 $sql2_sth->bind_columns(\$tmp_gene_id, \$tmp_min_dist) || die "Could mot bin columns";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2117 my $first =1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2118 while($sql2_sth->fetch()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2119 if( $tmp_min_dist <= $last_dist){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2120 if($first){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2121 $first = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2122 if($tmp_min_dist < $last_dist){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2123 @gene_ids = (); #reset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2124 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2125 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2126 push @gene_ids, $tmp_gene_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2127 $last_dist = $tmp_min_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2128 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2129 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2130 $sql2_sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2133 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2134 elsif(($stream*$strand) == 1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2135 my $sql1 = "select g.gene_id, (? - g.seq_region_end) as 'dist' from gene g where ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2136 if($stranded){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2137 $sql1 .= "g.seq_region_strand = ".$strand." and ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2138 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2139 $sql1 .= "seq_region_id = ? and g.seq_region_end < ? order by dist limit 10";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2141 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2142 # MAYBE set the result of prepare to be static in case lots of calls.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2143 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2144 my $sql1_sth = $self->prepare($sql1) || die "Could not prepare $sql1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2145 $sql1_sth->execute($start, $seq_region_id, $start) || die "Could not execute sql";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2146 $sql1_sth->bind_columns(\$gene_id, \$min_dist) || die "Could mot bin columns";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2148 my $last_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2149 my $first = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2150 while($sql1_sth->fetch()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2151 if($first){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2152 $first = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2153 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2154 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2155 next if ($min_dist > $last_dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2156 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2157 push @gene_ids, $gene_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2158 $last_dist = $min_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2159 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2160 $sql1_sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2161 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2162 elsif(($stream * $strand) == -1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2164 my $sql2 = "select g.gene_id, (g.seq_region_start - ?) as 'dist' from gene g where ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2165 if($stranded){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2166 $sql2 .= "g.seq_region_strand = ".$feat->strand." and ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2167 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2168 $sql2 .= "seq_region_id = ? and g.seq_region_start > ? order by dist limit 10";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2170 my $sql2_sth = $self->prepare($sql2) || die "could not prepare $sql2";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2172 my ($tmp_min_dist, $tmp_gene_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2173 $sql2_sth->execute($end, $seq_region_id, $end) || die "Could not execute sql";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2174 $sql2_sth->bind_columns(\$tmp_gene_id, \$tmp_min_dist) || die "Could mot bin columns";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2175 my $first =1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2176 my $last_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2177 while($sql2_sth->fetch()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2178 if($first){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2179 $first = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2180 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2181 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2182 next if ($tmp_min_dist > $last_dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2184 push @gene_ids, $tmp_gene_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2185 $last_dist = $tmp_min_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2187 $sql2_sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2188 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2189 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2190 die "Invalid stream or strand must be -1, 0 or 1\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2191 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2195 foreach my $gene_id (@gene_ids){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2196 push @genes, $self->fetch_by_dbID($gene_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2197 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2198 return \@genes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2202 ##########################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2203 # #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2204 # DEPRECATED METHODS #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2205 # #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2206 ##########################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2209 =head2 fetch_by_maximum_DBLink
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2211 DEPRECATED - use fetch_all_by_external_name instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2213 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2215 sub fetch_by_maximum_DBLink {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2216 my ($self, $external_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2218 deprecate( "use fetch_all_by_external_name instead" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2220 my $genes=$self->fetch_all_by_external_name($external_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2222 my $biggest;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2223 my $max = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2224 my $size = scalar(@$genes);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2225 if ($size > 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2226 foreach my $gene (@$genes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2227 my $size = scalar(@{$gene->get_all_Exons});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2228 if ($size > $max) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2229 $biggest = $gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2230 $max = $size;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2232 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2233 return $biggest;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2234 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2235 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2236 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2239 =head2 get_display_xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2241 DEPRECATED use $gene->display_xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2243 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2245 sub get_display_xref {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2246 my ($self, $gene) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2248 deprecate( "display xref should retrieved from Gene object directly" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2250 if ( !defined $gene ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2251 throw("Must call with a Gene object");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2252 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2254 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2255 SELECT e.db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2256 x.display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2257 x.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2258 FROM gene g,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2259 xref x,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2260 external_db e
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2261 WHERE g.gene_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2262 AND g.display_xref_id = x.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2263 AND x.external_db_id = e.external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2264 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2266 $sth->bind_param(1, $gene->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2267 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2269 my ($db_name, $display_label, $xref_id) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2270 if ( !defined $xref_id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2271 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2272 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2274 my $db_entry = Bio::EnsEMBL::DBEntry->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2275 -dbid => $xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2276 -adaptor => $self->db->get_DBEntryAdaptor(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2277 -dbname => $db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2278 -display_id => $display_label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2279 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2281 return $db_entry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2282 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2285 =head2 get_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2287 DEPRECATED, use gene->get_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2289 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2291 sub get_description {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2292 my ($self, $dbID) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2294 deprecate( "Gene description should be loaded on gene retrieval. Use gene->get_description()" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2296 if ( !defined $dbID ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2297 throw("must call with dbID");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2300 my $sth = $self->prepare("SELECT description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2301 FROM gene_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2302 WHERE gene_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2304 $sth->bind_param(1, $dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2305 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2307 my @array = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2308 return $array[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2309 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2312 =head2 fetch_by_Peptide_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2314 DEPRECATED, use fetch_by_translation_stable_id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2316 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2318 sub fetch_by_Peptide_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2319 my ( $self, $translation_stable_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2321 deprecate( "Please use better named fetch_by_translation_stable_id \n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2322 caller(2) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2324 $self->fetch_by_translation_stable_id($translation_stable_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2325 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2328 =head2 get_stable_entry_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2330 DEPRECATED use $gene->stable_id instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2332 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2334 sub get_stable_entry_info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2335 my ($self,$gene) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2337 deprecated("stable id info is loaded on default, no lazy loading necessary");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2339 if ( !defined $gene || !ref $gene || !$gene->isa('Bio::EnsEMBL::Gene') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2340 throw("Needs a gene object, not a $gene");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2343 my $created_date = $self->db->dbc->from_date_to_seconds("created_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2344 my $modified_date = $self->db->dbc->from_date_to_seconds("modified_date");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2346 my $sth =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2347 $self->prepare( "SELECT stable_id, "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2348 . $created_date . ","
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2349 . $modified_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2350 . ", version FROM gene WHERE gene_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2352 $sth->bind_param(1, $gene->dbID, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2353 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2355 my @array = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2356 $gene->{'stable_id'} = $array[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2357 $gene->{'created'} = $array[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2358 $gene->{'modified'} = $array[2];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2359 $gene->{'version'} = $array[3];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2361 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2362 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2365 =head2 fetch_all_by_DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2367 DEPRECATED - Use fetch_all_by_external_name instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2369 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2371 sub fetch_all_by_DBEntry {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2372 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2374 deprecate('Use fetch_all_by_external_name instead.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2376 return $self->fetch_all_by_external_name(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2377 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2380 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2382