[Bioperl-l] pubmed
Qunfeng
qfdong at iastate.edu
Tue Apr 5 11:33:04 EDT 2005
Brian,
Thanks for your kind help. The following is my complete code. It reads a
GenBank file as input and prints out authors, medline but not pubmed. I
also tried your code and it doesn't work for me either.
I tried your code with two of my machines
machine 1). installed bioperl-1.2.2
$ uname -a
Linux 2.4.20-8bigmem #1 SMP Thu Mar 13 17:32:29 EST 2003 i686 i686 i386
GNU/Linux
machine 2). installed bioperl-1.4
$ uname -a
Linux 2.4.21-27.0.2.ELsmp #1 SMP Wed Jan 12 23:35:44 EST 2005 i686 i686
i386 GNU/Linux
--------------------------------------------------------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use Bio::SeqIO;
my $inputGBfile = $ARGV[0];
my $seqio_object = Bio::SeqIO->new('-file' => "$inputGBfile",
'-format' =>
'GenBank');
my $seq_object;
while (1){
eval{
$seq_object = $seqio_object->next_seq;
};
if($@){
print STDERR "EXCEPTION FOUND; SKIP THIS OBJECT\n";
next;
}
last if(!defined $seq_object);
my $gi = $seq_object->primary_id;
my $anno_collection = $seq_object->annotation;
foreach my $key ( $anno_collection->get_all_annotation_keys ) {
my @annotations = $anno_collection->get_Annotations($key);
foreach my $value ( @annotations ) {
if($value->tagname eq "reference"){
my $authors = $value->authors();
my $medline = $value->medline();
my $pubmed = $value->pubmed();
print
"gi=$gi\nauthors=$authors\nmedline=$medline\npubmed=$pubmed\n\n";
}#end if
}#end inner for
}#end outer for
}#end while
-------------------------------------------------------------------------------------------------------------------------------------
At 05:18 PM 4/4/2005, Brian Osborne wrote:
>Qunfeng,
>
>SeqIO parses this entry correctly, using this code:
>
>use strict;
>use Bio::DB::GenBank;
>
>my $db = new Bio::DB::GenBank;
>my $seq = $db->get_Seq_by_id(56961711);
>my $ac = $seq->annotation;
>for my $ref ($ac->get_Annotations('reference')) {
> print $ref->pubmed;
>}
>
>It looks like your code should work as well but since you didn't show us
>your complete code using the variable $value it's hard to see where the
>problem is.
>
>
>Brian O.
>
>-----Original Message-----
>From: bioperl-l-bounces at portal.open-bio.org
>[mailto:bioperl-l-bounces at portal.open-bio.org]On Behalf Of Qunfeng
>Sent: Monday, April 04, 2005 5:47 PM
>To: Bioperl
>Subject: RE: [Bioperl-l] pubmed
>
>
>Brain,
>
>My problem is that none of them returned a Pubmed id.
>
>Qunfeng
>
>At 03:07 PM 4/4/2005, Brian Osborne wrote:
> >Qunfeng,
> >
> >Only 1 of the 5 references in the 56961711 entry has a Pubmed id, the rest
> >will return nothing when you try $value->pubmed.
> >
> >Brian O.
> >
> >-----Original Message-----
> >From: bioperl-l-bounces at portal.open-bio.org
> >[mailto:bioperl-l-bounces at portal.open-bio.org]On Behalf Of Qunfeng
> >Sent: Monday, April 04, 2005 2:58 PM
> >To: Bioperl
> >Subject: Re: [Bioperl-l] pubmed
> >
> >
> >so, I tried to use
> > my $authors = $hash_ref->{'authors'};
> > my $medline = $hash_ref->{'medline'};
> > my $pubmed = $hash_ref->{'pubmed'};
> >
> >to parse out authors, medline, pubmed.
> >
> >I was able to successfully parse out authors and medline but not pubmed.
> >
> >Then I tried to use
> >
> > my $authors = $value->authors();
> > my $medline = $value->medline();
> > my $pubmed = $value->pubmed();
> >
> >and I got the same thing.
> >
> >Qunfeng
> >
> >At 07:50 PM 4/2/2005, Hilmar Lapp wrote:
> > >So what is the result of this script that you wouldn't have expected or
> > >that is not giving you what you need?
> > >
> > >BTW annotation objects under the tagname 'reference' are usually
> > >Bio::Annotation::Reference objects and have methods $ref->authors(),
> > >$ref->pubmed(), $ref->medline, etc. Check the POD.
> > >
> > > -hilmar
> > >
> > >On Friday, April 1, 2005, at 12:04 PM, Qunfeng wrote:
> > >
> > >>Hilmar and Paulo,
> > >>
> > >>I apologize for that,
> > >>
> > >>here is a snippet of my code, I must have missed something very simple.
> > >>Thanks for your help! -- Qunfeng
> > >>
> > >>#!/usr/bin/perl -w
> > >>use strict;
> > >>use Bio::SeqIO;
> > >>
> > >>my $inputGBfile = $ARGV[0];
> > >>my $seqio_object = Bio::SeqIO->new('-file' => "$inputGBfile",
> > >> '-format' => 'GenBank');
> > >>
> > >>my $seq_object;
> > >>while (1){
> > >> eval{
> > >> $seq_object = $seqio_object->next_seq;
> > >> };
> > >> if($@){
> > >> print STDERR "EXCEPTION FOUND; SKIP THIS OBJECT\n";
> > >> next;
> > >> }
> > >> last if(!defined $seq_object);
> > >> my $gi = $seq_object->primary_id;
> > >> my $anno_collection = $seq_object->annotation;
> > >> foreach my $key ( $anno_collection->get_all_annotation_keys ) {
> > >> my @annotations = $anno_collection->get_Annotations($key);
> > >> foreach my $value ( @annotations ) {
> > >> if($value->tagname eq "reference"){
> > >> my $hash_ref = $value->hash_tree;
> > >> my $authors = $hash_ref->{'authors'};
> > >> my $medline = $hash_ref->{'medline'};
> > >> my $pubmed = $hash_ref->{'pubmed'};
> > >> print STDERR
> > >> "gi=$gi\nauthors=$authors\nmedline=$medline\npubmed=$pubmed\n\n";
> > >> }
> > >> }
> > >> }
> > >>}
> > >>
> > >>
> > >>
> > >>At 03:10 AM 4/1/2005, you wrote:
> > >>>*please* people always post the code or ideally a small snippet that
> > >>>demonstrates what you were trying to do, and post the result and if
>it's
> > >>>not an exception why it is not the result you expected. DO NOT just say
> > >>>'blah doesn't work for me'. Whenever someone needs to guess what you
> > >>>probably did and what you probably mean you are wasting other people's
> >time.
> > >>>
> > >>>The GI# you have has multiple refs with one having a pubmed ID and none
> > >>>having a medline ID. So, the one ref that has a pubmed ID should return
> > >>>it from $ref->pubmed() but without any code snippet it is impossible to
> > >>>tell what you actually did and what therefore might be the problem.
> > >>>
> > >>> -hilmar
> > >>>
> > >>>On Thursday, March 31, 2005, at 03:15 PM, Qunfeng wrote:
> > >>>
> > >>>>Hi there,
> > >>>>
> > >>>>http://bioperl.org/HOWTOs/Feature-Annotation/anno_from_genbank.html
> > >>>>
> > >>>>I am not very familiar with BioPerl. I tried to follow the example
> > >>>>showing in the above page to retrieve pubmed ID under each Reference
> > >>>>tag , i.e., $value->pubmed(), but it doesn't work for me for the seq
> > >>>>gi#56961711. The authors() works for me. Appreciate any >>>
> >suggestions.
> > >>>>
> > >>>>Qunfeng
> > >>>>_______________________________________________
> > >>>>Bioperl-l mailing list
> > >>>>Bioperl-l at portal.open-bio.org
> > >>>>http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > >>>--
> > >>>-------------------------------------------------------------
> > >>>Hilmar Lapp email: lapp at gnf.org
> > >>>GNF, San Diego, Ca. 92121 phone: +1-858-812-1757
> > >>>-------------------------------------------------------------
> > >>
> > >--
> > >-------------------------------------------------------------
> > >Hilmar Lapp email: lapp at gnf.org
> > >GNF, San Diego, Ca. 92121 phone: +1-858-812-1757
> > >-------------------------------------------------------------
> > >
> > >
> > >_______________________________________________
> > >Bioperl-l mailing list
> > >Bioperl-l at portal.open-bio.org
> > >http://portal.open-bio.org/mailman/listinfo/bioperl-l
> >
> >_______________________________________________
> >Bioperl-l mailing list
> >Bioperl-l at portal.open-bio.org
> >http://portal.open-bio.org/mailman/listinfo/bioperl-l
> >
> >
> >
> >_______________________________________________
> >Bioperl-l mailing list
> >Bioperl-l at portal.open-bio.org
> >http://portal.open-bio.org/mailman/listinfo/bioperl-l
>
>_______________________________________________
>Bioperl-l mailing list
>Bioperl-l at portal.open-bio.org
>http://portal.open-bio.org/mailman/listinfo/bioperl-l
More information about the Bioperl-l
mailing list