stringperloopobjectbioperl

How to access the data stored in this object?


I'm using BioPerl module to obtain a string from a set of parameters. I followed the HOWTO:Beginners page. The module apparently returns a hash object. How do I get the actual string out of the hash object?

use Bio::DB::GenBank;
use Data::Dumper;

my $gb = Bio::DB::GenBank->new(-format     => 'Fasta',
                             -seq_start  => 1,
                             -seq_stop   => 251,
                             -strand     => 1
                             -complexity => 1);
my $seq = $gb->get_Seq_by_acc('NG_016346');
my $sequence_string = lc($seq->seq());
my $seq_obj = Bio::Seq->new(-seq => $sequence_string,
                          -alphabet => 'dna' );
my $prot_obj = $seq_obj->translate;
print Dumper($prot_obj);

The data dumper prints the following:

$VAR1 = bless( {
             'primary_seq' => bless( {
                                       'length' => 83,
                                       '_root_verbose' => 0,
                                       '_nowarnonempty' => undef,
                                       'seq' => 'RLCVKEGPWPAVEGTWSWG*HRPGSRACPRWGAPNSVQATSYTPSPTHAPFSVSPIPIC*MSLLEASCWPGSREDGARMSAGM',
                                       'alphabet' => 'protein'
                                     }, 'Bio::PrimarySeq' ),
             '_root_verbose' => 0
           }, 'Bio::Seq' );

How do I obtain 'seq' that is stored in $prot_obj?

I tried

print $prot_obj{'primary_seq'}{'seq'};

but it doesn't print anything. Data dumper printed the word bless. Maybe seq is a field of an object oriented variable.


Solution

  • The correct format for accessing object properties uses ->:

    print $prot_obj->{'primary_seq'}->{'seq'};