#!/usr/bin/env python
# Copyright (c) 2011-2012, Universite de Versailles St-Quentin-en-Yvelines
#
# This file is part of ASK.  ASK is free software: you can redistribute
# it and/or modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation, version 2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 51
# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


import numpy as np
import common.cart
from common.configuration import Configuration
from common.tree import load_tree


def predict(configuration, T, requested_file, output_file):
    data = np.genfromtxt(requested_file)

    nf = len(configuration["factors"])

    of = open(output_file, "w")

    for d in data[:,:nf]:
        p = T.compute(d)
        of.write(" ".join(map(str, list(d) + [p])) + "\n")
    of.close()

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="Builds a cart tree model")
    parser.add_argument('configuration')
    parser.add_argument('model')
    parser.add_argument('requested_file')
    parser.add_argument('output_file')
    args = parser.parse_args()

    conf = Configuration(args.configuration)
    T = load_tree(args.model)
    predict(conf, T, args.requested_file, args.output_file)
