Exemple #1
0
 static function loadDbSNPTable($con, $dbSNPPath)
 {
     REDLog::writeInfoLog("Start loading dbSNP file into database");
     $dbSNPTable = "dbsnp_database";
     try {
         if (!DatabaseManager::hasEstablishTable($con, $dbSNPTable)) {
             self::createDBSNPTable($con, $dbSNPTable);
             $count = 0;
             $fp = fopen($dbSNPPath, 'r');
             while ($line = fgets($fp) != null) {
                 if (strpos($line, "#") === 0) {
                     $count++;
                 } else {
                     break;
                 }
             }
             fclose($fp);
             $sqlClause = "load data local infile '{$dbSNPPath}' into table {$dbSNPTable} IGNORE {$count} LINES";
             //fields terminated by '\t' lines terminated by '\n'
             echo $sqlClause;
             $v = mysqli_query($con, $sqlClause);
             if (!$v) {
                 throw new Exception("Error execute sql clause in loadDbSNPTable()");
             }
         }
     } catch (Exception $e) {
         REDLog::writeErrLog($e->getMessage());
     }
     REDLog::writeInfoLog("End loading dbSNP file into database");
 }
Exemple #2
0
 static function performDNARNAFilter($con, $previousTable, $currentTable, $args)
 {
     if ($args == null || count($args) == 0) {
         return;
     } else {
         if (count($args) != 2) {
             REDLog::writeErrLog("Args for DNA-RNA Filter are incomplete, please have a check");
         }
     }
     TableCreator::createFilterTable($con, $previousTable, $currentTable);
     REDLog::writeInfoLog("Start performing DNA-RNA Filter");
     $dnaVcfTable = $args[0];
     $editingType = $args[1];
     $negativeType = REDTools::getNegativeStrandEditingType($editingType);
     try {
         $num1 = substr($editingType, 0, 1);
         $num2 = substr($negativeType, 0, 1);
         $sqlClause = "insert into {$currentTable} select * from {$previousTable} where exists (select chrom\nfrom {$dnaVcfTable} where ({$dnaVcfTable}.chrom={$previousTable}.chrom and {$dnaVcfTable}.pos={$previousTable}.pos and (\n{$dnaVcfTable}.ref='{$num1}' or {$dnaVcfTable}.ref='{$num2}')))";
         $v = mysqli_query($con, $sqlClause);
         if (!$v) {
             throw new Exception("Error execute sql clause in performDNARNAFilter");
         }
     } catch (Exception $e) {
         REDLog::writeErrLog($e->getMessage());
     }
     REDLog::writeInfoLog("End performing DNA-RNA Filter");
 }
Exemple #3
0
 static function loadRepeatTable($con, $repeatPath)
 {
     REDLog::writeInfoLog("Start loading RepeatMasker file into database");
     $repeatTable = "repeat_masker";
     try {
         if (!DatabaseManager::hasEstablishTable($con, $repeatTable)) {
             self::createRepeatRegionsTable($con, $repeatTable);
             DatabaseManager::setAutoCommit($con, false);
             $count = 0;
             $fp = fopen($repeatPath, 'r');
             fgets($fp);
             fgets($fp);
             fgets($fp);
             while (($line = fgets($fp)) != null) {
                 $line1 = trim($line);
                 $section = explode(" ", preg_replace("/\\s(?=\\s)/", "\\1", $line1));
                 # /[\s]+/
                 $sqlClause = "insert into {$repeatTable}(chrom,begin,end,type) values('{$section['4']}','{$section['5']}','{$section['6']}','{$section['10']}')";
                 $v = mysqli_query($con, $sqlClause);
                 if (++$count % 10000 == 0) {
                     DatabaseManager::commit($con);
                 }
             }
             DatabaseManager::commit($con);
             DatabaseManager::setAutoCommit($con, true);
             if (!$v) {
                 throw new Exception("Error execute sql clause in loadRepeatTable()\n");
             }
         }
     } catch (Exception $e) {
         REDLog::writeErrLog($e->getMessage());
     }
     fclose($fp);
     REDLog::writeInfoLog("End loading RepeatMasker file into database");
 }
