read())) {
if (preg_match('/^([0-9]+)$/',$run,$match) && $run>0) {
$d = dir($dir."/steps/$run");
while (false !== ($entry = $d->read())) {
process_file_entry("$dir/steps/$run/",$entry);
}
}
}
}
else {
$d = dir($dir."/steps");
while (false !== ($entry = $d->read())) {
process_file_entry($dir."/steps",$entry);
}
}
reset($experiment);
while (list($id,$info) = each($experiment)) {
if (file_exists($dir."/steps/new") ||
file_exists($dir."/steps/$id")) {
$stat = stat("$dir/steps/$id/parameter.$id");
}
else {
$stat = stat("$dir/steps/parameter.$id");
}
$experiment[$id]->start = $stat[9];
}
reset($experiment);
while (list($id,$info) = each($experiment)) {
if (file_exists("$dir/evaluation/report.$id")) {
$f = file("$dir/evaluation/report.$id");
foreach ($f as $line_num => $line) {
if (preg_match('/^(.+): (.+)/',$line,$match)) {
$experiment[$id]->result[$match[1]] = $match[2];
if (!$evalset || !array_key_exists($match[1],$evalset)) {
$evalset[$match[1]] = 0;
}
$evalset[$match[1]]++;
}
}
}
}
krsort($experiment);
ksort($evalset);
}
function load_parameter($run) {
global $dir;
if (file_exists($dir."/steps/new") ||
file_exists($dir."/steps/$run")) {
$file = file("$dir/steps/$run/parameter.$run");
}
else {
$file = file("$dir/steps/parameter.$run");
}
while (list($i,$line) = each($file)) {
if (preg_match("/^(\S+) = (.+)$/",$line,$match)) {
$parameter[$match[1]] = $match[2];
}
}
return $parameter;
}
function load_comment() {
global $comment;
$file = file("comment");
while (list($i,$line) = each($file)) {
$line = chop($line);
$item = explode(";",$line,4);
$comment[$item[0]]->name = $item[1];
// $comment[$item[0]]->url = $item[2];
// $comment[$item[0]]->description = $item[3];
}
}
function process_file_entry($dir,$entry) {
global $experiment;
if (preg_match('/running.(\d+)/',$entry,$match)) {
$stat = stat($dir."/".$entry);
$experiment[$match[1]]->end = $stat[9];
}
else if (preg_match('/^([A-Z\-]+)_([^\.]+)\.(\d+)$/',$entry,$match)) {
$step = $match[1]."
".$match[2];
$run = $match[3];
if ($run > 0 ) {
$file = $dir.$entry;
$stat = stat($file);
if (file_exists($file.".STDERR")) { $stat = stat($file.".STDERR"); }
if (file_exists($file.".STDOUT")) { $stat2 = stat($file.".STDOUT"); }
if ($stat2[9] > $stat[9]) { $stat = $stat2; }
$time = $stat[9];
if (!$experiment || !array_key_exists($run,$experiment) ||
!property_exists($experiment[$run],"last_step_time") ||
$time > $experiment[$run]->last_step_time) {
$experiment[$run]->last_step_time = $time;
$experiment[$run]->last_step = $step;
}
}
}
}
function get_analysis_version($dir,$set,$id) {
global $analysis_version;
if ($analysis_version
&& array_key_exists($id,$analysis_version)
&& array_key_exists($set,$analysis_version[$id])) {
#reset($analysis_version[$id][$set]);
#print "$id,$set ( ";
#while(list($type,$i) = each($analysis_version[$id][$set])) {
# print "$type=$i ";
#}
#print ") FROM CACHE
";
return $analysis_version[$id][$set];
}
$analysis_version[$id][$set]["basic"] = 0;
$analysis_version[$id][$set]["biconcor"] = 0;
$analysis_version[$id][$set]["coverage"] = 0;
$analysis_version[$id][$set]["precision"] = 0;
$prefix = "$dir/evaluation/$set.analysis";
# produced by the run itself ?
if (file_exists("$prefix.$id/summary")) {
$analysis_version[$id][$set]["basic"] = $id;
}
if (file_exists("$prefix.$id/input-annotation")) {
$analysis_version[$id][$set]["coverage"] = $id;
}
if (file_exists("$prefix.$id/precision-by-input-word")) {
$analysis_version[$id][$set]["precision"] = $id;
}
if (file_exists("$dir/model/biconcor.$id")) {
$analysis_version[$id][$set]["biconcor"] = $id;
}
# re-use ?
if (file_exists("$dir/steps/$id/re-use.$id")) {
$re_use = file("$dir/steps/$id/re-use.$id");
foreach($re_use as $line) {
if (preg_match("/EVALUATION:(.+):analysis (\d+)/",$line,$match) &&
$match[1] == $set &&
file_exists("$prefix.$match[2]/summary")) {
$analysis_version[$id][$set]["basic"] = $match[2];
}
else if (preg_match("/EVALUATION:(.+):analysis-coverage (\d+)/",$line,$match) &&
$match[1] == $set &&
file_exists("$prefix.$match[2]/input-annotation")) {
$analysis_version[$id][$set]["coverage"] = $match[2];
}
else if (preg_match("/EVALUATION:(.+):analysis-precision (\d+)/",$line,$match) &&
$match[1] == $set &&
file_exists("$prefix.$match[2]/precision-by-input-word")) {
$analysis_version[$id][$set]["precision"] = $match[2];
}
else if (preg_match("/TRAINING:build-biconcor (\d+)/",$line,$match) &&
file_exists("$dir/model/biconcor.$match[1]")) {
$analysis_version[$id][$set]["biconcor"] = $match[1];
}
}
}
# legacy stuff below...
if (file_exists("$dir/steps/$id/REPORTING_report.$id")) {
$report = file("$dir/steps/$id/REPORTING_report.$id.INFO");
foreach ($report as $line) {
if (preg_match("/\# reuse run (\d+) for EVALUATION:(.+):analysis/",$line,$match) &&
$match[2] == $set) {
if (file_exists("$prefix.$match[1]/summary")) {
$analysis_version[$id][$set]["basic"] = $match[1];
}
}
if (preg_match("/\# reuse run (\d+) for EVALUATION:(.+):analysis-coverage/",$line,$match) &&
$match[2] == $set) {
if (file_exists("$prefix.$match[1]/input-annotation")) {
$analysis_version[$id][$set]["coverage"] = $match[1];
}
}
if (preg_match("/\# reuse run (\d+) for EVALUATION:(.+):analysis-precision/",$line,$match) &&
$match[2] == $set) {
if (file_exists("$prefix.$match[1]/precision-by-input-word")) {
$analysis_version[$id][$set]["precision"] = $match[1];
}
}
if (preg_match("/\# reuse run (\d+) for TRAINING:biconcor/",$line,$match)){
if (file_exists("$dir/model/biconcor.$match[1]")) {
$analysis_version[$id][$set]["biconcor"] = $match[1];
}
}
}
}
#print "$id,$set ( ";
#reset($analysis_version[$id][$set]);
#while(list($type,$i) = each($analysis_version[$id][$set])) {
# print "$type=$i ";
#}
#print ") ZZ
";
return $analysis_version[$id][$set];
}
function get_precision_analysis_version($dir,$set,$id) {
$version = get_analysis_version($dir,$set,$id);
return $version["precision"];
}
function get_basic_analysis_version($dir,$set,$id) {
$version = get_analysis_version($dir,$set,$id);
return $version["basic"];
}
function get_coverage_analysis_version($dir,$set,$id) {
$version = get_analysis_version($dir,$set,$id);
return $version["coverage"];
}
function get_biconcor_version($dir,$set,$id) {
$version = get_analysis_version($dir,$set,$id);
return $version["biconcor"];
}
function get_analysis_filename($dir,$set,$id,$type,$file) {
$version = get_analysis_version($dir,$set,$id);
return "$dir/evaluation/$set.analysis.".$version[$type]."/".$file;
}
function get_current_analysis_filename($type,$file) {
global $dir,$set,$id;
$version = get_analysis_version($dir,$set,$id);
return "$dir/evaluation/$set.analysis.".$version[$type]."/".$file;
}
function get_current_analysis_filename2($type,$file) {
global $dir,$set,$id2;
$version = get_analysis_version($dir,$set,$id2);
return "$dir/evaluation/$set.analysis.".$version[$type]."/".$file;
}