@Override public void reset(final ColumnValueSelector selector) { union.reset(); fold(selector); }
u.reset(); fail(); } catch (SketchesReadOnlyException e) {
@Test public void checkUnion1() { DoublesSketch result; final DoublesSketch qs1; final DoublesUnion union = DoublesUnion.builder().setMaxK(256).build(); //virgin 256 final DoublesSketch qs0 = buildAndLoadQS(256, 500); union.update(qs0); //me = null, that = valid, exact result = union.getResult(); assertEquals(result.getN(), 500); assertEquals(result.getK(), 256); union.reset(); qs1 = buildAndLoadQS(256, 1000); //first 1000 union.update(qs1); //me = null, that = valid, OK //check copy me = null, that = valid result = union.getResult(); assertEquals(result.getN(), 1000); assertEquals(result.getK(), 256); //check merge me = valid, that = valid, both K's the same final DoublesSketch qs2 = buildAndLoadQS(256, 1000, 1000); //add 1000 union.update(qs2); result = union.getResult(); assertEquals(result.getN(), 2000); assertEquals(result.getK(), 256); }
@Test public void checkUnion1Direct() { DoublesSketch result; final DoublesSketch qs1; final DoublesUnion union = DoublesUnion.builder().setMaxK(256).build(); //virgin 256 final DoublesSketch qs0 = buildAndLoadDQS(256, 500); union.update(qs0); //me = null, that = valid, exact result = union.getResult(); assertEquals(result.getN(), 500); assertEquals(result.getK(), 256); union.reset(); qs1 = buildAndLoadDQS(256, 1000); //first 1000 union.update(qs1); //me = null, that = valid, OK //check copy me = null, that = valid result = union.getResult(); assertEquals(result.getN(), 1000); assertEquals(result.getK(), 256); //check merge me = valid, that = valid, both K's the same final DoublesSketch qs2 = buildAndLoadDQS(256, 1000, 1000).compact(); //add 1000 union.update(qs2); result = union.getResult(); assertEquals(result.getN(), 2000); assertEquals(result.getK(), 256); }
@Test public void checkUpdateMemory() { final DoublesSketch qs1 = buildAndLoadQS(256, 1000); final int bytes = qs1.getCompactStorageBytes(); final WritableMemory dstMem = WritableMemory.wrap(new byte[bytes]); qs1.putMemory(dstMem); final Memory srcMem = dstMem; final DoublesUnion union = DoublesUnion.builder().build(); //virgin union.update(srcMem); for (int i = 1000; i < 2000; i++) { union.update(i); } final DoublesSketch qs2 = union.getResult(); assertEquals(qs2.getMaxValue(), 1999, 0.0); final String s = union.toString(); println(s); //enable printing to see union.reset(); //sets to null }
@Test public void checkUpdateMemoryDirect() { final DoublesSketch qs1 = buildAndLoadDQS(256, 1000); final int bytes = qs1.getCompactStorageBytes(); final WritableMemory dstMem = WritableMemory.wrap(new byte[bytes]); qs1.putMemory(dstMem); final Memory srcMem = dstMem; final DoublesUnion union = DoublesUnion.builder().build(); //virgin union.update(srcMem); for (int i = 1000; i < 2000; i++) { union.update(i); } final DoublesSketch qs2 = union.getResult(); assertEquals(qs2.getMaxValue(), 1999, 0.0); final String s = union.toString(); println(s); //enable printing to see union.reset(); //sets to null }
@Test public void checkUnion4() { //Union is direct, valid and with larger K than valid input final int k1 = 8; final int n1 = 2 * k1; //16 final int k2 = 4; final int n2 = 2 * k2; //8 final int bytes = DoublesSketch.getUpdatableStorageBytes(256, 50);//just for size final WritableMemory skMem = WritableMemory.wrap(new byte[bytes]); final UpdateDoublesSketch sketchIn1 = DoublesSketch.builder().setK(k1).build(skMem); for (int i = 0; i < n1; i++) { sketchIn1.update(i + 1); } final WritableMemory uMem = WritableMemory.wrap(new byte[bytes]); final DoublesUnion union = DoublesUnion.builder().setMaxK(256).build(uMem); //virgin 256 //DoublesUnion union = DoublesUnion.builder().setMaxK(256).build(); //virgin 256 union.update(sketchIn1); assertEquals(union.getResult().getN(), n1); assertEquals(union.getMaxK(), 256); assertEquals(union.getEffectiveK(), k1); DoublesSketch result = union.getResult(); assertEquals(result.getN(), 16); assertEquals(result.getMaxValue(), n1, 0.0); assertEquals(result.getMinValue(), 1.0, 0.0); assertEquals(result.getK(), k1); final DoublesSketch sketchIn2 = buildAndLoadQS(k2, n2, 17); union.reset(); union.update(sketchIn2); result = union.getResult(); assertEquals(result.getMaxValue(), n2 + 17, 0.0); assertEquals(result.getMinValue(), 1.0 + 17, 0.0); println("\nFinal" + union.getResult().toString(true, true)); }
@Test public void checkUnion4Direct() { //Union is direct, valid and with larger K than valid input final int k1 = 8; final int n1 = 2 * k1; //16 final int k2 = 4; final int n2 = 2 * k2; //8 final int bytes = DoublesSketch.getUpdatableStorageBytes(256, 50);//just for size final WritableMemory skMem = WritableMemory.wrap(new byte[bytes]); final UpdateDoublesSketch sketchIn1 = DoublesSketch.builder().setK(k1).build(skMem); for (int i = 0; i < n1; i++) { sketchIn1.update(i + 1); } final WritableMemory uMem = WritableMemory.wrap(new byte[bytes]); final DoublesUnion union = DoublesUnion.builder().setMaxK(256).build(uMem); //virgin 256 union.update(sketchIn1); assertEquals(union.getResult().getN(), n1); assertEquals(union.getMaxK(), 256); assertEquals(union.getEffectiveK(), k1); DoublesSketch result = union.getResult(); assertEquals(result.getN(), 16); assertEquals(result.getMaxValue(), n1, 0.0); assertEquals(result.getMinValue(), 1.0, 0.0); assertEquals(result.getK(), k1); final DoublesSketch sketchIn2 = buildAndLoadDQS(k2, n2, 17); union.reset(); union.update(sketchIn2); result = union.getResult(); assertEquals(result.getMaxValue(), n2 + 17, 0.0); assertEquals(result.getMinValue(), 1.0 + 17, 0.0); println("\nFinal" + union.getResult().toString(true, true)); }
@Test public void checkUnion4DirectCompact() { final int k1 = 8; final int n1 = 2 * k1; //16 final int k2 = 4; final int n2 = 5 * k2; //8 final int bytes = DoublesSketch.getUpdatableStorageBytes(256, 50);//just for size final WritableMemory skMem = WritableMemory.wrap(new byte[bytes]); final UpdateDoublesSketch sketchIn0 = DoublesSketch.builder().setK(k1).build(skMem); for (int i = 0; i < n1; i++) { sketchIn0.update(i + 1); } final CompactDoublesSketch sketchIn1 = sketchIn0.compact(); final WritableMemory uMem = WritableMemory.wrap(new byte[bytes]); final DoublesUnion union = DoublesUnion.builder().setMaxK(256).build(uMem); //virgin 256 union.update(sketchIn1); assertEquals(union.getResult().getN(), n1); assertEquals(union.getMaxK(), 256); assertEquals(union.getEffectiveK(), k1); DoublesSketch result = union.getResult(); assertEquals(result.getN(), 16); assertEquals(result.getMaxValue(), n1, 0.0); assertEquals(result.getMinValue(), 1.0, 0.0); assertEquals(result.getK(), k1); final CompactDoublesSketch sketchIn2 = buildAndLoadDQS(k2, n2, 17).compact(); union.reset(); union.update(sketchIn2); result = union.getResult(); assertEquals(result.getMaxValue(), n2 + 17, 0.0); assertEquals(result.getMinValue(), 1.0 + 17, 0.0); println("\nFinal" + union.getResult().toString(true, true)); }
@Override protected void mergeUnionSketch() { result = unionSketch.getResult(); unionSketch.reset(); }
@Override public void reset() { result = null; updateSketch.reset(); unionSketch.reset(); super.reset(); }