Exemple #4
0
 static function performLikelihoodRateFilter($con, $previousTable, $currentTable, $args)
 {
     if ($args == null || count($args) == 0) {
         return;
     } else {
         if (count($args) != 2) {
             REDLog::writeErrLog("Args for Likelihood Rate Test Filter are incomplete, please have a check");
         }
     }
     $dnaVcfTable = $args[0];
     $threshold = (double) $args[1];
     TableCreator::createFilterTable($con, $previousTable, $currentTable);
     REDLog::writeInfoLog("Start performing Likelihood Rate Test Filter");
     $sqlClause1 = "select {$previousTable}.chrom,{$previousTable}.pos,{$previousTable}.AD,\n{$dnaVcfTable}.qual from {$previousTable},{$dnaVcfTable} where {$previousTable}.chrom=\n{$dnaVcfTable}.chrom and {$previousTable}.pos={$dnaVcfTable}.pos";
     $rs = DatabaseManager::query1($con, $sqlClause1);
     $i = 0;
     while ($row = mysqli_fetch_array($rs)) {
         $chr = (string) $row[0];
         $pos = (int) $row[1];
         $ad = (string) $row[2];
         $qual = (double) $row[3];
         $pb = new SiteBean();
         $pb->SiteBean1($chr, $pos);
         $pb->setAd($ad);
         $pb->setQual($qual);
         $siteBeans[$i] = $pb;
         $i++;
     }
     DatabaseManager::setAutoCommit($con, false);
     $count = 0;
     for ($j = 0; $j < $i; $j++) {
         $str = $siteBeans[$j]->getAd();
         $section = explode("/", $str);
         $ref = (int) $section[0];
         $alt = (int) $section[1];
         if ($ref + $alt > 0) {
             $f_ml = 1.0 * $ref / ($ref + $alt);
             $y = pow($f_ml, $ref) * pow(1 - $f_ml, $alt);
             $y = log($y) / log(10.0);
             $judge = $y + $siteBeans[$j]->getQual() / 10.0;
             if ($judge >= $threshold) {
                 $siteChr = $siteBeans[$j]->getChr();
                 $sitePos = $siteBeans[$j]->getPos();
                 $sqlClause2 = "insert into {$currentTable} select * from {$previousTable} where chrom='" . $siteChr . "' and pos=" . $sitePos;
                 DatabaseManager::insertClause($con, $sqlClause2);
                 if (++$count % 10000 == 0) {
                     DatabaseManager::commit($con);
                 }
             }
         }
     }
     DatabaseManager::commit($con);
     DatabaseManager::setAutoCommit($con, true);
     REDLog::writeInfoLog("End performing Likelihood Rate Test Filter");
 }
