fechaPagina(); exit;
}
$genopar = new Genopar(__FILE__);
$genopar->abrePagina("BLAST databases management");
verGetPost(array('mtg', 'submit', 'orgsToBlast', 'runCOG', 'runPFAM', 'evalue'));
print_r($orgsToBlast);
if (!$mtg && !($orgsToBlast || $runCOG || $runPFAM)){
/* */
$mtgs = $genopar->obtemMtgs();
$genopar->abreForm();
echo "
";
echo "";
echo "| ";
echo "Assembly: ";
echo " | ";
echo "";
$genopar->select("mtg", $mtgs, "","", TRUE);
echo " | ";
echo "
";
echo "";
$genopar->submit();
echo " | ";
echo "
";
$genopar->fechaForm();
$genopar->fechaPagina();
}elseif(!($orgsToBlast || $runCOG || $runPFAM)){
$genopar->abreForm();
$genopar->input("mtg", "hidden", $mtg);
$genopar->mostraListaBact();
$genopar->fechaForm();
}else{
$genopar->abreBanco();
if ($orgsToBlast){
foreach ($orgsToBlast as $id => $name){
$query = "SELECT * FROM orgsToBlast WHERE idOrg=$id";
$genopar->queryBanco($query);
$break=0;
$download=1;
while($lin = $genopar->getArray()){
if ($lin['idMontagem'] == $mtg){
$break = 1;
break;
}else
$download=0;
}
if ($break) break;
if ($download){
$orgDir = "../BlastDatabases/$id";
$ext = "faa";
$localFile = "$orgDir/$id.$ext";
if(!is_file($localFile)){
$sql = "SELECT ftpFolder FROM taxonomy WHERE id=$id";
$genopar->queryBanco($sql);
$lin = $genopar->getArray();
$orgFolder = $lin['ftpFolder'];
getFile($genopar,$id, $orgFolder, $ext);
if (!is_file($localFile))
$genopar->error("Nao foi possivel fazer o download do arquivo FASTA");
$blastDB = formatDB($localFile);
}
}
$blastOutDir = "../BlastReports/$mtg";
if (!is_dir($blastOutDir)) mkdir($blastOutDir);
$blastOutDirOrg = $blastOutDir."/".$id;
mkdir($blastOutDirOrg);
// echo $blastOutDirOrg; exit;
// $nomeOrganismo = addslashes($name); \"".$nomeOrganismo."\"
$orfDir = "../Fasta/$mtg/ORFs/p";
if ($handle = opendir($orfDir)) {
$query = "INSERT INTO orgsToBlast VALUES ('$mtg', $id, '".$evalue['nr']."')";
$genopar->queryBanco($query);
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
system("cd ../bin && perl runOrfsBlast.pl ".$genopar->MySQL_Default_DBname." $mtg $orfDir/$file ../BlastDatabases/$id/$id $blastOutDirOrg");
}
}
}
}
}
$blastOutDir = "../BlastReports/$mtg";
if ($runCOG){
$query = "INSERT INTO orgsToBlast VALUES ('$mtg', 'COG', '".$evalue['COG']."')";
$genopar->queryBanco($query);
$orfDir = "../Fasta/$mtg/ORFs/p";
if ($handle = opendir($orfDir)) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
system("cd ../bin && perl runOrfsBlastCOG.pl ".$genopar->MySQL_Default_DBname." $mtg $orfDir/$file $blastOutDir");
}
}
}
}
if ($runPFAM){
$query = "INSERT INTO orgsToBlast VALUES ('$mtg', 'PFAM', '".$evalue['COG']."')";
$genopar->queryBanco($query);
$orfDir = "../Fasta/$mtg/ORFs/p";
if ($handle = opendir($orfDir)) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
system("cd ../bin && perl runOrfsBlastPFAM.pl ".$genopar->MySQL_Default_DBname." $mtg $orfDir/$file $blastOutDir");
}
}
}
}
echo 'Done...
';
}
$genopar->fechaPagina();
function formatDB($file){
$dbName = substr($file, 0, -4);
$formatDB = "/usr/local/blast/bin/formatdb -i $file -p T -n $dbName";
system($formatDB);
return $dbName;
}
# Conecta via FTP ao NCBI e baixa o arquivo "nome.ext"
function getFile($genopar, $idOrg, $folder, $ext){
$ncbi = "ftp.ncbi.nih.gov";
$USER = "anonymous";
$PASS = "nada@lugar.algum";
$con = ftp_connect($ncbi) or $genopar->error("NCBI indisponível.");
ftp_login($con, $USER, $PASS);
ftp_pasv($con, TRUE);
ftp_chdir($con, "genomes/Bacteria/$folder") or $genopar->error("Nao foi possivel mudar de diretorio.");
$pattern = "/.$ext$/";
foreach(ftp_nlist($con, ".") as $file){
if (preg_match($pattern, $file)){
$rmtFile = $file;
break;
}
}
mkdir("../BlastDatabases/$idOrg");
$file = "../BlastDatabases/$idOrg/$idOrg.$ext";
$handle = fopen($file, "w");
if (!ftp_fget($con, $handle, $rmtFile, FTP_ASCII, 0))
$file = NULL;
fclose($handle);
ftp_close($con);
return $file;
}