package hex.glm;
import water.*;
import water.api.DocGen;
import water.api.Request;
public class GLMModelUpdate extends Request2 {
static final int API_WEAVER = 1; // This file has auto-gen'd doc & json fields
static public DocGen.FieldDoc[] DOC_FIELDS; // Initialized from Auto-Gen code.
@API(help="GLM Model Key", required=true, filter=GLMModelKeyFilter.class)
Key _modelKey;
class GLMModelKeyFilter extends H2OKey { public GLMModelKeyFilter() { super("",true); } }
@API(help="GLM Model")
GLMModel glm_model;
@API(help = "decision threshold",filter=Default.class)
double threshold;
@API(help="lambda_value to be used in scoring",filter=Default.class)
double lambda = Double.NaN;
public static String link(String txt, Key model) {return link(txt,model,Double.NaN);}
public static String link(String txt, Key model, double lambda) {
return "<a href='GLMModelUpdate.html?_modelKey=" + model + "&lambda=" + lambda + "'>" + txt + "</a>";
}
public static Response redirect(Request req, Key modelKey) {
return Response.redirect(req, "/2/GLMModelUpdate", "_modelKey", modelKey);
}
public static Response redirect(Request req, Key modelKey, double threshold, int lambdaId) {
return Response.redirect(req, "/2/GLMModelUpdate", "_modelKey", modelKey,"threshold",threshold, "lambda_id", lambdaId);
}
@Override public boolean toHTML(StringBuilder sb){
new GLMModelView(glm_model).toHTML(sb);
return true;
}
@Override protected Response serve() {
Value v = DKV.get(_modelKey);
if(v != null){
glm_model = v.get();
glm_model.write_lock(null);
int id = 0;
for(; id < glm_model.submodels.length; ++id)
if(glm_model.submodels[id].lambda_value == lambda){
threshold = glm_model.submodels[id].validation.best_threshold;
break;
}
glm_model.setSubmodelIdx(id);
glm_model.update(null);
glm_model.unlock(null);
}
return GLMModelView.redirect(this,_modelKey);
}
// @Override protected Response serve() {
// Value v = DKV.get(_modelKey);
// if(v == null)
// return Response.poll(this, 0, 100, "_modelKey", _modelKey.toString());
// glm_model = v.get();
// if(Double.isNaN(lambda_value))lambda_value = glm_model.lambdas[glm_model.best_lambda_idx];
// Job j;
// if((j = Job.findJob(glm_model.job_key)) != null && j.exception != null)
// return Response.error(j.exception);
// if(DKV.get(glm_model.job_key) != null && j != null)
// return Response.poll(this, (int) (100 * j.progress()), 100, "_modelKey", _modelKey.toString());
// else
// return Response.done(this);
// }
}