Exemple #5
0
 static function performQualityControlFilter($con, $previousTable, $currentTable, $args)
 {
     $COMMIT_COUNTS_PER_ONCE = 10000;
     if ($args == null || count($args) == 0) {
         return;
     } elseif (count($args) != 2) {
         REDLog::writeErrLog("Args for Quality Control Filter are incomplete, please have a check");
     }
     $quality = (double) $args[0];
     $depth = (int) $args[1];
     TableCreator::createFilterTable($con, $previousTable, $currentTable);
     REDLog::writeInfoLog("Start performing Quality Control Filter");
     try {
         $count = 0;
         $str = array("CHROM", "POS", "AD");
         $rs = DatabaseManager::query2($con, $previousTable, $str, null, null);
         $i = 0;
         while ($row = mysqli_fetch_array($rs)) {
             if ($row[2] != null) {
                 $siteBean = new SiteBean();
                 $siteBean->SiteBean1($row[0], $row[1]);
                 $siteBean->setAd($row[2]);
                 $siteBeans[$i] = $siteBean;
                 $i = $i + 1;
             }
         }
         DatabaseManager::setAutoCommit($con, false);
         for ($j = 0; $j < $i; $j++) {
             $str = $siteBeans[$j]->getAd();
             $section = explode("/", $str);
             $ref_n = (int) $section[0];
             $alt_n = (int) $section[1];
             $pos = $siteBeans[$j]->getPos();
             $chr = $siteBeans[$j]->getChr();
             if ($ref_n + $alt_n >= $depth) {
                 $sqlClause = "insert into " . $currentTable . " (select * from " . $previousTable . " where filter='PASS' and pos={$pos} and qual>=" . $quality . " and chrom='" . $chr . "')";
                 $v = mysqli_query($con, $sqlClause);
                 if (++$count % $COMMIT_COUNTS_PER_ONCE == 0) {
                     DatabaseManager::commit($con);
                 }
             }
         }
         DatabaseManager::commit($con);
         DatabaseManager::setAutoCommit($con, true);
         if (!$v) {
             throw new Exception("Error execute sql clause in QualityControlFilter:performFilter()");
         }
     } catch (Exception $e) {
         REDLog::writeErrLog($e->getMessage());
     }
     REDLog::writeInfoLog("End performing Quality Control Filter");
 }
Exemple #6
0
 static function loadDarnedTable($con, $darnedPath)
 {
     REDLog::writeInfoLog("Start loading DARNED file into database");
     $darnedTable = "darned_database";
     if (!DatabaseManager::hasEstablishTable($con, $darnedTable)) {
         self::createDARNEDTable($con, $darnedTable);
         try {
             $count = 0;
             DatabaseManager::setAutoCommit($con, false);
             $fp = fopen($darnedPath, 'r');
             fgets($fp);
             while (($line = fgets($fp)) != null) {
                 $line1 = trim($line);
                 $section = explode("\t", $line1);
                 $stringBulider = "insert into " . $darnedTable . "(chrom,coordinate,strand,inchr,inrna) values(";
                 for ($i = 0; $i < 5; $i++) {
                     if ($i == 0) {
                         $stringBulider = $stringBulider . "'chr" . $section[$i] . "',";
                     } else {
                         if ($i == 4) {
                             $sec = str_replace("I", "G", $section[$i]);
                             $stringBulider = $stringBulider . "'" . $sec . "'";
                         } else {
                             if ($i == 1) {
                                 $stringBulider = $stringBulider . $section[$i] . ",";
                             } else {
                                 $stringBulider = $stringBulider . "'" . $section[$i] . "',";
                             }
                         }
                     }
                 }
                 $stringBulider = $stringBulider . ")";
                 $v = mysqli_query($con, $stringBulider);
                 if (!$v) {
                     throw new Exception("Error execute sql clause in loadDarnedTable()");
                 }
                 if (++$count % 10000 == 0) {
                     DatabaseManager::commit($con);
                 }
                 DatabaseManager::commit($con);
                 DatabaseManager::setAutoCommit($con, true);
             }
         } catch (Exception $e) {
             REDLog::writeErrLog($e->getMessage());
         }
     }
     REDLog::writeInfoLog("End loading DARNED file into database");
 }
Exemple #7
0
 static function performKnownSNPFilter($con, $previousTable, $currentTable, $args)
 {
     REDLog::writeInfoLog("Start performing Known SNP Filter");
     TableCreator::createFilterTable($con, $previousTable, $currentTable);
     $dbSnpTable = "dbsnp_database";
     try {
         $sqlClause = "insert into {$currentTable} select * from {$previousTable} where not exists (select chrom from\n{$dbSnpTable} where ({$dbSnpTable}.chrom={$previousTable}.chrom and {$dbSnpTable}.pos={$previousTable}.pos))";
         $v = mysqli_query($con, $sqlClause);
         if (!$v) {
             throw new Exception("Error execute sql clause in performKnownSNPFilter");
         }
     } catch (Exception $e) {
         REDLog::writeErrLog($e->getMessage());
     }
     REDLog::writeInfoLog("End performing Known SNP Filter");
 }
