#print $class; $vec = $logD->rel("{$class}-vector.json"); if (!$vec->exists()) { ?> Run <a href="a.php?MkCluster">MkCluster</a><?php return; } $vecs = $vec->obj(); $cluster = new VecCluster($vecs); $count = 0; foreach ($files as $file) { if ($file->startsWith($class) && $file->endsWith("-data.log")) { $data = array_map(function ($line) { global $count, $cluster; $e = json2array($line); $code = LogUtil::detectProgram($e); $vec = VecUtil::mkvec($code); $a = $cluster->nearest($vec); $e["nearest"] = $a[0]; $e["dist"] = $a[1]; /*if (isset($e["code"])) { $code=$e["code"]; if (is_array($code)) { $e["nearest"]=array(); $e["dist"]=array(); foreach ($code as $k=>$c) { $v=VecUtil::mkvec($c); $a=$cluster->nearest($v); $e["nearest"][$k]=$a[0]; $e["dist"][$k]=$a[1]; }
require_once __DIR__ . "/../auth.php"; $class = Auth::curClass(); $get = new PQuery($_GET); $k = $get->attrDef("k", 20); if ($get->attrDef("state", 0) == 0) { //$vecs=array(); $filesLimit = $get->attrDef("filesLimit", 1000000000); $logDir = LogUtil::getLogDir(); $logFiles = LogUtil::getLogFiles(); $cntmax = count($logFiles); $cnt = 0; $fp = $logDir->rel("{$class}-allvec.txt")->openWrite(); foreach ($logFiles as $logFile) { showProgress("Process {$cnt}/{$cntmax}"); foreach (LogUtil::readLog($logFile) as $i => $log) { $prog = LogUtil::detectProgram($log); $vec = VecUtil::mkvec2($prog); //$vec->logFile=$logFile; //$vec->index=$i; //$vecs[]=$vec; fwrite($fp, json_encode($vec->ary) . "\n"); } if ($cnt++ > $filesLimit) { break; } } fclose($fp); ?> <script>location.href="a.php?MkCluster&state=1&k=<?php echo $k; ?>