Primer 1: $primer1\\n"; print "Primer 2: $primer2\\n\\n"; if (sizeof($results_array)>0){ print "List of amplicons: position in sequence, length and sequence\\n\\n"; foreach($results_array as $key => $val){ print "$key $val ".substr($sequence,$key,$val)."\\n"; } }else{ print "No amplification\\n\\n"; } // ############################################################## // FUNCTIONS // ############################################################## function Amplify ($start_pattern,$end_pattern,$sequence,$maxlength){ // SPLIT SEQUENCE BASED IN $start_pattern (start positions of amplicons) $fragments = preg_split("/($start_pattern)/", $sequence,-1,PREG_SPLIT_DELIM_CAPTURE); $maxfragments=sizeof($fragments); $position=strlen($fragments[0]); $mn=0; for ($m=1;$m<$maxfragments; $m+=2){ $subfragment_to_maximum=substr($fragments[$m+1],0,$maxlength); $fragments2 = preg_split("/($end_pattern)/", $subfragment_to_maximum,-1,PREG_SPLIT_DELIM_CAPTURE); if (sizeof($fragments2)>1){ $lenfragment=strlen($fragments[$m].$fragments2[0].$fragments2[1]); $results_array[$position]=$lenfragment; } $position+=strlen($fragments[$m])+strlen($fragments[$m+1]); } return($results_array); } // #################### function RevComp($p2){ $p2=strrev($p2); $p2=str_replace("A", "t", $p2); $p2=str_replace("T", "a", $p2); $p2=str_replace("G", "c", $p2); $p2=str_replace("C", "g", $p2); $p2 = strtoupper ($p2); return $p2; } // #################### function includeN($pattern) { if (strlen($pattern)>2){ $new_pattern=".".substr($pattern,1); $pos=1; while ($pos In silico PCR amplification

In silico PCR amplification

">
Sequence

Primer 11    5'- -3'
Primer 21    5'- -3'

Allow one mismatch 2

Maximum lenght of bands
  nucleotides

1 A,T,G,C and N are allowed; A+T+G+C must be 10 or more.
2 One mismatch is allowed in any position of primers.



Source code