annotate variant_effect_predictor/Bio/EnsEMBL/External/BlastAdaptor.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 package Bio::EnsEMBL::External::BlastAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 use DBI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 use Storable qw(freeze thaw);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 use Data::Dumper qw( Dumper );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use Time::Local;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 use Bio::EnsEMBL::DBSQL::BaseAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 use Bio::EnsEMBL::DBSQL::DBConnection;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 use Bio::Search::HSP::EnsemblHSP; # This is a web module
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 @ISA = qw( Bio::EnsEMBL::DBSQL::BaseAdaptor );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 #@ISA = qw( Bio::EnsEMBL::DBSQL::DBAdaptor );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 # Define SQL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 #--- CREATE TABLES ---
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 our $SQL_CREATE_TICKET = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 CREATE TABLE blast_ticket (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 ticket_id int(10) unsigned NOT NULL auto_increment,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 create_time datetime NOT NULL default '0000-00-00 00:00:00',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 update_time datetime NOT NULL default '0000-00-00 00:00:00',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 ticket varchar(32) NOT NULL default '',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 status enum('CURRENT','DELETED') NOT NULL default 'CURRENT',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 object longblob,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 PRIMARY KEY (ticket_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 UNIQUE KEY ticket (ticket),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 KEY create_time (create_time),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 KEY update_time (update_time)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 ) ENGINE=MyISAM";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 our $SQL_CREATE_TABLE_LOG = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 CREATE TABLE blast_table_log (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 table_id int(10) unsigned NOT NULL auto_increment,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 table_name varchar(32),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 table_type enum('TICKET','RESULT','HIT','HSP') default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 table_status enum('CURRENT','FILLED','DELETED') default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 use_date date default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 create_time datetime default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 delete_time datetime default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 num_objects int(10) default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 PRIMARY KEY (table_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 KEY table_name (table_name),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 KEY table_type (table_type),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 KEY use_date (use_date),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 KEY table_status (table_status)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 ) ENGINE=MyISAM";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 our $SQL_CREATE_DAILY_RESULT = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 CREATE TABLE %s (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 result_id int(10) unsigned NOT NULL auto_increment,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 ticket varchar(32) default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 object longblob,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 PRIMARY KEY (result_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 KEY ticket (ticket)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 ) ENGINE=MyISAM";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 our $SQL_CREATE_DAILY_HIT = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 CREATE TABLE %s (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 hit_id int(10) unsigned NOT NULL auto_increment,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 ticket varchar(32) default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 object longblob,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 PRIMARY KEY (hit_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 KEY ticket (ticket)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 ) ENGINE=MyISAM";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 our $SQL_CREATE_DAILY_HSP = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 CREATE TABLE %s (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 hsp_id int(10) unsigned NOT NULL auto_increment,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 ticket varchar(32) default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 object longblob,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 chr_name varchar(32) default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 chr_start int(10) unsigned default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 chr_end int(10) unsigned default NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 PRIMARY KEY (hsp_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 KEY ticket (ticket)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 ) ENGINE=MyISAM MAX_ROWS=705032704 AVG_ROW_LENGTH=4000";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 #--- TABLE LOG ---
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 our $SQL_SELECT_TABLE_LOG_CURRENT = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 SELECT use_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 FROM blast_table_log
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 WHERE table_type = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 AND table_status = 'CURRENT'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 ORDER BY use_date DESC";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 our $SQL_TABLE_LOG_INSERT = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 INSERT into blast_table_log
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 ( table_name, table_status, table_type, use_date, create_time)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 VALUES ( ?, ?, ?, ?, NOW() )";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 our $SQL_TABLE_LOG_UPDATE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 UPDATE blast_table_log
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 SET table_status = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 delete_time = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 num_objects = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 WHERE table_name = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 #--- TICKETS ---
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 our $SQL_SEARCH_MULTI_STORE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 INSERT INTO blast_ticket ( create_time, update_time, object, ticket )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 VALUES ( NOW(), NOW(), ? , ? )";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 our $SQL_SEARCH_MULTI_UPDATE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 UPDATE blast_ticket
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 SET object = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 update_time = NOW()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 WHERE ticket = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 our $SQL_SEARCH_MULTI_RETRIEVE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 SELECT object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 FROM blast_ticket
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 WHERE ticket = ? ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 #--- RESULTS ---
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 our $SQL_RESULT_STORE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 INSERT INTO blast_result%s ( object, ticket )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 VALUES ( ? , ? )";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 our $SQL_RESULT_UPDATE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 UPDATE blast_result%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 SET object = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 ticket = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 WHERE result_id = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 our $SQL_RESULT_RETRIEVE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 SELECT object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 FROM blast_result%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 WHERE result_id = ? ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 our $SQL_RESULT_RETRIEVE_TICKET = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 SELECT object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 FROM blast_result%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 WHERE ticket = ? ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 #--- HITS ---
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 our $SQL_HIT_STORE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 INSERT INTO blast_hit%s ( object, ticket )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 VALUES ( ? , ? )";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 our $SQL_HIT_UPDATE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 UPDATE blast_hit%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 SET object = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 ticket = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 WHERE hit_id = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 our $SQL_HIT_RETRIEVE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 SELECT object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 FROM blast_hit%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 WHERE hit_id = ? ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 #--- HSPS ---
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 our $SQL_HSP_STORE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 INSERT INTO blast_hsp%s ( object, ticket, chr_name, chr_start, chr_end )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 VALUES ( ? , ? , ? , ? , ? )";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 our $SQL_HSP_UPDATE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 UPDATE blast_hsp%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 SET object = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 ticket = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 chr_name = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 chr_start = ?,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 chr_end = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 WHERE hsp_id = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 our $SQL_HSP_RETRIEVE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 SELECT object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 FROM blast_hsp%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 WHERE hsp_id = ? ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 our $SQL_HSP_REMOVE = "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 UPDATE blast_hsp%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 SET chr_name = NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 chr_start = NULL,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 chr_end = NULL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 WHERE hsp_id = ?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 #=head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 # Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 # Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 # Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 # Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 # Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 # Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 #=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 #warn "DB - @_";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 my $connection = Bio::EnsEMBL::DBSQL::DBConnection->new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $self = $caller->SUPER::new($connection);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 $self->{'disconnect_flag'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 sub new_fast{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 my ($caller,$connection) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 my $self = $caller->SUPER::new($connection);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $self->{'disconnect_flag'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 sub species {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 my ($self, $arg ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 ( defined $arg ) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 ( $self->{_species} = $arg );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 $self->{_species};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 =head2 ticket
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 Arg [1] : string ticket (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 Function : Get/get the blast ticket attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Returntype: string ticket
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 sub ticket{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 my $key = "_ticket";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 if( @_ ){ $self->{$key} = shift }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 return $self->{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 my $obj = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 my $ret_value = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 if( $obj->isa("Bio::Tools::Run::SearchMulti") ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 $ret_value = $self->store_search_multi( $obj, @_ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 # warn "Just stored as Bio::Tools::Run::SearchMulti";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 } elsif( $obj->isa( "Bio::Search::Result::ResultI" ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 $ret_value = $self->store_result( $obj, @_ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 # warn "Just stored as Bio::Tools::Result::ResultI";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 } elsif( $obj->isa( "Bio::Search::Hit::HitI" ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 $ret_value = $self->store_hit( $obj, @_ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 # warn "Just stored as Bio::Tools::Hit::HitI";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 } elsif( $obj->isa( "Bio::Search::HSP::HSPI" ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 $ret_value = $self->store_hsp( $obj, @_ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 # warn "Just stored as Bio::Tools::HSP::HSPI";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 # warn "DID NOT STORE ".ref($obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 $self->throw( "Do not know how to store objects of type ".ref($obj) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 # if( $self->{'disconnect_flag'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 # warn "HERE WE ARE DISCONNECTING....";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 # $self->dbc->db_handle->disconnect();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 # $self->dbc->connected(0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 # warn "AND WE ARE RECONNECTING....";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 # $self->dbc->connect();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 return $ret_value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 sub prepare {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 # warn( "==> ", $self->dbc->dbname, " ", $self->dbc->db_handle );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 #warn @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 my $T = $self->SUPER::prepare( @_ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 # warn( "<== ", $self->dbc->dbname, " ", $self->dbc->db_handle );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 return $T;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 =head2 retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 sub retrieve {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my %METHODS = qw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 Bio::Tools::Run::EnsemblSearchMulti search_multi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Bio::Search::Result::ResultI result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Bio::Search::Hit::HitI hit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 Bio::Search::HSP::HSPI hsp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 foreach my $type (keys %METHODS) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 if( UNIVERSAL::isa($caller, $type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 my $method = "retrieve_$METHODS{$type}";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 return $self->$method( @_ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 return undef if UNIVERSAL::isa($caller,'Bio::Tools::Run::Search');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 $self->throw( "Do not know how to retrieve objects of type ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 ( ref($caller)? ref($caller) : $caller ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 =head2 remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 Function : TODO: implement remove functions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 sub remove {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 my $obj = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 return 1 if $obj->isa("Bio::Tools::Run::EnsemblSearchMulti"); # Nothing to do here { return $self->remove_search_multi( @_ ); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 return 1 if $obj->isa("Bio::Search::Result::ResultI"); # Nothing to do here { return $self->remove_result( @_ ); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 return 1 if $obj->isa("Bio::Search::Hit::HitI"); # Nothing to do here { return $self->remove_hit( @_ ); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 return $self->remove_hsp( $obj ) if $obj->isa("Bio::Search::HSP::HSPI");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 return undef(); # Do not know how to remove objects of this type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 =head2 store_search_multi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 Arg [1] : Bio::Tools::Run::EnsemblSearchMulti obj
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 Function : Stores the ensembl SearchMulti container object in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 Returntype: scalar (token)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 Example : my $container_token = $blast_adpt->store_ticket( $container );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 sub store_search_multi{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 my $search_multi = shift ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $self->throw( "Need a Bio::Tools::Run::EnsemblSearchMulti obj" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 my $frozen = shift || $search_multi->serialise;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 my $ticket = $search_multi->token || $self->throw( "Bio::Tools::Run::EnsemblSearchMulti obj has no ticket" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 my $sth = $self->prepare( $SQL_SEARCH_MULTI_RETRIEVE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 my $rv = $sth->execute( $ticket ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 if( $rv < 1 ){ # Insert (do first to minimise risk of race)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my $sth = $self->prepare( $SQL_SEARCH_MULTI_STORE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $sth->execute( $frozen, $ticket ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 #$search_multi->token( $self->dbh->{mysql_insertid} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 else{ # Update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 my $sth = $self->prepare( $SQL_SEARCH_MULTI_UPDATE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 $sth->execute( $frozen, $ticket ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 my $sth = $self->prepare('show tables'); $sth->execute(); $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 return $search_multi->token();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 =head2 retrieve_search_multi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 sub retrieve_search_multi {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 my $ticket = shift || $self->throw( "Need an EnsemblSearchMulti ticket" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 warn $dbh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 warn $SQL_SEARCH_MULTI_RETRIEVE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 my $sth = $self->prepare( $SQL_SEARCH_MULTI_RETRIEVE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 warn $sth;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 my $rv = $sth->execute( $ticket ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 if( $rv < 1 ){ $self->throw( "Token $ticket not found" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 my ( $frozen ) = $sth->fetchrow_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 $frozen || $self->throw( "Object from ticket $ticket is empty" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 return $frozen;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 =head2 store_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 Arg [1] : Bio::Search::Result::EnsemblResult obj
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 Function : Stores the ensembl Result in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 Returntype: scalar (token)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 Example : my $result_token = $blast_adpt->store_result( $result );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 sub store_result{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 my $res = shift || $self->throw( "Need a Bio::Search::Result::EnsemblResult obj" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 my $frozen = shift || $res->serialise;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 my $sth;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 my ( $id, $use_date ) = split( '!!', $res->token || '' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 $use_date ||= $self->use_date( 'RESULT' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 #my $ticket = $res->group_ticket || warn( "Result $id has no ticket" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 my $ticket = $self->ticket || warn("Result $id BlastAdaptor has no ticket");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 my $rv = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 if( $id ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 $sth = $self->prepare( sprintf $SQL_RESULT_RETRIEVE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 $rv = $sth->execute( $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 if( $rv < 1 ){ # We have no result with this token string Insert
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 my $use_date = $res->use_date() || $res->use_date($self->use_date('RESULT'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 $sth = $self->prepare( sprintf $SQL_RESULT_STORE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 $sth->execute( $frozen, $ticket ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 my $id = $dbh->{mysql_insertid};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 $res->token( join( '!!', $id, $use_date ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 } else { # Update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 $sth = $self->prepare( sprintf $SQL_RESULT_UPDATE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 $sth->execute( $frozen, $ticket, $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 return $res->token();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 sub store_result_2{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 my $res = shift || $self->throw( "Need a Bio::Search::Result::EnsemblResult obj" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 my $frozen = shift || $res->serialise;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 my $sth;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 my ( $id, $use_date ) = split( '!!', $res->token || '' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 $use_date ||= $self->use_date( 'RESULT' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 #my $ticket = $res->group_ticket || warn( "Result $id has no ticket" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 my $ticket = $self->ticket || warn("Result $id BlastAdaptor has no ticket");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 my $rv = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 if( $ticket ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 $sth = $self->prepare( sprintf $SQL_RESULT_RETRIEVE_TICKET, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 $rv = $sth->execute( $ticket ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 if( !$rv && $id ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 $sth = $self->prepare( sprintf $SQL_RESULT_RETRIEVE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 $rv = $sth->execute( $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 if( $rv < 1 ){ # We have no result with this token string Insert
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 my $use_date = $res->use_date() || $res->use_date($self->use_date('RESULT'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 $sth = $self->prepare( sprintf $SQL_RESULT_STORE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 $sth->execute( $frozen, $ticket ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 my $id = $dbh->{mysql_insertid};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 $res->token( join( '!!', $id, $use_date ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 } else { # Update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 $sth = $self->prepare( sprintf $SQL_RESULT_UPDATE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 $sth->execute( $frozen, $ticket, $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 return $res->token();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 =head2 retrieve_result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 sub retrieve_result{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 my $token = shift || $self->throw( "Need a Hit token" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 my ( $id, $use_date ) = split( '!!',$token);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $use_date ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 my $sth = $self->prepare( sprintf $SQL_RESULT_RETRIEVE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 my $rv = $sth->execute( $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 if( $rv < 1 ){ $self->throw( "Token $id not found" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 my ( $frozen ) = $sth->fetchrow_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 $frozen || $self->throw( "Object from result $id is empty" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 return $frozen;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 =head2 store_hit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 Arg [1] : Bio::Search::Hit::EnsemblHit obj
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 Function : Stores the ensembl Hit in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 Returntype: scalar (token)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 Example : my $hit_token = $blast_adpt->store_hit( $hit );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 sub store_hit{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 my $hit = shift ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 $self->throw( "Need a Bio::Search::Hit::EnsemblHit obj" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 my $frozen = shift || $hit->serialise;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 my ( $id, $use_date ) = split( '!!', $hit->token || '' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 $use_date ||= $hit->use_date() || $hit->use_date($self->use_date('HIT'));;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 #my $ticket = $hit->group_ticket || warn( "Hit $id has no ticket" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 my $ticket = $self->ticket || warn("Hit $id BlastAdaptor has no ticket");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 my $rv = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 if( $id ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 my $sth = $self->prepare( sprintf $SQL_HIT_RETRIEVE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 $rv = $sth->execute( $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 if( $rv < 1 ){ # Insert
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 my $sth = $self->prepare( sprintf $SQL_HIT_STORE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 $sth->execute( $frozen, $ticket ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 my $id = $dbh->{mysql_insertid};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 $hit->token( join( '!!', $id, $use_date ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 else{ # Update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 my $sth = $self->prepare( sprintf $SQL_HIT_UPDATE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 $sth->execute( $frozen, $ticket, $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 return $hit->token();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 =head2 retrieve_hit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 sub retrieve_hit{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 my $token = shift || $self->throw( "Need a Hit token" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 my ( $id, $use_date ) = split( '!!',$token);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 $use_date ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 my $sth = $self->prepare( sprintf $SQL_HIT_RETRIEVE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 my $rv = $sth->execute( $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 if( $rv < 1 ){ $self->throw( "Token $token not found" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 my ( $frozen ) = $sth->fetchrow_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 $frozen || $self->throw( "Object from hit $id is empty" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 return $frozen;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 =head2 store_hsp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 Arg [1] : Bio::Search::HSP::EnsemblHSP obj
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 Function : Stores the ensembl HSP in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 sub store_hsp{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 my $hsp = shift ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 $self->throw( "Need a Bio::Search::HSP::EnsemblHSP obj" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 my $frozen = shift || $hsp->serialise;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 my ( $id, $use_date ) = split( '!!', $hsp->token || '');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 $use_date ||= $hsp->use_date() || $hsp->use_date($self->use_date('HSP'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 #my $ticket = $hsp->group_ticket || warn( "HSP $id has no ticket" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 my $ticket = $self->ticket || warn( "HSP $id BlastAdaptor has no ticket" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 my $chr_name = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 my $chr_start = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 my $chr_end = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 if( my $genomic = $hsp->genomic_hit ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 $chr_name = $genomic->seq_region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 $chr_start = $genomic->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 $chr_end = $genomic->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 my $rv = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 if( $id ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 my $sth = $self->prepare( sprintf $SQL_HSP_RETRIEVE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 $rv = $sth->execute( $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 if( $rv < 1 ){ # Insert
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 my $use_date = $hsp->use_date() || $hsp->use_date($self->use_date('HSP'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 my $sth = $self->prepare( 'show tables' ); $sth->execute(); $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 $sth = $self->prepare( sprintf $SQL_HSP_STORE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 my @bound = ( $frozen, $ticket, $chr_name, $chr_start, $chr_end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 $sth->execute( @bound ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 my $id = $dbh->{mysql_insertid};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 $hsp->token( join( '!!', $id, $use_date ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 else{ # Update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 my $sth = $self->prepare( sprintf $SQL_HSP_UPDATE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 my @bound = ( $frozen, $ticket, $chr_name, $chr_start, $chr_end, $id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 $sth->execute( @bound ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 return $hsp->token();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 =head2 retrieve_hsp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 sub retrieve_hsp{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 my $token = shift || $self->throw( "Need an HSP token" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 my ( $id, $use_date ) = split( '!!',$token);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 $use_date ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 my $sth = $self->prepare( sprintf $SQL_HSP_RETRIEVE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 my $rv = $sth->execute( $id ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 if( $rv < 1 ){ $self->throw( "Token $token not found" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 my ( $frozen ) = $sth->fetchrow_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 $frozen || $self->throw( "Object from hsp $id is empty" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 return $frozen;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 =head2 remove_hsp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 Arg [1] : $hsp object to be removed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 Function : 'removes' hsp from e.g. contigview by setting chr fields
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 to null
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 Caller : $self->remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 sub remove_hsp {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 my $hsp = shift ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 $self->throw( "Need a Bio::Search::HSP::EnsemblHSP obj" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 my ( $id, $use_date ) = split( '!!', $hsp->token || '');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 $use_date ||= $hsp->use_date() || $hsp->use_date($self->use_date('HSP'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 my $sth = $self->prepare( sprintf $SQL_HSP_REMOVE, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 my @bound = ( $id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 my $rv = $sth->execute( @bound ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 =head2 get_all_HSPs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 sub get_all_HSPs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 my $ticket = shift || $self->throw( "Need a search ticket!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 my $chr_name = shift || undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 my $chr_start = shift || undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 my $chr_end = shift || undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 my ( $id, $use_date ) = split( '!!', $ticket );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 $use_date ||= '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 my $SQL = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 SELECT object, hsp_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 FROM blast_hsp%s
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 WHERE ticket = ? );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 my $CHR_SQL = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 AND chr_name = ? );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 my $RANGE_SQL = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 AND chr_start <= ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 AND chr_end >= ? );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 my $q = sprintf( $SQL, $use_date );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 my @binded = ( $id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 if( $chr_name ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 $q .= $CHR_SQL;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 push @binded, $chr_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 if( $chr_start && $chr_end ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 $q .= $RANGE_SQL;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 push @binded, $chr_end, $chr_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 my $sth = $self->dbc->db_handle->prepare($q);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 my $rv = $sth->execute( @binded ) || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 my @hsps = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 foreach my $row( @{$sth->fetchall_arrayref()} ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 # Retrieve HSP and reset token
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 my $hsp = thaw( $row->[0] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 my $hsp_id = $row->[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 $hsp->token( join( '!!', $hsp_id, $use_date ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 push @hsps, $hsp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 return [@hsps];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 =head2 get_all_SearchFeatures
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 sub get_all_SearchFeatures {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 my $hsps = $self->get_all_HSPs(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 my $ticket = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 $self->dynamic_use( ref($hsps->[0] ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 my @feats = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 foreach my $hsp( @$hsps ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 my $base_align = $hsp->genomic_hit || next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 ( $ticket ) = split( "!!", $ticket );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 my $hsp_id = join( "!!", $ticket, $hsp->token );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 $base_align->hseqname( join( ":", $base_align->hseqname, $hsp_id ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 push @feats, $base_align;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 return [ @feats ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 sub dynamic_use {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 my( $self, $classname ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 my( $parent_namespace, $module ) = $classname =~/^(.*::)(.*?)$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 no strict 'refs';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 return 1 if $parent_namespace->{$module.'::'}; # return if already used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 eval "require $classname";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 if($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 warn "DrawableContainer: failed to use $classname\nDrawableContainer: $@";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 $classname->import();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 =head2 use_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 Arg [1] :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 Function :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 my %valid_table_types = ( HIT=>1, HSP=>1, RESULT=>1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 sub use_date {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 my $key = '_current_table';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 my $type = uc( shift );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 #warn "$self --- $key --- $type $self";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 $valid_table_types{$type} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 $self->throw( "Need a table type (Result, Hit or HSP)" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 $self->{$key} ||= {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 if( ! $self->{$key}->{$type} ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 my $sth = $self->dbc->db_handle->prepare( "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 SELECT table_type, use_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 FROM blast_table_log
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 WHERE table_status = 'CURRENT'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 ORDER BY use_date ASC" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 #warn "prepare... $sth";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 #warn $SQL_SELECT_TABLE_LOG_CURRENT;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 #warn $type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 my $rv = $sth->execute();# $type );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 #warn $rv;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 unless( $rv ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 warn( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 #warn "exec...";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 foreach my $r (@{ $sth->fetchall_arrayref }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 my $date = $r->[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 $date =~ s/-//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 $self->{$key}->{$r->[0]} = $date;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 #warn "$r->[0] ---> $r->[1] ---> $date";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 # $rv > 0 || ( warn( "No current $type table found" ) && return );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 #warn "end of finish...";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 return $self->{$key}->{$type};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 =head2 clean_blast_database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 Arg [1] : int $days
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 Function : Removes blast tickets older than $days days
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 Returntype:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 Exceptions: SQL errors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 Example : $ba->clean_blast_database(14)
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 clean_blast_database{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 my $days = shift || $self->throw( "Missing arg: number of days" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 $days =~ /\D/ && $self->throw( "Bad arg: number of days $days not int" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 # Get list of tickets > $days days old
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 my $q = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 SELECT ticket_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 FROM blast_ticket
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 WHERE update_time < SUBDATE( NOW(), INTERVAL $days DAY ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 my $sth = $self->dbc->db_handle->prepare($q);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 my $rv = $sth->execute() || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 my $res = $sth->fetchall_arrayref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 # Delete result and ticket rows associated with old tickets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 my $q_del_tmpl = qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 DELETE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 FROM blast_ticket
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 WHERE ticket_id = %s);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 my $c = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 foreach my $row( @$res ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 my $ticket_id = $row->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 $c++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956 my $q_del = sprintf( $q_del_tmpl, $ticket_id );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 my $sth = $self->dbc->db_handle->prepare($q_del);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 my $rv = $sth->execute() || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 warn "Purging $days days: Deleted $c rows\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 # Drop daily Result, Hit and HSP tables not updated within $days days
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 my $q_find = 'show table status like ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 my $sth2 = $self->prepare( $q_find );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 $sth2->execute( "blast_result%" ) || $self->throw( $sth2->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 my $res_res = $sth2->fetchall_arrayref();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 $sth2->execute( "blast_hit%" ) || $self->throw( $sth2->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 my $hit_res = $sth2->fetchall_arrayref();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 $sth2->execute( "blast_hsp%" ) || $self->throw( $sth2->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 my $hsp_res = $sth2->fetchall_arrayref();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 my @deletable_hit_tables;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 foreach my $row( @$res_res, @$hit_res, @$hsp_res ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 my $table_name = $row->[0]; ## table name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 my $num_rows = $row->[4]; ## # Rows...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 my $update_time = $row->[12]; ## update time --- Should be a string like 2003-08-15 10:36:56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 next unless $update_time; #cope with an occasional innodb table that has no update time
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 my @time = split( /[-:\s]/, $update_time );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 my $epoch_then = timelocal( $time[5], $time[4], $time[3],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 $time[2], $time[1]-1, $time[0] - 1900 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 my $secs_old = time() - $epoch_then;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 my $days_old = $secs_old / ( 60 * 60 * 24 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 if( $days_old > $days ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 warn( "Dropping table $table_name: $num_rows rows\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 my $sth_drop = $self->prepare( "DROP table $table_name" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987 my $sth_log = $self->prepare( $SQL_TABLE_LOG_UPDATE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 $sth_drop->execute || $self->throw( $sth_drop->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 my( $se,$mi,$hr,$da,$mo,$yr ) = (localtime)[0,1,2,3,4,5];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 my $now = sprintf( "%4d-%2d-%2d %2d:%2d:%2d",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 $yr+1900,$mo+1,$da,$hr,$mi,$se );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 $sth_log->execute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 ('DELETED',$now,$num_rows,$table_name) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 $self->throw( $sth_log->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 =head2 create_tables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 Function : Creates the blast_ticket and blast_table_log
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 tables in the database indicated by the database handle.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 Checks first to make sure they do not exist
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 Returntype: boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 sub create_tables {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 # Get list of existing tables in database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 my $q = 'show tables like ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 my $sth = $self->prepare( $q );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 my $rv_tck = $sth->execute("blast_ticket") || $self->throw($sth->errstr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 my $rv_log = $sth->execute("blast_table_log" )|| $self->throw($sth->errstr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 if( $rv_tck == 0 ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 warn( "Creating blast_ticket table\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 my $sth = $self->prepare( $SQL_CREATE_TICKET );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 my $rv = $sth->execute() || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 else{ warn( "blast_ticket table already exists\n" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 if( $rv_log == 0 ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 warn( "Creating blast_result table\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 my $sth = $self->prepare( $SQL_CREATE_TABLE_LOG );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 my $rv = $sth->execute() || $self->throw( $sth->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 else{ warn( "blast_table_log table already exists\n" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 =head2 rotate_daily_tables
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 Function : Creates the daily blast_result{date}, blast_hit{date}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 and blast_hsp{date} tables in the database indicated by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 the database handle.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 Checks first to make sure they do not exist.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 Sets the new table to 'CURRENT' in the blast_table_log.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 Sets the previous 'CURRENT' table to filled.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 Returntype: boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 sub rotate_daily_tables {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068 # Get date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 my( $day, $month, $year ) = (localtime)[3,4,5];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070 my $date = sprintf( "%04d%02d%02d", $year+1900, $month+1, $day );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 my $res_table = "blast_result$date";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 my $hit_table = "blast_hit$date";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 my $hsp_table = "blast_hsp$date";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 # Get list of existing tables in database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 my $q = 'show table status like ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 my $sth = $self->prepare( $q );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079 my $rv_res = $sth->execute($res_table) || $self->throw($sth->errstr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 my $rv_hit = $sth->execute($hit_table) || $self->throw($sth->errstr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081 my $rv_hsp = $sth->execute($hsp_table) || $self->throw($sth->errstr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 if( $rv_res == 0 ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085 warn( "Creating today's $res_table table\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087 # Create new table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 my $q = sprintf($SQL_CREATE_DAILY_RESULT, $res_table);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 my $sth1 = $self->prepare( $q );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090 my $rv = $sth1->execute() || $self->throw( $sth1->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 # Flip current table in blast_table_tog
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 my $last_date = $self->use_date( "RESULT" ) || '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 my $sth2 = $self->prepare( $SQL_TABLE_LOG_INSERT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 my $sth3 = $self->prepare( $SQL_TABLE_LOG_UPDATE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 $sth2->execute( "$res_table",'CURRENT','RESULT',$date )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 || die( $self->throw( $sth2->errstr ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098 $sth3->execute( 'FILLED','0',0,"blast_result$last_date")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 || die( $self->throw( $sth3->errstr ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 $sth1->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 $sth2->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 $sth3->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 else{ warn( "Today's $res_table table already exists\n" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 if( $rv_hit == 0 ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 warn( "Creating today's $hit_table table\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 # Create new table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 my $q = sprintf($SQL_CREATE_DAILY_HIT, $hit_table);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111 my $sth1 = $self->prepare( $q );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112 my $rv = $sth1->execute() || $self->throw( $sth1->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 # Flip current table in blast_table_tog
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115 my $last_date = $self->use_date( "HIT" ) || '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116 my $sth2 = $self->prepare( $SQL_TABLE_LOG_INSERT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 my $sth3 = $self->prepare( $SQL_TABLE_LOG_UPDATE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 $sth2->execute( "$hit_table",'CURRENT','HIT',$date )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 || die( $self->throw( $sth2->errstr ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 $sth3->execute( 'FILLED','0',0,"blast_hit$last_date")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121 || die( $self->throw( $sth3->errstr ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 $sth1->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 $sth2->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124 $sth3->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 else{ warn( "Today's $hit_table table already exists\n" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 if( $rv_hsp == 0 ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129 warn( "Creating today's $hsp_table table\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131 # Create new table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 my $q = sprintf($SQL_CREATE_DAILY_HSP, $hsp_table );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133 my $sth1 = $self->prepare( $q );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 my $rv = $sth1->execute() || $self->throw( $sth1->errstr );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136 # Flip current table in blast_table_tog
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 my $last_date = $self->use_date( "HSP" ) || '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 my $sth2 = $self->prepare( $SQL_TABLE_LOG_INSERT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 my $sth3 = $self->prepare( $SQL_TABLE_LOG_UPDATE );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140 $sth2->execute( "$hsp_table",'CURRENT','HSP',$date )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 || die( $self->throw( $sth2->errstr ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 $sth3->execute( 'FILLED','0',0,"blast_hsp$last_date")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143 || die( $self->throw( $sth3->errstr ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 $sth1->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145 $sth2->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 $sth3->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148 else{ warn( "Today's $hsp_table table already exists\n" ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152 #----------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 =head2 cleanup_processes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158 Function : Kills any sleeping processes older that 1000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159 Returntype: boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160 Exceptions:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161 Caller :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166 sub cleanup_processes {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168 my $dbh = $self->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169 my $sth = $self->prepare( 'show processlist' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170 my $kill_sth = $self->prepare('kill ?');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 $sth->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 my $res = $sth->fetchall_arrayref([0,3,4,5]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173 my $c = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174 foreach my $ps (@$res) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175 my ($pid,$db,$stat,$time) = @$ps;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176 if ($db eq 'ensembl_blast') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177 if ( ($stat eq 'Sleep') && ($time > 1000) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178 $kill_sth->execute($pid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179 $c++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 warn "Killed $c processes";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190 1;