Exemple #8
0
 static function loadSpliceJunctionTable($con, $spliceJunctionPath)
 {
     REDLog::writeInfoLog("Start loading Gene Annotation File into database");
     $spliceJunctionTable = "splice_junction";
     if (!DatabaseManager::hasEstablishTable($con, $spliceJunctionTable)) {
         self::createSpliceJunctionTable($con, $spliceJunctionTable);
         try {
             $sqlClause = "load data local infile '{$spliceJunctionPath}' into table {$spliceJunctionTable}";
             /*fields terminated by '\t' lines terminated by '\n'*/
             $v = mysqli_query($con, $sqlClause);
             if (!$v) {
                 throw new Exception("Error execute sql clause in loadSpliceJunctionTable()");
             }
         } catch (Exception $e) {
             REDLog::writeErrLog($e->getMessage());
         }
     }
     REDLog::writeInfoLog("End loading Gene Annotation File into database");
 }
Exemple #9
0
 static function createReferenceTable($con, $tableName, $columnNames, $columnParams, $index)
 {
     if ($columnNames == null || $columnParams == null || count($columnNames) == 0 || count($columnNames) != count($columnParams)) {
         REDLog::writeErrLog("Column names and column parameters can not be null or zero-length");
     }
     $stringBuilder = "create table if not exists {$tableName}({$columnNames['0']} {$columnParams['0']}";
     for ($i = 1, $len = count($columnNames); $i < $len; $i++) {
         $stringBuilder = $stringBuilder . ", {$columnNames[$i]} {$columnParams[$i]}";
     }
     $stringBuilder = $stringBuilder . ",{$index})";
     try {
         $v = mysqli_query($con, $stringBuilder);
         if (!$v) {
             throw new Exception("There is a syntax error for SQL clause: {$stringBuilder}");
         }
     } catch (Exception $e) {
         REDLog::writeErrLog($e->getMessage());
     }
     return $v;
 }
Exemple #10
0
 static function loadRefSeqGeneTable($con, $refSeqGenePath)
 {
     REDLog::writeInfoLog("Start loading Ref Seq Gene File into database");
     $refseqGeneTableName = "reference_gene";
     if (!DatabaseManager::hasEstablishTable($con, $refseqGeneTableName)) {
         self::createRefSeqGeneTable($con, $refseqGeneTableName);
         try {
             $sqlClause = "load data local infile '" . $refSeqGenePath . "' into table " . $refseqGeneTableName;
             /*." fields terminated"
               ."by '\t' lines terminated by '\n'";*/
             /*echo $sqlClause;*/
             $v = mysqli_query($con, $sqlClause);
             if (!$v) {
                 throw new Exception("Error execute sql clause in loadRefSeqGeneTable()");
             }
         } catch (Exception $e) {
             REDLog::writeErrLog($e->getMessage());
         }
     }
     REDLog::writeInfoLog("End loading Ref Seq Gene File into database");
 }
