@Override public synchronized void aggregate() { sketch.update(valueSelector.getDouble()); }
@Override public synchronized void aggregate(final ByteBuffer buffer, final int position) { final UpdateDoublesSketch sketch = sketches.get(buffer).get(position); sketch.update(selector.getDouble()); }
buildData.write(Double.toString(value)); buildData.newLine(); sketch.update(value); sequenceNumber++;
@Test public void testSerialiseAndDeserialise() { final UpdateDoublesSketch sketch = DoublesSketch.builder().build(); sketch.update(1.0D); sketch.update(2.0D); sketch.update(3.0D); testSerialiser(sketch); final DoublesSketch emptySketch = DoublesSketch.builder().build(); testSerialiser(emptySketch); }
@Override public DoublesSketch compute(final Map<String, Object> combinedAggregators) { final ArrayOfDoublesSketch sketch = (ArrayOfDoublesSketch) getField().compute(combinedAggregators); final UpdateDoublesSketch qs = DoublesSketch.builder().setK(k).build(); final ArrayOfDoublesSketchIterator it = sketch.iterator(); while (it.next()) { qs.update(it.getValues()[column - 1]); // convert 1-based column number to zero-based index } return qs; }
@Override public void update(final double dataItem) { if (gadget_ == null) { gadget_ = HeapUpdateDoublesSketch.newInstance(maxK_); } gadget_.update(dataItem); }
@Test public void heapifyAndUpdateSparseSketch() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); Memory mem = Memory.wrap(s1.toByteArray(false)); UpdateDoublesSketch s2 = (UpdateDoublesSketch) DoublesSketch.heapify(mem); s2.update(3); Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 3.0); }
@Test public void checkMisc() { int k = PreambleUtil.DEFAULT_K; int n = 10000; UpdateDoublesSketch qs = buildAndLoadQS(k, n); qs.update(Double.NaN); //ignore int n2 = (int)qs.getN(); assertEquals(n2, n); qs.reset(); assertEquals(qs.getN(), 0); }
@Test public void heapifySparseSketch() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); Memory mem = Memory.wrap(s1.toByteArray(false)); DoublesSketch s2 = DoublesSketch.heapify(mem); Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 2.0); }
@Test public void oneItemSketch() { UpdateDoublesSketch sketch = DoublesSketch.builder().build(); sketch.update(0); DoublesSketchIterator it = sketch.iterator(); Assert.assertTrue(it.next()); Assert.assertEquals(it.getValue(), 0.0); Assert.assertEquals(it.getWeight(), 1); Assert.assertFalse(it.next()); }
@Test public void heapifyUnionFromSparse() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); Memory mem = Memory.wrap(s1.toByteArray(false)); DoublesUnion u = DoublesUnion.heapify(mem); u.update(3); DoublesSketch s2 = u.getResult(); Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 3.0); }
@Test public void heapifyUnionFromCompact() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); Memory mem = Memory.wrap(s1.toByteArray(true)); DoublesUnion u = DoublesUnion.heapify(mem); u.update(3); DoublesSketch s2 = u.getResult(); Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 3.0); }
static UpdateDoublesSketch buildAndLoadQS(int k, int n, int startV) { UpdateDoublesSketch qs = DoublesSketch.builder().setK(k).build(); for (int i=1; i<=n; i++) { qs.update(startV + i); } return qs; }
@Test public void heapToDirect() { UpdateDoublesSketch heapSketch = DoublesSketch.builder().build(); for (int i = 0; i < 1000; i++) { heapSketch.update(i); } DoublesSketch directSketch = DoublesSketch.wrap(WritableMemory.wrap(heapSketch.toByteArray(false))); assertEquals(directSketch.getMinValue(), 0.0); assertEquals(directSketch.getMaxValue(), 999.0); assertEquals(directSketch.getQuantile(0.5), 500.0, 4.0); }
@Test public void createFromUnsortedUpdateSketch() { final int k = 4; final int n = 13; final UpdateDoublesSketch qs = DoublesSketch.builder().setK(k).build(); for (int i = n; i > 0; --i) { qs.update(i); } final HeapCompactDoublesSketch compactQs = HeapCompactDoublesSketch.createFromUpdateSketch(qs); // don't expect equal but new base buffer should be sorted checkBaseBufferIsSorted(compactQs); }
@Test(expectedExceptions = SketchesArgumentException.class) public void checkPutMemoryTooSmall() { UpdateDoublesSketch qs1 = DoublesSketch.builder().build(); //k = 128 for (int i=0; i<1000; i++) { qs1.update(i); } int bytes = qs1.getCompactStorageBytes(); WritableMemory dstMem = WritableMemory.wrap(new byte[bytes-1]); //too small qs1.putMemory(dstMem); }
@Test public void differentLargerK() { final DoublesUnion union = DoublesUnion.builder().setMaxK(128).build(); final UpdateDoublesSketch sketch1 = buildAndLoadQS(256, 0); union.update(sketch1); Assert.assertEquals(union.getResult().getK(), 128); sketch1.update(1.0); union.update(sketch1); Assert.assertEquals(union.getResult().getK(), 128); }