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

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::DBSQL::DBEntryAdaptor -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 MySQL Database queries to load and store external object references.
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 $db_entry_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $registry->get_adaptor( 'Human', 'Core', 'DBEntry' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 $db_entry = $db_entry_adaptor->fetch_by_dbID($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 my $gene_adaptor = $registry->get_adaptor( 'Human', 'Core', 'Gene' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 my $gene = $gene_adaptor->fetch_by_stable_id('ENSG00000101367');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 @db_entries = @{ $db_entry_adaptor->fetch_all_by_Gene($gene) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 @gene_ids = $db_entry_adaptor->list_gene_ids_by_extids('BAB15482');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 package Bio::EnsEMBL::DBSQL::DBEntryAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use Bio::EnsEMBL::DBSQL::BaseAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use Bio::EnsEMBL::DBEntry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 use Bio::EnsEMBL::IdentityXref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 use Bio::EnsEMBL::OntologyXref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 use Bio::EnsEMBL::Utils::Exception qw(deprecate throw warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 @ISA = qw( Bio::EnsEMBL::DBSQL::BaseAdaptor );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =head2 fetch_by_dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 Arg [1] : int $dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 the unique database identifier for the DBEntry to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 Example : my $db_entry = $db_entry_adaptor->fetch_by_dbID($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Description: Retrieves a dbEntry from the database via its unique
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 identifier.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Returntype : Bio::EnsEMBL::DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 sub fetch_by_dbID {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 my ( $self, $dbID ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 my $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 "SELECT xref.xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 xref.dbprimary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 xref.display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 xref.version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 exDB.priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 exDB.db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 exDB.db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 exDB.db_release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 es.synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 xref.info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 xref.info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 exDB.type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 exDB.secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 exDB.secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 xref.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 FROM (xref, external_db exDB)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 LEFT JOIN external_synonym es ON
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 es.xref_id = xref.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 WHERE xref.xref_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 AND xref.external_db_id = exDB.external_db_id" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 $sth->bind_param( 1, $dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 my $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $max_rows = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 while ( my $rowcache = $sth->fetchall_arrayref( undef, $max_rows ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 #$description refers to the external_db description, while $desc was referring the xref description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 while ( my $arrayref = shift( @{$rowcache} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my ( $refID, $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $displayid, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 $dbname, $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 $release, $synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 $info_type, $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 $type, $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 $secondary_db_table, $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 ) = @$arrayref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 if ( !defined($exDB) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $exDB =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Bio::EnsEMBL::DBEntry->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 -adaptor => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 -dbID => $dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 -primary_id => $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 -display_id => $displayid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 -version => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 -release => $release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 -dbname => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 -priority => $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 -db_display_name => $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 -info_type => $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 -info_text => $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 -type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 -secondary_db_name => $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 -secondary_db_table => $secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 -description => $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 if ( defined($synonym) ) { $exDB->add_synonym($synonym) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 } ## end while ( my $arrayref = shift...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 } ## end while ( my $rowcache = $sth...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 return $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 } ## end sub fetch_by_dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 sub _get_all_dm_loc_sth {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 my ($self, $constraint ,$ensembl_object ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my $object_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 if($ensembl_object->isa("Bio::EnsEMBL::Gene")){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 $object_type = "Gene";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 elsif($ensembl_object->isa("Bio::EnsEMBL::Transcript")){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $object_type = "Transcript";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 elsif($ensembl_object->isa("Bio::EnsEMBL::Translation")){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $object_type = "Translation";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 elsif($ensembl_object->isa("Bio::EnsEMBL::Operon")){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 $object_type = "Operon";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 elsif($ensembl_object->isa("Bio::EnsEMBL::OperonTranscript")){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 $object_type = "OperonTranscript";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 warn(ref($ensembl_object)." is not a Gene Transcript or Translation object??\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my $sql = "SELECT xref.xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 xref.dbprimary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 xref.display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 xref.version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 exDB.priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 exDB.db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 exDB.db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 exDB.db_release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 es.synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 xref.info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 xref.info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 exDB.type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 exDB.secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 exDB.secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 xref.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 FROM (xref, external_db exDB, dependent_xref dx, object_xref ox)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 LEFT JOIN external_synonym es ON
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 es.xref_id = xref.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 WHERE xref.external_db_id = exDB.external_db_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 ox.xref_id = xref.xref_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 ox.ensembl_object_type = \'$object_type\' AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 ox.ensembl_id = ".$ensembl_object->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 if($constraint){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $sql .= " AND $constraint";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 die "NO constraint???\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 my $sth = $self->prepare($sql) || die "Could not prepare $sql";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 return $self->_get_all_dm($sth);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 sub _get_all_dm_sth {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my ( $self, $constraint) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my $sql = "SELECT xref.xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 xref.dbprimary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 xref.display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 xref.version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 exDB.priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 exDB.db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 exDB.db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 exDB.db_release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 es.synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 xref.info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 xref.info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 exDB.type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 exDB.secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 exDB.secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 xref.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 FROM (xref, external_db exDB, dependent_xref dx)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 LEFT JOIN external_synonym es ON
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 es.xref_id = xref.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 WHERE xref.external_db_id = exDB.external_db_id ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 if($constraint){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $sql .= "AND $constraint";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 die "NO constraint???\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 my $sth = $self->prepare($sql) || die "Could not prepare $sql";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 return $self->_get_all_dm($sth);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 sub _get_all_dm{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 my ($self, $sth) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 # $sth->bind_param( 1, $dm_dbid, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 # print $sth."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 $sth->execute() || die "Not able to execute statement handle";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 my @list =();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my %seen;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 my $max_rows = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 while ( my $rowcache = $sth->fetchall_arrayref(undef, $max_rows) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 while ( my $arrayref = shift( @{$rowcache} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 my ( $dbID, $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 $displayid, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $dbname, $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 $release, $synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $info_type, $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $type, $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $secondary_db_table, $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 ) = @$arrayref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 if ( !defined($seen{$dbID}) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 my $exDB =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Bio::EnsEMBL::DBEntry->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 -adaptor => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 -dbID => $dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 -primary_id => $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 -display_id => $displayid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 -version => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 -release => $release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 -dbname => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 -priority => $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 -db_display_name => $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 -info_type => $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 -info_text => $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 -type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 -secondary_db_name => $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 -secondary_db_table => $secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 -description => $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 if ($synonym) { $exDB->add_synonym($synonym) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 $seen{$dbID} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 push @list, $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 } ## end while ( my $arrayref = shift...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 } ## end while ( my $rowcache = $sth...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 return \@list;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 =head2 get_all_dependents
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Args[1] : dbID of the DBentry to get the dependents of.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Args[2] : (optional) Bio::EnsEMBL::Gene, Transcript or Translation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 Example : my @dependents = @{ $dbe_adaptor->get_all_dependents(1234) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 Description: Get a list of DBEntrys that are depenednet on the DBEntry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 if an ensembl gene transcript or translation is given then only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 the ones on that object will be given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 Returntype : listref of DBEntrys. May be empty.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Caller : DBEntry->get_all_dependnets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 Status : UnStable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 sub get_all_dependents {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 my ( $self, $dbid, $ensembl_object) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 if(defined($ensembl_object) and !($ensembl_object->isa("Bio::EnsEMBL::Feature") or $ensembl_object->isa("Bio::EnsEMBL::Translation"))){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 die ref($ensembl_object)." is not an Gene Transcript or Translation";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 my $constraint = " dx.master_xref_id = $dbid AND dx.dependent_xref_id = xref.xref_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 if(defined($ensembl_object)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 return $self->_get_all_dm_loc_sth($constraint, $ensembl_object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 return $self->_get_all_dm_sth($constraint, $ensembl_object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 =head2 get_all_masters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 Args[1] : dbID of the DBentry to get the masters of.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Args[2] : (optional) Bio::EnsEMBL::Gene, Transcript or Translation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Example : my @masters = @{ $dbe_adaptor->get_all_masters(1234) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 Description: Get a list of DBEntrys that are the masters of the DBEntry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 if an ensembl gene transcript or translation is given then only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 the ones on that object will be given.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Returntype : listref of DBEntrys. May be empty.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 Caller : DBEntry->get_all_masters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 Status : UnStable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 sub get_all_masters {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 my ( $self, $dbid, $ensembl_object ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 if(defined($ensembl_object) and !($ensembl_object->isa("Bio::EnsEMBL::Feature") or $ensembl_object->isa("Bio::EnsEMBL::Translation"))){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 die ref($ensembl_object)." is not an Gene Transcript or Translation";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 my $constraint = "dx.dependent_xref_id = $dbid AND dx.master_xref_id = xref.xref_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 if(defined($ensembl_object)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 return $self->_get_all_dm_loc_sth($constraint, $ensembl_object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 return $self->_get_all_dm_sth($constraint, $ensembl_object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 # return $self->_get_all_dm($constraint, $ensembl_object);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 =head fetch_all_by_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 Arg [1] : string $name - The name of the external reference.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 found in accession, display_label or synonym
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 Arg [2] : (optional) string $dbname - The name of the database which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 the provided name is for.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 Example : my $xref = @{$dbea->fetch_all_by_name('BRAC2','HGNC')}[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 print $xref->description(), "\n" if($xref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 Description: Retrieves list of DBEntrys (xrefs) via a name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 The accesion is looked for first then the synonym and finally
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 the display_label.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 NOTE $dbname this is optional but adding this speeds the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 process up if you know what you are looking for.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 NOTE: In a multi-species database, this method will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 return all the entries matching the search criteria, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 just the ones associated with the current species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Returntype : Bio::EnsEMBL::DBSQL::DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 Exceptions : thrown if arguments are incorrect
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 Caller : general, domainview
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 sub fetch_all_by_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 my ( $self, $name, $dbname ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my $sql = (<<SQL);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 SELECT xref.xref_id, xref.dbprimary_acc, xref.display_label, xref.version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 exDB.priority, exDB.db_name, exDB.db_display_name, exDB.db_release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 es.synonym, xref.info_type, xref.info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 exDB.type, exDB.secondary_db_name, exDB.secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 xref.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 FROM (xref, external_db exDB)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 LEFT JOIN external_synonym es ON
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 es.xref_id = xref.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 WHERE (xref.dbprimary_acc = ? or xref.display_label = ?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 AND xref.external_db_id = exDB.external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 SQL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 if(defined $dbname){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $sql .= " AND exDB.db_name = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 $sth->bind_param( 1, $name, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 $sth->bind_param( 2, $name, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 if(defined $dbname){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 $sth->bind_param( 3 , $dbname, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 if ( !$sth->rows() && lc($dbname) eq 'interpro' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 # This is a minor hack that means that results still come back even
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 # when a mistake was made and no interpro accessions were loaded into
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 # the xref table. This has happened in the past and had the result of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 # breaking domainview
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 "SELECT NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 i.interpro_ac,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 i.id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 'Interpro',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 NULL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 FROM interpro i
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 WHERE i.interpro_ac = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 $sth->bind_param( 1, $name, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 my %exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 my @exDBlist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 my $max_rows = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 while ( my $rowcache = $sth->fetchall_arrayref( undef, $max_rows ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 while ( my $arrayref = shift( @{$rowcache} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 my ( $dbID, $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 $displayid, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 $dbname, $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 $release, $synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $info_type, $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 $type, $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 $secondary_db_table, $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 ) = @$arrayref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 if ( !defined $exDB{$dbID} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 my $entrie =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 Bio::EnsEMBL::DBEntry->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 -adaptor => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 -dbID => $dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 -primary_id => $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 -display_id => $displayid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 -version => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 -release => $release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 -dbname => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 -priority => $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 -db_display_name => $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 -info_type => $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 -info_text => $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 -type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 -secondary_db_name => $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 -secondary_db_table => $secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 -description => $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 $exDB{$dbID} = $entrie;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 push @exDBlist, $entrie;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 if ($synonym) { $exDB{$dbID}->add_synonym($synonym) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 } ## end while ( my $arrayref = shift...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 } ## end while ( my $rowcache = $sth...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 return \@exDBlist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 } ## end sub fetch_all_by_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 =head2 fetch_by_db_accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 Arg [1] : string $dbname - The name of the database which the provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 accession is for.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 Arg [2] : string $accession - The accesion of the external reference to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 retrieve.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 Example : my $xref = $dbea->fetch_by_db_accession('Interpro','IPR003439');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 print $xref->description(), "\n" if($xref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 Description: Retrieves a DBEntry (xref) via the name of the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 it is from and its primary accession in that database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 Undef is returned if the xref cannot be found in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 NOTE: In a multi-species database, this method will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 return all the entries matching the search criteria, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 just the ones associated with the current species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 Returntype : Bio::EnsEMBL::DBSQL::DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 Exceptions : thrown if arguments are incorrect
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 Caller : general, domainview
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 sub fetch_by_db_accession {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 my ( $self, $dbname, $accession ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 my $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 "SELECT xref.xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 xref.dbprimary_acc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 xref.display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 xref.version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 exDB.priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 exDB.db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 exDB.db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 exDB.db_release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 es.synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 xref.info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 xref.info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 exDB.type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 exDB.secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 exDB.secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 xref.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 FROM (xref, external_db exDB)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 LEFT JOIN external_synonym es ON
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 es.xref_id = xref.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 WHERE xref.dbprimary_acc = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 AND exDB.db_name = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 AND xref.external_db_id = exDB.external_db_id" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $sth->bind_param( 1, $accession, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 $sth->bind_param( 2, $dbname, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 if ( !$sth->rows() && lc($dbname) eq 'interpro' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 # This is a minor hack that means that results still come back even
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 # when a mistake was made and no interpro accessions were loaded into
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 # the xref table. This has happened in the past and had the result of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 # breaking domainview
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 "SELECT NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 i.interpro_ac,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 i.id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 'Interpro',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 NULL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 FROM interpro i
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 WHERE i.interpro_ac = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 $sth->bind_param( 1, $accession, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 my $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 my $max_rows = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 while ( my $rowcache = $sth->fetchall_arrayref( undef, $max_rows ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 while ( my $arrayref = shift( @{$rowcache} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 my ( $dbID, $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 $displayid, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 $dbname, $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 $release, $synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 $info_type, $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 $type, $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 $secondary_db_table, $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 ) = @$arrayref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 if ( !defined($exDB) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 $exDB =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 Bio::EnsEMBL::DBEntry->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 -adaptor => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 -dbID => $dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 -primary_id => $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 -display_id => $displayid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 -version => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 -release => $release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 -dbname => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 -priority => $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 -db_display_name => $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 -info_type => $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 -info_text => $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 -type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 -secondary_db_name => $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 -secondary_db_table => $secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 -description => $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609
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 if ($synonym) { $exDB->add_synonym($synonym) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 } ## end while ( my $arrayref = shift...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 } ## end while ( my $rowcache = $sth...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 return $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 } ## end sub fetch_by_db_accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 Arg [1] : Bio::EnsEMBL::DBEntry $dbEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 The DBEntry (xref) to be stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 Arg [2] : Int $ensID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 The dbID of an EnsEMBL object to associate with this external
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 database entry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 Arg [3] : string $ensType ('Transcript', 'Translation', 'Gene')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 The type of EnsEMBL object that this external database entry is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 being associated with.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Arg [4] : boolean $ignore_release
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 If unset or zero, will require that the release string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 of the DBEntry object is identical to the release of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 external database. If set and non-zero, will ignore the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 release information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 Example : $dbea->store($db_entry, $transcript_id, 'Transcript');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Description: Stores a reference to an external database (if it is not stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 already) and associates an EnsEMBL object of a specified type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 with the external identifier.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 Returntype : int - the dbID of the newly created external refernce
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 Exceptions : thrown when invalid dbID is passed to this method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 Caller : scripts which load Xrefs and ObjectXrefs, etc. into Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 my ( $self, $dbEntry, $ensID, $ensType, $ignore_release ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 my $dbJustInserted;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 # backwards compatibility check:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 # check if $ensID is an object; if so, use $obj->dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 my $ensembl_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 if ( defined($ensID) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 if ( $ensID =~ /^\d+$/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 $ensembl_id = $ensID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 } elsif ( ref($ensID) eq 'Bio::EnsEMBL::Gene'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 or ref($ensID) eq 'Bio::EnsEMBL::Transcript'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 or ref($ensID) eq 'Bio::EnsEMBL::Translation'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 or ref($ensID) eq 'Bio::EnsEMBL::OperonTranscript'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 or ref($ensID) eq 'Bio::EnsEMBL::Operon'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 warning( "You should pass DBEntryAdaptor->store() "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 . "a dbID rather than an ensembl object "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 . "to store the xref on" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 if ( defined( $ensID->dbID() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 $ensembl_id = $ensID->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 throw( sprintf( "%s %s doesn't have a dbID, can't store xref",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 $ensType, $ensID->display_id() ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 throw("Invalid dbID passed to DBEntryAdaptor->store()");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 # Ensure external_db contains a record of the intended xref source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 my $dbRef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 $dbRef = $self->_check_external_db($dbEntry,$ignore_release);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 # Attempt to insert DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 my $xref_id = $self->_store_or_fetch_xref($dbEntry,$dbRef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 $dbEntry->dbID($xref_id); #keeps DBEntry in sync with database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 ### Attempt to create an object->xref mapping
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 if ($ensembl_id) {$self->_store_object_xref_mapping($ensembl_id,$dbEntry,$ensType)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 return $xref_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 sub _store_object_xref_mapping {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 my $ensembl_id = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 my $dbEntry = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 my $ensembl_type = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 if (not defined ($ensembl_type)) { warning("No Ensembl data type provided for new xref");}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 my $analysis_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 if ( $dbEntry->analysis() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 $analysis_id = $self->db()->get_AnalysisAdaptor->store( $dbEntry->analysis() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 $analysis_id = 0; ## This used to be undef, but uniqueness in mysql requires a value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 my $sth = $self->prepare(qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 INSERT IGNORE INTO object_xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 SET xref_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 ensembl_object_type = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 ensembl_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 linkage_annotation = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 analysis_id = ? )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 $sth->bind_param( 1, $dbEntry->dbID(), SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 $sth->bind_param( 2, $ensembl_type, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 $sth->bind_param( 3, $ensembl_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 $sth->bind_param( 4, $dbEntry->linkage_annotation(),SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 $sth->bind_param( 5, $analysis_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 my $object_xref_id = $self->last_insert_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 $dbEntry->adaptor($self); # hand Adaptor to dbEntry for future use with OntologyXrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 if ($object_xref_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 #no existing object_xref, therefore
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 if ( $dbEntry->isa('Bio::EnsEMBL::IdentityXref') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 $sth = $self->prepare( "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 INSERT ignore INTO identity_xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 SET object_xref_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 xref_identity = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 ensembl_identity = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 xref_start = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 xref_end = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 ensembl_start = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 ensembl_end = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 cigar_line = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 score = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 evalue = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 $sth->bind_param( 1, $object_xref_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 $sth->bind_param( 2, $dbEntry->xref_identity, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 $sth->bind_param( 3, $dbEntry->ensembl_identity, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 $sth->bind_param( 4, $dbEntry->xref_start, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 $sth->bind_param( 5, $dbEntry->xref_end, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 $sth->bind_param( 6, $dbEntry->ensembl_start, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 $sth->bind_param( 7, $dbEntry->ensembl_end, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 $sth->bind_param( 8, $dbEntry->cigar_line, SQL_LONGVARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 $sth->bind_param( 9, $dbEntry->score, SQL_DOUBLE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 $sth->bind_param( 10, $dbEntry->evalue, SQL_DOUBLE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 } elsif ( $dbEntry->isa('Bio::EnsEMBL::OntologyXref') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 $sth = $self->prepare( "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 INSERT ignore INTO ontology_xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 SET object_xref_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 source_xref_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 linkage_type = ? " );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 foreach my $info ( @{ $dbEntry->get_all_linkage_info() } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 my ( $linkage_type, $sourceXref ) = @{$info};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 my $sourceXid = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 if ($sourceXref) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 $sourceXref->is_stored( $self->dbc ) || $self->store($sourceXref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 $sourceXid = $sourceXref->dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 $sth->bind_param( 1, $object_xref_id, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 $sth->bind_param( 2, $sourceXid, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 $sth->bind_param( 3, $linkage_type, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 } #end foreach
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 } #end elsif
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 } # end if ($object_xref_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 return $object_xref_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 =head2 _check_external_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 Arg [1] : DBEntry object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 Arg [2] : Ignore version flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 Description: Looks for a record of the given external database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 Exceptions : Throws on missing external database entry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 Returntype : Int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 sub _check_external_db {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 my ($self,$db_entry,$ignore) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 my ($sql,@bound_params,$sql_helper,$db_name,$db_release);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 $db_name = $db_entry->dbname();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 $db_release = $db_entry->release();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 $sql_helper = $self->dbc->sql_helper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 $sql = 'SELECT external_db_id FROM external_db WHERE db_name = ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 push @bound_params,$db_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 unless ($ignore) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 if ($db_release) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 $sql .= ' AND db_release = ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 push @bound_params,$db_release;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 $sql .= ' AND db_release is NULL';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 my ($db_id) = @{ $sql_helper->execute_simple(-SQL => $sql, -PARAMS => \@bound_params) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 if ($db_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 return $db_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 throw( sprintf( "external_db [%s] release [%s] does not exist",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 $db_name, $db_release)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 =head2 _store_or_fetch_xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 Arg [1] : DBEntry object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 Arg [2] : Database accession for external database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 Description: Thread-safe method for adding xrefs, or otherwise returning
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 an xref ID for the inserted or retrieved xref. Also inserts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 synonyms for that xref when entire new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 Returns : Int - the DB ID of the xref after insertion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 sub _store_or_fetch_xref {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 my $dbEntry = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 my $dbRef = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 my $xref_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 my $sth = $self->prepare( "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 INSERT IGNORE INTO xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 SET dbprimary_acc = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 display_label = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 version = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 description = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 external_db_id = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 info_type = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 info_text = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 $sth->bind_param(1, $dbEntry->primary_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 $sth->bind_param(2, $dbEntry->display_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 $sth->bind_param(3, ($dbEntry->version || q{0}),SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 $sth->bind_param(4, $dbEntry->description,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 $sth->bind_param(5, $dbRef,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 $sth->bind_param(6, ($dbEntry->info_type || 'NONE'), SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 $sth->bind_param(7, ($dbEntry->info_text || ''), SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 $xref_id = $self->last_insert_id('xref_id',undef,'xref');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 if ($xref_id) { #insert was successful, store supplementary synonyms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 # thread safety no longer an issue.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 my $synonym_check_sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 "SELECT xref_id, synonym
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 FROM external_synonym
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 WHERE xref_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 AND synonym = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 my $synonym_store_sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 "INSERT ignore INTO external_synonym
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 SET xref_id = ?, synonym = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 my $synonyms = $dbEntry->get_all_synonyms();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 foreach my $syn ( @$synonyms ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 $synonym_check_sth->bind_param(1,$xref_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 $synonym_check_sth->bind_param(2,$syn,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 $synonym_check_sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 my ($dbSyn) = $synonym_check_sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 $synonym_store_sth->bind_param(1,$xref_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 $synonym_store_sth->bind_param(2,$syn,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 $synonym_store_sth->execute() if(!$dbSyn);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 $synonym_check_sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 $synonym_store_sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 } else { # xref_id already exists, retrieve it according to fields in the unique key
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 my $sql = 'SELECT xref_id FROM xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 WHERE dbprimary_acc = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 AND version =?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 AND external_db_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 AND info_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 AND info_text = ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 my $info_type = $dbEntry->info_type() || 'NONE';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 my $info_text = $dbEntry->info_text() || q{};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 my $version = $dbEntry->version() || q{0};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 $sth = $self->prepare( $sql );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 $sth->bind_param(1, $dbEntry->primary_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 $sth->bind_param(2, $version, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 $sth->bind_param(3, $dbRef, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 $sth->bind_param(4, $info_type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 $sth->bind_param(5, $info_text, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 ($xref_id) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 if(!$xref_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 my $msg = 'Cannot find an xref id for %s (version=%d) with external db id %d.';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 throw(sprintf($msg, $dbEntry->primary_id(), $version, $dbRef))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 return $xref_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 =head2 exists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 Arg [1] : Bio::EnsEMBL::DBEntry $dbe
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 Example : if($dbID = $db_entry_adaptor->exists($dbe)) { do stuff; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 Description: Returns the db id of this DBEntry if it exists in this database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 otherwise returns undef. Exists is defined as an entry with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 the same external_db and display_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 Exceptions : thrown on incorrect args
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 Caller : GeneAdaptor::store, TranscriptAdaptor::store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 sub exists {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 my ($self, $dbe) = @_ ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 unless($dbe && ref $dbe && $dbe->isa('Bio::EnsEMBL::DBEntry')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 throw("arg must be a Bio::EnsEMBL::DBEntry not [$dbe]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 my $sth = $self->prepare('SELECT x.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 FROM xref x, external_db xdb
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 WHERE x.external_db_id = xdb.external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 AND x.display_label = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 AND xdb.db_name = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 AND x.dbprimary_acc = ?');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 $sth->bind_param(1,$dbe->display_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 $sth->bind_param(2,$dbe->dbname,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 $sth->bind_param(3,$dbe->primary_id,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 my ($dbID) = $sth->fetchrow_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 return $dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956 =head2 fetch_all_by_Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 Arg [1] : Bio::EnsEMBL::Gene $gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 (The gene to retrieve DBEntries for)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 Arg [2] : optional external database name. SQL wildcards are accepted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 Arg [3] : optional external_db type. SQL wildcards are accepted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 Example : @db_entries = @{$db_entry_adaptor->fetch_all_by_Gene($gene)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 Description: This returns a list of DBEntries associated with this gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 Note that this method was changed in release 15. Previously
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 it set the DBLinks attribute of the gene passed in to contain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 all of the gene, transcript, and translation xrefs associated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 with this gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 Returntype : listref of Bio::EnsEMBL::DBEntries; may be of type IdentityXref if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 there is mapping data, or OntologyXref if there is linkage data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 Exceptions : thows if gene object not passed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 Caller : Bio::EnsEMBL::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 sub fetch_all_by_Gene {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 my ( $self, $gene, $ex_db_reg, $exdb_type ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 if(!ref($gene) || !$gene->isa('Bio::EnsEMBL::Gene')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 throw("Bio::EnsEMBL::Gene argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 return $self->_fetch_by_object_type($gene->dbID(), 'Gene', $ex_db_reg, $exdb_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 =head2 fetch_all_by_Operon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 Arg [1] : Bio::EnsEMBL::Operon $operon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 (The operon to retrieve DBEntries for)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 Arg [2] : optional external database name. SQL wildcards are accepted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 Arg [3] : optional external_db type. SQL wildcards are accepted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 Example : @db_entries = @{$db_entry_adaptor->fetch_all_by_Operon($operon)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 Description: This returns a list of DBEntries associated with this operon.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 Returntype : listref of Bio::EnsEMBL::DBEntries; may be of type IdentityXref if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 there is mapping data, or OntologyXref if there is linkage data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 Exceptions : thows if operon object not passed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 sub fetch_all_by_Operon {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 my ( $self, $gene, $ex_db_reg, $exdb_type ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 if(!ref($gene) || !$gene->isa('Bio::EnsEMBL::Operon')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 throw("Bio::EnsEMBL::Operon argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 return $self->_fetch_by_object_type($gene->dbID(), 'Operon', $ex_db_reg, $exdb_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 =head2 fetch_all_by_Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 Arg [1] : Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 Arg [2] : optional external database name. SQL wildcards are accepted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 Arg [3] : optional external_db type. SQL wildcards are accepted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 Example : @db_entries = @{$db_entry_adaptor->fetch_all_by_Transcript($trans)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018 Description: This returns a list of DBEntries associated with this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 transcript. Note that this method was changed in release 15.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 Previously it set the DBLinks attribute of the gene passed in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 to contain all of the gene, transcript, and translation xrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 associated with this gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 Returntype : listref of Bio::EnsEMBL::DBEntries; may be of type IdentityXref if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 there is mapping data, or OntologyXref if there is linkage data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 Exceptions : throes if transcript argument not passed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026 Caller : Bio::EnsEMBL::Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 sub fetch_all_by_Transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 my ( $self, $trans, $ex_db_reg, $exdb_type ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 if(!ref($trans) || !$trans->isa('Bio::EnsEMBL::Transcript')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 throw("Bio::EnsEMBL::Transcript argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 return $self->_fetch_by_object_type( $trans->dbID(), 'Transcript', $ex_db_reg, $exdb_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042 =head2 fetch_all_by_Translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 Arg [1] : Bio::EnsEMBL::Translation $trans
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 (The translation to fetch database entries for)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 Arg [2] : optional external database name. SQL wildcards are accepted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 Arg [3] : optional externaldb type. SQL wildcards are accepted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 Example : @db_entries = @{$db_entry_adptr->fetch_all_by_Translation($trans)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049 Description: Retrieves external database entries for an EnsEMBL translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 Returntype : listref of Bio::EnsEMBL::DBEntries; may be of type IdentityXref if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 there is mapping data, or OntologyXref if there is linkage data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 Exceptions : throws if translation object not passed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 sub fetch_all_by_Translation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 my ( $self, $trans, $ex_db_reg, $exdb_type ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 if(!ref($trans) || !$trans->isa('Bio::EnsEMBL::Translation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062 throw('Bio::EnsEMBL::Translation argument expected.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 if( ! $trans->dbID ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 warning( "Cannot fetch_all_by_Translation without a dbID" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 return [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 return $self->_fetch_by_object_type( $trans->dbID(), 'Translation', $ex_db_reg, $exdb_type );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 =head2 remove_from_object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 Arg [1] : Bio::EnsEMBL::DBEntry $dbe - The external reference which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 is to be disassociated from an ensembl object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 Arg [2] : Bio::EnsEMBL::Storable $object - The ensembl object the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079 external reference is to be disassociated from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 Arg [3] : string $object_type - The type of the ensembl object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081 E.g. 'Gene', 'Transcript', 'Translation'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 # remove all dbentries from this translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 foreach my $dbe (@{$translation->get_all_DBEntries()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085 $dbe_adaptor->remove($dbe, $translation, 'Translation');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087 Description: Removes an association between an ensembl object and a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 DBEntry (xref). This does not remove the actual xref from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 the database, only its linkage to the ensembl object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 Exceptions : Throw on incorrect arguments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 Warning if object or dbentry is not stored in this database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 Caller : TranscriptAdaptor::remove, GeneAdaptor::remove,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 TranslationAdaptor::remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 sub remove_from_object {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 my $dbe = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 my $object = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103 my $object_type = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105 if(!ref($dbe) || !$dbe->isa('Bio::EnsEMBL::DBEntry')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 throw("Bio::EnsEMBL::DBEntry argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 if(!ref($object) || !$dbe->isa('Bio::EnsEMBL::Storable')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 throw("Bio::EnsEMBL::Storable argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113 if(!$object_type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 throw("object_type string argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 # make sure both the dbentry and the object it is allegedly linked to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 # are stored in this database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 if(!$object->is_stored($self->db())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121 warning("Cannot remove DBEntries for $object_type " . $object->dbID() .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 ". Object is not stored in this database.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 if(!$dbe->is_stored($self->db())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127 warning("Cannot remove DBEntry ".$dbe->dbID() . ". Is not stored " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 "in this database.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 # obtain the identifier of the link from the object_xref table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133 #No need to compare linkage_annotation here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 my $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 ("SELECT ox.object_xref_id " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136 "FROM object_xref ox ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 "WHERE ox.xref_id = ? " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 "AND ox.ensembl_id = ? " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 "AND ox.ensembl_object_type = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140 $sth->bind_param(1,$dbe->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 $sth->bind_param(2,$object->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 $sth->bind_param(3,$object_type,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145 if(!$sth->rows() == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150 my ($ox_id) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153 # delete from the tables which contain additional linkage information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 $sth = $self->prepare("DELETE FROM ontology_xref WHERE object_xref_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156 $sth->bind_param(1,$ox_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160 $sth = $self->prepare("DELETE FROM identity_xref WHERE object_xref_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161 $sth->bind_param(1,$ox_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165 # delete the actual linkage itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166 $sth = $self->prepare("DELETE FROM object_xref WHERE object_xref_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167 $sth->bind_param(1,$ox_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175 =head2 _fetch_by_object_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177 Arg [1] : string $ensID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178 Arg [2] : string $ensType (object type to be returned)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179 Arg [3] : optional $exdbname (external database name)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180 (may be an SQL pattern containing '%' which matches any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181 number of characters)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182 Arg [4] : optional $exdb_type (external database type)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 (may be an SQL pattern containing '%' which matches any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184 number of characters)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 Example : $self->_fetch_by_object_type( $translation_id, 'Translation' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186 Description: Fetches DBEntry by Object type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187 NOTE: In a multi-species database, this method will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188 return all the entries matching the search criteria, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189 just the ones associated with the current species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1192 Returntype : arrayref of DBEntry objects; may be of type IdentityXref if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1193 there is mapping data, or OntologyXref if there is linkage data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1194 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1195 Caller : fetch_all_by_Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1196 fetch_all_by_Translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1197 fetch_all_by_Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1198 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1200 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1202 sub _fetch_by_object_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1203 my ( $self, $ensID, $ensType, $exdbname, $exdb_type ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1205 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1207 if ( !defined($ensID) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1208 throw("Can't fetch_by_EnsObject_type without an object");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1209 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1211 if ( !defined($ensType) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1212 throw("Can't fetch_by_EnsObject_type without a type");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1213 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1215 # my $sth = $self->prepare("
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1216 my $sql = (<<SSQL);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1217 SELECT xref.xref_id, xref.dbprimary_acc, xref.display_label, xref.version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1218 exDB.priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1219 exDB.db_name, exDB.db_release, exDB.status, exDB.db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1220 exDB.secondary_db_name, exDB.secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1221 oxr.object_xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1222 es.synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1223 idt.xref_identity, idt.ensembl_identity, idt.xref_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1224 idt.xref_end, idt.ensembl_start, idt.ensembl_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1225 idt.cigar_line, idt.score, idt.evalue, oxr.analysis_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1226 gx.linkage_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1227 xref.info_type, xref.info_text, exDB.type, gx.source_xref_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1228 oxr.linkage_annotation, xref.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1229 FROM (xref xref, external_db exDB, object_xref oxr)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1230 LEFT JOIN external_synonym es on es.xref_id = xref.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1231 LEFT JOIN identity_xref idt on idt.object_xref_id = oxr.object_xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1232 LEFT JOIN ontology_xref gx on gx.object_xref_id = oxr.object_xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1233 WHERE xref.xref_id = oxr.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1234 AND xref.external_db_id = exDB.external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1235 AND oxr.ensembl_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1236 AND oxr.ensembl_object_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1237 SSQL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1239 if ( defined($exdbname) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1240 if ( index( $exdbname, '%' ) != -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1241 $sql .= " AND exDB.db_name LIKE "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1242 . $self->dbc()->db_handle()->quote( $exdbname, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1243 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1244 $sql .= " AND exDB.db_name = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1245 . $self->dbc()->db_handle()->quote( $exdbname, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1246 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1247 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1249 if ( defined($exdb_type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1250 if ( index( $exdb_type, '%' ) != -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1251 $sql .= " AND exDB.type LIKE "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1252 . $self->dbc()->db_handle()->quote( $exdb_type, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1253 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1254 $sql .= " AND exDB.type = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1255 . $self->dbc()->db_handle()->quote( $exdb_type, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1256 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1259 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1261 $sth->bind_param( 1, $ensID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1262 $sth->bind_param( 2, $ensType, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1263 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1265 my ( %seen, %linkage_types, %synonyms );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1267 my $max_rows = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1269 while ( my $rowcache = $sth->fetchall_arrayref( undef, $max_rows ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1270 while ( my $arrRef = shift( @{$rowcache} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1271 my ( $refID, $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1272 $displayid, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1273 $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1274 $dbname, $release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1275 $exDB_status, $exDB_db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1276 $exDB_secondary_db_name, $exDB_secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1277 $objid, $synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1278 $xrefid, $ensemblid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1279 $xref_start, $xref_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1280 $ensembl_start, $ensembl_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1281 $cigar_line, $score,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1282 $evalue, $analysis_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1283 $linkage_type, $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1284 $info_text, $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1285 $source_xref_id, $link_annotation,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1286 $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1287 ) = @$arrRef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1289 my $linkage_key =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1290 ( $linkage_type || '' ) . ( $source_xref_id || '' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1293 my $analysis = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1294 if ( defined($analysis_id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1295 $analysis =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1296 $self->db()->get_AnalysisAdaptor()->fetch_by_dbID($analysis_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1299 my %obj_hash = ( 'adaptor' => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1300 'dbID' => $refID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1301 'primary_id' => $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1302 'display_id' => $displayid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1303 'version' => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1304 'release' => $release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1305 'info_type' => $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1306 'info_text' => $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1307 'type' => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1308 'secondary_db_name' => $exDB_secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1309 'secondary_db_table' => $exDB_secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1310 'dbname' => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1311 'description' => $description,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1312 'linkage_annotation' => $link_annotation,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1313 'analysis' => $analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1314 'ensembl_object_type' => $ensType,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1315 'ensembl_id' => $ensID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1317 # Using an outer join on the synonyms as well as on identity_xref,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1318 # we now have to filter out the duplicates (see v.1.18 for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1319 # original). Since there is at most one identity_xref row per
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1320 # xref, this is easy enough; all the 'extra' bits are synonyms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1321 my $source_xref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1322 if ( !$seen{$refID} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1324 my $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1325 if ( ( defined($xrefid) ) ) { # an xref with similarity scores
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1326 $exDB = Bio::EnsEMBL::IdentityXref->new_fast( \%obj_hash );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1327 $exDB->xref_identity($xrefid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1328 $exDB->ensembl_identity($ensemblid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1330 $exDB->cigar_line($cigar_line);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1331 $exDB->xref_start($xref_start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1332 $exDB->xref_end($xref_end); # was not here before 14th Jan 2009 ????
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1333 $exDB->ensembl_start($ensembl_start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1334 $exDB->ensembl_end($ensembl_end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1335 $exDB->score($score);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1336 $exDB->evalue($evalue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1338 } elsif ( defined $linkage_type && $linkage_type ne "" ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1339 $exDB = Bio::EnsEMBL::OntologyXref->new_fast( \%obj_hash );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1340 $source_xref = ( defined($source_xref_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1341 ? $self->fetch_by_dbID($source_xref_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1342 : undef );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1343 $exDB->add_linkage_type( $linkage_type, $source_xref || () );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1344 $linkage_types{$refID}->{$linkage_key} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1346 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1347 $exDB = Bio::EnsEMBL::DBEntry->new_fast( \%obj_hash );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1348 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1350 if ( defined($exDB_status) ) { $exDB->status($exDB_status) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1352 $exDB->priority($priority);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1353 $exDB->db_display_name($exDB_db_display_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1355 push( @out, $exDB );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1356 $seen{$refID} = $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1358 } ## end if ( !$seen{$refID} )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1360 # $exDB still points to the same xref, so we can keep adding GO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1361 # evidence tags or synonyms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1363 if ( defined($synonym) && !$synonyms{$refID}->{$synonym} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1364 if ( defined($synonym) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1365 $seen{$refID}->add_synonym($synonym);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1366 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1367 $synonyms{$refID}->{$synonym} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1368 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1370 if ( defined($linkage_type)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1371 && $linkage_type ne ""
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1372 && !$linkage_types{$refID}->{$linkage_key} )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1373 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1374 $source_xref = ( defined($source_xref_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1375 ? $self->fetch_by_dbID($source_xref_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1376 : undef );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1377 $seen{$refID}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1378 ->add_linkage_type( $linkage_type, $source_xref || () );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1379 $linkage_types{$refID}->{$linkage_key} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1380 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1381 } ## end while ( my $arrRef = shift...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1382 } ## end while ( my $rowcache = $sth...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1384 return \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1385 } ## end sub _fetch_by_object_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1387 =head2 list_gene_ids_by_external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1389 Arg [1] : string $external_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1390 Example : @gene_ids = $dbea->list_gene_ids_by_external_db_id(1020);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1391 Description: Retrieve a list of geneid by an external identifier that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1392 is linked to any of the genes transcripts, translations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1393 or the gene itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1394 NOTE: If more than one external identifier has the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1395 same primary accession then genes for each of these is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1396 returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1397 NOTE: In a multi-species database, this method will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1398 return all the entries matching the search criteria, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1399 just the ones associated with the current species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1400 Returntype : list of ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1401 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1402 Caller : unknown
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1403 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1405 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1407 sub list_gene_ids_by_external_db_id{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1408 my ($self,$external_db_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1410 my %T = map { ($_, 1) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1411 $self->_type_by_external_db_id( $external_db_id, 'Translation', 'gene' ),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1412 $self->_type_by_external_db_id( $external_db_id, 'Transcript', 'gene' ),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1413 $self->_type_by_external_db_id( $external_db_id, 'Gene' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1414 return keys %T;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1415 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1417 =head2 list_gene_ids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1419 Arg [1] : string $external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1420 Arg [2] : (optional) string $external_db_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1421 Arg [3] : Boolean override, see _type_by_external_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1422 Example : @gene_ids = $dbea->list_gene_ids_by_extids('CDPX');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1423 Description: Retrieve a list of geneid by an external identifier that is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1424 linked to any of the genes transcripts, translations or the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1425 gene itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1426 Returntype : list of ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1427 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1428 Caller : unknown
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1429 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1431 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1433 sub list_gene_ids_by_extids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1434 my ( $self, $external_name, $external_db_name, $override ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1436 my %T = map { ( $_, 1 ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1437 $self->_type_by_external_id( $external_name, 'Translation', 'gene',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1438 $external_db_name, $override ),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1439 $self->_type_by_external_id( $external_name, 'Transcript', 'gene',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1440 $external_db_name, $override ),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1441 $self->_type_by_external_id( $external_name, 'Gene', undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1442 $external_db_name, $override );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1444 return keys %T;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1445 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1446
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1448 =head2 list_transcript_ids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1450 Arg [1] : string $external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1451 Arg [2] : (optional) string $external_db_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1452 Arg [3] : Boolean override, see _type_by_external_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1453 Example : @tr_ids = $dbea->list_transcript_ids_by_extids('BCRA2');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1454 Description: Retrieve a list transcript ids by an external identifier that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1455 is linked to any of the genes transcripts, translations or the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1456 gene itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1457 Returntype : list of ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1458 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1459 Caller : unknown
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1460 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1462 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1464 sub list_transcript_ids_by_extids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1465 my ( $self, $external_name, $external_db_name, $override ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1467 my %T = map { ( $_, 1 ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1468 $self->_type_by_external_id( $external_name, 'Translation',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1469 'transcript', $external_db_name, $override
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1470 ),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1471 $self->_type_by_external_id( $external_name, 'Transcript', undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1472 $external_db_name, $override );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1474 return keys %T;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1475 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1478 =head2 list_translation_ids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1480 Arg [1] : string $external_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1481 Arg [2] : (optional) string $external_db_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1482 Arg [3] : Boolean override, see _type_by_external_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1483 Example : @tr_ids = $dbea->list_translation_ids_by_extids('GO:0004835');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1484 Description: Gets a list of translation IDs by external display IDs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1485 Returntype : list of Ints
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1486 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1487 Caller : unknown
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1488 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1489
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1490 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1492 sub list_translation_ids_by_extids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1493 my ( $self, $external_name, $external_db_name, $override ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1495 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1496 $self->_type_by_external_id( $external_name, 'Translation', undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1497 $external_db_name, $override );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1498 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1500 =head2 _type_by_external_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1502 Arg [1] : string $name - dbprimary_acc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1503 Arg [2] : string $ensType - ensembl_object_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1504 Arg [3] : (optional) string $extraType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1505 Arg [4] : (optional) string $external_db_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1506 other object type to be returned
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1507 Arg [5] : Boolean override to force _ to be treated as an SQL 'any'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1508 This is usually optimised out for query speed due to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1509 large numbers of names like NM_00...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1510 Example : $self->_type_by_external_id($name, 'Translation');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1511 NOTE: In a multi-species database, this method will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1512 return all the entries matching the search criteria, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1513 just the ones associated with the current species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1514 SQL wildcards can be used in the external id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1515 but overly generic queries (two characters) will be prevented.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1516 Description: Gets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1517 Returntype : list of dbIDs (gene_id, transcript_id, etc.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1518 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1519 Caller : list_translation_ids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1520 translationids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1521 geneids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1522 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1524 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1526 sub _type_by_external_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1527 my ( $self, $name, $ensType, $extraType, $external_db_name, $override ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1529 # $name has SQL wildcard support
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1530 # = or LIKE put into SQL statement, and open queries like % or A% are rejected.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1531 my $comparison_operator;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1532 if ($name =~ /[_%\[]/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1533 $comparison_operator = "LIKE";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1534 if ($name =~ /^.?%/ && !$override) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1535 warn "External $ensType name $name is too vague and will monopolise database resources. Please use a more specific $ensType name.\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1536 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1537 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1538 elsif ($name =~ /^\w\w_/ && !$override) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1539 # For entries such as NM_00000065, escape the _ so that SQL LIKE does not have to scan entire table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1540 # Escape only the _ in the third character position
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1541 $name =~ s/(?<=\w\w)(?=_)/\\/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1542 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1543 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1544 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1545 $comparison_operator = "=";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1546 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1548
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1549 my $from_sql = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1550 my $where_sql = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1551 my $ID_sql = 'oxr.ensembl_id';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1553 if ( defined($extraType) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1554 if ( lc($extraType) eq 'translation' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1555 $ID_sql = 'tl.translation_id';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1556 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1557 $ID_sql = "t.${extraType}_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1558 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1560 if ( lc($ensType) eq 'translation' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1561 $from_sql = 'transcript t, translation tl, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1562 $where_sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1563 t.transcript_id = tl.transcript_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1564 tl.translation_id = oxr.ensembl_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1565 t.is_current = 1 AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1566 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1567 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1568 $from_sql = 'transcript t, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1569 $where_sql = 't.'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1570 . lc($ensType)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1571 . '_id = oxr.ensembl_id AND '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1572 . 't.is_current = 1 AND ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1573 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1574 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1576 my $multispecies = $self->db()->is_multispecies();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1578 if ( lc($ensType) eq 'gene' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1579 $from_sql = 'gene g, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1580 $from_sql .= 'seq_region s, coord_system cs, ' if $multispecies;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1582 $where_sql = 'g.gene_id = oxr.ensembl_id AND g.is_current = 1 AND ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1583 if($multispecies) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1584 $where_sql .= <<'SQL';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1585 g.seq_region_id = s.seq_region_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1586 s.coord_system_id = cs.coord_system_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1587 cs.species_id = ? AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1588 SQL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1589 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1590 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1591 elsif ( lc($ensType) eq 'transcript' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1592 $from_sql = 'transcript t, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1593 $from_sql .= 'seq_region s, coord_system cs, ' if $multispecies;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1595 $where_sql = 't.transcript_id = oxr.ensembl_id AND t.is_current = 1 AND ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1596 if($multispecies) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1597 $where_sql .= <<'SQL';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1598 t.seq_region_id = s.seq_region_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1599 s.coord_system_id = cs.coord_system_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1600 cs.species_id = ? AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1601 SQL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1602 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1603 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1604 elsif ( lc($ensType) eq 'translation' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1605 $from_sql = 'translation tl, transcript t, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1606 $from_sql .= 'seq_region s, coord_system cs, ' if $multispecies;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1607
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1608 $where_sql = 't.transcript_id = tl.transcript_id AND tl.translation_id = oxr.ensembl_id AND t.is_current = 1 AND ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1609 if($multispecies) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1610 $where_sql .= <<'SQL';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1611 t.seq_region_id = s.seq_region_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1612 s.coord_system_id = cs.coord_system_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1613 cs.species_id = ? AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1614 SQL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1615 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1616 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1618 if ( defined($external_db_name) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1619 # Involve the 'external_db' table to limit the hits to a particular
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1620 # external database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1621
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1622 $from_sql .= 'external_db xdb, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1623 $where_sql .=
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1624 'xdb.db_name LIKE '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1625 . $self->dbc()->db_handle()->quote( $external_db_name . '%' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1626 . ' AND xdb.external_db_id = x.external_db_id AND';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1627 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1628
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1629 my $query1 = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1630 SELECT $ID_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1631 FROM $from_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1632 xref x,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1633 object_xref oxr
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1634 WHERE $where_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1635 ( x.dbprimary_acc $comparison_operator ? OR x.display_label $comparison_operator ? )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1636 AND x.xref_id = oxr.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1637 AND oxr.ensembl_object_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1638 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1639
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1640 my $query2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1641
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1642 if ( defined($external_db_name) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1643 # If we are given the name of an external database, we need to join
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1644 # between the 'xref' and the 'object_xref' tables on 'xref_id'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1646 $query2 = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1647 SELECT $ID_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1648 FROM $from_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1649 external_synonym syn,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1650 object_xref oxr,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1651 xref x
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1652 WHERE $where_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1653 syn.synonym $comparison_operator ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1654 AND syn.xref_id = oxr.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1655 AND oxr.ensembl_object_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1656 AND x.xref_id = oxr.xref_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1658 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1659 # If we weren't given an external database name, we can get away
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1660 # with less joins here.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1661
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1662 $query2 = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1663 SELECT $ID_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1664 FROM $from_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1665 external_synonym syn,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1666 object_xref oxr
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1667 WHERE $where_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1668 syn.synonym $comparison_operator ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1669 AND syn.xref_id = oxr.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1670 AND oxr.ensembl_object_type = ?);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1672 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1673
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1674 my %result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1675
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1676 my $sth = $self->prepare($query1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1678 my $queryBind = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1679 $sth->bind_param( $queryBind++, $self->species_id(), SQL_INTEGER ) if $multispecies;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1680 $sth->bind_param( $queryBind++, $name, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1681 $sth->bind_param( $queryBind++, $name, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1682 $sth->bind_param( $queryBind++, $ensType, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1683 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1684 my $r;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1685 while ( $r = $sth->fetchrow_array() ) { $result{$r} = 1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1687 $sth = $self->prepare($query2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1688
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1689 $queryBind = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1690 $sth->bind_param( $queryBind++, $self->species_id(), SQL_INTEGER ) if $multispecies;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1691 $sth->bind_param( $queryBind++, $name, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1692 $sth->bind_param( $queryBind++, $ensType, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1693 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1695 while ( $r = $sth->fetchrow_array() ) { $result{$r} = 1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1696
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1697 return keys(%result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1698
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1699 } ## end sub _type_by_external_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1701 =head2 _type_by_external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1702
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1703 Arg [1] : integer $type - external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1704 Arg [2] : string $ensType - ensembl_object_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1705 Arg [3] : (optional) string $extraType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1706 other object type to be returned
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1707 Example : $self->_type_by_external_db_id(1030, 'Translation');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1708 Description: Gets.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1709 NOTE: In a multi-species database, this method will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1710 return all the entries matching the search criteria, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1711 just the ones associated with the current species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1712 Returntype : list of dbIDs (gene_id, transcript_id, etc.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1713 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1714 Caller : list_translation_ids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1715 translationids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1716 geneids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1717 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1719 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1721 sub _type_by_external_db_id{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1722 my ($self, $external_db_id, $ensType, $extraType) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1724 my $from_sql = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1725 my $where_sql = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1726 my $ID_sql = "oxr.ensembl_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1727
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1728 if (defined $extraType) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1729 if (lc($extraType) eq 'translation') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1730 $ID_sql = "tl.translation_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1731 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1732 $ID_sql = "t.${extraType}_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1733 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1734
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1735 if (lc($ensType) eq 'translation') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1736 $from_sql = 'transcript t, translation tl, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1737 $where_sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1738 t.transcript_id = tl.transcript_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1739 tl.translation_id = oxr.ensembl_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1740 t.is_current = 1 AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1741 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1742 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1743 $from_sql = 'transcript t, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1744 $where_sql = 't.'.lc($ensType).'_id = oxr.ensembl_id AND '.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1745 't.is_current = 1 AND ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1746 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1747 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1749 if (lc($ensType) eq 'gene') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1750 $from_sql = 'gene g, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1751 $where_sql = 'g.gene_id = oxr.ensembl_id AND g.is_current = 1 AND ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1752 } elsif (lc($ensType) eq 'transcript') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1753 $from_sql = 'transcript t, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1754 $where_sql = 't.transcript_id = oxr.ensembl_id AND t.is_current = 1 AND ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1755 } elsif (lc($ensType) eq 'translation') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1756 $from_sql = 'transcript t, translation tl, ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1757 $where_sql = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1758 t.transcript_id = tl.transcript_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1759 tl.translation_id = oxr.ensembl_id AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1760 t.is_current = 1 AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1761 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1762 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1763
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1764 my $query =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1765 "SELECT $ID_sql
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1766 FROM $from_sql xref x, object_xref oxr
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1767 WHERE $where_sql x.external_db_id = ? AND
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1768 x.xref_id = oxr.xref_id AND oxr.ensembl_object_type= ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1770 my %result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1772 my $sth = $self->prepare($query);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1773
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1774 $sth->bind_param( 1, "$external_db_id", SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1775 $sth->bind_param( 2, $ensType, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1776 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1777
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1778 while ( my $r = $sth->fetchrow_array() ) { $result{$r} = 1 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1779
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1780 return keys(%result);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1781 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1784 =head2 fetch_all_by_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1786 Arg [1] : string description to search for. Include % etc in this string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1787 Arg [2] : <optional> string $dbname. Name of the database to search
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1788
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1789 Example : @canc_refs = @{$db_entry_adaptor->fetch_all_by_description("%cancer%")};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1790 @db_entries = @{$db_entry_adaptor->fetch_all_by_description("%cancer%","MIM_MORBID")};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1791 Description: Retrieves DBEntries that match the description.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1792 Optionally you can search on external databases type.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1793 NOTE: In a multi-species database, this method will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1794 return all the entries matching the search criteria, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1795 just the ones associated with the current species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1796 Returntype : ref to array of Bio::EnsEMBL::DBSQL::DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1797 Exceptions : None.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1798 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1799 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1801 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1802
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1803 sub fetch_all_by_description {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1804 my ( $self, $description, $dbname ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1805
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1806 my @results = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1807
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1808 my $sql =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1809 "SELECT xref.xref_id, xref.dbprimary_acc, xref.display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1810 xref.version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1811 exDB.priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1812 exDB.db_name, exDB.db_display_name, exDB.db_release, es.synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1813 xref.info_type, xref.info_text, exDB.type, exDB.secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1814 exDB.secondary_db_table, xref.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1815 FROM (xref, external_db exDB)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1816 LEFT JOIN external_synonym es on es.xref_id = xref.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1817 WHERE xref.description like ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1818 AND xref.external_db_id = exDB.external_db_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1819
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1820 if ( defined($dbname) ) { $sql .= " AND exDB.db_name = ? " }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1822 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1823
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1824 $sth->bind_param( 1, $description, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1825
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1826 if ( defined($dbname) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1827 $sth->bind_param( 2, $dbname, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1828 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1829
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1830 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1832 my $max_rows = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1833
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1834 while ( my $rowcache = $sth->fetchall_arrayref( undef, $max_rows ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1835 while ( my $arrayref = shift( @{$rowcache} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1836 my ( $dbID, $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1837 $displayid, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1838 $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1839 $ex_dbname, $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1840 $release, $synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1841 $info_type, $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1842 $type, $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1843 $secondary_db_table, $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1844 ) = @$arrayref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1845
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1846 my $exDB =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1847 Bio::EnsEMBL::DBEntry->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1848 -adaptor => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1849 -dbID => $dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1850 -primary_id => $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1851 -display_id => $displayid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1852 -version => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1853 -release => $release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1854 -dbname => $ex_dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1855 -priority => $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1856 -db_display_name => $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1857 -info_type => $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1858 -info_text => $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1859 -type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1860 -secondary_db_name => $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1861 -secondary_db_table => $secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1862 -description => $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1863 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1864
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1865 if ($synonym) { $exDB->add_synonym($synonym) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1867 push @results, $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1868
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1869 } ## end while ( my $arrayref = shift...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1870 } ## end while ( my $rowcache = $sth...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1871
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1872 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1873
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1874 return \@results;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1875 } ## end sub fetch_all_by_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1877
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1878 =head2 fetch_all_by_source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1880 Arg [1] : string source to search for. Include % etc in this string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1881 if you want to use SQL patterns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1882
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1883 Example : @unigene_refs = @{$db_entry_adaptor->fetch_all_by_source("%unigene%")};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1884 Description: Retrieves DBEntrys that match the source name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1885 Returntype : ref to array of Bio::EnsEMBL::DBSQL::DBEntry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1886 Exceptions : None.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1887 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1888 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1890 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1892 sub fetch_all_by_source {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1893 my ( $self, $source ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1894
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1895 my @results = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1896
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1897 my $sql =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1898 "SELECT xref.xref_id, xref.dbprimary_acc, xref.display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1899 xref.version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1900 exDB.priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1901 exDB.db_name, exDB.db_display_name, exDB.db_release, es.synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1902 xref.info_type, xref.info_text, exDB.type, exDB.secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1903 exDB.secondary_db_table, xref.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1904 FROM (xref, external_db exDB)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1905 LEFT JOIN external_synonym es on es.xref_id = xref.xref_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1906 WHERE exDB.db_name like ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1907 AND xref.external_db_id = exDB.external_db_id";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1908
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1909
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1910 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1911
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1912 $sth->bind_param( 1, $source, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1913
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1914 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1916 my $max_rows = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1917
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1918 while ( my $rowcache = $sth->fetchall_arrayref( undef, $max_rows ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1919 while ( my $arrayref = shift( @{$rowcache} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1920 my ( $dbID, $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1921 $displayid, $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1922 $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1923 $dbname, $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1924 $release, $synonym,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1925 $info_type, $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1926 $type, $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1927 $secondary_db_table, $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1928 ) = @$arrayref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1929
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1930 my $exDB =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1931 Bio::EnsEMBL::DBEntry->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1932 -adaptor => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1933 -dbID => $dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1934 -primary_id => $dbprimaryId,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1935 -display_id => $displayid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1936 -version => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1937 -release => $release,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1938 -dbname => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1939 -priority => $priority,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1940 -db_display_name => $db_display_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1941 -info_type => $info_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1942 -info_text => $info_text,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1943 -type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1944 -secondary_db_name => $secondary_db_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1945 -secondary_db_table => $secondary_db_table,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1946 -description => $description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1947 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1948
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1949 if ($synonym) { $exDB->add_synonym($synonym) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1950
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1951 push @results, $exDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1952
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1953 } ## end while ( my $arrayref = shift...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1954 } ## end while ( my $rowcache = $sth...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1955
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1956 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1957
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1958 return \@results;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1959 } ## end sub fetch_all_by_source
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1960
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1961
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1962 =head2 fetch_all_synonyms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1963
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1964 Arg [1] : dbID of DBEntry to fetch synonyms for. Used in lazy loading of synonyms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1965
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1966 Example : @canc_refs = @{$db_entry_adaptor->fetch_all_synonyms(1234)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1967 Description: Fetches the synonyms for a particular DBEntry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1968 Returntype : listref of synonyms. List referred to may be empty if there are no synonyms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1969 Exceptions : None.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1970 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1971 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1972
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1973 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1974
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1975
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1976 sub fetch_all_synonyms {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1977 my ( $self, $dbID ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1978
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1979 my @synonyms = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1980
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1981 my $sth =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1982 $self->prepare( "SELECT synonym "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1983 . "FROM external_synonym "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1984 . "WHERE xref_id = ?" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1985
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1986 $sth->bind_param( 1, $dbID, SQL_INTEGER );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1987
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1988 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1989
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1990 my $synonym;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1991 $sth->bind_col(1, \$synonym);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1992
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1993 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1994 push( @synonyms, $synonym );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1995 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1996
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1997 return \@synonyms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1998 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1999
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2001 =head2 get_db_name_from_external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2002
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2003 Arg [1] : external_dbid of database to get the database_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2004 Example : my $db_name = $db_entry_adaptor->get_db_name_from_external_db_id(1100);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2005 Description: Gets the database name for a certain external_db_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2006 Returntype : scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2007 Exceptions : None.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2008 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2009 Status : At Risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2010
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2011 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2012
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2013 sub get_db_name_from_external_db_id{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2014 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2015 my $external_db_id = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2016
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2017 my $sth = $self->prepare("SELECT db_name FROM external_db WHERE external_db_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2018
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2019 $sth->bind_param(1, $external_db_id, SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2020 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2021 my ($db_name) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2022 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2023 return $db_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2024
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2025 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2027 =head2 geneids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2028
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2029 Description: DEPRECATED use list_gene_ids_by_extids instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2030
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2031 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2032
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2033 sub geneids_by_extids{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2034 my ($self,$name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2035 deprecate(" use 'list_gene_ids_by_extids instead");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2036 return $self->list_gene_ids_by_extids( $name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2037 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2038
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2039
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2040 =head2 translationids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2041
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2042 DEPRECATED use list_translation_ids_by_extids instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2043
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2044 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2045
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2046 sub translationids_by_extids{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2047 my ($self,$name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2048 deprecate("Use list_translation_ids_by_extids instead");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2049 return $self->list_translation_ids_by_extids( $name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2050 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2051
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2052
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2053 =head2 transcriptids_by_extids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2054
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2055 DEPRECATED use transcriptids_by_extids instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2056
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2057 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2058
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2059 sub transcriptids_by_extids{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2060 my ($self,$name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2061 deprecate("Use list_transcript_ids_by_extids instead.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2062 return $self->list_transcript_ids_by_extids( $name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2063 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2064
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2065
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2066 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2067