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

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::DBSQL::AnalysisAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use Bio::EnsEMBL::Registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Bio::EnsEMBL::Registry->load_registry_from_db(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 -host => 'ensembldb.ensembl.org',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 -user => 'anonymous'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 $analysis_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 Bio::EnsEMBL::Registry->get_adaptor( "human", "core", "analysis" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 my $analysis = $analysis_adaptor->fetch_by_logic_name('genscan');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 Module to encapsulate all db access for persistent class Analysis.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 There should be just one per application and database connection.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 package Bio::EnsEMBL::DBSQL::AnalysisAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 use Bio::EnsEMBL::Analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 use Bio::EnsEMBL::DBSQL::BaseAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 use Bio::EnsEMBL::Utils::Exception;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 @ISA = qw( Bio::EnsEMBL::DBSQL::BaseAdaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Args : Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 Example : my $aa = new Bio::EnsEMBL::DBSQL::AnalysisAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Description: Creates a new Bio::EnsEMBL::DBSQL::AnalysisAdaptor object and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 internally loads and caches all the Analysis objects from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 Returntype : Bio::EnsEMBL::DBSQL::AnalysisAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Caller : Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 my ($class, $db) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 my $self = $class->SUPER::new($db);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 #load and cache all of the Analysis objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 $self->fetch_all;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 =head2 fetch_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 Example : my @analysis = @{$analysis_adaptor->fetch_all()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Description: fetches all of the Analysis objects from the database and caches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 them internally.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Returntype : listref of Bio::EnsEMBL::Analysis retrieved from the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Caller : AnalysisAdaptor::new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 sub fetch_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my ( $analysis, $dbID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 my $rowHashRef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 $self->{_cache} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 $self->{_logic_name_cache} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 my $sth = $self->prepare( q {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 SELECT analysis.analysis_id, logic_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 program, program_version, program_file,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 db, db_version, db_file,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 module, module_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 gff_source, gff_feature,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 created, parameters, description, display_label, displayable, web_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 FROM analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 LEFT JOIN analysis_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 ON analysis.analysis_id = analysis_description.analysis_id } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $sth->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 while( $rowHashRef = $sth->fetchrow_hashref ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my $analysis = $self->_objFromHashref( $rowHashRef );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $self->{_cache}->{$analysis->dbID} = $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 $self->{_logic_name_cache}->{lc($analysis->logic_name())} = $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my @ana = values %{$self->{_cache}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 return \@ana;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 =head2 fetch_all_by_feature_class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 Arg [1] : string $feature_cless - The name of the feature class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Example : my @analyses = @{$analysis_adaptor->fetch_all_by_feature_class('Gene');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Description: Returns all analyses that correspond to a given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 feature class; see feature_classes method for a list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Returntype : Listref of Bio::EnsEMBL::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 sub fetch_all_by_feature_class {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 deprecate("Deprecated. Hard-coded logic is not supported");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 my $feat_class = shift || throw( "Need a feature type, e.g. SimpleFeature" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 my @feature_classes = $self->feature_classes; # List of all feature classes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 my %feat_table_map;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 foreach my $class( @feature_classes ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 # Map e.g. DnaAlignFeature to dna_align_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 my $table = join( "_", map lc, ( $class =~ /([A-Z][a-z]+)/g ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 $feat_table_map{$class} = $table;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $feat_table_map{DensityFeature}='density_type'; # analysis_id in diff table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 my $feat_table = $feat_table_map{$feat_class} ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 ( warning( "No feature type corresponding to $feat_class" ) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 return [] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 my $sql_t = qq|
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 SELECT DISTINCT analysis_id FROM %s |;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 my $sql = sprintf( $sql_t, $feat_table );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 my $sth = $self->prepare( $sql );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my $rv = $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my $res = $sth->fetchall_arrayref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my @analyses;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 foreach my $r( @{$res} ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 my $analysis = $self->fetch_by_dbID($r->[0])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 || throw( "analysis_id $r->[0] from $feat_table table "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 . "is not in the analysis table!" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 push @analyses, $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 return [@analyses];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 =head2 feature_classes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Arg [1] : NONE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Example : my @fclasses = $analysis_adaptor->feature_classes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Description: Returns a list of the different classes of Ensembl feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 object that have an analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Returntype : List of feature classes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 sub feature_classes{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 deprecate("Deprecated. Hard-coded logic is not supported");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 # Can't think of a way to do this programatically, so hard-coded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 return qw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 DensityFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 DnaAlignFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 MarkerFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 PredictionTranscript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 ProteinAlignFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 ProteinFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 QtlFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 RepeatFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 SimpleFeature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 =head2 fetch_by_dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Arg [1] : int $internal_analysis_id - the database id of the analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 record to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 Example : my $analysis = $analysis_adaptor->fetch_by_dbID(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 Description: Retrieves an Analysis object from the database via its internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Returntype : Bio::EnsEMBL::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 sub fetch_by_dbID {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 my $id = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 if( defined $self->{_cache}->{$id} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 return $self->{_cache}->{$id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 my $query = q{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 SELECT analysis.analysis_id, logic_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 program, program_version, program_file,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 db, db_version, db_file,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 module, module_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 gff_source, gff_feature,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 created, parameters, description, display_label, displayable, web_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 FROM analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 LEFT JOIN analysis_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 ON analysis.analysis_id = analysis_description.analysis_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 WHERE analysis.analysis_id = ? };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 my $sth = $self->prepare($query);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 $sth->bind_param(1,$id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 my $rowHashRef = $sth->fetchrow_hashref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 if( ! defined $rowHashRef ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 my $anal = $self->_objFromHashref( $rowHashRef );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 $self->{_cache}->{$anal->dbID} = $anal;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $self->{_logic_name_cache}->{lc($anal->logic_name())} = $anal;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 return $anal;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 =head2 fetch_by_logic_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 Arg [1] : string $logic_name the logic name of the analysis to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 Example : my $analysis = $a_adaptor->fetch_by_logic_name('Eponine');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 Description: Retrieves an analysis object from the database using its unique
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 logic name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Returntype : Bio::EnsEMBL::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 sub fetch_by_logic_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 my ( $self, $logic_name ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 my $rowHash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 # Check the cache for the logic name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 if ( defined( $self->{_logic_name_cache}{ lc($logic_name) } ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 return $self->{_logic_name_cache}{ lc($logic_name) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 my $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 qq(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 SELECT analysis.analysis_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 logic_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 program,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 program_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 program_file,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 db_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 db_file,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 module,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 module_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 gff_source,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 gff_feature,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 created,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 parameters,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 description,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 display_label,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 displayable,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 web_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 FROM analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 LEFT JOIN analysis_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 ON ( analysis.analysis_id = analysis_description.analysis_id )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 WHERE LOWER(logic_name) = ?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 $sth->bind_param( 1, lc($logic_name), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 my $rowHashRef = $sth->fetchrow_hashref();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 if ( !defined($rowHashRef) ) { return undef }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $analysis = $self->_objFromHashref($rowHashRef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 # place the analysis in the caches, cross referenced by dbID and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 # logic_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 $self->{_cache}->{ $analysis->dbID() } = $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 $self->{_logic_name_cache}->{ lc($logic_name) } = $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 return $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 } ## end sub fetch_by_logic_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 Arg [1] : Bio:EnsEMBL::Analysis $analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 Example : $analysis_adaptor->store($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 Description: Stores $analysis in db. If the analysis is already stored in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 the database its dbID and adaptor are updated, but the analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 is not stored a second time.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 Sets created date if not already set. Sets dbID and adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 inside $analysis. Returns dbID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Returntype : int - dbID of stored analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Exceptions : throw on incorrect argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 throw if analysis argument does not have a logic name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 my $analysis = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 if(!ref($analysis) || !$analysis->isa('Bio::EnsEMBL::Analysis')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 throw("Bio::EnsEMBL::Analysis argument expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 if($analysis->is_stored($self->db())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 return $analysis->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 if(!$analysis->logic_name()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 throw("Analysis cannot be stored without a valid logic_name");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 my $insertion_method = (lc($self->dbc->driver) eq 'sqlite') ? 'INSERT OR IGNORE' : 'INSERT IGNORE';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 my $rows_inserted = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 my $sth;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 if ( $analysis->created() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 # We use insert IGNORE so that this method can be used in a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 # multi-process environment. If another process has already written
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 # this record then there will not be a problem.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 qq{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 $insertion_method INTO analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 (created, logic_name, db, db_version, db_file, program, program_version, program_file, parameters, module, module_version, gff_source, gff_feature)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 $sth->bind_param( 1, $analysis->created(), SQL_DATETIME );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 $sth->bind_param( 2, lc( $analysis->logic_name() ), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 $sth->bind_param( 3, $analysis->db(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 $sth->bind_param( 4, $analysis->db_version(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 $sth->bind_param( 5, $analysis->db_file(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 $sth->bind_param( 6, $analysis->program(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 $sth->bind_param( 7, $analysis->program_version(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 $sth->bind_param( 8, $analysis->program_file(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $sth->bind_param( 9, $analysis->parameters(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 $sth->bind_param( 10, $analysis->module(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $sth->bind_param( 11, $analysis->module_version(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 $sth->bind_param( 12, $analysis->gff_source(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 $sth->bind_param( 13, $analysis->gff_feature(), SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 $rows_inserted = $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 qq{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $insertion_method INTO analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 (created, logic_name, db, db_version, db_file, program, program_version, program_file, parameters, module, module_version, gff_source, gff_feature)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 VALUES (CURRENT_TIMESTAMP, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $sth->bind_param( 1, $analysis->logic_name, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 $sth->bind_param( 2, $analysis->db, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 $sth->bind_param( 3, $analysis->db_version, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 $sth->bind_param( 4, $analysis->db_file, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 $sth->bind_param( 5, $analysis->program, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 $sth->bind_param( 6, $analysis->program_version, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 $sth->bind_param( 7, $analysis->program_file, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 $sth->bind_param( 8, $analysis->parameters, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 $sth->bind_param( 9, $analysis->module, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 $sth->bind_param( 10, $analysis->module_version, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 $sth->bind_param( 11, $analysis->gff_source, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $sth->bind_param( 12, $analysis->gff_feature, SQL_VARCHAR );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 $rows_inserted = $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 } ## end else [ if ( $analysis->created...)]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 my $dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 # If we need to fetch the timestamp, or the insert failed due to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 # existance of an existing entry, we need to retrieve the entry from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 # the database. Note: $sth->execute() may return 0E0 on error which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 # is zero, but true which is why the $rows_inserted clause was added.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 if ( !$analysis->created() || !$rows_inserted || $rows_inserted == 0 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 my $new_analysis =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 $self->fetch_by_logic_name( $analysis->logic_name );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 if ( !$new_analysis ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 throw("Could not retrieve just stored analysis from database.\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 . "Possibly incorrect db permissions or missing analysis table\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 $dbID = $new_analysis->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 $analysis->created( $new_analysis->created() );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $dbID ||= $sth->{'mysql_insertid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 # store description and display_label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 if( defined( $analysis->description() ) || defined( $analysis->display_label() )|| defined( $analysis->web_data() )) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 $sth = $self->prepare( "INSERT IGNORE INTO analysis_description (analysis_id, display_label, description, displayable, web_data) VALUES (?,?,?,?, ?)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 $sth->bind_param(1,$dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 $sth->bind_param(2,$analysis->display_label(),SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 $sth->bind_param(3,$analysis->description,SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 $sth->bind_param(4,$analysis->displayable,SQL_TINYINT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 #$sth->bind_param(5,$analysis->web_data(),SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 my $web_data;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 $web_data = $self->dump_data($analysis->web_data()) if ($analysis->web_data());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 $sth->bind_param(5,$web_data,SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $self->{_cache}->{$dbID} = $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $self->{_logic_name_cache}{lc($analysis->logic_name)} = $analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 $analysis->adaptor( $self );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 $analysis->dbID( $dbID );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 return $dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 =head2 update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 Arg [1] : Bio::EnsEMBL::Analysis $anal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 Example : $adaptor->update($anal)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 Description: Updates this analysis in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 Returntype : int 1 if update is performed, undef if it is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 Exceptions : throw if arg is not an analysis object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 sub update {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 my $a = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 if (!ref($a) || !$a->isa('Bio::EnsEMBL::Analysis')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 throw("Expected Bio::EnsEMBL::Analysis argument.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 if(!$a->is_stored($self->db())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 my $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 ("UPDATE analysis " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 "SET created = ?, logic_name = ?, db = ?, db_version = ?, db_file = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 " program = ?, program_version = ?, program_file = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 " parameters = ?, module = ?, module_version = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 " gff_source = ?, gff_feature = ? " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 "WHERE analysis_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 $sth->bind_param(1,$a->created,SQL_DATETIME);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 $sth->bind_param(2,$a->logic_name,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 $sth->bind_param(3,$a->db,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 $sth->bind_param(4,$a->db_version,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 $sth->bind_param(5,$a->db_file,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 $sth->bind_param(6,$a->program,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 $sth->bind_param(7,$a->program_version,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 $sth->bind_param(8,$a->program_file,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 $sth->bind_param(9,$a->parameters,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 $sth->bind_param(10,$a->module,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 $sth->bind_param(11,$a->module_version,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 $sth->bind_param(12,$a->gff_source,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 $sth->bind_param(13,$a->gff_feature,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 $sth->bind_param(14,$a->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 # also update description & display label - may need to create these if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 # not already there
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 $sth = $self->prepare("SELECT description FROM analysis_description WHERE analysis_id= ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 $sth->execute($a->dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 my $web_data; #this is an anonymous reference to a hash, will have to be dumped into string before writing to db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 if ($sth->fetchrow_hashref) { # update if exists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 $web_data = $self->dump_data($a->web_data()) if ($a->web_data());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 ("UPDATE analysis_description SET description = ?, display_label = ?, displayable = ?, web_data = ? WHERE analysis_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 $sth->bind_param(1,$a->description,SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 $sth->bind_param(2,$a->display_label(),SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 $sth->bind_param(3,$a->displayable,SQL_TINYINT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 # print "after $web_data\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 $sth->bind_param(4,$web_data,SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 $sth->bind_param(5,$a->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 } else { # create new entry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 if( $a->description() || $a->display_label() || $a->web_data) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $web_data = $self->dump_data($a->web_data()) if ($a->web_data());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 #my $web_data = $self->dump_data($a->web_data());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 $sth = $self->prepare( "INSERT IGNORE INTO analysis_description (analysis_id, display_label, description, displayable, web_data) VALUES (?,?,?,?,?)");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 $sth->bind_param(1,$a->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 $sth->bind_param(2,$a->display_label(),SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 $sth->bind_param(3,$a->description,SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 $sth->bind_param(4,$a->displayable,SQL_TINYINT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 #my $web_data = $self->dump_data($a->web_data());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 $sth->bind_param(5,$web_data,SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 $sth->execute();
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 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 # the logic_name cache needs to be re-updated now, since we may have just
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 # changed the logic_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 $self->fetch_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 =head2 remove
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 Arg [1] : Bio::EnsEMBL::Analysis $anal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 Example : $adaptor->remove($anal)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 Description: Removes this analysis from the database. This is not really
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 safe to execute in a multi process environment, so programs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 should not remove analysis while out on the farm.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 Exceptions : thrown if $anal arg is not an analysis object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 sub remove {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 my ($self, $analysis) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 if (!defined $analysis || !ref $analysis) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 throw("called remove on AnalysisAdaptor with a [$analysis]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 if(!$analysis->is_stored($self->db())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 my $sth = $self->prepare("DELETE FROM analysis WHERE analysis_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 $sth->bind_param(1,$analysis->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 $sth = $self->prepare("DELETE FROM analysis_description WHERE analysis_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 $sth->execute($analysis->dbID());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 # remove this analysis from the cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 delete $self->{'_cache'}->{$analysis->dbID()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 delete $self->{'_logic_name_cache'}->{lc($analysis->logic_name)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 # unset the adaptor and dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 $analysis->dbID(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 $analysis->adaptor(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 =head2 exists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 Arg [1] : Bio::EnsEMBL::Analysis $anal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 Example : if($adaptor->exists($anal)) #do something
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 Description: Tests whether this Analysis already exists in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 by checking first if the adaptor and dbID are set and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 secondly by whether it is in this adaptors internal cache.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 Note that this will not actually check the database and will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 not find and analysis which were recently added by other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 processes. You are better off simply trying to store an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 analysis which will reliably ensure that it is not stored twice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 in the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 Returntype : int dbID if analysis is found, otherwise returns undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 Exceptions : thrown if $anal arg is not an analysis object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Caller : store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 sub exists {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 my ($self,$anal) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 if(!ref($anal) || !$anal->isa("Bio::EnsEMBL::Analysis")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 throw("Object is not a Bio::EnsEMBL::Analysis");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 #if this analysis is stored in this db already return its dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 if($anal->is_stored($self->db())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 return $anal->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 #this analysis object is not stored but one exactly like it may have been
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 foreach my $cacheId (keys %{$self->{_cache}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 if ($self->{_cache}->{$cacheId}->compare($anal) >= 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 # $anal->dbID( $cacheId );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 # $anal->adaptor( $self );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 return $cacheId;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 #no analysis like this one exists in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 =head2 _objFromHashref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 Arg [1] : hashref $rowHash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 Description: Private helper function generates an Analysis object from a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 mysql row hash reference.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 Returntype : Bio::EnsEMBL::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 Caller : Bio::EnsEMBL::DBSQL::AnalsisAdaptor::fetch_* methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 sub _objFromHashref {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 my $h = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 my $web_data = $h->{web_data} ? $self->get_dumped_data($h->{web_data}) : '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 return Bio::EnsEMBL::Analysis->new_fast({
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 dbID => $h->{analysis_id},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 adaptor => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 _db => $h->{db},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 _db_file => $h->{db_file},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 _db_version => $h->{db_version},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 _program => $h->{program},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 _program_version => $h->{program_version},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 _program_file => $h->{program_file},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 _gff_source => $h->{gff_source},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 _gff_feature => $h->{gff_feature},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 _module => $h->{module},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 _module_version => $h->{module_version},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 _parameters => $h->{parameters},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 _created => $h->{created},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 _logic_name => $h->{logic_name},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 _description => $h->{description},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 _display_label => $h->{display_label},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 _displayable => $h->{displayable},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 _web_data => $web_data,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 1;