Bio::Tools::CodonTable::is_start_codon: check in case of ambiguous codons (#266)
[bioperl-live.git] / lib / Bio / Seq / MetaI.pm
blob23faae2e863b611a821eedf5ccd09bbf75c9b989
2 # BioPerl module for Bio::Seq::MetaI
4 # Please direct questions and support issues to <bioperl-l@bioperl.org>
6 # Cared for by Heikki Lehvaslaiho
8 # Copyright Heikki Lehvaslaiho
10 # You may distribute this module under the same terms as perl itself
12 # POD documentation - main docs before the code
14 =head1 NAME
16 Bio::Seq::MetaI - Interface for sequence objects with residue-based
17 meta information
19 =head1 SYNOPSIS
21 # get a Bio::Seq::MetaI compliant object somehow
23 # to test this is a meta seq object
24 $obj->isa("Bio::Seq::MetaI")
25 || $obj->throw("$obj not a Bio::Seq::MetaI");
27 # accessors
28 $string = $obj->meta;
29 $string = $obj->meta_text;
30 $substring = $obj->submeta(12,50);
31 $unique_key = $obj->accession_number();
34 =head1 DESCRIPTION
36 This class defines an abstract interface for basic residue-based meta
37 information. Examples of this kind of meta data are secondary
38 structures (RNA and protein), protein hydrophobicity assignments, or
39 other alternative alphabets for polypeptides, sequence quality data
40 and nucleotide alignments with translations.
42 The length of the meta data sequence is not dependent on the amount of
43 the meta information. The meta information always covers all the
44 residues, but a blank value is used to denote unavailable
45 information. If necessary the implementation quietly truncates or
46 extends meta information with blank values. Definition of blank is
47 implementation dependent. Gaps in MSAs should not have meta
48 information.
50 At this point a residue in a sequence object can have only one meta
51 value. If you need more, use multiple copies of the sequence object.
53 Meta data storage can be implemented in various ways, e.g: string,
54 array of scalars, array of hashes, array of objects.
56 If the implementation so chooses, there can be more then one meta
57 values associated to each residue. See L<named_meta> and
58 L<names_submeta>. Note that use of arbitrary names is very prone to
59 typos leading to creation of additional copies of meta data sets.
61 Bio::Seq::Meta provides basic, pure perl implementation of sequences
62 with meta information. See L<Bio::Seq::Meta>. Application specific
63 implementations will override and add to these methods.
65 =head2 Method naming
67 Character based meta data is read and set by method meta() and its
68 variants. These are the suffixes and prefixes used in the variants:
70 [named_] [sub] meta [_text]
72 =over 3
74 =item _text
76 Suffix B<_text> guaranties that output is a string. Note that it does
77 not limit the input.
79 =item sub
81 Prefix B<sub>, like in subseq(), means that the method applies to sub
82 region of the sequence range and takes start and end as arguments.
83 Unlike subseq(), these methods are able to set values. If the range
84 is not defined, it defaults to the complete sequence.
86 =item named_
88 Prefix B<named_> in method names allows the used to attach multiple
89 meta strings to one sequence by explicitly naming them. The name is
90 always the first argument to the method. The "unnamed" methods use the
91 class wide default name for the meta data and are thus special cases
92 "named" methods.
94 Note that internally names are keys in a hash and any misspelling of a
95 name will silently store the data under a wrong name. The used names
96 (keys) can be retrieved using method meta_names(). See L<meta_names>.
98 =back
101 =head1 SEE ALSO
103 L<Bio::Seq::Meta>,
104 L<Bio::Seq::Meta::Array>,
105 L<Bio::Seq::EncodedSeq>,
106 L<Bio::Tools::OddCodes>,
107 L<Bio::Seq::Quality>
110 =head1 FEEDBACK
112 =head2 Mailing Lists
114 User feedback is an integral part of the evolution of this and other
115 Bioperl modules. Send your comments and suggestions preferably to one
116 of the Bioperl mailing lists. Your participation is much appreciated.
118 bioperl-l@bioperl.org - General discussion
119 http://bioperl.org/wiki/Mailing_lists - About the mailing lists
121 =head2 Support
123 Please direct usage questions or support issues to the mailing list:
125 I<bioperl-l@bioperl.org>
127 rather than to the module maintainer directly. Many experienced and
128 reponsive experts will be able look at the problem and quickly
129 address it. Please include a thorough description of the problem
130 with code and data examples if at all possible.
132 =head2 Reporting Bugs
134 Report bugs to the Bioperl bug tracking system to help us keep track
135 the bugs and their resolution. Bug reports can be submitted via the
136 web:
138 https://github.com/bioperl/bioperl-live/issues
140 =head1 AUTHOR - Heikki Lehvaslaiho
142 Email heikki-at-bioperl-dot-org
144 =head1 CONTRIBUTORS
146 Chad Matsalla, bioinformatics@dieselwurks.com;
147 Aaron Mackey, amackey@virginia.edu;
148 Peter Schattner schattner@alum.mit.edu;
149 Richard Adams, Richard.Adams@ed.ac.uk
151 =head1 APPENDIX
153 The rest of the documentation details each of the object methods.
154 Internal methods are usually preceded with a _
156 =cut
159 # Let the code begin...
162 package Bio::Seq::MetaI;
164 use strict;
166 use base qw(Bio::Root::RootI);
168 =head2 meta
170 Title : meta
171 Usage : $meta_values = $obj->meta($values_string);
172 Function:
174 Get and set method for the unnamed meta data starting from
175 residue position one. Since it is dependent on the length
176 of the sequence, it needs to be manipulated after the
177 sequence.
179 The implementation may choose to accept argument values in
180 a string or in an array (reference) or in a hash
181 (reference).
183 The return value may be a string or an array reference,
184 depending on the implementation. If in doubt, use meta_text()
185 which is a variant guarantied to return a string. See
186 L<meta_text>.
188 The length of the returned value always matches the length
189 of the sequence.
191 Returns : A reference to an array or a string
192 Args : new value, optional
194 =cut
196 sub meta { shift->throw_not_implemented }
198 =head2 meta_text
200 Title : meta_text()
201 Usage : $meta_values = $obj->meta_text($values_arrayref);
202 Function: Variant of meta() guarantied to return a textual
203 representation of the meta data. For details, see L<meta>.
204 Returns : a string
205 Args : new value, optional
207 =cut
209 sub meta_text { shift->throw_not_implemented }
211 =head2 named_meta
213 Title : named_meta()
214 Usage : $meta_values = $obj->named_meta($name, $values_arrayref);
215 Function: A more general version of meta(). Each meta data set needs
216 to be named. See also L<meta_names>.
217 Returns : a string
218 Args : scalar, name of the meta data set
219 new value, optional
221 =cut
223 sub named_meta { shift->throw_not_implemented }
225 =head2 named_meta_text
227 Title : named_meta_text()
228 Usage : $meta_values = $obj->named_meta_text($name, $values_arrayref);
229 Function: Variant of named_meta() guarantied to return a textual
230 representation of the named meta data.
231 For details, see L<meta>.
232 Returns : a string
233 Args : scalar, name of the meta data set
234 new value, optional
236 =cut
238 sub named_meta_text { shift->throw_not_implemented }
240 =head2 submeta
242 Title : submeta
243 Usage : $subset_of_meta_values = $obj->submeta(10, 20, $value_string);
244 $subset_of_meta_values = $obj->submeta(10, undef, $value_string);
245 Function:
247 Get and set method for meta data for subsequences.
249 Numbering starts from 1 and the number is inclusive, ie 1-2
250 are the first two residue of the sequence. Start cannot be
251 larger than end but can be equal.
253 If the second argument is missing the returned values
254 should extend to the end of the sequence.
256 If implementation tries to set values beyond the current
257 sequence, they should be ignored.
259 The return value may be a string or an array reference,
260 depending on the implementation. If in doubt, use
261 submeta_text() which is a variant guarantied to return a
262 string. See L<submeta_text>.
264 Returns : A reference to an array or a string
265 Args : integer, start position, optional
266 integer, end position, optional
267 new value, optional
269 =cut
271 sub submeta { shift->throw_not_implemented }
273 =head2 submeta_text
275 Title : submeta_text
276 Usage : $meta_values = $obj->submeta_text(20, $value_string);
277 Function: Variant of submeta() guarantied to return a textual
278 representation of meta data. For details, see L<meta>.
279 Returns : a string
280 Args : integer, start position, optional
281 integer, end position, optional
282 new value, optional
284 =cut
286 sub submeta_text { shift->throw_not_implemented }
288 =head2 named_submeta
290 Title : named_submeta
291 Usage : $subset_of_meta_values = $obj->named_submeta($name, 10, 20, $value_string);
292 $subset_of_meta_values = $obj->named_submeta($name, 10);
293 Function: Variant of submeta() guarantied to return a textual
294 representation of meta data. For details, see L<meta>.
295 Returns : A reference to an array or a string
296 Args : scalar, name of the meta data set
297 integer, start position
298 integer, end position, optional when a third argument present
299 new value, optional
301 =cut
303 sub named_submeta { shift->throw_not_implemented }
305 =head2 named_submeta_text
307 Title : named_submeta_text
308 Usage : $meta_values = $obj->named_submeta_text($name, 20, $value_string);
309 Function: Variant of submeta() guarantied to return a textual
310 representation of meta data. For details, see L<meta>.
311 Returns : a string
312 Args : scalar, name of the meta data
313 Args : integer, start position, optional
314 integer, end position, optional
315 new value, optional
317 =cut
319 sub named_submeta_text { shift->throw_not_implemented }
321 =head2 meta_names
323 Title : meta_names
324 Usage : @meta_names = $obj->meta_names()
325 Function: Retrieves an array of meta data set names. The default (unnamed)
326 set name is guarantied to be the first name.
327 Returns : an array of names
328 Args : none
330 =cut
332 sub meta_names { shift->throw_not_implemented }
335 =head2 force_flush
337 Title : force_flush()
338 Usage : $force_flush = $obj->force_flush(1);
339 Function: Automatically pad with empty values or truncate meta values to
340 sequence length
341 Returns : boolean 1 or 0
342 Args : optional boolean value
344 =cut
346 sub force_flush { shift->throw_not_implemented }
349 =head2 is_flush
351 Title : is_flush
352 Usage : $is_flush = $obj->is_flush()
353 or $is_flush = $obj->is_flush($my_meta_name)
354 Function: Boolean to tell if all meta values are in
355 flush with the sequence length.
356 Returns true if force_flush() is set
357 Set verbosity to a positive value to see failed meta sets
358 Returns : boolean 1 or 0
359 Args : optional name of the meta set
361 =cut
363 sub is_flush { shift->throw_not_implemented }
366 =head2 meta_length
368 Title : meta_length()
369 Usage : $meeta_len = $obj->meta_length();
370 Function: return the number of elements in the meta set
371 Returns : integer
372 Args : -
374 =cut
376 sub meta_length { shift->throw_not_implemented }
378 =head2 named_meta_length
380 Title : named_meta_length()
381 Usage : $meeta_len = $obj->named_meta_length($name);
382 Function: return the number of elements in the named meta set
383 Returns : integer
384 Args : -
386 =cut
388 sub named_meta_length { shift->throw_not_implemented }
391 =head1 Bio::PrimarySeqI methods
393 Implementing classes will need to rewrite these Bio::PrimaryI methods.
395 =cut
397 =head2 revcom
399 Title : revcom
400 Usage : $newseq = $seq->revcom();
401 Function: Produces a new Bio::Seq::MetaI implementing object where
402 the order of residues and their meta information is reversed.
403 Returns : A new (fresh) Bio::Seq::MetaI object
404 Args : none
406 =cut
408 sub revcom { shift->throw_not_implemented }
410 =head2 trunc
412 Title : trunc
413 Usage : $subseq = $myseq->trunc(10,100);
414 Function: Provides a truncation of a sequence
415 Returns : a fresh Bio::Seq::MetaI implementing object
416 Args : Two integers denoting first and last residue of the sub-sequence.
418 =cut
420 sub trunc { shift->throw_not_implemented }