Bio AnnotatableI
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Summary
Bio::AnnotatableI - the base interface an annotatable object must implement
Package variables
No package variables defined.
Included modules
Bio::Annotation::Comment
Bio::Annotation::DBLink
Bio::Annotation::Reference
Bio::Annotation::SimpleValue
Carp
Inherit
Bio::Root::RootI
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
annotationDescriptionCode
has_tagDescriptionCode
add_tag_valueDescriptionCode
get_AnnotationsDescriptionCode
get_tag_valuesDescriptionCode
get_tagset_valuesDescriptionCode
get_all_tagsDescriptionCode
remove_tagDescriptionCode
Methods description
annotationcode    nextTop
 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
has_tagcodeprevnextTop
 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.
add_tag_valuecodeprevnextTop
 Usage   : See add_Annotation
Function:
Returns :
Args : DEPRECATED
See Bio::AnnotationCollectionI::add_Annotation
get_AnnotationscodeprevnextTop
 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.
get_tag_valuescodeprevnextTop
 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.
get_tagset_valuescodeprevnextTop
 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
get_all_tagscodeprevnextTop
 Usage   : @tags = $obj->get_all_tags()
Function: returns a list of annotation tag names.
Returns : a list of tag names
Args : none
Note : DEPRECATED
See Bio::AnnotationCollectionI::get_all_annotation_keys
remove_tagcodeprevnextTop
 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
annotationdescriptionprevnextTop
sub annotation {
  shift->throw_not_implemented();
}
has_tagdescriptionprevnextTop
sub has_tag {
  my ($self,$tag) = @_;
  #uncomment in 1.6
#$self->deprecated('has_tag() is deprecated, use get_Annotations()');
return scalar($self->annotation->get_Annotations($tag));
}
add_tag_valuedescriptionprevnextTop
sub add_tag_value {
  my ($self,$tag,@vals) = @_;

  #uncomment in 1.6
#$self->deprecated('add_tag_value() is deprecated, use add_Annotation()');
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; #return $self->annotation->add_Annotation(@args);
}
get_AnnotationsdescriptionprevnextTop
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);
    }
}
get_tag_valuesdescriptionprevnextTop
sub get_tag_values {
    my ($self,$tag) = @_;
    
    #uncomment in 1.6
#$self->deprecated('get_tag_values() is deprecatedk, use get_Annotations()');
if(!$tagclass{$tag} && $self->annotation->get_Annotations($tag)){ #new tag, haven't seen it yet but it exists. add to registry
my($proto) = $self->annotation->get_Annotations($tag); # we can only register if there's a method known for obtaining the value
if (exists($tag2text{ref($proto)})) { $tagclass{$tag} = ref($proto); } } my $slot = $tag2text{ $tagclass{$tag} || $tagclass{__DEFAULT__} }; return map { $_->$slot } $self->annotation->get_Annotations($tag);
}
get_tagset_valuesdescriptionprevnextTop
sub get_tagset_values {
  my ($self,@tags) = @_;

  #uncomment in 1.6
#$self->deprecated('get_tagset_values() is deprecated, use get_Annotations()');
my @r = (); foreach my $tag (@tags){ my $slot = $tag2text{ $tagclass{$tag} || $tagclass{__DEFAULT__} }; push @r, map { $_->$slot } $self->annotation->get_Annotations($tag); } return @r;
}
get_all_tagsdescriptionprevnextTop
sub get_all_tags {
  my ($self,@args) = @_;

  #uncomment in 1.6
#$self->deprecated('get_all_tags() is deprecated, use get_all_annotation_keys()');
return $self->annotation->get_all_annotation_keys(@args);
}
remove_tagdescriptionprevnextTop
sub remove_tag {
  my ($self,@args) = @_;

  #uncomment in 1.6
#$self->deprecated('remove_tag() is deprecated, use remove_Annotations()');
return $self->annotation->remove_Annotations(@args);
}
General documentation
FEEDBACKTop
Mailing ListsTop
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
Reporting BugsTop
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/
AUTHORTop
 Hilmar Lapp <hlapp@gmx.net>
Allen Day <allenday@ucla.edu>
APPENDIXTop
The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _
"*_tag_*" METHODSTop
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.