Login | Register

Info | Home

BioPHP - Get oligos from pattern

Original code submitted by joseba
Code bellow is covered by GNU GPL v2 license.

Description

Last change: 2010/10/18 17:04 | Edit description | Recent Changes | Original description
Will 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 code
function 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);
}