@datagrok/eda 1.4.3 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/_d4c0.js +279 -0
- package/dist/_d4c0.js.map +1 -0
- package/dist/node_modules_datagrok-libraries_math_src_dbscan_wasm_clustering-worker_js.js +279 -0
- package/dist/node_modules_datagrok-libraries_math_src_dbscan_wasm_clustering-worker_js.js.map +1 -0
- package/dist/node_modules_datagrok-libraries_ml_src_MCL_mcl-sparse-matrix-mult-worker_js.js +59 -0
- package/dist/node_modules_datagrok-libraries_ml_src_MCL_mcl-sparse-matrix-mult-worker_js.js.map +1 -0
- package/dist/node_modules_datagrok-libraries_ml_src_distance-matrix_distance-matrix-worker_js.js +284 -0
- package/dist/node_modules_datagrok-libraries_ml_src_distance-matrix_distance-matrix-worker_js.js.map +1 -0
- package/dist/node_modules_datagrok-libraries_ml_src_distance-matrix_single-value-knn-worker_js.js +265 -0
- package/dist/node_modules_datagrok-libraries_ml_src_distance-matrix_single-value-knn-worker_js.js.map +1 -0
- package/dist/node_modules_datagrok-libraries_ml_src_distance-matrix_sparse-matrix-worker_js.js +287 -0
- package/dist/node_modules_datagrok-libraries_ml_src_distance-matrix_sparse-matrix-worker_js.js.map +1 -0
- package/dist/package-test.js +26140 -1
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +30337 -1
- package/dist/package.js.map +1 -1
- package/dist/src_workers_softmax-worker_ts.js +154 -0
- package/dist/src_workers_softmax-worker_ts.js.map +1 -0
- package/dist/src_workers_tsne-worker_ts.js +244 -0
- package/dist/src_workers_tsne-worker_ts.js.map +1 -0
- package/dist/src_workers_umap-worker_ts.js +252 -0
- package/dist/src_workers_umap-worker_ts.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_math_src_dbscan_wasm_dbscan_js.js +1253 -0
- package/dist/vendors-node_modules_datagrok-libraries_math_src_dbscan_wasm_dbscan_js.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_math_src_hierarchical-clustering_wasm_clustering-worker_js.js +942 -0
- package/dist/vendors-node_modules_datagrok-libraries_math_src_hierarchical-clustering_wasm_clustering-worker_js.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_math_src_webGPU_sparse-matrix_webGPU-sparse-matrix_js-07693f.js +1525 -0
- package/dist/vendors-node_modules_datagrok-libraries_math_src_webGPU_sparse-matrix_webGPU-sparse-matrix_js-07693f.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_MCL_mcl-worker_js-node_modules_datagrok-librar-e4203d.js +2244 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_MCL_mcl-worker_js-node_modules_datagrok-librar-e4203d.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_distance-matrix_knn-threshold-worker_js.js +286 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_distance-matrix_knn-threshold-worker_js.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_distance-matrix_knn-worker_js.js +280 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_distance-matrix_knn-worker_js.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_distance-matrix_sparse-matrix-threshold-worker_js.js +282 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_distance-matrix_sparse-matrix-threshold-worker_js.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_distance-matrix_utils_js-node_modules_datagrok-72c7b2.js +1821 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_distance-matrix_utils_js-node_modules_datagrok-72c7b2.js.map +1 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_multi-column-dimensionality-reduction_mulit-co-3800a0.js +7776 -0
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_multi-column-dimensionality-reduction_mulit-co-3800a0.js.map +1 -0
- package/dist/vendors-node_modules_keckelt_tsne_lib_index_js.js +379 -0
- package/dist/vendors-node_modules_keckelt_tsne_lib_index_js.js.map +1 -0
- package/dist/vendors-node_modules_ml-matrix_matrix_mjs.js +5946 -0
- package/dist/vendors-node_modules_ml-matrix_matrix_mjs.js.map +1 -0
- package/dist/vendors-node_modules_umap-js_dist_index_js.js +2284 -0
- package/dist/vendors-node_modules_umap-js_dist_index_js.js.map +1 -0
- package/dist/wasm_EDAForWebWorker_js-wasm_callWasmForWebWorker_js.js +779 -0
- package/dist/wasm_EDAForWebWorker_js-wasm_callWasmForWebWorker_js.js.map +1 -0
- package/dist/wasm_workers_errorWorker_js.js +267 -0
- package/dist/wasm_workers_errorWorker_js.js.map +1 -0
- package/dist/wasm_workers_fitLinearRegressionParamsWithDataNormalizingWorker_js.js +267 -0
- package/dist/wasm_workers_fitLinearRegressionParamsWithDataNormalizingWorker_js.js.map +1 -0
- package/dist/wasm_workers_fitLinearRegressionParamsWorker_js.js +267 -0
- package/dist/wasm_workers_fitLinearRegressionParamsWorker_js.js.map +1 -0
- package/dist/wasm_workers_fitSoftmaxWorker_js.js +267 -0
- package/dist/wasm_workers_fitSoftmaxWorker_js.js.map +1 -0
- package/dist/wasm_workers_generateDatasetWorker_js.js +267 -0
- package/dist/wasm_workers_generateDatasetWorker_js.js.map +1 -0
- package/dist/wasm_workers_normalizeDatasetWorker_js.js +267 -0
- package/dist/wasm_workers_normalizeDatasetWorker_js.js.map +1 -0
- package/dist/wasm_workers_partialLeastSquareRegressionWorker_js.js +267 -0
- package/dist/wasm_workers_partialLeastSquareRegressionWorker_js.js.map +1 -0
- package/dist/wasm_workers_predictByLSSVMWorker_js.js +267 -0
- package/dist/wasm_workers_predictByLSSVMWorker_js.js.map +1 -0
- package/dist/wasm_workers_principalComponentAnalysisNipalsWorker_js.js +267 -0
- package/dist/wasm_workers_principalComponentAnalysisNipalsWorker_js.js.map +1 -0
- package/dist/wasm_workers_principalComponentAnalysisWorkerUpd_js.js +271 -0
- package/dist/wasm_workers_principalComponentAnalysisWorkerUpd_js.js.map +1 -0
- package/dist/wasm_workers_trainAndAnalyzeLSSVMWorker_js.js +267 -0
- package/dist/wasm_workers_trainAndAnalyzeLSSVMWorker_js.js.map +1 -0
- package/dist/wasm_workers_trainLSSVMWorker_js.js +267 -0
- package/dist/wasm_workers_trainLSSVMWorker_js.js.map +1 -0
- package/dist/wasm_workers_xgboostWorker_js.js +279 -0
- package/dist/wasm_workers_xgboostWorker_js.js.map +1 -0
- package/package.json +5 -4
- package/src/package-api.ts +259 -0
- package/src/package.g.ts +522 -0
- package/src/package.ts +907 -678
- package/test-console-output-1.log +78 -93
- package/test-record-1.mp4 +0 -0
- package/tsconfig.json +2 -2
- package/webpack.config.js +5 -0
- package/dist/111.js +0 -2
- package/dist/111.js.map +0 -1
- package/dist/128.js +0 -2
- package/dist/128.js.map +0 -1
- package/dist/153.js +0 -2
- package/dist/153.js.map +0 -1
- package/dist/23.js +0 -2
- package/dist/23.js.map +0 -1
- package/dist/234.js +0 -2
- package/dist/234.js.map +0 -1
- package/dist/242.js +0 -2
- package/dist/242.js.map +0 -1
- package/dist/260.js +0 -2
- package/dist/260.js.map +0 -1
- package/dist/33.js +0 -2
- package/dist/33.js.map +0 -1
- package/dist/348.js +0 -2
- package/dist/348.js.map +0 -1
- package/dist/377.js +0 -2
- package/dist/377.js.map +0 -1
- package/dist/412.js +0 -2
- package/dist/412.js.map +0 -1
- package/dist/415.js +0 -2
- package/dist/415.js.map +0 -1
- package/dist/501.js +0 -2
- package/dist/501.js.map +0 -1
- package/dist/531.js +0 -2
- package/dist/531.js.map +0 -1
- package/dist/583.js +0 -2
- package/dist/583.js.map +0 -1
- package/dist/589.js +0 -2
- package/dist/589.js.map +0 -1
- package/dist/603.js +0 -2
- package/dist/603.js.map +0 -1
- package/dist/656.js +0 -2
- package/dist/656.js.map +0 -1
- package/dist/682.js +0 -2
- package/dist/682.js.map +0 -1
- package/dist/705.js +0 -2
- package/dist/705.js.map +0 -1
- package/dist/727.js +0 -2
- package/dist/727.js.map +0 -1
- package/dist/731.js +0 -2
- package/dist/731.js.map +0 -1
- package/dist/738.js +0 -3
- package/dist/738.js.LICENSE.txt +0 -51
- package/dist/738.js.map +0 -1
- package/dist/763.js +0 -2
- package/dist/763.js.map +0 -1
- package/dist/778.js +0 -2
- package/dist/778.js.map +0 -1
- package/dist/783.js +0 -2
- package/dist/783.js.map +0 -1
- package/dist/793.js +0 -2
- package/dist/793.js.map +0 -1
- package/dist/801.js +0 -2
- package/dist/801.js.map +0 -1
- package/dist/810.js +0 -2
- package/dist/810.js.map +0 -1
- package/dist/860.js +0 -2
- package/dist/860.js.map +0 -1
- package/dist/907.js +0 -2
- package/dist/907.js.map +0 -1
- package/dist/950.js +0 -2
- package/dist/950.js.map +0 -1
- package/dist/980.js +0 -2
- package/dist/980.js.map +0 -1
- package/dist/990.js +0 -2
- package/dist/990.js.map +0 -1
|
@@ -0,0 +1,779 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(self["webpackChunkeda"] = self["webpackChunkeda"] || []).push([["wasm_EDAForWebWorker_js-wasm_callWasmForWebWorker_js"],{
|
|
3
|
+
|
|
4
|
+
/***/ "./wasm/EDA.wasm":
|
|
5
|
+
/*!***********************!*\
|
|
6
|
+
!*** ./wasm/EDA.wasm ***!
|
|
7
|
+
\***********************/
|
|
8
|
+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
9
|
+
|
|
10
|
+
module.exports = __webpack_require__.p + "3cec7d4ab7dacdcb37e6.wasm";
|
|
11
|
+
|
|
12
|
+
/***/ }),
|
|
13
|
+
|
|
14
|
+
/***/ "./wasm/EDAForWebWorker.js":
|
|
15
|
+
/*!*********************************!*\
|
|
16
|
+
!*** ./wasm/EDAForWebWorker.js ***!
|
|
17
|
+
\*********************************/
|
|
18
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
19
|
+
|
|
20
|
+
__webpack_require__.r(__webpack_exports__);
|
|
21
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
22
|
+
/* harmony export */ exportEDA: () => (/* binding */ exportEDA)
|
|
23
|
+
/* harmony export */ });
|
|
24
|
+
/* module decorator */ module = __webpack_require__.hmd(module);
|
|
25
|
+
|
|
26
|
+
var exportEDA = (() => {
|
|
27
|
+
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
function(exportEDA) {
|
|
31
|
+
exportEDA = exportEDA || {};
|
|
32
|
+
|
|
33
|
+
var Module=typeof exportEDA!="undefined"?exportEDA:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||268435456;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;wasmBinaryFile="EDA.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(new URL(/* asset import */ __webpack_require__(/*! ../wasm/EDA.wasm */ "./wasm/EDA.wasm"), __webpack_require__.b)).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["f"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["k"];addOnInit(Module["asm"]["g"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(new URL(/* asset import */ __webpack_require__(/*! ../wasm/EDA.wasm */ "./wasm/EDA.wasm"), __webpack_require__.b)).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function getCFunc(ident){var func=Module["_"+ident];return func}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret}function cwrap(ident,returnType,argTypes,opts){argTypes=argTypes||[];var numericArgs=argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return function(){return ccall(ident,returnType,argTypes,arguments,opts)}}var asmLibraryArg={"a":___assert_fail,"b":___cxa_throw,"c":_abort,"e":_emscripten_memcpy_big,"d":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["g"]).apply(null,arguments)};var _principalComponentAnalysis=Module["_principalComponentAnalysis"]=function(){return(_principalComponentAnalysis=Module["_principalComponentAnalysis"]=Module["asm"]["h"]).apply(null,arguments)};var _error=Module["_error"]=function(){return(_error=Module["_error"]=Module["asm"]["i"]).apply(null,arguments)};var _principalComponentAnalysisNipals=Module["_principalComponentAnalysisNipals"]=function(){return(_principalComponentAnalysisNipals=Module["_principalComponentAnalysisNipals"]=Module["asm"]["j"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["l"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["m"]).apply(null,arguments)};var _partialLeastSquareRegression=Module["_partialLeastSquareRegression"]=function(){return(_partialLeastSquareRegression=Module["_partialLeastSquareRegression"]=Module["asm"]["n"]).apply(null,arguments)};var _generateDataset=Module["_generateDataset"]=function(){return(_generateDataset=Module["_generateDataset"]=Module["asm"]["o"]).apply(null,arguments)};var _normalizeDataset=Module["_normalizeDataset"]=function(){return(_normalizeDataset=Module["_normalizeDataset"]=Module["asm"]["p"]).apply(null,arguments)};var _trainLSSVM=Module["_trainLSSVM"]=function(){return(_trainLSSVM=Module["_trainLSSVM"]=Module["asm"]["q"]).apply(null,arguments)};var _predictByLSSVM=Module["_predictByLSSVM"]=function(){return(_predictByLSSVM=Module["_predictByLSSVM"]=Module["asm"]["r"]).apply(null,arguments)};var _trainAndAnalyzeLSSVM=Module["_trainAndAnalyzeLSSVM"]=function(){return(_trainAndAnalyzeLSSVM=Module["_trainAndAnalyzeLSSVM"]=Module["asm"]["s"]).apply(null,arguments)};var _fitLinearRegressionParamsWithDataNormalizing=Module["_fitLinearRegressionParamsWithDataNormalizing"]=function(){return(_fitLinearRegressionParamsWithDataNormalizing=Module["_fitLinearRegressionParamsWithDataNormalizing"]=Module["asm"]["t"]).apply(null,arguments)};var _fitLinearRegressionParams=Module["_fitLinearRegressionParams"]=function(){return(_fitLinearRegressionParams=Module["_fitLinearRegressionParams"]=Module["asm"]["u"]).apply(null,arguments)};var _fitSoftmax=Module["_fitSoftmax"]=function(){return(_fitSoftmax=Module["_fitSoftmax"]=Module["asm"]["v"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["w"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["x"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["y"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["z"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
return exportEDA.ready
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
})();
|
|
40
|
+
if (typeof exports === 'object' && "object" === 'object')
|
|
41
|
+
module.exports = exportEDA;
|
|
42
|
+
else if (typeof define === 'function' && __webpack_require__.amdO)
|
|
43
|
+
define([], function() { return exportEDA; });
|
|
44
|
+
else if (typeof exports === 'object')
|
|
45
|
+
exports["exportEDA"] = exportEDA;
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
/***/ }),
|
|
49
|
+
|
|
50
|
+
/***/ "./wasm/callWasmForWebWorker.js":
|
|
51
|
+
/*!**************************************!*\
|
|
52
|
+
!*** ./wasm/callWasmForWebWorker.js ***!
|
|
53
|
+
\**************************************/
|
|
54
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
55
|
+
|
|
56
|
+
__webpack_require__.r(__webpack_exports__);
|
|
57
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
58
|
+
/* harmony export */ cppWrapper: () => (/* binding */ cppWrapper),
|
|
59
|
+
/* harmony export */ getCppInput: () => (/* binding */ getCppInput),
|
|
60
|
+
/* harmony export */ getResult: () => (/* binding */ getResult)
|
|
61
|
+
/* harmony export */ });
|
|
62
|
+
// Utilities for calling wasm-functions via webworker.
|
|
63
|
+
|
|
64
|
+
// We use an approach that is well described here:
|
|
65
|
+
// https://becominghuman.ai/passing-and-returning-webassembly-array-parameters-a0f572c65d97
|
|
66
|
+
// It has been modified for usage in DATAGROK.
|
|
67
|
+
|
|
68
|
+
// Constants for wasm-functions in webworkers runtime system
|
|
69
|
+
const TYPE = 'type';
|
|
70
|
+
const NUM_TYPE = 'num';
|
|
71
|
+
const FLOAT_COLUMN_TYPE = 'floatColumn';
|
|
72
|
+
const INT_COLUMN_TYPE = 'intColumn';
|
|
73
|
+
const FLOAT_COLUMNS_TYPE = 'floatColumns';
|
|
74
|
+
const NEW_FLOAT_COLUMNS_TYPE = 'newFloatColumns';
|
|
75
|
+
const INT_COLUMNS_TYPE = 'intColumns';
|
|
76
|
+
const NEW_INT_COLUMNS_TYPE = 'newIntColumns';
|
|
77
|
+
const NEW_FLOAT_COLUMN_TYPE = 'newFloatColumn';
|
|
78
|
+
const NEW_INT_COLUMN_TYPE = 'newIntColumn';
|
|
79
|
+
const COLUMN = 'column';
|
|
80
|
+
const CALL_RESULT = '_callResult';
|
|
81
|
+
const NUM_OF_ROWS = 'numOfRows';
|
|
82
|
+
const NUM_OF_COLUMNS = 'numOfColumns';
|
|
83
|
+
const REF = 'ref';
|
|
84
|
+
const VALUE = 'value';
|
|
85
|
+
const TABLE_OF_COLUMNS = 'tableFromColumns';
|
|
86
|
+
const OBJECTS = 'objects';
|
|
87
|
+
const INT_TYPE = 'int';
|
|
88
|
+
const DOUBLE_TYPE = 'double';
|
|
89
|
+
const NUMBER = 'number';
|
|
90
|
+
|
|
91
|
+
// Type-to-heap correspondence.
|
|
92
|
+
// It is required for JS-module generated by Emscripten,
|
|
93
|
+
// and it is used, when passing array data to/from wasm-functions.
|
|
94
|
+
// More info can be found at the following link:
|
|
95
|
+
// https://becominghuman.ai/passing-and-returning-webassembly-array-parameters-a0f572c65d97
|
|
96
|
+
const heapMap = {
|
|
97
|
+
'intColumn': "HEAP32",
|
|
98
|
+
'floatColumn': "HEAPF32",
|
|
99
|
+
'floatColumns': "HEAPF32",
|
|
100
|
+
'newFloatColumns': "HEAPF32",
|
|
101
|
+
'intColumns': "HEAP32",
|
|
102
|
+
'newIntColumns': "HEAP32",
|
|
103
|
+
'newFloatColumn': "HEAPF32",
|
|
104
|
+
'newIntColumn': "HEAP32"
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
// Type signature to typed array map.
|
|
108
|
+
// It is used, when manipulating column(s).
|
|
109
|
+
const typeMap = {
|
|
110
|
+
'intColumn': Int32Array,
|
|
111
|
+
'floatColumn': Float32Array,
|
|
112
|
+
'floatColumns': Float32Array,
|
|
113
|
+
'newFloatColumns': Float32Array,
|
|
114
|
+
'intColumns': Int32Array,
|
|
115
|
+
'newIntColumns': Int32Array,
|
|
116
|
+
'newFloatColumn': Float32Array,
|
|
117
|
+
'newIntColumn': Int32Array
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// Type-to-shift map.
|
|
121
|
+
// It is used, when passing array to/from wasm-functions.
|
|
122
|
+
// More info can be found at the following link:
|
|
123
|
+
// https://becominghuman.ai/passing-and-returning-webassembly-array-parameters-a0f572c65d97
|
|
124
|
+
const shiftMap = {'intColumn': 2,
|
|
125
|
+
'floatColumn': 2,
|
|
126
|
+
'floatColumns': 2,
|
|
127
|
+
'newFloatColumns': 2,
|
|
128
|
+
'intColumns': 2,
|
|
129
|
+
'newIntColumns': 2,
|
|
130
|
+
'newFloatColumn': 2,
|
|
131
|
+
'newIntColumn': 2
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// Get input for C++-function.
|
|
135
|
+
// This function takes specification of arguments (argsSpecification) & input data (inputVals)
|
|
136
|
+
// and returns input that will be further used in cpp/wasm-function.
|
|
137
|
+
function getCppInput(argsSpecification, inputVals) {
|
|
138
|
+
let cppFuncInput = [];
|
|
139
|
+
let ref;
|
|
140
|
+
|
|
141
|
+
// complete an input for cpp
|
|
142
|
+
let i = 0;
|
|
143
|
+
for(const key in argsSpecification) {
|
|
144
|
+
const arg = argsSpecification[key];
|
|
145
|
+
const type = arg.type;
|
|
146
|
+
|
|
147
|
+
// skip auxiliry element
|
|
148
|
+
if(key === CALL_RESULT)
|
|
149
|
+
continue;
|
|
150
|
+
|
|
151
|
+
// here, we consider each type of input
|
|
152
|
+
switch(type) {
|
|
153
|
+
|
|
154
|
+
// numbers
|
|
155
|
+
case NUM_TYPE:
|
|
156
|
+
case INT_TYPE:
|
|
157
|
+
case DOUBLE_TYPE:
|
|
158
|
+
arg.data = inputVals[i];
|
|
159
|
+
i++;
|
|
160
|
+
break;
|
|
161
|
+
|
|
162
|
+
// column
|
|
163
|
+
case INT_COLUMN_TYPE:
|
|
164
|
+
case FLOAT_COLUMN_TYPE:
|
|
165
|
+
|
|
166
|
+
let array;
|
|
167
|
+
|
|
168
|
+
// this is OK if type of column and target type coinside
|
|
169
|
+
//array = inputVals[i].getRawData();
|
|
170
|
+
|
|
171
|
+
const col = inputVals[i];
|
|
172
|
+
const len = col.length;
|
|
173
|
+
|
|
174
|
+
// here, we check types and perform an appropriate transform
|
|
175
|
+
if( ( (col.type === INT_TYPE) && (type === INT_COLUMN_TYPE) )
|
|
176
|
+
|| ( (col.type === DOUBLE_TYPE) && (type === FLOAT_COLUMN_TYPE) ) )
|
|
177
|
+
array = col.getRawData().slice(0, len);
|
|
178
|
+
else
|
|
179
|
+
array = new typeMap[type](col.getRawData().slice(0, len));
|
|
180
|
+
|
|
181
|
+
/*if(((col.type == 'int') && (type == INT_COLUMN_TYPE))
|
|
182
|
+
|| ((col.type == 'double') && (type == FLOAT_COLUMN_TYPE)))
|
|
183
|
+
array = col.getRawData();
|
|
184
|
+
else
|
|
185
|
+
array = new typeMap[type](col.getRawData());*/
|
|
186
|
+
|
|
187
|
+
// check types
|
|
188
|
+
arg.data = { 'array': array,
|
|
189
|
+
'numOfRows': len};
|
|
190
|
+
|
|
191
|
+
i++;
|
|
192
|
+
break;
|
|
193
|
+
|
|
194
|
+
// new column
|
|
195
|
+
case NEW_INT_COLUMN_TYPE:
|
|
196
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
197
|
+
let val = 0;
|
|
198
|
+
|
|
199
|
+
ref = arg[NUM_OF_ROWS][REF];
|
|
200
|
+
|
|
201
|
+
if (argsSpecification[ref].type === NUM_TYPE)
|
|
202
|
+
val = argsSpecification[ref].data;
|
|
203
|
+
else
|
|
204
|
+
val = argsSpecification[ref].data[arg[NUM_OF_ROWS][VALUE]];
|
|
205
|
+
|
|
206
|
+
arg.data = {'numOfRows': val};
|
|
207
|
+
|
|
208
|
+
i++;
|
|
209
|
+
break;
|
|
210
|
+
|
|
211
|
+
// columns or column_list
|
|
212
|
+
case INT_COLUMNS_TYPE:
|
|
213
|
+
case FLOAT_COLUMNS_TYPE:
|
|
214
|
+
let arrays = [];
|
|
215
|
+
|
|
216
|
+
// this is OK if type of columns and target type coinside
|
|
217
|
+
//for(let col of inputVals[i].toList())
|
|
218
|
+
// arrays.push(col.getRawData());
|
|
219
|
+
|
|
220
|
+
const rowCount = inputVals[i].byIndex(0).length;
|
|
221
|
+
|
|
222
|
+
// here, we check types and perform an appropriate transform
|
|
223
|
+
for(const col of inputVals[i].toList())
|
|
224
|
+
if( ( (col.type === INT_TYPE) && (type === INT_COLUMN_TYPE) )
|
|
225
|
+
|| ( (col.type === DOUBLE_TYPE) && (type === FLOAT_COLUMN_TYPE) ) )
|
|
226
|
+
arrays.push(col.getRawData().slice(0, rowCount));
|
|
227
|
+
else
|
|
228
|
+
arrays.push(new typeMap[type](col.getRawData().slice(0, rowCount)));
|
|
229
|
+
|
|
230
|
+
/*for(let col of inputVals[i].toList())
|
|
231
|
+
if(((col.type == 'int') && (type == INT_COLUMN_TYPE))
|
|
232
|
+
|| ((col.type == 'double') && (type == FLOAT_COLUMN_TYPE)))
|
|
233
|
+
arrays.push(col.getRawData());
|
|
234
|
+
else
|
|
235
|
+
arrays.push(new typeMap[type](col.getRawData()));*/
|
|
236
|
+
|
|
237
|
+
arg.data = { 'arrays': arrays,
|
|
238
|
+
'numOfRows': rowCount,
|
|
239
|
+
'numOfColumns': arrays.length};
|
|
240
|
+
|
|
241
|
+
i++;
|
|
242
|
+
break;
|
|
243
|
+
|
|
244
|
+
// new columns or new column_list
|
|
245
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
246
|
+
case NEW_FLOAT_COLUMNS_TYPE:
|
|
247
|
+
let val1 = 0;
|
|
248
|
+
let val2 = 0;
|
|
249
|
+
|
|
250
|
+
ref = arg[NUM_OF_ROWS][REF];
|
|
251
|
+
|
|
252
|
+
if (argsSpecification[ref].type === NUM_TYPE)
|
|
253
|
+
val1 = argsSpecification[ref].data;
|
|
254
|
+
else
|
|
255
|
+
val1 = argsSpecification[ref].data[arg[NUM_OF_ROWS][VALUE]];
|
|
256
|
+
|
|
257
|
+
ref = arg[NUM_OF_COLUMNS][REF];
|
|
258
|
+
|
|
259
|
+
//console.log('Ref:');
|
|
260
|
+
//console.log(ref);
|
|
261
|
+
//console.log(argsSpecification[ref].data);
|
|
262
|
+
|
|
263
|
+
if (argsSpecification[ref].type === NUM_TYPE)
|
|
264
|
+
val2 = argsSpecification[ref].data;
|
|
265
|
+
else
|
|
266
|
+
val2 = argsSpecification[ref].data[arg[NUM_OF_COLUMNS][VALUE]];
|
|
267
|
+
|
|
268
|
+
arg.data = {'numOfRows': val1,
|
|
269
|
+
'numOfColumns': val2};
|
|
270
|
+
|
|
271
|
+
i++;
|
|
272
|
+
break;
|
|
273
|
+
|
|
274
|
+
default:
|
|
275
|
+
return; // TODO: specify behaviour
|
|
276
|
+
} // switch
|
|
277
|
+
|
|
278
|
+
cppFuncInput.push(arg);
|
|
279
|
+
} // for key
|
|
280
|
+
|
|
281
|
+
//console.log('cppFuncInput:');
|
|
282
|
+
//console.log(cppFuncInput);
|
|
283
|
+
|
|
284
|
+
return cppFuncInput;
|
|
285
|
+
} // getCppInput
|
|
286
|
+
|
|
287
|
+
// Allocate memory for buffers for array data
|
|
288
|
+
function allocateMemoryForBuffer(module, inputs) {
|
|
289
|
+
for(const arg of inputs) {
|
|
290
|
+
const type = arg.type;
|
|
291
|
+
|
|
292
|
+
switch(type) { // Process each type of input
|
|
293
|
+
|
|
294
|
+
// numbers
|
|
295
|
+
case NUM_TYPE:
|
|
296
|
+
case INT_TYPE:
|
|
297
|
+
case DOUBLE_TYPE:
|
|
298
|
+
break;
|
|
299
|
+
|
|
300
|
+
// column & new column
|
|
301
|
+
case INT_COLUMN_TYPE:
|
|
302
|
+
case FLOAT_COLUMN_TYPE:
|
|
303
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
304
|
+
case NEW_INT_COLUMN_TYPE:
|
|
305
|
+
arg.data.buf = module._malloc(arg.data.numOfRows * typeMap[type].BYTES_PER_ELEMENT);
|
|
306
|
+
break;
|
|
307
|
+
|
|
308
|
+
// columns & new columns
|
|
309
|
+
case INT_COLUMNS_TYPE:
|
|
310
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
311
|
+
case FLOAT_COLUMNS_TYPE:
|
|
312
|
+
case NEW_FLOAT_COLUMNS_TYPE: // allocation memory for columns that are created
|
|
313
|
+
arg.data.buf = module._malloc(arg.data.numOfRows * arg.data.numOfColumns
|
|
314
|
+
* typeMap[type].BYTES_PER_ELEMENT);
|
|
315
|
+
break;
|
|
316
|
+
|
|
317
|
+
// TODO: process other cases and mistakes
|
|
318
|
+
default:
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
//console.log('inputs after memory allocation:');
|
|
324
|
+
//console.log(inputs);
|
|
325
|
+
} // allocateMemoryForBuffer
|
|
326
|
+
|
|
327
|
+
// Get array of values that are put to wasm-function.
|
|
328
|
+
function getArrOfWasmParams(inputs) {
|
|
329
|
+
let params = [];
|
|
330
|
+
|
|
331
|
+
// Process each type of input
|
|
332
|
+
for(const arg of inputs) {
|
|
333
|
+
switch (arg.type) {
|
|
334
|
+
|
|
335
|
+
// numbers
|
|
336
|
+
case NUM_TYPE:
|
|
337
|
+
case INT_TYPE:
|
|
338
|
+
case DOUBLE_TYPE:
|
|
339
|
+
params.push(arg.data);
|
|
340
|
+
break;
|
|
341
|
+
|
|
342
|
+
// column & new column
|
|
343
|
+
case INT_COLUMN_TYPE:
|
|
344
|
+
case FLOAT_COLUMN_TYPE:
|
|
345
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
346
|
+
case NEW_INT_COLUMN_TYPE:
|
|
347
|
+
params.push(arg.data.buf);
|
|
348
|
+
params.push(arg.data.numOfRows);
|
|
349
|
+
break;
|
|
350
|
+
|
|
351
|
+
// columns & new columns
|
|
352
|
+
case INT_COLUMNS_TYPE:
|
|
353
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
354
|
+
case FLOAT_COLUMNS_TYPE:
|
|
355
|
+
case NEW_FLOAT_COLUMNS_TYPE:
|
|
356
|
+
params.push(arg.data.buf);
|
|
357
|
+
params.push(arg.data.numOfRows);
|
|
358
|
+
params.push(arg.data.numOfColumns);
|
|
359
|
+
break;
|
|
360
|
+
|
|
361
|
+
// TODO: process other cases and mistakes
|
|
362
|
+
default:
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
return params;
|
|
368
|
+
} // getArrOfWasmParams
|
|
369
|
+
|
|
370
|
+
// Get array of types that are put to wasm-function.
|
|
371
|
+
function getArrOfWasmTypes(inputs) {
|
|
372
|
+
let types = [];
|
|
373
|
+
|
|
374
|
+
for(const arg of inputs) {
|
|
375
|
+
switch (arg.type) { // Process each type of input
|
|
376
|
+
|
|
377
|
+
// numbers
|
|
378
|
+
case NUM_TYPE:
|
|
379
|
+
case INT_TYPE:
|
|
380
|
+
case DOUBLE_TYPE:
|
|
381
|
+
types.push(NUMBER);
|
|
382
|
+
break;
|
|
383
|
+
|
|
384
|
+
// column & new column
|
|
385
|
+
case INT_COLUMN_TYPE:
|
|
386
|
+
case FLOAT_COLUMN_TYPE:
|
|
387
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
388
|
+
case NEW_INT_COLUMN_TYPE:
|
|
389
|
+
types.push(NUMBER);
|
|
390
|
+
types.push(NUMBER);
|
|
391
|
+
break;
|
|
392
|
+
|
|
393
|
+
// columns & new columns
|
|
394
|
+
case INT_COLUMNS_TYPE:
|
|
395
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
396
|
+
case FLOAT_COLUMNS_TYPE:
|
|
397
|
+
case NEW_FLOAT_COLUMNS_TYPE:
|
|
398
|
+
types.push(NUMBER);
|
|
399
|
+
types.push(NUMBER);
|
|
400
|
+
types.push(NUMBER);
|
|
401
|
+
break;
|
|
402
|
+
|
|
403
|
+
// TODO: process other cases and mistakes
|
|
404
|
+
default:
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
return types;
|
|
410
|
+
} // getArrOfWasmTypes
|
|
411
|
+
|
|
412
|
+
// Put array data to buffer
|
|
413
|
+
function putDataToBuffer(module, inputs) {
|
|
414
|
+
let shift;
|
|
415
|
+
let heap;
|
|
416
|
+
|
|
417
|
+
for(const arg of inputs) {
|
|
418
|
+
const type = arg.type;
|
|
419
|
+
|
|
420
|
+
switch (type) { // Process each type of input
|
|
421
|
+
|
|
422
|
+
// numbers
|
|
423
|
+
case NUM_TYPE:
|
|
424
|
+
case INT_TYPE:
|
|
425
|
+
case DOUBLE_TYPE:
|
|
426
|
+
break;
|
|
427
|
+
|
|
428
|
+
// column
|
|
429
|
+
case INT_COLUMN_TYPE:
|
|
430
|
+
case FLOAT_COLUMN_TYPE:
|
|
431
|
+
shift = shiftMap[type];
|
|
432
|
+
heap = module[heapMap[type]];
|
|
433
|
+
heap.set(arg.data.array, arg.data.buf >> shift);
|
|
434
|
+
break;
|
|
435
|
+
|
|
436
|
+
// columns
|
|
437
|
+
case INT_COLUMNS_TYPE:
|
|
438
|
+
case FLOAT_COLUMNS_TYPE:
|
|
439
|
+
shift = shiftMap[type];
|
|
440
|
+
heap = module[heapMap[type]];
|
|
441
|
+
let numOfBytes = typeMap[type].BYTES_PER_ELEMENT;
|
|
442
|
+
let buf = arg.data.buf;
|
|
443
|
+
let numOfColumns = arg.data.numOfColumns;
|
|
444
|
+
let numOfRows = arg.data.numOfRows;
|
|
445
|
+
let arrays = arg.data.arrays;
|
|
446
|
+
|
|
447
|
+
for(let i = 0; i < numOfColumns; i++)
|
|
448
|
+
heap.set(arrays[i], (buf + i * numOfRows * numOfBytes) >> shift);
|
|
449
|
+
|
|
450
|
+
break;
|
|
451
|
+
|
|
452
|
+
// new column(s)
|
|
453
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
454
|
+
case NEW_FLOAT_COLUMNS_TYPE:
|
|
455
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
456
|
+
case NEW_INT_COLUMN_TYPE:
|
|
457
|
+
break;
|
|
458
|
+
|
|
459
|
+
// TODO: process other cases and mistakes
|
|
460
|
+
default:
|
|
461
|
+
break;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
} // putDataToBuffer
|
|
465
|
+
|
|
466
|
+
// Get array data from buffer.
|
|
467
|
+
function getDataFromBuffer(module, inputs) {
|
|
468
|
+
|
|
469
|
+
let heap;
|
|
470
|
+
let numOfRows;
|
|
471
|
+
let numOfCols;
|
|
472
|
+
let numOfBytes;
|
|
473
|
+
let buf;
|
|
474
|
+
|
|
475
|
+
for(const arg of inputs) {
|
|
476
|
+
const type = arg.type;
|
|
477
|
+
|
|
478
|
+
switch (type) { // Process each type of input
|
|
479
|
+
|
|
480
|
+
// number
|
|
481
|
+
case NUM_TYPE:
|
|
482
|
+
case INT_TYPE:
|
|
483
|
+
case DOUBLE_TYPE:
|
|
484
|
+
break;
|
|
485
|
+
|
|
486
|
+
// column(s)
|
|
487
|
+
case INT_COLUMN_TYPE:
|
|
488
|
+
case FLOAT_COLUMN_TYPE:
|
|
489
|
+
case FLOAT_COLUMNS_TYPE:
|
|
490
|
+
case INT_COLUMNS_TYPE:
|
|
491
|
+
break;
|
|
492
|
+
|
|
493
|
+
// new column
|
|
494
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
495
|
+
case NEW_INT_COLUMN_TYPE:
|
|
496
|
+
heap = module[heapMap[type]];
|
|
497
|
+
numOfRows = arg.data.numOfRows;
|
|
498
|
+
numOfBytes = typeMap[type].BYTES_PER_ELEMENT;
|
|
499
|
+
buf = arg.data.buf;
|
|
500
|
+
let array = new typeMap[type](numOfRows);
|
|
501
|
+
|
|
502
|
+
for(let j = 0; j < numOfRows; j++)
|
|
503
|
+
array[j] = heap[buf / numOfBytes + j];
|
|
504
|
+
|
|
505
|
+
arg.array = array;
|
|
506
|
+
|
|
507
|
+
break;
|
|
508
|
+
|
|
509
|
+
// new columns
|
|
510
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
511
|
+
case NEW_FLOAT_COLUMNS_TYPE:
|
|
512
|
+
heap = module[heapMap[type]];
|
|
513
|
+
numOfRows = arg.data.numOfRows;
|
|
514
|
+
numOfCols = arg.data.numOfColumns;
|
|
515
|
+
numOfBytes = typeMap[type].BYTES_PER_ELEMENT;
|
|
516
|
+
buf = arg.data.buf;
|
|
517
|
+
let arrays = [];
|
|
518
|
+
|
|
519
|
+
for(let i = 0; i < numOfCols; i++) {
|
|
520
|
+
let arr = new typeMap[type](numOfRows);
|
|
521
|
+
|
|
522
|
+
for(let j = 0; j < numOfRows; j++)
|
|
523
|
+
arr[j] = heap[buf / numOfBytes + j + i * numOfRows];
|
|
524
|
+
|
|
525
|
+
arrays.push(arr);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
arg.arrays = arrays;
|
|
529
|
+
|
|
530
|
+
break;
|
|
531
|
+
|
|
532
|
+
// TODO: process other cases and mistakes
|
|
533
|
+
default:
|
|
534
|
+
break;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
} // getDataFromBuffer
|
|
538
|
+
|
|
539
|
+
// Clear memory allocated for array data
|
|
540
|
+
function clearMemoryForBuffer(module, inputs) {
|
|
541
|
+
for(const arg of inputs)
|
|
542
|
+
switch(arg.type) { // process each type of input
|
|
543
|
+
|
|
544
|
+
// number
|
|
545
|
+
case NUM_TYPE:
|
|
546
|
+
case INT_TYPE:
|
|
547
|
+
case DOUBLE_TYPE:
|
|
548
|
+
break;
|
|
549
|
+
|
|
550
|
+
// each non-number case
|
|
551
|
+
case INT_COLUMN_TYPE:
|
|
552
|
+
case FLOAT_COLUMN_TYPE:
|
|
553
|
+
case INT_COLUMNS_TYPE:
|
|
554
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
555
|
+
case FLOAT_COLUMNS_TYPE:
|
|
556
|
+
case NEW_FLOAT_COLUMNS_TYPE:
|
|
557
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
558
|
+
case NEW_INT_COLUMN_TYPE:
|
|
559
|
+
module._free(arg.data.buf);
|
|
560
|
+
break;
|
|
561
|
+
|
|
562
|
+
// TODO: process other cases and mistakes
|
|
563
|
+
default:
|
|
564
|
+
break;
|
|
565
|
+
}
|
|
566
|
+
} // clearMemoryForBuffer
|
|
567
|
+
|
|
568
|
+
// Extract newly created data: new column(s) are created
|
|
569
|
+
function extractNewlyCreatedData(funcSpecificationArgs, argsAfterWasmCall) {
|
|
570
|
+
// type-to-column_creator map
|
|
571
|
+
const typeToColumnCreatorMap = {'newFloatColumns': DG.Column.fromFloat32Array,
|
|
572
|
+
'newIntColumns': DG.Column.fromInt32Array,
|
|
573
|
+
'newFloatColumn': DG.Column.fromFloat32Array,
|
|
574
|
+
'newIntColumn': DG.Column.fromInt32Array};
|
|
575
|
+
|
|
576
|
+
let i = 0;
|
|
577
|
+
|
|
578
|
+
for(const key in funcSpecificationArgs)
|
|
579
|
+
{
|
|
580
|
+
const arg = funcSpecificationArgs[key];
|
|
581
|
+
|
|
582
|
+
switch(arg.type){ // Process each type
|
|
583
|
+
|
|
584
|
+
// number
|
|
585
|
+
case NUM_TYPE:
|
|
586
|
+
case INT_TYPE:
|
|
587
|
+
case DOUBLE_TYPE:
|
|
588
|
+
break;
|
|
589
|
+
|
|
590
|
+
// column(s)
|
|
591
|
+
case INT_COLUMN_TYPE:
|
|
592
|
+
case FLOAT_COLUMN_TYPE:
|
|
593
|
+
case FLOAT_COLUMNS_TYPE:
|
|
594
|
+
case INT_COLUMNS_TYPE:
|
|
595
|
+
break;
|
|
596
|
+
|
|
597
|
+
// new column
|
|
598
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
599
|
+
case NEW_INT_COLUMN_TYPE:
|
|
600
|
+
let name;
|
|
601
|
+
|
|
602
|
+
// specify name for column
|
|
603
|
+
if(arg.name == undefined)
|
|
604
|
+
name = (0).toString();
|
|
605
|
+
else
|
|
606
|
+
names = arg.name;
|
|
607
|
+
|
|
608
|
+
arg.column = typeToColumnCreatorMap[arg.type](name,
|
|
609
|
+
argsAfterWasmCall[i].array);
|
|
610
|
+
break;
|
|
611
|
+
|
|
612
|
+
// new columns
|
|
613
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
614
|
+
case NEW_FLOAT_COLUMNS_TYPE:
|
|
615
|
+
let columns = [];
|
|
616
|
+
let length = argsAfterWasmCall[i].arrays.length;
|
|
617
|
+
|
|
618
|
+
let names = [];
|
|
619
|
+
|
|
620
|
+
// specify name for column
|
|
621
|
+
if(arg.names == undefined)
|
|
622
|
+
for(let k = 1; k <= length; k++)
|
|
623
|
+
names.push((k).toString());
|
|
624
|
+
else names = arg.names;
|
|
625
|
+
|
|
626
|
+
for(let j = 0; j < length; j++)
|
|
627
|
+
columns.push(typeToColumnCreatorMap[arg.type](names[j],
|
|
628
|
+
argsAfterWasmCall[i].arrays[j]));
|
|
629
|
+
|
|
630
|
+
arg.columns = columns;
|
|
631
|
+
|
|
632
|
+
break;
|
|
633
|
+
|
|
634
|
+
// TODO: process other cases and mistakes
|
|
635
|
+
default:
|
|
636
|
+
break;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
i++;
|
|
640
|
+
}
|
|
641
|
+
} // extractNewlyCreatedData
|
|
642
|
+
|
|
643
|
+
// Get output data: overall output is created
|
|
644
|
+
function getOutput(funcSpecification) {
|
|
645
|
+
let output = funcSpecification.output;
|
|
646
|
+
|
|
647
|
+
const typeToDataFieldMap = {'newFloatColumns': 'columns',
|
|
648
|
+
'newIntColumns': 'columns',
|
|
649
|
+
'newFloatColumn': 'column',
|
|
650
|
+
'newIntColumn': 'column'};
|
|
651
|
+
|
|
652
|
+
switch(output.type) {
|
|
653
|
+
|
|
654
|
+
case NUM_TYPE:
|
|
655
|
+
case INT_TYPE:
|
|
656
|
+
case DOUBLE_TYPE:
|
|
657
|
+
return funcSpecification.arguments[output.source];
|
|
658
|
+
// removed by dead control flow
|
|
659
|
+
{}
|
|
660
|
+
|
|
661
|
+
case COLUMN:
|
|
662
|
+
return funcSpecification.arguments[output.source].column;
|
|
663
|
+
// removed by dead control flow
|
|
664
|
+
{}
|
|
665
|
+
|
|
666
|
+
case TABLE_OF_COLUMNS:
|
|
667
|
+
return DG.DataFrame.fromColumns(funcSpecification.arguments[output.source].columns);
|
|
668
|
+
// removed by dead control flow
|
|
669
|
+
{}
|
|
670
|
+
|
|
671
|
+
case OBJECTS:
|
|
672
|
+
let arrayToReturn = [];
|
|
673
|
+
|
|
674
|
+
// push data of the required arguments
|
|
675
|
+
for(let name of output.source) {
|
|
676
|
+
let arg = funcSpecification.arguments[name];
|
|
677
|
+
arrayToReturn.push(arg[typeToDataFieldMap[arg.type]]);
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
return arrayToReturn;
|
|
681
|
+
// removed by dead control flow
|
|
682
|
+
{}
|
|
683
|
+
|
|
684
|
+
// TODO: process other cases and mistakes
|
|
685
|
+
default:
|
|
686
|
+
break;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
} // getOutput
|
|
690
|
+
|
|
691
|
+
// Clear newly created data fields (new column(s))
|
|
692
|
+
function clearNewlyCreatedData(funcSpecificationArgs) {
|
|
693
|
+
for(const key in funcSpecificationArgs) {
|
|
694
|
+
const arg = funcSpecificationArgs[key];
|
|
695
|
+
|
|
696
|
+
switch (arg.type) {
|
|
697
|
+
case NUM_TYPE:
|
|
698
|
+
case INT_TYPE:
|
|
699
|
+
case DOUBLE_TYPE:
|
|
700
|
+
case INT_COLUMN_TYPE:
|
|
701
|
+
case FLOAT_COLUMN_TYPE:
|
|
702
|
+
case INT_COLUMNS_TYPE:
|
|
703
|
+
case FLOAT_COLUMNS_TYPE:
|
|
704
|
+
break;
|
|
705
|
+
|
|
706
|
+
case NEW_INT_COLUMN_TYPE:
|
|
707
|
+
case NEW_FLOAT_COLUMN_TYPE:
|
|
708
|
+
arg.column = null;
|
|
709
|
+
break;
|
|
710
|
+
|
|
711
|
+
case NEW_INT_COLUMNS_TYPE:
|
|
712
|
+
case NEW_FLOAT_COLUMNS_TYPE:
|
|
713
|
+
arg.columns = null;
|
|
714
|
+
break;
|
|
715
|
+
|
|
716
|
+
// TODO: process other cases and mistakes
|
|
717
|
+
default:
|
|
718
|
+
break;
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
} // clearNewlyCreatedData
|
|
722
|
+
|
|
723
|
+
// THE MAIN FUNCTION: a wrapper for C++-function call
|
|
724
|
+
function cppWrapper(module, args, cppFuncName, returnType) {
|
|
725
|
+
// allocate memory for arrays that are passed to C++-function
|
|
726
|
+
allocateMemoryForBuffer(module, args);
|
|
727
|
+
|
|
728
|
+
// put data (just column(s)) to allocated buffers
|
|
729
|
+
putDataToBuffer(module, args);
|
|
730
|
+
|
|
731
|
+
// create array of parameters that are passed to C++-function
|
|
732
|
+
let params = getArrOfWasmParams(args);
|
|
733
|
+
|
|
734
|
+
//console.log('params:');
|
|
735
|
+
//console.log(params);
|
|
736
|
+
|
|
737
|
+
// create array of parameters' types that are passed to C++-function
|
|
738
|
+
let types = getArrOfWasmTypes(args);
|
|
739
|
+
|
|
740
|
+
//console.log('types:');
|
|
741
|
+
//console.log(types);
|
|
742
|
+
|
|
743
|
+
// call wasm-function
|
|
744
|
+
let result = module.ccall(cppFuncName, returnType, types, params);
|
|
745
|
+
|
|
746
|
+
//console.log(result);
|
|
747
|
+
|
|
748
|
+
// get data from buffers (just column(s))
|
|
749
|
+
getDataFromBuffer(module, args);
|
|
750
|
+
|
|
751
|
+
// clear memory that was previousely allocated
|
|
752
|
+
clearMemoryForBuffer(module, args);
|
|
753
|
+
|
|
754
|
+
//console.log('done');
|
|
755
|
+
|
|
756
|
+
return result;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
// Get the required output.
|
|
760
|
+
// It takes a specification of the function and the data computed
|
|
761
|
+
// and extracts the required results.
|
|
762
|
+
function getResult(funcSpecification, dataFromWebWorker) {
|
|
763
|
+
funcSpecification.arguments._callResult = dataFromWebWorker.callResult;
|
|
764
|
+
|
|
765
|
+
extractNewlyCreatedData(funcSpecification.arguments, dataFromWebWorker.args);
|
|
766
|
+
|
|
767
|
+
let outPut = getOutput(funcSpecification);
|
|
768
|
+
|
|
769
|
+
// Below, we remove newly created column(s), which are created at the extraction-step.
|
|
770
|
+
// It is especially required, when multiple call of wasm-functions in webworker.
|
|
771
|
+
clearNewlyCreatedData(funcSpecification.arguments);
|
|
772
|
+
|
|
773
|
+
return outPut;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/***/ })
|
|
777
|
+
|
|
778
|
+
}]);
|
|
779
|
+
//# sourceMappingURL=wasm_EDAForWebWorker_js-wasm_callWasmForWebWorker_js.js.map
|