abrePagina("Optional Start Codons for ORF $id"); echo '
'; echo " \n"; $genopar->abreBanco(); #Start Codons $startcodons["atg"]= "atg"; $startcodons["ttg"]= "ttg"; $startcodons["ctg"]= "ctg"; $startcodons["gtg"]= "gtg"; #Stop Codons $stopcodons["taa"]= "taa"; $stopcodons["tag"]= "tag"; $stopcodons["tga"]= "tga"; ######################################################### echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; $selected_start= $gene_start; $nextStart= 1; $n= $genopar->queryBanco("SELECT position, newStart FROM startCodons WHERE idMontagem='$mtg' AND idOrf='$id' ORDER BY newStart DESC LIMIT 1"); if ($n>0){ $lin= $genopar->getArray(); $nextStart= $lin['newStart']+1; #$nextStartpos= $lin['position']; #if ($nextStart>=1) $selected_start= $lin['position']; if ($processa=='Set New ORF Start' && $newstart){ $genopar->queryBanco("UPDATE startCodons SET newStart=$nextStart WHERE idMontagem='$mtg' AND idOrf='$id' AND position=$newstart "); echo "
Start Update Successful - New Start: $newstart
"; $selected_start= $newstart; } } #Aplicar Mudancas - Roda script muda_orfStart.pl if($processa=='Apply Changes'){ $n= $genopar->queryBanco("SELECT contigId FROM orf WHERE idMontagem='$mtg' AND id='$id' "); $lin= $genopar->getArray(); // $contig= abs(substr($id,0,4)); $contig = $lin['contigId']; echo "Updating ORF Start, please wait...
"; passthru("cd ../bin/ && perl updateOrfStart.pl $mtg $contig $id $selected_start $end", $retorno); // print $retorno; if ($retorno==0) print "
ORF Start updated - please close this window and reload ORF
"; else $genopar->error("Impossible to update ORF Start"); die; } #Add New Codon - ap�s clicar no codon na tela 'Search more Starts' if($processa=="ANC"){ #$gene_start= $ANCs; $n= $genopar->queryBanco("SELECT newStart FROM startCodons WHERE idMontagem='$mtg' AND idOrf='$id' AND position=$ANCs ORDER BY newStart DESC LIMIT 1"); if ($n==0){ $genopar->queryBanco("INSERT INTO startCodons SET idMontagem='$mtg', newStart=$nextStart, idOrf='$id', position=$ANCs, codon='$ANCc', orfStart=$gene_start "); }else{ $genopar->queryBanco("UPDATE startCodons SET idMontagem='$mtg', newStart=$nextStart, idOrf='$id', position=$ANCs, codon='$ANCc', orfStart=$gene_start WHERE idMontagem='$mtg' AND idOrf='$id' AND position=$ANCs "); } echo "
Start Update Successful - New Start: $ANCs
"; $n= $genopar->queryBanco("SELECT position, newStart FROM startCodons WHERE idMontagem='$mtg' AND idOrf='$id' ORDER BY newStart DESC LIMIT 1 "); if ($n>0){ $lin= $genopar->getArray(); $nextStart= $lin['newStart']+1; if ($nextStart>1) $selected_start= $lin['position']; } else die ("
ERROR setting new codon!"); } if (($processa=='Search more Starts') or ($processa=='Search Again')){ # Abre arquivo do contig $n= $genopar->queryBanco("SELECT contigId FROM orf WHERE idMontagem='$mtg' AND id='$id' "); $lin= $genopar->getArray(); // $contig= abs(substr($id,0,4)); $contig = $lin['contigId']; $fcontig="../Fasta/$mtg/Contigs/n/Contig".$contig.".fas"; if ( !($file = fopen($fcontig, 'r')) ) die ("

