BioPHP - Get oligos from pattern
Original code submitted by josebaCode bellow is covered by GNU GPL v2 license.
Description
Last change: 2010/10/18 17:04 | Edit description | Recent Changes | Original descriptionWill response with sequences recognized by a oligo pattern.
If oligo does not include degenerate nucleotides response will be the same
oligo
example: oligo is TATA, and response will be TATA
If oligo includes degenerate nucleotides response will be comma separated
sequences
example: oligo is WATW, and response will be AATA,AATT,TATA,TATT
Code
Last change: 2010/10/18 17:04 | Edit Code | Recent Changes | Download | Original codefunction get_oligos_from_pattern ($oligo){
if (number_of_sequences_recognized ($oligo)==1){
return $oligo;
}
$oligo_len=strlen($oligo);
$results=array("");
for ($i=0; $i<strlen($oligo); $i++){
$nucleotide=substr($oligo,$i,1);
if($nucleotide=="A" or $nucleotide=="C" or $nucleotide=="G" or $nucleotide=="T"){
foreach($results as $key => $val){$results[$key."1"]=$val.$nucleotide;}
}elseif ($nucleotide=="Y"){
foreach($results as $key => $val){$results[$key."1"]=$val."C";$results[$key."2"]=$val."T";}
}elseif ($nucleotide=="R"){
foreach($results as $key => $val){$results[$key."1"]=$val."A";$results[$key."2"]=$val."G";}
}elseif ($nucleotide=="W"){
foreach($results as $key => $val){$results[$key."1"]=$val."A";$results[$key."2"]=$val."T";}
}elseif ($nucleotide=="S"){
foreach($results as $key => $val){$results[$key."1"]=$val."C";$results[$key."2"]=$val."G";}
}elseif ($nucleotide=="K"){
foreach($results as $key => $val){$results[$key."1"]=$val."G";$results[$key."2"]=$val."T";}
}elseif ($nucleotide=="M"){
foreach($results as $key => $val){$results[$key."1"]=$val."A";$results[$key."2"]=$val."C";}
}elseif ($nucleotide=="D"){
foreach($results as $key => $val){$results[$key."1"]=$val."A";$results[$key."2"]=$val."G";$results[$key."3"]=$val."T";}
}elseif ($nucleotide=="V"){
foreach($results as $key => $val){$results[$key."1"]=$val."A";$results[$key."2"]=$val."C";$results[$key."3"]=$val."G";}
}elseif ($nucleotide=="H"){
foreach($results as $key => $val){$results[$key."1"]=$val."A";$results[$key."2"]=$val."C";$results[$key."3"]=$val."T";}
}elseif ($nucleotide=="B"){
foreach($results as $key => $val){$results[$key."1"]=$val."C";$results[$key."2"]=$val."G";$results[$key."3"]=$val."T";}
}elseif ($nucleotide=="N"){
foreach($results as $key => $val){$results[$key."1"]=$val.".";}
}
}
$pattern="";
foreach ($results as $key => $val){
if (strlen($key)==$oligo_len+1){$pattern.=",".$val;}
}
return substr($pattern,1);
}