annotate variant_effect_predictor/Bio/DB/InMemoryCache.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 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 Bio::DB::InMemoryCache - Abstract interface for a sequence database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 $cachedb = Bio::DB::InMemoryCache->new( -seqdb => $real_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 -number => 1000);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # get a database object somehow using a concrete class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 $seq = $cachedb->get_Seq_by_id('ROA1_HUMAN');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # $seq is a Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 This is a memory cache system which saves the objects returned by Bio::DB::RandomAccessI in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 memory to a hard limit of sequences.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 Ewan Birney
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 package Bio::DB::InMemoryCache;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 use Bio::DB::SeqI;
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 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 use Bio::Seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 @ISA = qw(Bio::Root::Root Bio::DB::SeqI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 my ($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 my $self = Bio::Root::Root->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 bless $self,$class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 my ($seqdb,$number,$agr) = $self->_rearrange([qw(SEQDB NUMBER AGRESSION)],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 if( !defined $seqdb || !ref $seqdb || !$seqdb->isa('Bio::DB::RandomAccessI') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 $self->throw("Must be a randomaccess database not a [$seqdb]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 if( !defined $number ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 $number = 1000;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 $self->seqdb($seqdb);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 $self->number($number);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 $self->agr($agr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 # we consider acc as the primary id here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 $self->{'_cache_number_hash'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 $self->{'_cache_id_hash'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 $self->{'_cache_acc_hash'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 $self->{'_cache_number'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 =head2 get_Seq_by_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Title : get_Seq_by_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Usage : $seq = $db->get_Seq_by_id('ROA1_HUMAN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Function: Gets a Bio::Seq object by its name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 Returns : a Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 Args : the id (as a string) of a sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Throws : "id does not exist" exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 sub get_Seq_by_id{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my ($self,$id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 if( defined $self->{'_cache_id_hash'}->{$id} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my $acc = $self->{'_cache_id_hash'}->{$id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my $seq = $self->{'_cache_acc_hash'}->{$acc};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 $self->{'_cache_number_hash'}->{$seq->accession} = $self->{'_cache_number'}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 return $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 return $self->_load_Seq('id',$id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 =head2 get_Seq_by_acc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Title : get_Seq_by_acc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 Usage : $seq = $db->get_Seq_by_acc('X77802');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 Function: Gets a Bio::Seq object by accession number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Returns : A Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Args : accession number (as a string)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Throws : "acc does not exist" exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 sub get_Seq_by_acc{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 my ($self,$acc) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 #print STDERR "In cache get for $acc\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 if( defined $self->{'_cache_acc_hash'}->{$acc} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 #print STDERR "Returning cached $acc\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 my $seq = $self->{'_cache_acc_hash'}->{$acc};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $self->{'_cache_number_hash'}->{$seq->accession} = $self->{'_cache_number'}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 return $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 return $self->_load_Seq('acc',$acc);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 sub number {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my ($self, $number) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 if ($number) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 $self->{'number'} = $number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 return $self->{'number'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 sub seqdb {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 my ($self, $seqdb) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 if ($seqdb) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $self->{'seqdb'} = $seqdb;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 return $self->{'seqdb'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 sub agr {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 my ($self, $agr) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 if ($agr) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 $self->{'agr'} = $agr;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 return $self->{'agr'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 sub _load_Seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 my ($self,$type,$id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 my $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 if( $type eq 'id') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 $seq = $self->seqdb->get_Seq_by_id($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }elsif ( $type eq 'acc' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 $seq = $self->seqdb->get_Seq_by_acc($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 $self->throw("Bad internal error. Don't understand $type");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 if( $self->agr() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 #print STDERR "Pulling out into memory\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 my $newseq = Bio::Seq->new( -display_id => $seq->display_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 -accession_number => $seq->accession,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 -seq => $seq->seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 -desc => $seq->desc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 if( $self->agr() == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 foreach my $sf ( $seq->top_SeqFeatures() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $newseq->add_SeqFeature($sf);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $newseq->annotation($seq->annotation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 $seq = $newseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 if( $self->_number_free < 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 # remove the latest thing from the hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 my @accs = sort { $self->{'_cache_number_hash'}->{$a} <=> $self->{'_cache_number_hash'}->{$b} } keys %{$self->{'_cache_number_hash'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my $acc = shift @accs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 # remove this guy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my $seq = $self->{'_cache_acc_hash'}->{$acc};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 delete $self->{'_cache_number_hash'}->{$acc};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 delete $self->{'_cache_id_hash'}->{$seq->id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 delete $self->{'_cache_acc_hash'}->{$acc};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 # up the number, register this sequence into the hash.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 $self->{'_cache_id_hash'}->{$seq->id} = $seq->accession;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $self->{'_cache_acc_hash'}->{$seq->accession} = $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->{'_cache_number_hash'}->{$seq->accession} = $self->{'_cache_number'}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 return $seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 sub _number_free {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 return $self->number - scalar(keys %{$self->{'_cache_number_hash'}});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
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 =head2 get_Seq_by_version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 Title : get_Seq_by_version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Usage : $seq = $db->get_Seq_by_version('X77802.1');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Function: Gets a Bio::Seq object by sequence version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Returns : A Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Args : accession.version (as a string)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Throws : "acc.version does not exist" exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 sub get_Seq_by_version{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 $self->throw("Not implemented it");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 ## End of Package
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 1;