package hex.api; import hex.mli.loco.LeaveOneCovarOut; import hex.schemas.LeaveOneCovarOutV3; import water.H2O; import water.Job; import water.api.FramesHandler; import hex.Model; import water.api.schemas3.JobV3; import water.fvec.Frame; import water.api.Handler; import water.api.ModelsHandler; import water.Key; public class LeaveOneCovarOutHandler extends Handler { public JobV3 getLoco(int version, final LeaveOneCovarOutV3 args) { final Frame frame = FramesHandler.getFromDKV("frame", args.frame.key()); final Model model= ModelsHandler.getFromDKV("model",args.model.key()); assert model.isSupervised() : "Model " + model._key + " is not supervised."; String locoFrameId = args.loco_frame_id; final String replaceVal = args.replace_val; if(locoFrameId == null){ locoFrameId = "loco_"+frame._key.toString() + "_" + model._key.toString(); } final Job<Frame> job = new Job(Key.make(locoFrameId), Frame.class.getName(), "Conduct Leave One Covariate Out for each column in the frame"); final String dest_frame_id = locoFrameId; H2O.H2OCountedCompleter work = new H2O.H2OCountedCompleter() { @Override public void compute2() { LeaveOneCovarOut.leaveOneCovarOut(model,frame,job,replaceVal,Key.make(dest_frame_id)); tryComplete(); } }; job.start(work, model._output._names.length); return new JobV3().fillFromImpl(job); } }