Nao foi possivel ler contig do arquivo: $fcontig"); # Copia sequencia para $SEQ $line = fgets($file, 4096); #Eliminar primeira linha (comentarios) $SEQ=''; while(!feof($file)) { $line = fgets($file, 4096); $SEQ.= trim($line); } $last_pos= strlen($SEQ); #echo "
".strtolower($SEQ)."
".complement_strand(strtolower($SEQ))."
" ; if (strlen($addstart)<1) $addstart= 18; else $addstart= floor($addstart/3)*3; if (strlen($addend)<1) $addend= 18; else $addend= floor($addend/3)*3; if (strlen($steps)<1) $steps= 36; else $steps= floor($steps/3)*3; ##### ORF DIRETA #### if ($gene_start<$end) { #define limites para a ORF if ($gene_start - $addstart <= 0) $addstart= (floor($gene_start/3))*3; if ($end+3 + $addend > $last_pos) $addend= (floor(($last_pos-$end)/3)-1)*3; $pstart= $gene_start - $addstart; $pend= $end+3 + $addend; if($pstart<=0) $pstart=1; if($pend>strlen($SEQ)) $pend=strlen($SEQ); $size= abs($pend-$pstart)+1; # Corta $SEQ de acordo com o tamanho $seq= (strtolower(substr($SEQ,$pstart-1,$size))); } else { if ($end - $addend <= 0) $addend= floor($end/3)*3; if ($gene_start + $addstart > strlen($SEQ)) $addstart= (floor((strlen($SEQ)-$gene_start)/3)-1)*3; $pend= $end-3 - $addend; $pstart= $gene_start + $addstart; if($pstart>strlen($SEQ)) $pstart=strlen($SEQ); if($pend<=0) $pend=1; $size= abs($pstart-$pend)+1; # Corta $SEQ de acordo com o tamanho escolhido e inverte $seq= complement_strand(strtolower(substr($SEQ,$pend-1,$size))); } echo "
Bases before predicted Start:     Bases per Line: 
Bases after predicted End: 

"; $seqn=""; #$l2= sprintf("%07d   ", $pstart); for($i=0;$i%07s   ", $tmp_pos); $codon= substr($seq,$i,3); $tcodon= $codon; #� o start ou stop atual (glimmer) if ($gene_start<$end) { #$tmp_pos+=3; if (($i==$addstart) or ($i+$pstart==$end)) $tcodon= strtoupper($tcodon); } else { #$tmp_pos-=3; if (($i==$addstart) or ($pstart+$i==$gene_start)) $tcodon= strtoupper($tcodon); } # � Start ou Stop Codon ? #if (in_array($codon, $startcodons) and #(($gene_start<$end and $tmp_pos<$pend-$addend) or #($gene_start>$end and $tmp_pos>$pend+$addend))) if (in_array($codon, $startcodons)) $scodon= "$tcodon"; elseif (in_array($codon, $stopcodons)) $scodon= "$tcodon"; else $scodon= "$tcodon"; $seqn.= "$scodon "; } #$seqn.= $l2; $seqn.=''; echo $seqn; } else { $n= $genopar->queryBanco("SELECT * FROM startCodons WHERE idMontagem='$mtg' AND idOrf='$id' ORDER BY position"); if ($n > 0) { echo "
$n Optional Start Codons.
"; echo ''; echo ''; echo ""; echo ""; echo ""; echo ""; echo ""; // echo ""; echo ""; $num=0; while($lin=$genopar->getArray()) { $novo_tam=abs($end - $lin['position']) + 1; $diff= $selected_start-$lin['position']; if ($end<$selected_start) $diff*= -1; // $diffaa= $diff/3; $bold=""; $checked=""; if($selected_start == $lin['position']) { $diff = 0; $bold= ""; $checked="CHECKED"; } echo ''; echo ""; echo ""; echo ""; echo ""; echo ""; // echo ""; echo ""; echo ''; } echo '
Start#Start CodonStart PositionNew ORF SizeDifference Between StartsDifference Between Starts
".$bold.number_format(++$num,0,",",".")."".$bold.$lin['codon']."".$bold.$lin['position']."".$bold.$novo_tam."$bold$diff$bold$diffaa$bold$diff
'; echo "
"; echo "    "; #if ($UserAuth_username == 'augusto' or $UserAuth_username == 'fpedrosa' or $UserAuth_username == 'souzaem') if ($UserAuth_level<=2) echo "    "; } } echo ''; // $genopar->fechaPagina(); ################################ ## complement_strand (sequencia) ################################ function complement_strand ($seq) { $comprev{"g"}= "c"; $comprev{"c"}= "g"; $comprev{"a"}= "t"; $comprev{"t"}= "a"; $comprev{"n"}= "n"; $rev_seq=""; for ($i=strlen($seq) - 1; $i>=0; $i--) { $base=substr($seq,$i,1); #echo "$base{".$comprev[$base]."}"; if ($comprev[$base]!='') { $rev_seq.=$comprev[$base]; } else { $rev_seq.="x"; } } return $rev_seq; } ################################ ################################ ?>