annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/ProteinFeatureAdaptor.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::ProteinFeatureAdaptor
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 $pfa = Bio::EnsEMBL::Registry->get_adaptor( "human", "core",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 "proteinfeature" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 my @prot_feats = @{ $pfa->fetch_all_by_translation_id(1231) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 my $prot_feat = $pfa->fetch_by_dbID(523);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 package Bio::EnsEMBL::DBSQL::ProteinFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 use Bio::EnsEMBL::DBSQL::BaseAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 use Bio::EnsEMBL::ProteinFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 use Bio::EnsEMBL::Utils::Exception qw(throw deprecate warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 @ISA = qw(Bio::EnsEMBL::DBSQL::BaseAdaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 =head2 fetch_all_by_translation_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 Arg [1] : int $transl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 the internal id of the translation corresponding to protein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 whose features are desired
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 Example : @prot_feats =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 @{ $prot_feat_adaptor->fetch_by_translation_id(1234) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 Description: Gets all protein features present on a peptide using the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 translations internal identifier. This method will return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 an unsorted list of all protein_feature types. The feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 types may be distinguished using the logic name attribute of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 the attached analysis objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Returntype : listref of Bio::EnsEMBL::ProteinFeatures
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 sub fetch_all_by_translation_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 my($self,$translation_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 if(!$translation_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 throw("translation_id argument is required\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 my @features;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 my $analysis_adaptor = $self->db()->get_AnalysisAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 my $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 ("SELECT protein_feature_id, p.seq_start, p.seq_end, p.analysis_id, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 " p.score, p.perc_ident, p.evalue, p.hit_start, p.hit_end, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 " p.hit_name, x.display_label, i.interpro_ac " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 "FROM protein_feature p " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 "LEFT JOIN interpro AS i ON p.hit_name = i.id " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 "LEFT JOIN xref AS x ON x.dbprimary_acc = i.interpro_ac " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 "WHERE p.translation_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 $sth->bind_param(1,$translation_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 while( my $row = $sth->fetchrow_arrayref) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my ($dbID, $start, $end, $analysisid, $score, $perc_id, $evalue, $hstart,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 $hend,$hid,$desc, $interpro_ac) = @$row;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $analysis = $analysis_adaptor->fetch_by_dbID($analysisid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 if(!$analysis) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 warning("Analysis with dbID=$analysisid does not exist\n" .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 "but is referenced by ProteinFeature $dbID");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 my $feat = Bio::EnsEMBL::ProteinFeature->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 (-DBID => $dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 -ADAPTOR => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 -SEQNAME => $translation_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 -START => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 -END => $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 -ANALYSIS => $analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 -PERCENT_ID => $perc_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 -P_VALUE => $evalue,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 -SCORE => $score,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 -HSTART => $hstart,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 -HEND => $hend,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 -HSEQNAME => $hid,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 -IDESC => $desc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 -INTERPRO_AC => $interpro_ac);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 push(@features,$feat);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 return \@features;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 =head2 fetch_by_dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Arg [1] : int $protfeat_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 the unique database identifier of the protein feature to obtain
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Example : my $feature = $prot_feat_adaptor->fetch_by_dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Description: Obtains a protein feature object via its unique id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Returntype : Bio::EnsEMBL::ProteinFeauture
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 sub fetch_by_dbID{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my ($self,$protfeat_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my $sth = $self->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 "SELECT p.seq_start, p.seq_end, p.analysis_id, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 " p.score, p.perc_ident, p.evalue, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 " p.hit_start, p.hit_end, p.hit_name, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 " x.display_label, i.interpro_ac " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 "FROM protein_feature p " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 "LEFT JOIN interpro AS i ON p.hit_name = i.id " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 "LEFT JOIN xref AS x ON x.dbprimary_acc = i.interpro_ac " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 "WHERE p.protein_feature_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $sth->bind_param(1,$protfeat_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 my $res = $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 if($sth->rows == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my ($start, $end, $analysis_id, $score, $perc_ident, $pvalue, $hstart,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 $hend, $hseqname, $idesc, $interpro_ac) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my $analysis = $self->db->get_AnalysisAdaptor->fetch_by_dbID($analysis_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 return Bio::EnsEMBL::ProteinFeature->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 (-ADAPTOR => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 -DBID => $protfeat_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 -START => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 -END => $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 -HSTART => $hstart,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 -HEND => $hend,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 -HSEQNAME => $hseqname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 -ANALYSIS => $analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 -SCORE => $score,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 -P_VALUE => $pvalue,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 -PERCENT_ID => $perc_ident,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 -IDESC => $idesc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 -INTERPRO_AC => $interpro_ac);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Arg [1] : Bio::EnsEMBL::ProteinFeature $feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 The feature to be stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Arg [2] : int $translation_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 Example : $protein_feature_adaptor->store($protein_feature);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 Description: Stores a protein feature in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 Returntype : int - the new internal identifier of the stored protein feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Exceptions : thrown if arg is not a Bio::EnsEMBL:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Caller : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my ($self,$feature, $translation_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 if(!ref($feature) || !$feature->isa('Bio::EnsEMBL::ProteinFeature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 throw("ProteinFeature argument is required");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 if(!$translation_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 deprecate("Calling ProteinFeatureAdaptor without a translation_id is " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 "deprecated. Pass a translation_id argument rather than " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 "setting the ProteinFeature seqname to be the translation " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 "id");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $translation_id = $feature->seqname();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $db = $self->db();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 if($feature->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 warning("ProteinFeature " . $feature->dbID() . " is already stored in " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 "this database - not storing again");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 my $analysis = $feature->analysis();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 if (!defined($analysis)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 throw("Feature doesn't have analysis. Can't write to database");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 if(!$analysis->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $db->get_AnalysisAdaptor->store($analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 my $sth =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $self->prepare("INSERT INTO protein_feature " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 " SET translation_id = ?, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 " seq_start = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 " seq_end = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 " analysis_id = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 " hit_start = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 " hit_end = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 " hit_name = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 " score = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 " perc_ident = ?, ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 " evalue = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 $sth->bind_param(1,$translation_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 $sth->bind_param(2,$feature->start,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $sth->bind_param(3,$feature->end,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 $sth->bind_param(4,$analysis->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $sth->bind_param(5,$feature->hstart,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 $sth->bind_param(6,$feature->hend,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $sth->bind_param(7,$feature->hseqname,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 $sth->bind_param(8,$feature->score,SQL_DOUBLE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $sth->bind_param(9,$feature->percent_id,SQL_FLOAT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $sth->bind_param(10,$feature->p_value,SQL_DOUBLE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 my $dbID = $sth->{'mysql_insertid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 $feature->adaptor($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 $feature->dbID($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 return $dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 sub fetch_by_translation_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 deprecate("Use fetch_all_by_translation_id instead.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 fetch_all_by_translation_id(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 sub fetch_all_by_feature_and_dbID {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 my $feature = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 my $translation_id = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 deprecate("Use fetch_all_by_translation_id instead.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 print STDERR "translation_id = $translation_id feature = $feature\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 my $features = $self->fetch_all_by_translation_id($translation_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 my @out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 foreach my $f (@$features) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 my $logic_name = lc($f->analysis->logic_name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 print STDERR "LOGIC_NAME = $logic_name | FEATURE = $feature\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 push(@out, $f) if($logic_name eq lc($feature));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 return \@out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 sub save {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 my ($self, $features) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 my @feats = @$features;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 throw("Must call save with features") if( scalar(@feats) == 0 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 # my @tabs = $self->_tables;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 # my ($tablename) = @{$tabs[0]};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 my $tablename = 'protein_feature';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my $db = $self->db();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 my $analysis_adaptor = $db->get_AnalysisAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 my $sql = qq{INSERT INTO $tablename (translation_id, seq_start, seq_end, hit_start, hit_end, hit_name, analysis_id, score, evalue, perc_ident, external_data) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 my $sth = $self->prepare($sql);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 foreach my $feat ( @feats ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 if( !ref $feat || !$feat->isa("Bio::EnsEMBL::ProteinFeature") ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 throw("feature must be a Bio::EnsEMBL::ProteinFeature,". " not a [".ref($feat)."].");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 if($feat->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 warning("ProteinFeature [".$feat->dbID."] is already stored" .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 " in this database.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 my $hstart = defined $feat->hstart ? $feat->hstart : $feat->start ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 my $hend = defined $feat->hend ? $feat->hend : $feat->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 if(!defined($feat->analysis)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 throw("An analysis must be attached to the features to be stored.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 #store the analysis if it has not been stored yet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 if(!$feat->analysis->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $analysis_adaptor->store($feat->analysis());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 my $original = $feat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 my $extra_data = $feat->extra_data ? $self->dump_data($feat->extra_data) : '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 $sth->bind_param(1,$feat->translation_id,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 $sth->bind_param(2,$feat->start,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $sth->bind_param(3,$feat->end,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 $sth->bind_param(4,$hstart,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 $sth->bind_param(5,$hend,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 $sth->bind_param(6,$feat->hseqname,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 $sth->bind_param(7,$feat->analysis->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 $sth->bind_param(8,$feat->score,SQL_DOUBLE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 $sth->bind_param(9,$feat->p_value,SQL_DOUBLE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 $sth->bind_param(10,$feat->percent_id,SQL_FLOAT);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 $sth->bind_param(11,$extra_data,SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 $original->dbID($sth->{'mysql_insertid'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 $original->adaptor($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371