Exemple #11
0
 static function performRepeatRegionsFilter($con, $previousTable, $currentTable, $args)
 {
     TableCreator::createFilterTable($con, $previousTable, $currentTable);
     REDLog::writeInfoLog("Start performing Repeat Regions Filter");
     $repeatTable = "repeat_masker";
     try {
         $sqlClause1 = "insert into " . $currentTable . " select * from " . $previousTable . " where not exists (select * from " . $repeatTable . " where (" . $repeatTable . ".chrom= " . $previousTable . ".chrom and  " . $repeatTable . ".begin<=" . $previousTable . ".pos and " . $repeatTable . ".end>=" . $previousTable . ".pos)) ";
         $a = mysqli_query($con, $sqlClause1);
         if (!$a) {
             throw new Exception("Error execute sqlA clause in performRepeatRegionsFilter");
         }
         REDLog::writeInfoLog("Start finding sites in Alu Regions");
         $tempTable = REDTools::getRandomString(10);
         $sqlClause2 = "create temporary table {$tempTable} like {$currentTable}";
         $b = mysqli_query($con, $sqlClause2);
         if (!$b) {
             throw new Exception("Error execute sqlB clause in performRepeatRegionsFilter");
         }
         $sqlClause3 = "insert into  {$tempTable} select * from {$previousTable} where exists (select chrom from {$repeatTable}\nwhere {$repeatTable}.chrom = {$previousTable}.chrom and {$repeatTable}.begin<={$previousTable}.pos and\n{$repeatTable}.end>={$previousTable}.pos and {$repeatTable}.type='SINE/Alu')";
         $c = mysqli_query($con, $sqlClause3);
         if (!$c) {
             throw new Exception("Error execute sqlC clause in performRepeatRegionsFilter");
         }
         $sqlClause4 = "update {$tempTable} set alu='T'";
         $d = mysqli_query($con, $sqlClause4);
         if (!$d) {
             throw new Exception("Error execute sqlD clause in performRepeatRegionsFilter");
         }
         $sqlClause5 = "insert into {$currentTable} select * from {$tempTable}";
         $e = mysqli_query($con, $sqlClause5);
         if (!$e) {
             throw new Exception("Error execute sqlE clause in performRepeatRegionsFilter");
         }
         DatabaseManager::deleteTable($con, $tempTable);
         REDLog::writeInfoLog("End finding sites in Alu Regions");
     } catch (Exception $e) {
         REDLog::writeErrLog($e->getMessage());
     }
     REDLog::writeInfoLog("End performing Repeat Regions Filter");
 }
Exemple #12
0
 static function performEditingTypeFilter($con, $previousTable, $currentTable, $args)
 {
     REDLog::writeInfoLog('Star executing Editing Type Filter');
     TableCreator::createFilterTable($con, $previousTable, $currentTable);
     $refAlt = $args;
     $refAlt2 = REDTools::getNegativeStrandEditingType($refAlt);
     $sql11 = substr($refAlt, 0, 1);
     $sql12 = substr($refAlt, 1);
     $sql21 = substr($refAlt2, 0, 1);
     $sql22 = substr($refAlt2, 1);
     $sql1 = "insert into " . $currentTable . " select * from " . $previousTable . " WHERE REF='{$sql11}' AND ALT='{$sql12}' AND GT!='0/0'";
     $v = DatabaseManager::insertClause($con, $sql1);
     if (!$v) {
         REDLog::writeErrLog('There is a syntax error for SQL clause:' . $sql1);
     }
     $sql2 = "insert into " . $currentTable . " select * from " . $previousTable . " WHERE REF='{$sql21}' AND ALT='{$sql22}' AND GT!='0/0'";
     $v = DatabaseManager::insertClause($con, $sql2);
     if (!$v) {
         REDLog::writeErrLog('There is a syntax error for SQL clause:' . $sql2);
     }
     REDLog::writeInfoLog('End executing Editing Type Filter');
 }
