Bio
AnnotatableI
Summary
Bio::AnnotatableI - the base interface an annotatable object must implement
Package variables
No package variables defined.
Included modules
Inherit
Synopsis
use Bio::SeqIO;
# get an annotatable object somehow: for example, Bio::SeqI objects
# are annotatable
my $seqio = Bio::SeqIO->new(-fh => \*STDIN, -format => 'genbank');
while (my $seq = $seqio->next_seq()) {
# $seq is-a Bio::AnnotatableI, hence:
my $ann_coll = $seq->annotation();
# $ann_coll is-a Bio::AnnotationCollectionI, hence:
my @all_anns = $ann_coll->get_Annotations();
# do something with the annotation objects
}
Description
This is the base interface that all annotatable objects must implement. A
good example is Bio::Seq which is an AnnotableI object.
Methods
Methods description
Title : annotation Usage : $obj->annotation($newval) Function: Get the annotation collection for this annotatable object. Example : Returns : a Bio::AnnotationCollectionI implementing object, or undef Args : on set, new value (a Bio::AnnotationCollectionI implementing object, optional) (an implementation may not support changing the annotation collection)
See Bio::AnnotationCollectionI |
Usage : $count = $obj->has_tag($tag) Function: returns the number of annotations corresponding to $tag Returns : an integer Args : tag name Note : DEPRECATED
Use /get_Annotations instead. |
Usage : my $parent = $obj->get_Annotations('Parent'); my @parents = $obj->get_Annotations('Parent'); Function: a wrapper around Bio::Annotation::Collection::get_Annotations(). Returns : returns annotations as Bio::Annotation::Collection::get_Annotations() does, but additionally returns a single scalar in scalar context instead of list context so that if an annotation tag contains only a single value, you can do:
$parent = $feature->get_Annotations('Parent');
instead of:
($parent) = ($feature->get_Annotations('Parent'))[0];
if the 'Parent' tag has multiple values and is called in a
scalar context, the number of annotations is returned.
Args : an annotation tag name. |
Usage : @annotations = $obj->get_tag_values($tag) Function: returns annotations corresponding to $tag Returns : a list of scalars Args : tag name Note : DEPRECATED
This method is essentially /get_Annotations, use it instead. |
Usage : @annotations = $obj->get_tagset_values($tag1,$tag2) Function: returns annotations corresponding to a list of tags. this is a convenience method equivalent to multiple calls to get_tag_values with each tag in the list. Returns : a list of Bio::AnnotationI objects. Args : a list of tag names Note : DEPRECATED
See Bio::AnnotationCollectionI::get_Annotations |
Usage : See remove_Annotations(). Function: Returns : Args : DEPRECATED Note : Contrary to what the name suggests, this method removes all annotations corresponding to $tag, not just a single anntoation.
See Bio::AnnotationCollectionI::remove_Annotations |
Methods code
sub annotation
{ shift->throw_not_implemented(); } |
sub has_tag
{ my ($self,$tag) = @_;
return scalar($self->annotation->get_Annotations($tag)); } |
sub add_tag_value
{ my ($self,$tag,@vals) = @_;
foreach my $val (@vals){
my $class = $tagclass{$tag} || $tagclass{__DEFAULT__};
my $slot = $tag2text{$class};
my $a = $class->new();
$a->$slot($val);
$self->annotation->add_Annotation($tag,$a);
}
return 1;
} |
sub get_Annotations
{ my $self = shift;
my @annotations = $self->annotation->get_Annotations(@_);
if(wantarray){
return @annotations;
} elsif(scalar(@annotations) == 1){
return $annotations[0];
} else {
return scalar(@annotations);
}} |
sub get_tag_values
{ my ($self,$tag) = @_;
if(!$tagclass{$tag} && $self->annotation->get_Annotations($tag)){
my($proto) = $self->annotation->get_Annotations($tag);
if (exists($tag2text{ref($proto)})) {
$tagclass{$tag} = ref($proto);
}
}
my $slot = $tag2text{ $tagclass{$tag} || $tagclass{__DEFAULT__} };
return map { $_->$slot } $self->annotation->get_Annotations($tag);} |
sub get_tagset_values
{ my ($self,@tags) = @_;
my @r = ();
foreach my $tag (@tags){
my $slot = $tag2text{ $tagclass{$tag} || $tagclass{__DEFAULT__} };
push @r, map { $_->$slot } $self->annotation->get_Annotations($tag);
}
return @r; } |
sub get_all_tags
{ my ($self,@args) = @_;
return $self->annotation->get_all_annotation_keys(@args); } |
sub remove_tag
{ my ($self,@args) = @_;
return $self->annotation->remove_Annotations(@args); } |
General documentation
User feedback is an integral part of the evolution of this and other
Bioperl modules. Send your comments and suggestions preferably to
the Bioperl mailing list. Your participation is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
Report bugs to the Bioperl bug tracking system to help us keep track
of the bugs and their resolution. Bug reports can be submitted via the
web:
http://bugzilla.open-bio.org/
Hilmar Lapp <hlapp@gmx.net>
Allen Day <allenday@ucla.edu>
The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _
The methods below allow mapping of the old "get_tag_values()"-style
annotation access to Bio::AnnotationCollectionI. These need not be
implemented in a Bio::AnnotationCollectionI compliant class, as they
are built on top of the methods.
DEPRECATED: DO NOT USE THESE FOR FUTURE DEVELOPMENT.