package water;
import java.io.InputStream;
import water.api.Cloud;
import water.util.Log;
import dontweave.gson.JsonObject;
public class InternalInterface implements water.ExternalInterface {
@Override public Key makeKey( String key_name ) { return Key.make(key_name); }
@Override public Value makeValue( Object key, byte[] bits ) { return new Value((Key)key,bits); }
@Override public void put( Object key, Object val ) { UKV.put((Key)key,(Value)val); }
@Override public Value getValue( Object key ) { return UKV.getValue((Key)key); }
@Override public byte[] getBytes( Object val ) { return ((Value)val).memOrLoad(); }
@Override public Model ingestRFModelFromR( Object key, InputStream is ) {
return null;
}
// All-in-one call to lookup a model, map the columns and score
@Override public float[] scoreKey( Object modelKey, String [] colNames, String domains[][], double[] row ) {
Key key = (Key)modelKey;
String sk = key.toString();
Value v = DKV.get(key);
if (v == null)
throw new IllegalArgumentException("Key "+sk+" not found!");
try {
return scoreModel(v.get(),colNames,domains,row);
} catch(Throwable t) {
Log.err(t);
throw new IllegalArgumentException("Key "+sk+" is not a Model key");
}
}
@Override public float[] scoreModel(Object model, String[] colNames, String domains[][], double[] row) {
return ((Model)model).score(colNames,domains,false,row);
}
@Override public JsonObject cloudStatus( ) { return new Cloud().serve().toJson(); }
}