[Bioperl-l] Bio::Seq::PrimedSeq::new exception

Mike Muratet muratem at eng.uah.edu
Wed Apr 6 03:17:21 EDT 2005


Greetings

I am using Bio::Tools::Run::Primer3 inside a script to design primers. It
will run primer3 just fine, but trying to get the results inside the
script yields:

------------- EXCEPTION  -------------
MSG: The target_sequence must be a Bio::Seq to create this object.
STACK Bio::Seq::PrimedSeq::new
/usr/local/lib/perl5/site_perl/5.8.0/Bio/Seq/PrimedSeq.pm:232
STACK Bio::Tools::Primer3::next_primer
/usr/local/lib/perl5/site_perl/5.8.0/Bio/Tools/Primer3.pm:331
STACK toplevel ./processBlast.pl:318

I am using the method thus:

my $genomic_seqobj = Bio::PrimarySeq->new ( -seq =>$genomic_seq,
                                      -id =>$orf_accession,
                                      -accession_number=> $orf_accession,
                                      -alphabet =>"dna",
                                      -is_circular => 0
                                        );
my $primer3nested = Bio::Tools::Run::Primer3->new(-seq=>$genomic_seqobj,
-outfile=>$orf_accession.".nested.out", -path => "/usr/local/bin/");
$primer3nested->add_targets('PRIMER_NUM_RETURN' => 1);
my $results = $primer3nested->run;
my $primer = $results->next_primer();

I can use Bio::Tools::Primer3 to read the file back in and everything
works just fine. The offending line from Bio::Tools::Primer3 is:

232  if (! ref($self->{target_sequence}) ||
233      ! $self->{target_sequence}->isa('Bio::SeqI') ) {
234      $self->throw("The target_sequence must be a Bio::Seq to create
this object.");

It appears to me that the object is created in Bio::Tools::Run::Primer3 in
the run method as:

396  # convert the results to individual results
397  $self->{results_obj}=new Bio::Tools::Primer3;
398  $self->{results_obj}->_set_variable('results',$self->{results});
399  $self->{results_obj}->_set_variable('seqobject',$self->{seqobject});
400  $self->{results_separated}= $self->{results_obj}->_separate();
401  return $self->{results_obj};
 
So, it looks to me that if you pass the constructor a valid child of
Bio::SeqI (and PrimarySeq is, is it not?) Can anyone help me see what I'm
missing?

Cheers

Mike



More information about the Bioperl-l mailing list