#!/usr/local/bin/perl

# run_cla_c45rules
# by Johann Petrak (OeFAI)

$pgmversion = '$Revision: 3.0 $';
$pgmdate    = '$Date: 2002/06/30 19:05:19 $';
$rcsid      = '$Id: run_cla_c45rules,v 3.0 2002/06/30 19:05:19 johann Exp $';
$dummy      = '$';   # just here to satisfy the dumb emacs fontifyer

use vars qw($pgmname $pgmpath $trainargs $args
	    $testargs  $size $predfile $filestem);
use Getopt::Long;
use File::Basename;
$pgmname = $0;
$pgmpath = dirname($pgmname);
push(@INC,$pgmpath);
require run_lib;

beginLA("c45rules",$pgmversion); 


startCMD("c4.5 -f $filestem $args $trainargs");
while (defined($_=getLine())) {
}

addCMD("c4.5rules -f $filestem $args $trainargs");

my $start = 0;
while (defined($_=getLine())) {
  if (/Final rules from tree/) {
    $start = 1;
  } elsif ($start && /^Rule [0-9]+:/) {
    $k{"Size"} = 0 if ($k{"Size"} eq "?");
    $k{"Size"} += 1;
  } elsif (/Tested\s\d+,\serrors\s\d+\s\(([^%]+)%\)\s+\<\</) {
    $k{"Resubsterror"} = $1 / 100;
  }
}
$k{"Traintime"} = stopCMD();

startCMD("bconsultr -f $filestem $args $testargs");
while (defined($_=getLine())) {
  if (/\(([0-9\.]+)%\)/) {
    $k{"Error"} = $1 / 100.0;
  }
}
$k{"Testtime"} = stopCMD();

copy("$filestem.labs","$predfile");

rmFile("$filestem.labs");
rmFile("$filestem.tree");
rmFile("$filestem.rules");
rmFile("$filestem.unpruned");

endLA();