Exemple #13
0
 static function performSpliceJunctionFilter($con, $previousTable, $currentTable, $args)
 {
     if ($args == null || $args == 0) {
         return;
     } else {
         if (count($args) != 1) {
             REDLog::writeErrLog("Args for Splice Junction Filter are incomplete, please have a check");
         }
     }
     TableCreator::createFilterTable($con, $previousTable, $currentTable);
     REDLog::writeInfoLog("Start performing Splice Junction Filter...");
     $spliceJunctionTable = "splice_junction";
     $edge = (int) $args[0];
     try {
         $sqlClause = "insert into {$currentTable} select * from {$previousTable} where not exists (select chrom from\n{$spliceJunctionTable} where ({$spliceJunctionTable}.type='CDS' and {$spliceJunctionTable}.chrom={$previousTable}.chrom\nand (({$spliceJunctionTable}.begin<{$previousTable}.pos+{$edge} and {$spliceJunctionTable}.begin>{$previousTable}.pos-{$edge})\nor ({$spliceJunctionTable}.end<{$previousTable}.pos+{$edge} and {$spliceJunctionTable}.end>{$previousTable}.pos-{$edge}))))";
         $v = mysqli_query($con, $sqlClause);
         if (!$v) {
             throw new Exception("Error execute sql clause in performSpliceJunctionFilter");
         }
     } catch (Exception $e) {
         REDLog::writeErrLog($e->getMessage());
     }
     REDLog::writeInfoLog("End performing Splice Junction Filter...");
 }
Exemple #14
0
<?php

include '../REDTools/REDLog.php';
include '../database/DatabaseManager.php';
$errInfo = '123';
REDLog::writeErrLog($errInfo);
Exemple #15
0
 static function getCurrentTables($con, $database)
 {
     $v = mysqli_query($con, "use {$database}");
     if (!$v) {
         REDLog::writeErrLog("can not use database: {$database} when getCurrentTables");
     }
     $rs = mysqli_query($con, "show tables");
     $i = 0;
     while ($row = mysqli_fetch_array($rs)) {
         $tableLists[$i] = $row;
         $i++;
     }
     return $tableLists;
 }
