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 ""; echo ""; echo ""; echo "
"; echo "Assembly: "; echo ""; $genopar->select("mtg", $mtgs, "","", TRUE); echo "
"; $genopar->submit(); 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; }