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

chen li chen_li3 at yahoo.com
Tue May 9 21:04:08 EDT 2006


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