Exemple #16
0
 static function parseMultiRNAVCFFile($con, $vcfPath, $userid)
 {
     $altColumn = 4;
     $infoColumn = 7;
     $formatColumnIndex = 8;
     $columnLength = 0;
     REDLog::writeInfoLog("Start parsing RNA VCF file");
     try {
         $fp = fopen($vcfPath, 'r');
         DatabaseManager::setAutoCommit($con, false);
         $lineCount = 0;
         $hasEstablishTable = false;
         while (($line1 = fgets($fp)) != null) {
             $line = trim($line1);
             if (strpos($line, "##") === 0) {
                 continue;
             }
             if (strpos($line, "#") === 0) {
                 $columnStrings = explode("\t", substr($line, 1));
                 $columnLength = count($columnStrings);
                 $sampleNamesLength = $columnLength - $formatColumnIndex - 1;
                 for ($j = 0; $j < $sampleNamesLength; $j++) {
                     $sampleNames[$j] = $columnStrings[$formatColumnIndex + 1 + $j];
                 }
                 $tableBuilders = "{$columnStrings['0']} varchar(30),{$columnStrings['1']} int,{$columnStrings['2']} varchar(30),\n\t\t\t\t    {$columnStrings['3']} varchar(5),{$columnStrings['4']} varchar(5),{$columnStrings['5']} float(10,2),\n\t\t\t\t    {$columnStrings['6']} text,{$columnStrings['7']} text,";
                 continue;
             }
             if ($sampleNames == null) {
                 throw new Exception("There are no samples in this vcf file");
             }
             $sections = explode("\t", $line);
             for ($i = $formatColumnIndex + 1; $i < $columnLength; $i++) {
                 if (!strpos($sections[$i], ".")) {
                     $contain = false;
                     $rr = 1;
                 } else {
                     $contain = true;
                     $rr = 2;
                 }
                 if (strcmp($sections[$altColumn], ".") == 0 || $contain) {
                     continue;
                 }
                 $formatColumns = explode(":", $sections[$formatColumnIndex]);
                 $formatLength = count($formatColumns);
                 $dataColumns = explode(":", str_replace(",", "/", $sections[$i]));
                 $dataColumnLength = count($dataColumns);
                 if ($formatLength != $dataColumnLength) {
                     continue;
                 }
                 if (!$hasEstablishTable) {
                     for ($j = 0; $j < $formatLength; $j++) {
                         $formatColumn = $formatColumns[$j];
                         $tableBuilders = $tableBuilders . $formatColumn . " text,";
                     }
                     $tableBuilders = $tableBuilders . "alu varchar(1) default 'F',index(chrom,pos)";
                     for ($j = 0, $len = count($sampleNames); $j < $len; $j++) {
                         $tableName[$j] = $userid . "_" . $sampleNames[$j] . "_rnavcf" . "_" . date("Ymdhisa");
                         DatabaseManager::deleteTable($con, $tableName[$j]);
                         $createClause = "create table " . $tableName[$j] . "({$tableBuilders})";
                         $v = mysqli_query($con, $createClause);
                         if (!$v) {
                             throw new Exception("Error create RNATable.");
                         }
                     }
                     DatabaseManager::commit($con);
                     $hasEstablishTable = true;
                 }
                 $sqlClause = "insert into " . $tableName[$i - $formatColumnIndex - 1] . "(";
                 for ($j = 0; $j < $formatColumnIndex; $j++) {
                     $sqlClause = $sqlClause . $columnStrings[$j] . ",";
                 }
                 for ($j = 0; $j < $formatLength; $j++) {
                     $formatColumn = $formatColumns[$j];
                     $sqlClause = $sqlClause . $formatColumn . ",";
                 }
                 $sqlClause = substr($sqlClause, 0, strlen($sqlClause) - 1);
                 $sqlClause = $sqlClause . ") values('";
                 if (strpos($sections[0], "ch") === 0 && !(strpos($sections[0], "chr") === 0)) {
                     $str = str_replace("ch", "chr", $sections[0]) . "'";
                     $sqlClause = $sqlClause . $str;
                 } else {
                     if (strlen($sections[0]) < 3) {
                         $sqlClause = $sqlClause . "chr" . $sections[0] . "'";
                     } else {
                         $sqlClause = $sqlClause . $sections[0] . "'";
                     }
                 }
                 for ($j = 1; $j < $formatColumnIndex; $j++) {
                     $sqlClause = $sqlClause . ",'" . $sections[$j] . "'";
                 }
                 for ($j = 0; $j < count($dataColumns); $j++) {
                     $dataColumn = $dataColumns[$j];
                     $sqlClause = $sqlClause . ",'" . $dataColumn . "'";
                 }
                 $sqlClause = $sqlClause . ")";
                 $v = mysqli_query($con, $sqlClause);
                 if (!$v) {
                     throw new Exception("Error execute sql clause:  {$sqlClause}");
                 }
                 if (++$lineCount % 10000 == 0) {
                     DatabaseManager::commit($con);
                 }
             }
         }
         DatabaseManager::commit($con);
         DatabaseManager::setAutoCommit($con, true);
     } catch (Exception $e) {
         REDLog::writeInfoLog($e->getMessage());
     }
     REDLog::writeInfoLog("End parsing RNA VCF file...");
     return $tableName;
 }
