[Bioperl-l] Bio::AnnotatableI function annotation()

Mark A. Jensen maj at fortinbras.us
Fri Mar 27 13:30:17 EDT 2009


Hey Govind--
You're right-- SeqFeature::Generic object inherits from 
AnnotatableI-- but the *_tags_* methods are now
SeqFeature::Generic methods--ie, you can use these
on features, and they are no longer hitting AnnotableI.
It appears that the feature's AnnotationCollection doesn't
even get loaded now. 
[developer out there like to chime in?]
cheers, 
Mark
----- Original Message ----- 
From: "Govind Chandra" <govind.chandra at bbsrc.ac.uk>
To: "Mark A. Jensen" <maj at fortinbras.us>
Cc: <bioperl-l at lists.open-bio.org>
Sent: Friday, March 27, 2009 1:09 PM
Subject: [Bioperl-l] Bio::AnnotatableI function annotation()


> Thanks Mark,
> 
> Sorry for not putting a proper subject in the last post.
> 
> What you suggest is what I have been doing for a long time. I am just
> trying to alter my code to conform to the latest bioperl version and ran
> into this issue. I could be wrong (I am more a user rather than writer
> of modules) but since $feature->annotation() does not result in an error
> I think $feature is-a Bio::AnnotatableI as well.
> 
> Cheers
> 
> Govind
> 
> 
> 
> On Fri, 2009-03-27 at 12:17 -0400, Mark A. Jensen wrote:
>> Hi Govind-
>> 
>> As near as I can tell, the *_tags methods are deprecated for
>> Bio::AnnotatableI objects, but these methods are available
>> off the SeqFeatureI objects themselves: i.e., rather than
>> 
>> >  $ac=$feature->annotation();
>> >  $temp1=$ac->get_Annotations("locus_tag");
>> 
>> do
>> 
>>  $temp1 = $feature->get_tag_values("locus_tag");
>> 
>> directly.
>> 
>> hope it helps -
>> Mark
>> 
>> ----- Original Message ----- 
>> From: "Govind Chandra" <govind.chandra at bbsrc.ac.uk>
>> To: <bioperl-l at lists.open-bio.org>
>> Sent: Friday, March 27, 2009 11:26 AM
>> Subject: Re: [Bioperl-l] Bioperl-l Digest, Vol 71, Issue 15
>> 
>> 
>> > Hi,
>> >
>> > The code below
>> >
>> >
>> > ====== code begins =======
>> > #use strict;
>> > use Bio::SeqIO;
>> >
>> > $infile='NC_000913.gbk';
>> > my $seqio=Bio::SeqIO->new(-file => $infile);
>> > my $seqobj=$seqio->next_seq();
>> > my @features=$seqobj->all_SeqFeatures();
>> > my $count=0;
>> > foreach my $feature (@features) {
>> >  unless($feature->primary_tag() eq 'CDS') {next;}
>> >  print($feature->start(),"   ", $feature->end(), " 
>> > ",$feature->strand(),"\n");
>> >  $ac=$feature->annotation();
>> >  $temp1=$ac->get_Annotations("locus_tag");
>> >  @temp2=$ac->get_Annotations();
>> >  print("$temp1   $temp2[0] @temp2\n");
>> >  if($count++ > 5) {last;}
>> > }
>> >
>> > print(ref($ac),"\n");
>> > exit;
>> >
>> > ======= code ends ========
>> >
>> > produces the output
>> >
>> > ========== output begins ========
>> >
>> > 190   255   1
>> > 0
>> > 337   2799   1
>> > 0
>> > 2801   3733   1
>> > 0
>> > 3734   5020   1
>> > 0
>> > 5234   5530   1
>> > 0
>> > 5683   6459   -1
>> > 0
>> > 6529   7959   -1
>> > 0
>> > Bio::Annotation::Collection
>> >
>> > =========== output ends ==========
>> >
>> > $ac is-a Bio::Annotation::Collection but does not actually contain any
>> > annotation from the feature. Is this how it should be? I cannot figure
>> > out what is wrong with the script. Earlier I used to use has_tag(),
>> > get_tag_values() etc. but the documentation says these are deprecated.
>> >
>> > Perl is 5.8.8. BioPerl version is 1.6 (installed today). Output of uname
>> > -a is
>> >
>> > Linux n61347 2.6.18-92.1.6.el5 #1 SMP Fri Jun 20 02:36:06 EDT 2008
>> > x86_64 x86_64 x86_64 GNU/Linux
>> >
>> > Thanks in advance for any help.
>> >
>> > Govind
>> >
>> >
>> >
>> > _______________________________________________
>> > Bioperl-l mailing list
>> > Bioperl-l at lists.open-bio.org
>> > http://lists.open-bio.org/mailman/listinfo/bioperl-l
>> >
>> > 
>> 
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
> 
>



More information about the Bioperl-l mailing list