annotate variant_effect_predictor/Bio/EnsEMBL/Storable.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::Storable
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 my $dbID = $storable_object->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 my $adaptor = $storable_object->adaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 if ( $storable_object->is_stored($db_adaptor) ) { ... }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 This is a storable base class. All objects which are storable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 in the database should inherit from this class. It provides two
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 getter/setters: dbID() adaptor(). And a is_stored() method that can be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 used to determine if an object is already stored in a database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 package Bio::EnsEMBL::Storable;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use Bio::EnsEMBL::Utils::Exception qw(throw warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use Bio::EnsEMBL::Utils::Scalar qw(assert_ref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 use Scalar::Util qw(weaken);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 Arg [-ADAPTOR] : Bio::EnsEMBL::DBSQL::BaseAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 Arg [-dbID] : database internal id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 Caller : internal calls
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 Description : create a new Storable object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 Returntype : Bio::EnsEMBL::Storable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Exceptions : Adaptor not a Bio::EnsEMBL::DBSQL::BaseAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 my ($adaptor, $dbID) = rearrange(['ADAPTOR', 'dbID'],@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 if($adaptor) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 if(!ref($adaptor) || !$adaptor->isa('Bio::EnsEMBL::DBSQL::BaseAdaptor')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 throw('-ADAPTOR argument must be a Bio::EnsEMBL::DBSQL::BaseAdaptor');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 my $self = bless({'dbID' => $dbID}, $class);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 $self->adaptor($adaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 =head2 dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 Arg [1] : int $dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 Description: getter/setter for the database internal id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 Caller : general, set from adaptor on store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 sub dbID {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 $self->{'dbID'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 return $self->{'dbID'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 =head2 adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Arg [1] : Bio::EnsEMBL::DBSQL::BaseAdaptor $adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Description: get/set for this objects Adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Returntype : Bio::EnsEMBL::DBSQL::BaseAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Caller : general, set from adaptor on store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 sub adaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my ($self, $adaptor) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 if(scalar(@_) > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 if(defined $adaptor) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 assert_ref($adaptor, 'Bio::EnsEMBL::DBSQL::BaseAdaptor', 'adaptor');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $self->{adaptor} = $adaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 weaken($self->{adaptor});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $self->{adaptor} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 return $self->{adaptor}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 =head2 is_stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Arg [1] : Bio::EnsEMBL::DBSQL::DBConnection
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 : or Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 Example : do_something if($object->is_stored($db));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 Description: Returns true if this object is stored in the provided database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 This works under the assumption that if the adaptor and dbID are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 set and the database of the adaptor shares the port, dbname and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 hostname with the provided database, this object is stored in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 that database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Returntype : 1 or 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Exceptions : throw if dbID is set but adaptor is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 throw if adaptor is set but dbID is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 throw if incorrect argument is passed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Caller : store methods
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 my $message_only_once =1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 sub is_stored {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my $db = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 if($db and $db->isa('Bio::EnsEMBL::DBSQL::DBAdaptor')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 $db = $db->dbc();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 if(!$db || !ref($db) || !$db->isa('Bio::EnsEMBL::DBSQL::DBConnection')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 throw('db argument must be a Bio::EnsEMBL::DBSQL::DBConnection');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 my $adaptor = $self->{'adaptor'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 my $dbID = $self->{'dbID'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 if($dbID && !$adaptor) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 if($message_only_once){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 warning("Storable object has a dbID but not an adaptor.\n" .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 'Storable objects must have neither OR both.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $message_only_once = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 if($adaptor && !$dbID) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 if($message_only_once){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 warning("Storable object has an adaptor but not a dbID.\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 "Storable objects must have neither OR both.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 $message_only_once = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 return 0 if (!$adaptor && !$dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 my $cur_db = $adaptor->dbc();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 # Databases are the same if they share the same port, host and username
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 if ( $db->port() eq $cur_db->port()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 && $db->host() eq $cur_db->host()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 && $db->dbname() eq $cur_db->dbname() )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 sub get_all_DAS_Features{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my ($self, $slice) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $self->{_das_features} ||= {}; # Cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 $self->{_das_styles} ||= {}; # Cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 $self->{_das_segments} ||= {}; # Cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 my %das_features;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 my %das_styles;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 my %das_segments;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 foreach my $dasfact( @{$self->get_all_DASFactories} ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 my $dsn = $dasfact->adaptor->dsn;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my $name = $dasfact->adaptor->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my $url = $dasfact->adaptor->url;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 # Construct a cache key : SOURCE_URL/TYPE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 # Need the type to handle sources that serve multiple types of features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 my ($type) = ref($dasfact->adaptor->mapping) eq 'ARRAY' ? @{$dasfact->adaptor->mapping} : $dasfact->adaptor->mapping;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 $type ||=$dasfact->adaptor->type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 my $key = join('/', $name, $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 if( $self->{_das_features}->{$key} ){ # Use cached
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $das_features{$name} = $self->{_das_features}->{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $das_styles{$name} = $self->{_das_styles}->{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $das_segments{$name} = $self->{_das_segments}->{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 } else { # Get fresh data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 my ($featref, $styleref, $segref) = ($type =~ /^ensembl_location/) ? ($dasfact->fetch_all_Features( $slice, $type )) : $dasfact->fetch_all_by_ID( $self );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $self->{_das_features}->{$key} = $featref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $self->{_das_styles}->{$key} = $styleref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $self->{_das_segments}->{$key} = $segref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 $das_features{$name} = $featref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $das_styles{$name} = $styleref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $das_segments{$name} = $segref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 return (\%das_features, \%das_styles, \%das_segments);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 1;