[Bioperl-l] use primer3 to design primers with multiple sequences

Wiersma, Paul WiersmaP at AGR.GC.CA
Wed May 10 16:08:37 UTC 2006


Brian, no problem with the code, thanks for asking.

Li, PRIMER_SEQUENCE_ID and SEQUENCE are not part of the individual results but only end up by default with $results->primer_results(0).  If you try to access them using $results->primer_results(1) (or anything but 0) you will get an error.

Paul

Paul A. Wiersma
Agriculture and Agri-Food Canada/Agriculture et Agroalimentaire Canada
Summerland, BC
wiersmap at agr.gc.ca
 
 



-----Original Message-----
From: chen li [mailto:chen_li3 at yahoo.com] 
Sent: Tuesday, May 09, 2006 6:04 PM
To: Wiersma, Paul
Cc: bioperl-l at bioperl.org
Subject: RE: [Bioperl-l] use primer3 to design primers with multiple sequences

Hi Paul,

Thank you very much.

Just like you point out in your lastest email I now
figure out the line
"my $result1=$results->primer_results(1);"

returns a hash reference containing all the
information for the first pair of primer.  1)Since it
is a hash I should be able to get the specific value
for its corresponding  key by telling Perl which key
is the entry for the value. 2) Also it is a reference
I should deference it to get the so-called true value.

I don't know too much OO and Perl and your code looks
a little bit complicated to me. But I get the job done
by adding the following lines directly:

###############################################
#from Primer3 module to get all the infomration 
#foreach my $key (sort keys %{$result1}) {
	   #print "$key\t${$result1}{$key}\n"}
##################################################


#get the value for the key in the hash reference
	   
	   
	   my
$key_PRIMER_LEFT_SEQUENCE='PRIMER_LEFT_SEQUENCE'; 
	   print
"$key_PRIMER_LEFT_SEQUENCE\t${$result1}{$key_PRIMER_LEFT_SEQUENCE}\n";
 

There is one point I don't understand:

When I add these two lines into my code (line 49 in my
code)

	   my $key_PRIMER_SEQUENCE_ID='PRIMER_SEQUENCE_ID';		
  	      
  print
"$key_PRIMER_SEQUENCE_ID\t${$result1}{$key_PRIMER_SEQUENCE_ID}\n";

I don't get the PRIMER_SEQUENCE_ID. Perl complains it
and says "Use of uninitialized value in concatenation
(.) or string at primer3-3 line 49."


Li
	   





--- "Wiersma, Paul" <WiersmaP at AGR.GC.CA> wrote:

> Hi Li,
> 
> Just a bit of clarification of the code that I sent
> earlier. 
> The line "my $result1=$results->primer_results($i);"
> gives you a
> reference to a hash that contains all of the
> information for a primer
> pair.
> To access the entries you dereference the hash, i.e.
> the hash is
> %{$result1} and ${$result1}{'PRIMER_PRODUCT_SIZE'}
> gives you the entry
> for product size.  The following are the available
> entries. All are
> single values or strings except PRIMER_RIGHT and
> PRIMER_LEFT which are
> start,length pairs (e.g. PRIMER_LEFT => '60,20')
> which can be pulled out
> with split. 
> my ($start, $length) = split /,/,
> ${$result1}{'PRIMER_LEFT'};
> my $right_Tm =  ${$result1}{'PRIMER_RIGHT_TM'}  
> PRIMER_PRODUCT_SIZE
> PRIMER_PAIR_COMPL_ANY
> PRIMER_PAIR_COMPL_END
> PRIMER_PAIR_PENALTY
> 
> PRIMER_LEFT
> PRIMER_LEFT_END_STABILITY
> PRIMER_LEFT_PENALTY
> PRIMER_LEFT_TM
> PRIMER_LEFT_GC_PERCENT
> PRIMER_LEFT_SELF_ANY
> PRIMER_LEFT_SELF_END
> PRIMER_LEFT_SEQUENCE
> 
> PRIMER_RIGHT
> PRIMER_RIGHT_END_STABILITY
> PRIMER_RIGHT_PENALTY
> PRIMER_RIGHT_TM
> PRIMER_RIGHT_GC_PERCENT
> PRIMER_RIGHT_SELF_ANY
> PRIMER_RIGHT_SELF_END
> PRIMER_RIGHT_SEQUENCE
> 
> Paul A. Wiersma
> Agriculture and Agri-Food Canada/Agriculture et
> Agroalimentaire Canada
> Summerland, BC
> wiersmap at agr.gc.ca
>  
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 




More information about the Bioperl-l mailing list