package hex;
import org.junit.BeforeClass;
import org.junit.Test;
import water.*;
import water.fvec.Frame;
import water.fvec.NFSFileVec;
import water.fvec.ParseDataset2;
import water.fvec.Vec;
import water.util.Log;
import water.util.MRUtils;
public class MRUtilsTest extends TestUtil {
@BeforeClass public static void stall() {
stall_till_cloudsize(JUnitRunnerDebug.NODES);
}
@Test public void run() {
Frame frame = null;
Frame f0 = null;
Frame f1 = null;
Frame f2 = null;
Frame f3 = null;
Frame f4 = null;
Frame f5 = null;
Frame f6 = null;
Vec orig_response = null;
Key file = null;
try {
file = NFSFileVec.make(find_test_file("smalldata/./logreg/prostate.csv"));
frame = ParseDataset2.parse(Key.make(), new Key[]{file});
orig_response = frame.remove(1);
frame.add("response", orig_response.toEnum());
frame.add("MOV", frame.remove(2));
frame.add("ASP", frame.remove("PSA"));
f0 = MRUtils.sampleFrameStratified(frame, frame.vecs()[frame.find("response")], new float[]{1.3f, 2.3f}, 0x1c3db4b3, true);
f1 = MRUtils.shuffleAndBalance(frame, H2O.NUMCPUS * H2O.CLOUD.size() /*nchunks*/, 0x600ddad, true /*shuffle*/, false /*create many (global) chunks*/);
f2 = MRUtils.sampleFrameStratified(frame, frame.vecs()[frame.find("response")], new float[]{1.3f, 2.3f}, 0x1c3db4b3, true);
f3 = MRUtils.sampleFrame(frame, 7, 0xdecaf);
f4 = MRUtils.sampleFrame(f2, 15, 0xdecaf);
f5 = MRUtils.sampleFrame(f1, 13, 0xdecaf);
f6 = MRUtils.sampleFrameStratified(f2, f2.vecs()[f2.find("response")], new float[]{1.0f, 1.3f}, 0x1c3db4b3, true);
f3.add("SWP", f3.vecs()[f3.find("ASP")]);
Log.info(f3.toStringAll());
assert(f3.names().length == f3.vecs().length);
assert(f3.names().length == 10);
assert(f3.names()[0].equals("ID"));
assert(f3.names()[1].equals("AGE"));
assert(f3.names()[2].equals("DPROS"));
assert(f3.names()[3].equals("DCAPS"));
assert(f3.names()[4].equals("VOL"));
assert(f3.names()[5].equals("GLEASON"));
assert(f3.names()[6].equals("response"));
assert(f3.names()[7].equals("MOV"));
assert(f3.names()[8].equals("ASP"));
assert(f3.names()[9].equals("SWP"));
}
finally {
// cleanup
if (f6 != null) f6.delete();
if (f5 != null) f5.delete();
if (f4 != null) f4.delete();
if (f3 != null) f3.delete();
if (f2 != null) f2.delete();
if (f1 != null) f1.delete();
if (f0 != null) f0.delete();
if (frame != null) frame.delete();
if (orig_response != null) UKV.remove(orig_response._key);
UKV.remove(file);
}
}
}