datareduce
Version:
Largest Triangle 3 Buckets with 1D Arrays as input
87 lines (67 loc) • 2.11 kB
JavaScript
const reducedata = require("../../datareduce")
const downsampler = require("downsample-lttb")
const {largestTriangleThreeBucket} = require('d3fc-sample')
const llttd3 = largestTriangleThreeBucket();
loops = 1
reduced_size = 1000
dataset_size = 70000
//provide a series as an array of [x,y] pairs
var dataSeries = [[1,2],[2,2],[3,3],[4,3],[5,6],[6,3],[7,3],[8,5],[9,4],[10,4],[11,1],[12,2]];
for(i=0;i<dataset_size;i++){
dataSeries[i] = [i,Math.floor(Math.random() * 10) ]
}
var arrX=[],arrY=[]
for(i=0;i<dataSeries.length;i++){
arrX.push(dataSeries[i][0])
arrY.push(dataSeries[i][1])
}
//console.log(arrX,arrY)
var dwnSmp
console.log(`\nTime to reduce ${dataset_size} data points to ${reduced_size}`)
console.log('------------------------')
//-----------------------------------
console.time('d3fc-sample');
chunkSize = Math.ceil( (dataSeries.length - 2 )/ (reduced_size - 2) )
llttd3.bucketSize(chunkSize);
llttd3.x(d => d[0]).y(d => d[1]);
for (i=0;i<loops;i++) {
dwnSmp = llttd3(dataSeries);
}
console.timeEnd('d3fc-sample');
//console.log(dwnSmp);
console.log("------------------------")
//-----------------------------------
console.time('downsampler-lttb');
for (i=0;i<loops;i++) {
dwnSmp = downsampler.processData(dataSeries, reduced_size);
}
console.timeEnd('downsampler-lttb');
console.log("------------------------")
//-----------------------------------
console.time('reducedata.lt3b');
var dsX, dsY
for (i=0;i<loops;i++) {
[dsX,dsY] = reducedata.lt3b(arrX, arrY, reduced_size)
}
console.timeEnd('reducedata.lt3b');
//console.log(dsX,dsY);
console.log("------------------------")
// Check for compiance.
assert = 0
for (i=0; i<dwnSmp.length;i++){
if (dwnSmp[i][0] != dsX[i]) {
//console.log( i,'x',dwnSmp[i][0], dsX[i] )
assert = 1
}
if (dwnSmp[i][1] != dsY[i]) {
//console.log( i,'y',dwnSmp[i][1], dsY[i] )
assert = 1
}
}
str_prefix = "Comparison of reduced dataset between lttb and lt3b are"
if ( assert ) {
console.log(`${str_prefix} NOT EQUAL !!!\n`)
}
else {
console.log(`${str_prefix} EQUAL :)\n`)
}