[Bioperl-l] pubmed

Brian Osborne brian_osborne at cognia.com
Wed Apr 6 07:32:36 EDT 2005


Qunfeng,

Your code works with the attached file, give it a try (I'm using
bioperl-live, by the way).

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: Tuesday, April 05, 2005 11:33 AM
To: Brian Osborne; Bioperl
Subject: RE: [Bioperl-l] pubmed


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

_______________________________________________
Bioperl-l mailing list
Bioperl-l at portal.open-bio.org
http://portal.open-bio.org/mailman/listinfo/bioperl-l

-------------- next part --------------
A non-text attachment was scrubbed...
Name: NM_000266.gb
Type: application/octet-stream
Size: 6704 bytes
Desc: not available
Url : http://portal.open-bio.org/pipermail/bioperl-l/attachments/20050406/1cd3a766/NM_000266.obj


More information about the Bioperl-l mailing list