function listSensors($opts) { $req = new DATARequest($opts); $reader = $req->CreateReader(); $groups = $reader->GetGroups(); $grouplist = $reader->GetGroupList(); $mask = new MASK($opts); $i = 0; foreach ($grouplist as $group => $details) { $itemlist[$det['gid']] = $reader->GetItemList($groups[$i], $mask); $i++; } foreach ($itemlist as $gid => $items) { if (!is_numeric($gid)) { foreach ($items as $key => $item) { $details['groups'][$gid][$key] = array("id" => "{$item['id']}", "name" => "{$item['name']}"); } } } return $details; }
function GetDownloadDetails() { $i = 0; $download = $_GET['dl_id']; $res = $this->cache->GetDownloads($download); $row = mysql_fetch_assoc($res); $opts = array('dl_id' => ''); foreach ($row as $key => $value) { $opts[$key] = $value; } if (!($size = $opts['filesize'])) { $size = "n/a"; } else { if ($size < 1) { $size = "<1 MB"; } else { $size .= " MB"; } } if ($opts['ctype'] == "application/x-zip-compressed") { $format = "zip/{$opts['format']}"; } else { $format = $opts['format']; } if ($row['srctree'] != "") { $res = SOURCETree::Parse($row['srctree']); foreach ($res as $key => $grp) { $req = new DATARequest($grp['props']); $reader = $req->CreateReader(); $itemlist[$key] = $reader->GetItemList(); } } else { $req = new DATARequest($opts); $reader = $req->CreateReader(); $grps = $reader->GetGroups(); $glist = $reader->GetGroupList(); $mask = new MASK($opts); foreach ($glist as $grp => $det) { $itemlist[$det['gid']] = $reader->GetItemList($grps[$i], $mask); $i = $i + 1; } } $window = $this->ParseReadableWindow($opts['window']); if ($opts['status'] == "ERROR") { $download_props['error'] = "Something went wrong while preparing data."; } if ($error = $opts['error']) { $download_props['error'] = $error; } $download_props['window'] = $window; $download_props['format'] = $format; $download_props['size'] = $size; $download_details['props'] = $download_props; foreach ($itemlist as $gid => $items) { if (!is_numeric($gid)) { foreach ($items as $key => $item) { $download_details['groups'][$gid][$key] = array("id" => "{$item['id']}", "name" => "{$item['name']}"); } } } return $download_details; }
<?php require "../../adei.php"; $_POST['props'] = "{\"db_server\": \"autogen\", \"db_name\": \"minutely\", \"db_group\": \"default\", \"db_mask\": \"\", \"experiment\": \"0-0\", \"window\": \"-1\", \"format\": \"csv\"}"; try { $req = new DATARequest(); $rdr = $req->CreateReader(); $group = $rdr->CreateGroup(); $group = $rdr->CreateGroup(); $caches = $rdr->CreateCacheSet($group); $ivl = $caches->CreateInterval(); $cfg = array("type" => CACHE::TYPE_AUTO, "limit" => $limit, "amount" => $limit, "precision" => $precision); foreach ($caches as $key => $cachewrap) { $cache = $cachewrap->GetCache(); $size = $cachewrap->GetWidth(); } $data = $cache->reader->GetFilteredData(); foreach ($data as $time => $vector) { echo "{$time}"; foreach ($vector as $v) { echo ", {$v}"; } echo "\n"; } } catch (ADEIException $e) { echo "ERROR: " . $e->getInfo(); }
function GetView() { global $ADEI_ID_DELIMITER; global $TMP_PATH; $req = $this->req->CreateDataRequest(); $mapping_group = $req->GetProp("view_mapping_group", false); if (!$mapping_group) { throw new ADEIException(translate("Parameter view_mapping_group is not set")); } if ($mapping_group != "all") { list($server_db, $name_db, $group_db) = explode($ADEI_ID_DELIMITER, $mapping_group); $props_to_replace = array("db_server" => $server_db, "db_name" => $name_db, "db_group" => $group_db, "db_mask" => ""); $req = new DATARequest(array_merge($req->props, $props_to_replace)); } if ($this->object) { $width = $req->GetProp($this->object . "_width", $this->min_width + 20) - 20; if ($width < $this->min_width) { $width = $this->min_width; } $height = $width - 40; } else { $width = $req->GetProp("page_width", $this->min_width + 5) - 5; $height = $req->GetProp("page_height", $this->min_height); if ($width < $this->min_width) { $width = $this->min_width; } if ($height < $this->min_height) { $height = $this->min_height; } } $rdr = $req->CreateReader(); $group = $rdr->CreateGroup(); $caches = $rdr->CreateCacheSet($group, $mask); $myreq = $this->req->CreateDataRequest(); $iv = $caches->CreateInterval($req, true); $window_size = $iv->GetWindowSize(); $window_start = $iv->GetWindowStart(); $window_end = $iv->GetWindowEnd(); $rescfg = array('limit' => 1, 'resolution' => $res); $norm_hist_max = $req->GetProp("view_hist_norm_max", false); $norm_hist_srf = $req->GetProp("view_hist_norm_srf", false); $scale_log = $req->GetProp("view_log_scale", false); $mode_of_draw = $req->GetProp("view_draw_mode", false); $bin_from = $req->GetProp("view_bin_from", false); $bin_to = $req->GetProp("view_bin_to", false); $max_of_y = $req->GetProp("view_y_max", false); if (!$bin_from || $bin_from <= 0 || $bin_from == "false") { $bin_from = 1; } if (!isset($max_of_y) || $max_of_y < 0) { $max_of_y = 0; } $x_bin = array(); $x_bin_min = array(); $x_bin_max = array(); $x_bin_sum = array(); $x_axis_tick_labels = array(); foreach ($caches as $key => $cachewrap) { $resolution = $cachewrap->GetResolution(); if (!$bin_to || $bin_to <= 0 || $bin_to == "false") { $bin_to = $cachewrap->GetWidth(); } $bins_n = $bin_to - $bin_from + 1; $r = $resolution->Get($iv, $width); $size = $resolution->GetWindowSize($r); if ($size > 0 && $window_size / $size > $this->max_points) { $new_r = $resolution->Larger($r); if ($new_r !== false) { $r = $new_r; } $size = $resolution->GetWindowSize($r); } $rescfg['resolution'] = $r; $points = $cachewrap->GetIntervals($iv, $rescfg, CACHE::TRUNCATE_INTERVALS); $operation_info = $points->GetOperationInfo(); $res_x = $size; $sum_of_vars = 0; $sum_of_vars_min = 0; $sum_of_vars_max = 0; $number_of_events = 0; $number_of_events_min = 0; $number_of_events_max = 0; foreach ($points as $t => $v) { for ($i = $bin_from - 1; $i < $bin_to; $i++) { $bin_height = $v['mean' . $i]; if ($mode_of_draw == "hist_sum") { $bin_height *= $v['items']; } $x_bin[$i - $bin_from + 1] += $bin_height; $sum_of_vars += ($i + 1) * $bin_height; $number_of_events += $bin_height; if ($mode_of_draw == "hist_minmax") { $x_bin_min[$i - $bin_from + 1] += $v['min' . $i]; $x_bin_max[$i - $bin_from + 1] += $v['max' . $i]; } array_push($x_axis_tick_labels, sprintf("%d", $i + 1)); } } if (!$x_bin) { throw new ADEIException(translate("No data found")); } $mean = $sum_of_vars / $number_of_events; $var_std = 0; $var_sum = 0; $var_bin = 0; $half_number_of_events = $number_of_events / 2; for ($i = $bin_from; $i <= $bin_to; $i++) { $var_std += ($i - $mean) * ($i - $mean) * $x_bin[$i - $bin_from]; if ($var_sum < $half_number_of_events) { $var_sum += $x_bin[$i - $bin_from]; $var_bin = $i - $bin_from; } } $stddev = sqrt($var_std / $number_of_events); $median = $var_bin + ($half_number_of_events - $var_sum + $x_bin[$var_bin + 1]) / $x_bin[$var_bin + 1]; } $tmp_file = ADEI::GetTmpFile(); $graph = new Graph($width, $height); $graph->SetTickDensity(TICKD_SPARSE, TICKD_SPARSE); $graph->img->SetMargin(55, 5, 10, 20); if (!$scale_log) { $graph->SetScale("textlin", 0, $max_of_y); } else { if (min($x_bin) >= 0) { $graph->SetScale("textlog"); } else { throw new ADEIException(translate("The selected data contains negative values which can't be visualized on the log scale")); } } $graph->xaxis->SetPos("min"); $graph->yaxis->SetPos("min"); $graph->xaxis->SetFont(FF_ARIAL, FS_NORMAL, 8); $graph->yaxis->SetFont(FF_ARIAL, FS_NORMAL, 8); $graph->xaxis->title->SetFont(FF_ARIAL, FS_BOLD); $graph->yaxis->title->SetFont(FF_ARIAL, FS_BOLD); if ($bins_n > 16) { $graph->xaxis->SetTextLabelInterval(ceil($bins_n / ceil($width / 25))); } $graph->xaxis->SetTickLabels($x_axis_tick_labels); $bplot = new BarPlot($x_bin); $bplot->SetWidth(1); if ($mode_of_draw == "hist_sum") { $bplot->SetLegend("Sum Mode"); } else { $bplot->SetLegend("AVG Mode"); } if ($mode_of_draw == "hist_minmax") { $bplot_min = new BarPlot($x_bin_min); $bplot_min->SetWidth(1); $bplot_min->SetLegend("Minimum"); $bplot_min->SetFillColor('deepskyblue'); $bplot_max = new BarPlot($x_bin_max); $bplot_max->SetWidth(1); $bplot_max->SetLegend("Maximum"); $bplot_max->SetFillColor('indianred1'); } if ($mode_of_draw == "hist_minmax") { $graph->Add($bplot_max); } $graph->Add($bplot); if ($mode_of_draw == "hist_minmax") { $graph->Add($bplot_min); } $graph->yaxis->scale->SetGrace(14); $graph->Stroke("{$TMP_PATH}/{$tmp_file}"); if ($this->object) { $res = array(array("img" => array("id" => $tmp_file)), array("info" => array(array("title" => _("Number of Bins"), "value" => round($bins_n, 3)), array("title" => _("Mode"), "value" => array_search(max($x_bin), $x_bin) + $bin_from), array("title" => _("Mean"), "value" => round($mean, 3)), array("title" => _("Median"), "value" => round($median, 3)), array("title" => _("Value of Mode"), "value" => round(max($x_bin), 3)), array("title" => _("Integral of Hist"), "value" => round($number_of_events, 3)), array("title" => _("StdDev"), "value" => round($stddev, 3)), array("title" => _("RE"), "value" => round($stddev / $mean * 100 . "%", 3) . "%"), array("title" => _("From"), "value" => date('c', $iv->GetWindowStart())), array("title" => _("To"), "value" => date('c', $iv->GetWindowEnd())), array("title" => _("Resolution"), "value" => round($res_x, 3))))); return $res; } else { return array("img" => array("id" => $tmp_file)); } }