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

John M.C. Ma manchunjohn-ma at uiowa.edu
Tue Jul 29 13:22:09 EDT 2008


Hi Roy,

Hi Roy,

Maybe I wasn't clear with my script fragment, I used Bioperl to run Primer3.
The following is as much Primer3-related as I can get:

use Bio::Tools::Run::Primer3;
use Bio::Tools::Primer3;
[snips other use declarations and Ensembl scripts]
my $primer3_handle=Bio::Tools::Run::Primer3->new(-path=>'[Primer3 path]');
/*%gene_info is a hash that stores sequence information*/
$primer3_handle->add_targets('SEQUENCE'=>$gene_info{src_seq},
'PRIMER_SEQUENCE_ID'=>$gene_info{name},
'TARGET'=>$gene_info{exon_boundaries},
[snips other options] )
my $primer3_results=$primer3_handle->run();
$primer_test=$primer3_results->next_primer;

Hope this helps.

John


On Tue, Jul 29, 2008 at 5:26 AM, Roy Chaudhuri <roy.chaudhuri at gmail.com>wrote:

> 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()<http://search.cpan.org/%7Esendu/bioperl-run/Bio/Tools/Run/Primer3.pm#new%28%29>
> 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