[Bioperl-l] Issues on Bio::Tools::Primer3->next_primer

Roy Chaudhuri roy.chaudhuri at gmail.com
Tue Jul 29 10:26:34 UTC 2008


Hi John,

I'm not sure if you want to run Primer3 using BioPerl, or just use 
BioPerl to parse an existing Primer3 output file.

For the former you need to specify a target using the -seq argument when 
you create your Bio::Tools::Run::Primer3 object (the argument value 
should be a Bio::Seq object). It's also possible to add the sequence 
between the new() and run() methods using add_targets(), but you snipped 
out that section so I can't tell if you did that and there is some other 
problem. The run() method does not seem to check if a target sequence is 
present, hence you only get an error when you call next_primer() on the 
returned Bio::Tools::Primer3 object.

If you just want to parse an existing Primer3 output file then you need 
to use Bio::Tools::Primer3, specifying the path to the ouput file using 
the -file argument to new(). The documentation to Bio::Tools::Run::Primer3:
http://search.cpan.org/~sendu/bioperl-run/Bio/Tools/Run/Primer3.pm#new()
suggests that you can also provide a -file argument in that module, but 
there doesn't seem to be any evidence of that in the code.


Hope this helps.
Roy.
--
Dr. Roy Chaudhuri
Department of Veterinary Medicine
University of Cambridge, U.K.

> I am trying a generic script to parse outputs for Primer3 results from
> Bio::Tools::Run::Primer3:
> 
> use Bio::Tools::Run::Primer3;
> use Bio::Tools::Primer3;
> use Bio::Seq::PrimedSeq;
> [...]
> my $primer3_handle=Bio::Tools::Run::Primer3->new(-path=>'foobar');
> [...]
> my $primer3_results=$primer3_handle->run();
> my $primer_test=$primer3_results->next_primer;
> [...]
> 
> Which is similar to what was on the docs, but when Perl gives the following
> error at running next_primer:
> 
> ------------- EXCEPTION: Bio::Root::Exception -------------
> MSG: No target sequence
> STACK: Error::throw
> STACK: Bio::Root::Root::throw
> /usr/lib/perl5/site_perl/5.10.0/Bio/Root/Root.pm:359
> STACK: Bio::Tools::Primer3::next_primer
> /usr/lib/perl5/site_perl/5.10.0/Bio/Tools/Primer3.pm:306
> STACK: /home/johnma/workspace/NCBI-test/NCBI-test.pl:208
> -----------------------------------------------------------
> 
> Whereas line 208 is the line that contained the next_primer.
> 
> I tried to access the results manually by primer_results() and hard-calling
> fields, but the output of primer_results() is a hash and not very convenient
> for further processing. Is there a way that I can go back to next_primer...?
> 
> Cheers,
> 
> John
> _______________________________________________
> 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