0
|
1 #
|
|
2 # $Id: UpdateableSeqI.pm,v 1.6 2002/12/01 00:05:19 jason Exp $
|
|
3 #
|
|
4 # BioPerl module for Bio::DB::UpdateableSeqI
|
|
5 #
|
|
6 # Cared for by Jason Stajich <jason@bioperl.org>
|
|
7 #
|
|
8 # Copyright Jason Stajich
|
|
9 #
|
|
10 # You may distribute this module under the same terms as perl itself
|
|
11 #
|
|
12 # _history
|
|
13 # June 18, 2000 - module begun
|
|
14 #
|
|
15 # POD Doc - main docs before code
|
|
16
|
|
17 =head1 NAME
|
|
18
|
|
19 Bio::DB::UpdateableSeqI - An interface for writing to a database of sequences.
|
|
20
|
|
21 =head1 SYNOPSIS
|
|
22
|
|
23 # get a Bio::DB::UpdateableSeqI somehow
|
|
24 eval {
|
|
25 my ( @updatedseqs, @newseqs, @deadseqs);
|
|
26 my $seq = $db->get_Seq_by_id('ROA1_HUMAN');
|
|
27 $seq->desc('a new description');
|
|
28
|
|
29 push @updatedseqs, $seq;
|
|
30
|
|
31 $db->write_seq(\@updatedseqs, \@newseqs, \@deadseqs);
|
|
32 };
|
|
33 if( $@ ) {
|
|
34 print STDERR "an error when trying to write seq : $@\n";
|
|
35 }
|
|
36
|
|
37 =head1 DESCRIPTION
|
|
38
|
|
39 This module seeks to provide a simple method for pushing sequence changes
|
|
40 back to a Sequence Database - which can be an SQL compliant database, a file
|
|
41 based database, AceDB, etc.
|
|
42
|
|
43 =head1 AUTHOR
|
|
44
|
|
45 Jason Stajich E<lt>jason@bioperl.orgE<gt>
|
|
46
|
|
47 =head2 Reporting Bugs
|
|
48
|
|
49 Report bugs to the Bioperl bug tracking system to help us keep track
|
|
50 the bugs and their resolution. Bug reports can be submitted via email
|
|
51 or the web:
|
|
52
|
|
53 bioperl-bugs@bioperl.org
|
|
54 http://bugzilla.bioperl.org/
|
|
55
|
|
56 =head1 APPENDIX
|
|
57
|
|
58 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
|
|
59
|
|
60 =cut
|
|
61
|
|
62 #Lets start some code
|
|
63
|
|
64 package Bio::DB::UpdateableSeqI;
|
|
65
|
|
66 use strict;
|
|
67
|
|
68 use vars qw( @ISA );
|
|
69
|
|
70 use Bio::DB::SeqI;
|
|
71
|
|
72 @ISA = qw(Bio::DB::SeqI);
|
|
73
|
|
74 =head2 write_seq
|
|
75
|
|
76 Title : write_seq
|
|
77 Usage : write_seq(\@updatedseqs, \@addedseqs, \@deadseqs)
|
|
78 Function: updates sequences in first array,
|
|
79 adds sequences in the second array,
|
|
80 and removes sequences in the third array.
|
|
81 Example :
|
|
82 Returns :
|
|
83 Args : arrays of sequence objects that must be obtained from
|
|
84 Bio::DB::UpdateableSeqI.
|
|
85
|
|
86 =cut
|
|
87
|
|
88 sub write_seq {
|
|
89 my ($self) = @_;
|
|
90
|
|
91 $self->throw("Abstract database call of write_seq. Your database has not implemented this method!");
|
|
92
|
|
93 }
|
|
94
|
|
95 =head2 _add_seq
|
|
96
|
|
97 Title : _add_seq
|
|
98 Usage : _add_seq($seq)
|
|
99 Function: Adds a new sequence
|
|
100 Example :
|
|
101 Returns : will throw an exception if
|
|
102 sequences accession number already exists
|
|
103 Args : a new seq object - should have an accession number
|
|
104
|
|
105 =cut
|
|
106
|
|
107 sub _add_seq {
|
|
108 my ($self ) = @_;
|
|
109
|
|
110 $self->throw("Abstract database call of _add_seq. Your database has not implemented this method!");
|
|
111
|
|
112 }
|
|
113
|
|
114 =head2 _remove_seq
|
|
115
|
|
116 Title : _remove_seq
|
|
117 Usage : _remove_seq($seq)
|
|
118 Function: Removes an existing sequence
|
|
119 Example :
|
|
120 Returns : will throw an exception if
|
|
121 sequence does not exists for the primary_id
|
|
122 Args : a seq object that was retrieved from Bio::DB::UpdateableSeqI
|
|
123
|
|
124 =cut
|
|
125
|
|
126 sub _remove_seq {
|
|
127 my ($self) = @_;
|
|
128
|
|
129 $self->throw("Abstract database call of _remove_seq. Your database has not implemented this method!");
|
|
130
|
|
131 }
|
|
132
|
|
133 =head2 _update_seq
|
|
134
|
|
135 Title : _update_seq
|
|
136 Usage : _update_seq($seq)
|
|
137 Function: Updates a sequence
|
|
138 Example :
|
|
139 Returns : will throw an exception if
|
|
140 sequence is out of sync from expected val.
|
|
141 Args : a seq object that was retrieved from Bio::DB::UpdateableSeqI
|
|
142
|
|
143 =cut
|
|
144
|
|
145 sub _update_seq {
|
|
146 my ($self) = @_;
|
|
147
|
|
148 $self->throw("Abstract database call of _update_seq. Your database has not implemented this method!");
|
|
149
|
|
150 }
|
|
151
|
|
152
|
|
153 =head1 Methods inherieted from Bio::DB::RandomAccessI
|
|
154
|
|
155 =head2 get_Seq_by_id
|
|
156
|
|
157 Title : get_Seq_by_id
|
|
158 Usage : $seq = $db->get_Seq_by_id('ROA1_HUMAN')
|
|
159 Function: Gets a Bio::Seq object by its name
|
|
160 Returns : a Bio::Seq object
|
|
161 Args : the id (as a string) of a sequence
|
|
162 Throws : "id does not exist" exception
|
|
163
|
|
164
|
|
165 =cut
|
|
166
|
|
167 =head2 get_Seq_by_acc
|
|
168
|
|
169 Title : get_Seq_by_acc
|
|
170 Usage : $seq = $db->get_Seq_by_acc('X77802');
|
|
171 Function: Gets a Bio::Seq object by accession number
|
|
172 Returns : A Bio::Seq object
|
|
173 Args : accession number (as a string)
|
|
174 Throws : "acc does not exist" exception
|
|
175
|
|
176
|
|
177 =cut
|
|
178
|
|
179 =head1 Methods inheirited from Bio::DB::SeqI
|
|
180
|
|
181 =head2 get_PrimarySeq_stream
|
|
182
|
|
183 Title : get_PrimarySeq_stream
|
|
184 Usage : $stream = get_PrimarySeq_stream
|
|
185 Function: Makes a Bio::DB::SeqStreamI compliant object
|
|
186 which provides a single method, next_primary_seq
|
|
187 Returns : Bio::DB::SeqStreamI
|
|
188 Args : none
|
|
189
|
|
190
|
|
191 =cut
|
|
192
|
|
193 =head2 get_all_primary_ids
|
|
194
|
|
195 Title : get_all_ids
|
|
196 Usage : @ids = $seqdb->get_all_primary_ids()
|
|
197 Function: gives an array of all the primary_ids of the
|
|
198 sequence objects in the database. These
|
|
199 maybe ids (display style) or accession numbers
|
|
200 or something else completely different - they
|
|
201 *are not* meaningful outside of this database
|
|
202 implementation.
|
|
203 Example :
|
|
204 Returns : an array of strings
|
|
205 Args : none
|
|
206
|
|
207
|
|
208 =cut
|
|
209
|
|
210 =head2 get_Seq_by_primary_id
|
|
211
|
|
212 Title : get_Seq_by_primary_id
|
|
213 Usage : $seq = $db->get_Seq_by_primary_id($primary_id_string);
|
|
214 Function: Gets a Bio::Seq object by the primary id. The primary
|
|
215 id in these cases has to come from $db->get_all_primary_ids.
|
|
216 There is no other way to get (or guess) the primary_ids
|
|
217 in a database.
|
|
218
|
|
219 The other possibility is to get Bio::PrimarySeqI objects
|
|
220 via the get_PrimarySeq_stream and the primary_id field
|
|
221 on these objects are specified as the ids to use here.
|
|
222 Returns : A Bio::Seq object
|
|
223 Args : accession number (as a string)
|
|
224 Throws : "acc does not exist" exception
|
|
225
|
|
226
|
|
227 =cut
|
|
228
|
|
229 1;
|
|
230
|
|
231
|
|
232
|