#!/usr/bin/perl -w

# $Id: mksvmdata.in,v 1.3 2001/06/19 03:27:00 taku-ku Exp $;
use Getopt::Std;
my %arg;
getopts("i:",%arg);

die "Usage: $0 -i output_prefix_name\n" if (! $arg{i} && ! @ARGV);

my %dicHash = ();
my %outHash = ();
my $paramFileName = ($arg{i} || $ARGV[0]) . ".param";
my $dataFileName  = ($arg{i} || $ARGV[0]) . ".data";
my $outFileName   = ($arg{i} || $ARGV[0]) . ".svmdata";

open(F, $paramFileName) || die "$! $paramFileName\n";
# skip headers

while(<F>) {
  last if (/^\s*$/);
}

# contents
while(<F>) {
    chomp;
    last if (/^\s*$/);
    my($id, $str) = split();
    $dicHash{$str} = $id;
}
close(F);

# parse 
open(F, $dataFileName)     || die "$! $dataFileName\n";
open(S, "> $outFileName")  || die "$! $outFileName\n";

while(<F>) {
  last if(/^\s*$/);
}

# contents
while(<F>) {
    chomp;
    next if(/^\s*$/);
    my(@t) = split(/\s+/,$_);
    my($class) = shift(@t);
    my(%tmp);
    for $key (@t) {
	if (defined $dicHash{$key}) {
	    $tmp{$dicHash{$key}} = 1;
	} else {
	    die "[$key] is not defined in $paramFileName\n";
	}
    }
    
    my(@tmp2);
    for (sort { $a <=> $b } keys %tmp) {
	push(@tmp2,"$_:$tmp{$_}");
    }
    print S "$class @tmp2\n";
}
close(F);
close(S);
