Exemplo n.º 1
0
 public function dbscanDataAction()
 {
     $db = $this->container->getDBUtils();
     $jobid = Utils::get_GET_string("jobid");
     $metric_x = Utils::get_GET_int("metric_x") !== null ? Utils::get_GET_int("metric_x") : 0;
     $metric_y = Utils::get_GET_int("metric_y") !== null ? Utils::get_GET_int("metric_y") : 1;
     $task_type = $db->get_task_type(Utils::get_GET_string("task_type"));
     $heuristic = Utils::get_GET_int("heuristic") !== null ? Utils::get_GET_int("heuristic") : 1;
     $eps = Utils::get_GET_float("eps") !== null ? Utils::get_GET_float("eps") : 250000;
     $minPoints = Utils::get_GET_int("minPoints") !== null ? Utils::get_GET_int("minPoints") : 1;
     // Heuristic: let DBSCAN choose the parameters
     if ($heuristic) {
         $eps = $minPoints = null;
     }
     $dbscan = $db->get_dbscan($jobid, $metric_x, $metric_y, $task_type, $eps, $minPoints);
     $seriesData = array();
     foreach ($dbscan->getClusters() as $cluster) {
         $data = array();
         foreach ($cluster as $point) {
             $task_id = $point->info['task_id'];
             $task_value_x = $point->x;
             $task_value_y = $point->y;
             $data[] = array('x' => $task_value_x, 'y' => $task_value_y, 'task_id' => $task_id);
         }
         if ($data) {
             $seriesData[] = array('points' => $data, 'size' => $cluster->count(), 'x_min' => $cluster->getXMin(), 'x_max' => $cluster->getXMax(), 'y_min' => $cluster->getYMin(), 'y_max' => $cluster->getYMax());
         }
     }
     $noiseData = array();
     foreach ($dbscan->getNoise() as $point) {
         $task_id = $point->info['task_id'];
         $task_value_x = $point->x;
         $task_value_y = $point->y;
         $noiseData[] = array('x' => $task_value_x, 'y' => $task_value_y, 'task_id' => $task_id);
     }
     $result = ['seriesData' => $seriesData, 'noiseData' => $noiseData, 'heuristic' => $heuristic, 'eps' => $dbscan->getEps(), 'minPoints' => $dbscan->getMinPoints()];
     header('Content-Type: application/json');
     ob_start('ob_gzhandler');
     echo json_encode($result, JSON_NUMERIC_CHECK);
 }