Exemple #17
0
 static function executeFilters()
 {
     $startInfo = "RNA Editing Detector start\r\n" . "--------------------------\r\n" . "--------------------------\r\n";
     REDLog::writeInfoLog($startInfo);
     $infoPath = "../infoFile";
     if (($lineArray = REDTools::readInfoFile($infoPath)) != false) {
         $con = DatabaseConnect::mysqlConnect();
         $userid = $lineArray[0];
         $rnaVcfName = $lineArray[1];
         $dnaVcfName = $lineArray[2];
         $etArgs = $lineArray[3];
         $qcArray = explode('/', $lineArray[4]);
         $qcArgs = array($qcArray[0], $qcArray[1]);
         $rrArgs = array(0);
         $sjArgs = array($lineArray[5]);
         $ksArgs = array(0);
         $drArgs = array();
         //assignment in DRMode
         $lrArgs = array();
         $storgePath = "G:/Taruca/data/";
         $rnaVcfFilePath = $storgePath . $rnaVcfName;
         $dnaVcfFilePath = $storgePath . $dnaVcfName;
         if ($rnaVcfName !== "null") {
             //denove mode
             //load RNAVcfFile
             $rnaVcfTableNameArray = RNAVCFParser::parseMultiRNAVCFFile($con, $rnaVcfFilePath, $userid);
             if ($dnaVcfName !== "null") {
                 $dnaVcfTableNameArray = DNAVCFParser::parseMultiDNAVCFFile($con, $dnaVcfFilePath, $userid);
             }
             if (count($rnaVcfTableNameArray) != 0) {
                 $i = 0;
                 foreach ($rnaVcfTableNameArray as $rnaVcfTableName) {
                     $etTableName = REDTools::getFirstHalfTableName($rnaVcfTableName) . EditingTypeFilter::getName() . "_" . date("Ymdhisa");
                     EditingTypeFilter::performEditingTypeFilter($con, $rnaVcfTableName, $etTableName, $etArgs);
                     $qcTableName = REDTools::getFirstHalfTableName($etTableName) . QualityControlFilter::getName() . "_" . date("Ymdhisa");
                     QualityControlFilter::performQualityControlFilter($con, $etTableName, $qcTableName, $qcArgs);
                     $rrTableName = REDTools::getFirstHalfTableName($qcTableName) . RepeatRegionsFilter::getName() . "_" . date("Ymdhisa");
                     RepeatRegionsFilter::performRepeatRegionsFilter($con, $qcTableName, $rrTableName, $rrArgs);
                     $sjTableName = REDTools::getFirstHalfTableName($rrTableName) . SpliceJunctionFilter::getName() . "_" . date("Ymdhisa");
                     SpliceJunctionFilter::performSpliceJunctionFilter($con, $rrTableName, $sjTableName, $sjArgs);
                     $ksTableName = REDTools::getFirstHalfTableName($sjTableName) . KnownSNPFilter::getName() . "_" . date("Ymdhisa");
                     KnownSNPFilter::performKnownSNPFilter($con, $sjTableName, $ksTableName, $ksArgs);
                     if ($dnaVcfName == "null") {
                         REDTools::writeTableIntoDb($con, $userid, $ksTableName);
                     } else {
                         if (count($dnaVcfTableNameArray) == count($rnaVcfTableNameArray)) {
                             $drTableName = REDTools::getFirstHalfTableName($ksTableName) . DNARNAFilter::getName() . "_" . date("Ymdhisa");
                             $drArgs[0] = $dnaVcfTableNameArray[$i];
                             $drArgs[1] = $lineArray[6];
                             DNARNAFilter::performDNARNAFilter($con, $ksTableName, $drTableName, $drArgs);
                             $lrTableName = REDTools::getFirstHalfTableName($drTableName) . LikelihoodRateFilter::getName() . "_" . date("Ymdhisa");
                             $lrArgs[0] = $dnaVcfTableNameArray[$i];
                             $lrArgs[1] = $lineArray[7];
                             LikelihoodRateFilter::performLikelihoodRateFilter($con, $drTableName, $lrTableName, $lrArgs);
                             REDTools::writeTableIntoDb($con, $userid, $lrTableName);
                         } else {
                             REDLog::writeErrLog("The num of DNA sample is different from RNA sample, please check your vcf file");
                         }
                     }
                     $i++;
                 }
             } else {
                 REDLog::writeErrLog("There is no rnaVcfTables");
             }
         }
         $endInfo = "------------------------\r\n" . "------------------------\r\n" . "RNA Editing Detector end\r\n";
         REDLog::writeInfoLog("{$endInfo}");
     } else {
         //sleep 10 minute,20s to test
         sleep(20);
         self::executeFilters();
     }
 }