package water.api;
import hex.Model;
import water.fvec.Frame;
import water.fvec.Vec;
public class ValidationAdapter {
// public ValidationAdapter(Frame validation, boolean classification) {
// this.validation = validation;
// this.classification = classification;
// }
//
// /** Validation frame */
// final private transient Frame validation;
// /** Whether classification is done or not */
// final private transient boolean classification;
//
// /** Validation vector extracted from validation frame. */
// private transient Vec _validResponse;
// /** Validation response domain or null if validation is not specified or null if response is float. */
// private transient String[] _validResponseDomain;
// /** Source response domain or null if response is float. */
// private transient String[] _sourceResponseDomain;
// /** CM domain derived from {@link #_validResponseDomain} and {@link #_sourceResponseDomain}. */
// private transient String[] _cmDomain;
// /** Names of columns */
// private transient String[] _names;
// /** Name of validation response. Should be same as source response. */
// private transient String _responseName;
//
// /** Adapted validation frame to a computed model. */
// private transient Frame _adaptedValidation;
// private transient Vec _adaptedValidationResponse; // Validation response adapted to computed CM domain
// private transient int[][] _fromModel2CM; // Transformation for model response to common CM domain
// private transient int[][] _fromValid2CM; // Transformation for validation response to common CM domain
//
// /** Returns true if the job has specified validation dataset. */
// private final boolean hasValidation() { return validation!=null; }
// /** Returns a domain for confusion matrix. */
// private final String[] getCMDomain() { return _cmDomain; }
// /** Return validation dataset which can be adapted to a model if it is necessary. */
// public final Frame getValidation() { return _adaptedValidation!=null ? _adaptedValidation : validation; }
// /** Returns original validation dataset. */
// private final Frame getOrigValidation() { return validation; }
// public final Response2CMAdaptor getValidAdaptor() { return new Response2CMAdaptor(); }
//
// /** */
// public final void prepareValidationWithModel(final Model model) {
// if (validation == null) return;
// Frame[] av = model.adapt(validation, false);
// _adaptedValidation = av[0];
//// gtrash(av[1]); // delete this after computation
// if (_fromValid2CM!=null) {
// assert classification : "Validation response transformation should be declared only for classification!";
// assert _fromModel2CM != null : "Model response transformation should exist if validation response transformation exists!";
// Vec tmp = _validResponse.toCategoricalVec();
// _adaptedValidationResponse = tmp.makeTransf(_fromValid2CM, getCMDomain()); // Add an original response adapted to CM domain
//// gtrash(_adaptedValidationResponse); // Add the created vector to a clean-up list
//// gtrash(tmp);
// }
// }
//
// /** A micro helper for transforming model/validation responses to confusion matrix domain. */
// public class Response2CMAdaptor {
// /** Adapt given vector produced by a model to confusion matrix domain. Always return a new vector which needs to be deleted. */
// public Vec adaptModelResponse2CM(final Vec v) { return v.makeTransf(_fromModel2CM, getCMDomain()); }
// /** Adapt given validation vector to confusion matrix domain. Always return a new vector which needs to be deleted. */
// private Vec adaptValidResponse2CM(final Vec v) { return v.makeTransf(_fromValid2CM, getCMDomain()); }
// /** Returns validation dataset. */
// private Frame getValidation() { return getValidation(); }
// /** Return cached validation response already adapted to CM domain. */
// public Vec getAdaptedValidationResponse2CM() { return _adaptedValidationResponse; }
// /** Return cm domain. */
// private String[] getCMDomain() { return getCMDomain(); }
// /** Returns true if model/validation responses need to be adapted to confusion matrix domain. */
// public boolean needsAdaptation2CM() { return _fromModel2CM != null; }
// /** Return the adapted response name */
// public String adaptedValidationResponse(final String response) { return response + ".adapted"; }
// }
}