@datagrok/bio 2.13.2 → 2.13.5
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/.eslintrc.json +1 -1
- package/CHANGELOG.md +26 -0
- package/detectors.js +52 -38
- package/dist/111.js +2 -0
- package/dist/111.js.map +1 -0
- package/dist/234.js +2 -0
- package/dist/234.js.map +1 -0
- package/dist/242.js +2 -0
- package/dist/242.js.map +1 -0
- package/dist/{286.js → 248.js} +1 -1
- package/dist/248.js.map +1 -0
- package/dist/284.js +3 -0
- package/dist/284.js.map +1 -0
- package/dist/317.js +2 -0
- package/dist/317.js.map +1 -0
- package/dist/589.js +2 -0
- package/dist/589.js.map +1 -0
- package/dist/603.js +2 -0
- package/dist/603.js.map +1 -0
- package/dist/682.js +2 -0
- package/dist/682.js.map +1 -0
- package/dist/705.js +2 -0
- package/dist/705.js.map +1 -0
- package/dist/{590.js → 731.js} +2 -2
- package/dist/731.js.map +1 -0
- package/dist/778.js +2 -0
- package/dist/778.js.map +1 -0
- package/dist/793.js +2 -0
- package/dist/793.js.map +1 -0
- package/dist/950.js +2 -0
- package/dist/950.js.map +1 -0
- package/dist/package-test.js +6 -7
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +6 -7
- package/dist/package.js.map +1 -1
- package/files/cache_config.json +7 -0
- package/package.json +17 -23
- package/src/analysis/sequence-activity-cliffs.ts +1 -1
- package/src/function-edtiors/split-to-monomers-editor.ts +6 -7
- package/src/package-types.ts +19 -19
- package/src/package.ts +23 -16
- package/src/substructure-search/substructure-search.ts +9 -10
- package/src/tests/WebLogo-positions-test.ts +6 -6
- package/src/tests/activity-cliffs-tests.ts +5 -2
- package/src/tests/bio-tests.ts +6 -6
- package/src/tests/checkInputColumn-tests.ts +3 -3
- package/src/tests/converters-test.ts +1 -1
- package/src/tests/detectors-tests.ts +25 -13
- package/src/tests/fasta-export-tests.ts +2 -2
- package/src/tests/mm-distance-tests.ts +1 -1
- package/src/tests/msa-tests.ts +2 -2
- package/src/tests/renderers-test.ts +5 -5
- package/src/tests/scoring.ts +26 -5
- package/src/tests/seq-handler-get-region.ts +4 -4
- package/src/tests/sequence-space-test.ts +1 -1
- package/src/tests/substructure-filters-tests.ts +4 -1
- package/src/tests/to-atomic-level-tests.ts +1 -1
- package/src/utils/cell-renderer-consts.ts +3 -11
- package/src/utils/cell-renderer.ts +15 -17
- package/src/utils/context-menu.ts +1 -1
- package/src/utils/convert.ts +7 -4
- package/src/utils/get-region-func-editor.ts +11 -16
- package/src/utils/get-region.ts +5 -5
- package/src/utils/macromolecule-column-widget.ts +1 -1
- package/src/utils/monomer-lib/lib-manager.ts +20 -8
- package/src/utils/monomer-lib/library-file-manager/file-manager.ts +28 -24
- package/src/utils/monomer-lib/library-file-manager/file-validator.ts +2 -1
- package/src/utils/monomer-lib/library-file-manager/ui.ts +3 -6
- package/src/utils/multiple-sequence-alignment-ui.ts +10 -11
- package/src/utils/multiple-sequence-alignment.ts +2 -2
- package/src/utils/pepsea.ts +1 -1
- package/src/utils/save-as-fasta.ts +5 -5
- package/src/viewers/vd-regions-viewer.ts +2 -2
- package/src/widgets/bio-substructure-filter.ts +7 -7
- package/src/widgets/package-settings-editor-widget.ts +27 -27
- package/src/widgets/representations.ts +57 -61
- package/tsconfig.json +4 -4
- package/webpack.config.js +1 -1
- package/dist/23.js +0 -2
- package/dist/23.js.map +0 -1
- package/dist/231.js +0 -2
- package/dist/231.js.map +0 -1
- package/dist/282.js +0 -2
- package/dist/282.js.map +0 -1
- package/dist/286.js.map +0 -1
- package/dist/356.js +0 -2
- package/dist/356.js.map +0 -1
- package/dist/36.js +0 -2
- package/dist/36.js.map +0 -1
- package/dist/40.js +0 -2
- package/dist/40.js.map +0 -1
- package/dist/413.js +0 -2
- package/dist/413.js.map +0 -1
- package/dist/42.js +0 -2
- package/dist/42.js.map +0 -1
- package/dist/427.js +0 -2
- package/dist/427.js.map +0 -1
- package/dist/545.js +0 -3
- package/dist/545.js.map +0 -1
- package/dist/590.js.map +0 -1
- package/dist/65.js +0 -2
- package/dist/65.js.map +0 -1
- package/dist/796.js +0 -2
- package/dist/796.js.map +0 -1
- package/dist/package-test.js.LICENSE.txt +0 -1
- package/dist/package.js.LICENSE.txt +0 -1
- /package/dist/{545.js.LICENSE.txt → 284.js.LICENSE.txt} +0 -0
package/dist/705.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"705.js","mappings":"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","sources":["webpack://bio/./node_modules/@datagrok-libraries/math/src/hierarchical-clustering/wasm/wasmCluster.js","webpack://bio/webpack/bootstrap","webpack://bio/webpack/runtime/amd options","webpack://bio/webpack/runtime/define property getters","webpack://bio/webpack/runtime/global","webpack://bio/webpack/runtime/harmony module decorator","webpack://bio/webpack/runtime/hasOwnProperty shorthand","webpack://bio/webpack/runtime/publicPath","webpack://bio/webpack/runtime/importScripts chunk loading","webpack://bio/./node_modules/@datagrok-libraries/math/src/hierarchical-clustering/wasm/clustering-worker.js","webpack://bio/./node_modules/@datagrok-libraries/math/src/hierarchical-clustering/wasm/clusterizerWasm.js"],"sourcesContent":["export var exportCppLib = (() => {\n var _scriptDir =\n typeof document !== \"undefined\" && document.currentScript\n ? document.currentScript.src\n : undefined;\n\n return function (exportCppLib = {}) {\n var Module = typeof exportCppLib != \"undefined\" ? exportCppLib : {};\n var readyPromiseResolve, readyPromiseReject;\n Module[\"ready\"] = new Promise(function (resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = typeof window == \"object\";\n var ENVIRONMENT_IS_WORKER = typeof importScripts == \"function\";\n var ENVIRONMENT_IS_NODE =\n typeof process == \"object\" &&\n typeof process.versions == \"object\" &&\n typeof process.versions.node == \"string\";\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(\n 0,\n scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1\n );\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = (title) => (document.title = title);\n } else {\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n var wasmBinary;\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n var noExitRuntime = Module[\"noExitRuntime\"] || true;\n if (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n }\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\")\n Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n callRuntimeCallbacks(__ATINIT__);\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\")\n Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n wasmBinaryFile = \"wasmCluster.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, { credentials: \"same-origin\" })\n .then(function (response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n })\n .catch(function () {\n return getBinary(binaryFile);\n });\n }\n }\n return Promise.resolve().then(function () {\n return getBinary(binaryFile);\n });\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile)\n .then(function (binary) {\n return WebAssembly.instantiate(binary, imports);\n })\n .then(function (instance) {\n return instance;\n })\n .then(receiver, function (reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (\n !binary &&\n typeof WebAssembly.instantiateStreaming == \"function\" &&\n !isDataURI(binaryFile) &&\n typeof fetch == \"function\"\n ) {\n return fetch(binaryFile, { credentials: \"same-origin\" }).then(function (\n response\n ) {\n var result = WebAssembly.instantiateStreaming(response, imports);\n return result.then(callback, function (reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n } else {\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n }\n function createWasm() {\n var info = { a: wasmImports };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"e\"];\n updateMemoryViews();\n wasmTable = Module[\"asm\"][\"i\"];\n addOnInit(Module[\"asm\"][\"f\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) {\n try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(\n wasmBinary,\n wasmBinaryFile,\n info,\n receiveInstantiationResult\n ).catch(readyPromiseReject);\n return {};\n }\n function callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n }\n function ExceptionInfo(excPtr) {\n this.excPtr = excPtr;\n this.ptr = excPtr - 24;\n this.set_type = function (type) {\n HEAPU32[(this.ptr + 4) >> 2] = type;\n };\n this.get_type = function () {\n return HEAPU32[(this.ptr + 4) >> 2];\n };\n this.set_destructor = function (destructor) {\n HEAPU32[(this.ptr + 8) >> 2] = destructor;\n };\n this.get_destructor = function () {\n return HEAPU32[(this.ptr + 8) >> 2];\n };\n this.set_caught = function (caught) {\n caught = caught ? 1 : 0;\n HEAP8[(this.ptr + 12) >> 0] = caught;\n };\n this.get_caught = function () {\n return HEAP8[(this.ptr + 12) >> 0] != 0;\n };\n this.set_rethrown = function (rethrown) {\n rethrown = rethrown ? 1 : 0;\n HEAP8[(this.ptr + 13) >> 0] = rethrown;\n };\n this.get_rethrown = function () {\n return HEAP8[(this.ptr + 13) >> 0] != 0;\n };\n this.init = function (type, destructor) {\n this.set_adjusted_ptr(0);\n this.set_type(type);\n this.set_destructor(destructor);\n };\n this.set_adjusted_ptr = function (adjustedPtr) {\n HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr;\n };\n this.get_adjusted_ptr = function () {\n return HEAPU32[(this.ptr + 16) >> 2];\n };\n this.get_exception_ptr = function () {\n var isPointer = ___cxa_is_pointer_type(this.get_type());\n if (isPointer) {\n return HEAPU32[this.excPtr >> 2];\n }\n var adjusted = this.get_adjusted_ptr();\n if (adjusted !== 0) return adjusted;\n return this.excPtr;\n };\n }\n var exceptionLast = 0;\n var uncaughtExceptionCount = 0;\n function ___cxa_throw(ptr, type, destructor) {\n var info = new ExceptionInfo(ptr);\n info.init(type, destructor);\n exceptionLast = ptr;\n uncaughtExceptionCount++;\n throw exceptionLast;\n }\n function _abort() {\n abort(\"\");\n }\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n function getHeapMax() {\n return 2147483648;\n }\n function emscripten_realloc_buffer(size) {\n var b = wasmMemory.buffer;\n try {\n wasmMemory.grow((size - b.byteLength + 65535) >>> 16);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) =>\n x + ((multiple - (x % multiple)) % multiple);\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(\n overGrownHeapSize,\n requestedSize + 100663296\n );\n var newSize = Math.min(\n maxHeapSize,\n alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)\n );\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n }\n function getCFunc(ident) {\n var func = Module[\"_\" + ident];\n return func;\n }\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n }\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = (65536 + ((u & 1023) << 10)) | (u1 & 1023);\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | (u >> 6);\n heap[outIdx++] = 128 | (u & 63);\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | (u >> 12);\n heap[outIdx++] = 128 | ((u >> 6) & 63);\n heap[outIdx++] = 128 | (u & 63);\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | (u >> 18);\n heap[outIdx++] = 128 | ((u >> 12) & 63);\n heap[outIdx++] = 128 | ((u >> 6) & 63);\n heap[outIdx++] = 128 | (u & 63);\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n function stringToUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8(str, ret, size);\n return ret;\n }\n var UTF8Decoder =\n typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode(((u0 & 31) << 6) | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\n } else {\n u0 =\n ((u0 & 7) << 18) |\n (u1 << 12) |\n (u2 << 6) |\n (heapOrArray[idx++] & 63);\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));\n }\n }\n return str;\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n function ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n string: (str) => {\n var ret = 0;\n if (str !== null && str !== undefined && str !== 0) {\n ret = stringToUTF8OnStack(str);\n }\n return ret;\n },\n array: (arr) => {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n },\n };\n function convertReturnValue(ret) {\n if (returnType === \"string\") {\n return UTF8ToString(ret);\n }\n if (returnType === \"boolean\") return Boolean(ret);\n return ret;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n var ret = func.apply(null, cArgs);\n function onDone(ret) {\n if (stack !== 0) stackRestore(stack);\n return convertReturnValue(ret);\n }\n ret = onDone(ret);\n return ret;\n }\n function cwrap(ident, returnType, argTypes, opts) {\n var numericArgs =\n !argTypes ||\n argTypes.every((type) => type === \"number\" || type === \"boolean\");\n var numericRet = returnType !== \"string\";\n if (numericRet && numericArgs && !opts) {\n return getCFunc(ident);\n }\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n }\n var wasmImports = {\n d: ___cxa_throw,\n a: _abort,\n c: _emscripten_memcpy_big,\n b: _emscripten_resize_heap,\n };\n var asm = createWasm();\n var ___wasm_call_ctors = function () {\n return (___wasm_call_ctors = Module[\"asm\"][\"f\"]).apply(null, arguments);\n };\n var _getDendrogram = (Module[\"_getDendrogram\"] = function () {\n return (_getDendrogram = Module[\"_getDendrogram\"] =\n Module[\"asm\"][\"g\"]).apply(null, arguments);\n });\n var _free = (Module[\"_free\"] = function () {\n return (_free = Module[\"_free\"] = Module[\"asm\"][\"h\"]).apply(\n null,\n arguments\n );\n });\n var ___errno_location = function () {\n return (___errno_location = Module[\"asm\"][\"__errno_location\"]).apply(\n null,\n arguments\n );\n };\n var _malloc = (Module[\"_malloc\"] = function () {\n return (_malloc = Module[\"_malloc\"] = Module[\"asm\"][\"j\"]).apply(\n null,\n arguments\n );\n });\n var stackSave = function () {\n return (stackSave = Module[\"asm\"][\"k\"]).apply(null, arguments);\n };\n var stackRestore = function () {\n return (stackRestore = Module[\"asm\"][\"l\"]).apply(null, arguments);\n };\n var stackAlloc = function () {\n return (stackAlloc = Module[\"asm\"][\"m\"]).apply(null, arguments);\n };\n var ___cxa_is_pointer_type = function () {\n return (___cxa_is_pointer_type = Module[\"asm\"][\"n\"]).apply(\n null,\n arguments\n );\n };\n Module[\"ccall\"] = ccall;\n Module[\"cwrap\"] = cwrap;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function run() {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function () {\n setTimeout(function () {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\")\n Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n }\n run();\n\n return exportCppLib.ready;\n };\n})();\nif (typeof exports === \"object\" && typeof module === \"object\")\n module.exports = exportCppLib;\nelse if (typeof define === \"function\" && define[\"amd\"])\n define([], function () {\n return exportCppLib;\n });\nelse if (typeof exports === \"object\") exports[\"exportCppLib\"] = exportCppLib;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = self.location + \"\";\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t705: 1\n};\n\n// no chunk install function needed\n// no chunk loading\n\n// no HMR\n\n// no HMR manifest","import { getClustersFromDistMatWasm } from './clusterizerWasm';\nonmessage = (event) => {\n const { distMatArray, n, methodCode } = event.data;\n const data = {};\n try {\n getClustersFromDistMatWasm(distMatArray, n, methodCode)\n .then((clusterMatrix) => {\n data.clusterMatrix = clusterMatrix;\n postMessage(data);\n });\n }\n catch (e) {\n data.error = e;\n postMessage(data);\n }\n};\n//# sourceMappingURL=clustering-worker.js.map","import {exportCppLib} from './wasmCluster.js';\n\n/**\n calls wasm function to get clustering merges and heights from distance matrix\n distmat: distance matrix as an array of floats comprising the top right triangle of the matrix\n n: number of observables\n method: 0 = single linkage, 1 = complete linkage, 2 = average linkage, 3 = median linkage\n result: { mergeResult: Int32Array, heightsResult: Float32Array }\n mergeResult has length of (n-1)*2 and heightResult has length of n-1\n together they describe the clustering as a dendrogram as a matrix of (n-1) X 3\n each row in the given matrix comprises the merge event at step i and last column is the height from the leaves.\n*/\nexport async function getClustersFromDistMatWasm(distmat, n, method) {\n const wasmUrl = new URL('./wasmCluster.wasm', import.meta.url).href;\n const wasmPath = wasmUrl.substring(0, wasmUrl.lastIndexOf('/') + 1) + 'wasmCluster.wasm';\n let wasmInstance;\n try {\n wasmInstance = await exportCppLib({locateFile: () => wasmPath, printErr: (_) => {}});\n } catch (e) {\n try {\n wasmInstance = await exportCppLib({locateFile: () => wasmUrl, printErr: (_) => {}});\n }\n catch (e) {\n console.error(e);\n throw new Error('Unable to load wasm file for hierarchical clustering');\n }\n }\n\n const getDendrogramWasm =\n wasmInstance.cwrap('getDendrogram', 'null', ['number', 'number', 'number', 'number', 'number']);\n // allocate a memory block on the wasm heap for the distance matrix\n const bytesForDistMat = Float32Array.BYTES_PER_ELEMENT * distmat.length;\n const dataPtr = wasmInstance._malloc(bytesForDistMat);\n const matHeap = new Uint8Array(wasmInstance.HEAPU8.buffer, dataPtr, bytesForDistMat);\n matHeap.set(new Uint8Array(distmat.buffer));\n\n //allocate a memory block on the wasm heap for the merges array\n const bytesForMergeArray = Int32Array.BYTES_PER_ELEMENT * (n - 1) * 2;\n const mergePtr = wasmInstance._malloc(bytesForMergeArray);\n const mergeHeap = new Uint8Array(wasmInstance.HEAPU8.buffer, mergePtr, bytesForMergeArray);\n\n //allocate a memory block on the wasm heap for the heigt array\n const bytesForHeightsArray = Float32Array.BYTES_PER_ELEMENT * (n - 1);\n const heightsPtr = wasmInstance._malloc(bytesForHeightsArray);\n const heightsHeap = new Uint8Array(wasmInstance.HEAPU8.buffer, heightsPtr, bytesForHeightsArray);\n\n // call the wasm function\n getDendrogramWasm(dataPtr, n, method, mergePtr, heightsPtr);\n // get the merges and heights from the wasm heap\n const mergeResult = new Int32Array(mergeHeap.buffer, mergeHeap.byteOffset, (n-1) * 2);\n const heightsResult = (new Float32Array(heightsHeap.buffer, heightsHeap.byteOffset, n-1)).slice(0, n-1);\n\n const mergeRow1 = mergeResult.slice(0, n-1);\n const mergeRow2 = mergeResult.slice(n-1, 2*n - 2);\n // free the memory blocks on the wasm heap\n wasmInstance._free(matHeap.byteOffset);\n wasmInstance._free(mergeHeap.byteOffset);\n wasmInstance._free(heightsHeap.byteOffset);\n return {mergeRow1, mergeRow2, heightsResult};\n}\n"],"names":["_scriptDir","exportCppLib","document","currentScript","src","undefined","readyPromiseResolve","readyPromiseReject","Module","Promise","resolve","reject","readBinary","moduleOverrides","Object","assign","ENVIRONMENT_IS_WEB","window","ENVIRONMENT_IS_WORKER","importScripts","scriptDirectory","process","versions","node","self","location","href","indexOf","substr","replace","lastIndexOf","url","xhr","XMLHttpRequest","open","responseType","send","Uint8Array","response","console","log","bind","wasmBinary","wasmMemory","err","warn","WebAssembly","abort","HEAP8","HEAPU8","HEAPU32","ABORT","updateMemoryViews","b","buffer","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","runDependencies","runDependencyWatcher","dependenciesFulfilled","what","e","RuntimeError","wasmBinaryFile","path","isDataURI","filename","startsWith","getBinary","file","instantiateArrayBuffer","binaryFile","imports","receiver","fetch","then","credentials","catch","getBinaryPromise","binary","instantiate","instance","reason","callRuntimeCallbacks","callbacks","length","shift","ExceptionInfo","excPtr","this","ptr","set_type","type","get_type","set_destructor","destructor","get_destructor","set_caught","caught","get_caught","set_rethrown","rethrown","get_rethrown","init","set_adjusted_ptr","adjustedPtr","get_adjusted_ptr","get_exception_ptr","___cxa_is_pointer_type","adjusted","emscripten_realloc_buffer","size","grow","byteLength","getCFunc","ident","UTF8Decoder","TextDecoder","ccall","returnType","argTypes","args","opts","toC","string","str","ret","len","i","c","charCodeAt","lengthBytesUTF8","stackAlloc","outPtr","maxBytesToWrite","heap","outIdx","endIdx","u","stringToUTF8Array","stringToUTF8","stringToUTF8OnStack","array","arr","set","func","cArgs","stack","converter","stackSave","apply","stackRestore","heapOrArray","idx","maxBytesToRead","endPtr","decode","subarray","u0","u1","u2","String","fromCharCode","ch","UTF8ArrayToString","Boolean","convertReturnValue","onDone","calledRun","wasmImports","d","a","dest","num","copyWithin","requestedSize","x","oldSize","maxHeapSize","cutDown","overGrownHeapSize","Math","min","max","callback","info","receiveInstance","module","cb","exports","unshift","clearInterval","removeRunDependency","result","instantiateStreaming","createWasm","arguments","run","doRun","postRun","preRun","setTimeout","numericArgs","every","runCaller","pop","ready","define","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","m","amdO","definition","key","o","defineProperty","enumerable","get","g","globalThis","Function","hmd","create","children","Error","obj","prop","prototype","hasOwnProperty","call","scriptUrl","scripts","getElementsByTagName","test","p","onmessage","event","distMatArray","n","methodCode","data","async","distmat","method","wasmUrl","URL","wasmPath","substring","wasmInstance","locateFile","printErr","_","error","getDendrogramWasm","cwrap","bytesForDistMat","BYTES_PER_ELEMENT","dataPtr","_malloc","matHeap","bytesForMergeArray","mergePtr","mergeHeap","bytesForHeightsArray","heightsPtr","heightsHeap","mergeResult","byteOffset","heightsResult","slice","mergeRow1","mergeRow2","_free","getClustersFromDistMatWasm","clusterMatrix","postMessage"],"sourceRoot":""}
|
package/dist/{590.js → 731.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkbio=self.webpackChunkbio||[]).push([[
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
"use strict";(self.webpackChunkbio=self.webpackChunkbio||[]).push([[731],{5731:(n,e,t)=>{t.d(e,{p:()=>a});var r=t(6066),s=t(606);class a{constructor(){this._workerCount=Math.max(navigator.hardwareConcurrency-2,1)}async calcMultiColumn(n,e,s,a=[{}],o=[1],l=r.G.EUCLIDEAN){const h=n[0].length*(n[0].length-1)/2,i=Math.floor(h/this._workerCount),c=n[0].length>2e4?await this.getMinimalThreshold(n,e,a,o,l):0;s<c&&(console.log(`using threshold ${c}`),s=c),a.forEach(((n,e)=>a[e].threshold=s));const w=new Array(this._workerCount),g=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(t.p+t.u(111),t.b))));for(let t=0;t<this._workerCount;t++)w[t]=new Promise(((r,c)=>{const w=t*i,u=t===this._workerCount-1?h:(t+1)*i;u<=w&&r({i:new Int32Array(0),j:new Int32Array(0),distance:new Float32Array(0),idx:t}),g[t].postMessage({values:n,startIdx:w,endIdx:u,threshold:s,fnNames:e,opts:a,weights:o,aggregationMethod:l}),g[t].onmessage=({data:{error:n,i:e,j:s,distance:a}})=>{n?(g[t].terminate(),c(n)):(g[t].terminate(),r({i:e,j:s,distance:a,idx:t}))}}));const u=await Promise.all(w),d=u.reduce(((n,e)=>n+e.i.length),0),k=new Int32Array(d),m=new Int32Array(d),f=new Float32Array(d);let y=0;for(const n of u)k.set(n.i,y),m.set(n.j,y),f.set(n.distance,y),y+=n.i.length;return{i:k,j:m,distance:f}}async calc(n,e,t,r={}){return await this.calcMultiColumn([n],[e],t,[r],[1])}async getKNN(n,e,t=15,r={}){return await this.multiColumnKNN([n],[e],t,[r],[1])}async getThresholdKNN(n,e,t=.8,r={}){return await this.multiColumnThresholdKnn([n],[e],t,[r],[1])}async multiColumnThresholdKnn(n,e,s=.8,a,o,l=r.G.EUCLIDEAN){if(n.length!==e.length||n.length!==a.length||n.length!==o.length)throw new Error("values, distance functions, options and weights arrays should have the same length");if(n.some((e=>e.length!==n[0].length)))throw new Error("all values arrays should have the same length");const h=n[0].length*(n[0].length-1)/2,i=Math.floor(h/this._workerCount),c=new Array(this._workerCount),w=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(t.p+t.u(603),t.b))));for(let t=0;t<this._workerCount;t++)c[t]=new Promise(((r,c)=>{const g=t*i,u=t===this._workerCount-1?h:(t+1)*i;u<=g&&r({knnDistances:new Array(0),knnIndexes:new Array(0)}),w[t].postMessage({values:n,startIdx:g,endIdx:u,fnNames:e,opts:a,threshold:s,weights:o,aggregationMethod:l}),w[t].onmessage=({data:{error:n,knnDistances:e,knnIndexes:s}})=>{n?(w[t].terminate(),c(n)):(w[t].terminate(),r({knnDistances:e,knnIndexes:s}))}}));const g=await Promise.all(c),u=new Int32Array(n[0].length);for(const e of g)for(let t=0;t<n[0].length;++t)u[t]+=e.knnIndexes[t]?.length??0;const d={knnDistances:new Array(n[0].length).fill(null).map(((n,e)=>new Array(u[e]))),knnIndexes:new Array(n[0].length).fill(null).map(((n,e)=>new Array(u[e])))};for(const e of g)for(let t=0;t<n[0].length;++t)for(let n=0;n<e.knnDistances[t]?.length;++n)d.knnDistances[t][u[t]-1]=e.knnDistances[t][n],d.knnIndexes[t][u[t]-1]=e.knnIndexes[t][n],u[t]-=1;return d}async multiColumnKNN(n,e,a=15,o,l,h=r.G.EUCLIDEAN){if(n.length!==e.length||n.length!==o.length||n.length!==l.length)throw new Error("values, distance functions, options and weights arrays should have the same length");if(n.some((e=>e.length!==n[0].length)))throw new Error("all values arrays should have the same length");const i=n[0].length*(n[0].length-1)/2,c=Math.floor(i/this._workerCount),w=new Array(this._workerCount),g=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(t.p+t.u(950),t.b))));for(let t=0;t<this._workerCount;t++)w[t]=new Promise(((r,s)=>{const w=t*c,u=t===this._workerCount-1?i:(t+1)*c;u<=w&&r({knnDistances:new Array(0),knnIndexes:new Array(0)}),g[t].postMessage({values:n,startIdx:w,endIdx:u,fnNames:e,opts:o,nNeighbours:a,weights:l,aggregationMethod:h}),g[t].onmessage=({data:{error:n,knnDistances:e,knnIndexes:a}})=>{n?(g[t].terminate(),s(n)):(g[t].terminate(),r({knnDistances:e,knnIndexes:a}))}}));const u=await Promise.all(w),d={knnDistances:new Array(n[0].length).fill(null).map((()=>new Array(a).fill(99999))),knnIndexes:new Array(n[0].length).fill(null).map((()=>new Array(a).fill(-1)))};for(const e of u)for(let t=0;t<n[0].length;++t)for(let n=0;n<e.knnDistances[t]?.length;++n)(0,s.Qt)(d.knnDistances[t],d.knnIndexes[t],e.knnDistances[t][n],e.knnIndexes[t][n]);return d}async getSampleDistances(n,e,s=[],a,o=r.G.EUCLIDEAN){const l=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(t.p+t.u(778),t.b))));try{const t=n[0].length*(n[0].length-1)/2,r=Math.floor(t/this._workerCount),h=1e6,i=Math.max(Math.min(t/1e3,h),Math.min(t,h)),c=Math.floor(i/this._workerCount),w=new Array(this._workerCount);for(let h=0;h<this._workerCount;h++)w[h]=new Promise(((i,w)=>{const g=h*r,u=h===this._workerCount-1?t:(h+1)*r;l[h].postMessage({values:n,startIdx:g,endIdx:u,sampleLength:c,fnNames:e,opts:s,weights:a,aggregationMethod:o}),l[h].onmessage=({data:{error:n,distance:e}})=>{l[h].terminate(),n?w(n):i({distance:e})}}));const g=await Promise.all(w),u=g.reduce(((n,e)=>n+e.distance.length),0),d=new Float32Array(u);let k=0;for(const n of g)d.set(n.distance,k),k+=n.distance.length;return d.sort(),d}catch(n){return l?.forEach((n=>n?.terminate())),console.error(n),new Float32Array(1).fill(.5)}}async getMinimalThreshold(n,e,t=[],s,a=r.G.EUCLIDEAN){try{const r=n.length*(n.length-1)/2,o=await this.getSampleDistances(n,e,t,s,a);return 1-o[Math.floor(7e7/r*o.length)]}catch(n){return console.error(n),.5}}static calcSync(n,e,t,r){const a=[],o=[],l=[];let h=0,i=0,c=0;const w=n.length*(n.length-1)/2;for(;h<w;){const e=(0,s.gD)(n[i])||(0,s.gD)(n[c])?1:t(n[i],n[c]);1-e>=r&&(a.push(i),o.push(c),l.push(e)),h++,c++,c===n.length&&(i++,c=i+1)}return{i:new Int32Array(a),j:new Int32Array(o),distance:new Float32Array(l)}}}},6066:(n,e,t)=>{var r;t.d(e,{G:()=>r}),function(n){n.EUCLIDEAN="EUCLIDEAN",n.MANHATTAN="MANHATTAN"}(r||(r={}))}}]);
|
|
2
|
+
//# sourceMappingURL=731.js.map
|
package/dist/731.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"731.js","mappings":"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","sources":["webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/sparse-matrix-service.js","webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/types.js"],"sourcesContent":["import { DistanceAggregationMethods } from './types';\nimport { insertSmaller, isNil } from './utils';\nexport class SparseMatrixService {\n constructor() {\n this._workerCount = Math.max(navigator.hardwareConcurrency - 2, 1);\n }\n async calcMultiColumn(values, fnNames, threshold, opts = [{}], weights = [1], aggregationMethod = DistanceAggregationMethods.EUCLIDEAN) {\n const matSize = values[0].length * (values[0].length - 1) / 2;\n const chunkSize = Math.floor(matSize / this._workerCount);\n const minThreshold = values[0].length > 20000 ?\n await this.getMinimalThreshold(values, fnNames, opts, weights, aggregationMethod) : 0;\n if (threshold < minThreshold) {\n console.log(`using threshold ${minThreshold}`);\n threshold = minThreshold;\n }\n opts.forEach((_, i) => opts[i]['threshold'] = threshold);\n const promises = new Array(this._workerCount);\n const workers = new Array(this._workerCount)\n .fill(null).map(() => new Worker(new URL('./sparse-matrix-worker', import.meta.url)));\n for (let idx = 0; idx < this._workerCount; idx++) {\n promises[idx] = new Promise((resolveWorker, rejectWorker) => {\n const startIdx = idx * chunkSize;\n const endIdx = idx === this._workerCount - 1 ? matSize : (idx + 1) * chunkSize;\n if (endIdx <= startIdx)\n resolveWorker({ i: new Int32Array(0), j: new Int32Array(0), distance: new Float32Array(0), idx });\n workers[idx].postMessage({ values, startIdx, endIdx, threshold, fnNames, opts, weights, aggregationMethod });\n workers[idx].onmessage = ({ data: { error, i, j, distance } }) => {\n if (error) {\n workers[idx].terminate();\n rejectWorker(error);\n }\n else {\n workers[idx].terminate();\n resolveWorker({ i, j, distance, idx });\n }\n };\n });\n }\n const results = await Promise.all(promises);\n const fullSize = results.reduce((acc, val) => acc + val.i.length, 0);\n const i = new Int32Array(fullSize);\n const j = new Int32Array(fullSize);\n const distance = new Float32Array(fullSize);\n let offset = 0;\n // setting the results\n for (const res of results) {\n i.set(res.i, offset);\n j.set(res.j, offset);\n distance.set(res.distance, offset);\n offset += res.i.length;\n }\n return { i, j, distance };\n }\n async calc(values, fnName, threshold, opts = {}) {\n //size of full matrix\n return await this.calcMultiColumn([values], [fnName], threshold, [opts], [1]);\n }\n async getKNN(values, fnName, nNeighbours = 15, opts = {}) {\n return await this.multiColumnKNN([values], [fnName], nNeighbours, [opts], [1]);\n }\n async getThresholdKNN(values, fnName, threshold = 0.8, opts = {}) {\n return await this.multiColumnThresholdKnn([values], [fnName], threshold, [opts], [1]);\n }\n async multiColumnThresholdKnn(values, fnNames, threshold = 0.8, opts, weights, aggregationMethod = DistanceAggregationMethods.EUCLIDEAN) {\n if (values.length !== fnNames.length || values.length !== opts.length || values.length !== weights.length)\n throw new Error('values, distance functions, options and weights arrays should have the same length');\n if (values.some((v) => v.length !== values[0].length))\n throw new Error('all values arrays should have the same length');\n const matSize = values[0].length * (values[0].length - 1) / 2;\n const chunkSize = Math.floor(matSize / this._workerCount);\n const promises = new Array(this._workerCount);\n const workers = new Array(this._workerCount)\n .fill(null).map(() => new Worker(new URL('./knn-threshold-worker', import.meta.url)));\n for (let idx = 0; idx < this._workerCount; idx++) {\n promises[idx] = new Promise((resolveWorker, rejectWorker) => {\n const startIdx = idx * chunkSize;\n const endIdx = idx === this._workerCount - 1 ? matSize : (idx + 1) * chunkSize;\n if (endIdx <= startIdx)\n resolveWorker({ knnDistances: new Array(0), knnIndexes: new Array(0) });\n workers[idx].postMessage({ values, startIdx, endIdx, fnNames, opts, threshold, weights, aggregationMethod });\n workers[idx].onmessage = ({ data: { error, knnDistances, knnIndexes } }) => {\n if (error) {\n workers[idx].terminate();\n rejectWorker(error);\n }\n else {\n workers[idx].terminate();\n resolveWorker({ knnDistances, knnIndexes });\n }\n };\n });\n }\n const results = await Promise.all(promises);\n const knnSizes = new Int32Array(values[0].length);\n for (const res of results) {\n for (let i = 0; i < values[0].length; ++i)\n knnSizes[i] += res.knnIndexes[i]?.length ?? 0;\n }\n const knnRes = {\n knnDistances: new Array(values[0].length).fill(null).map((_, i) => new Array(knnSizes[i])),\n knnIndexes: new Array(values[0].length).fill(null).map((_, i) => new Array(knnSizes[i]))\n };\n for (const res of results) {\n for (let i = 0; i < values[0].length; ++i) {\n for (let j = 0; j < res.knnDistances[i]?.length ?? 0; ++j) {\n knnRes.knnDistances[i][knnSizes[i] - 1] = res.knnDistances[i][j];\n knnRes.knnIndexes[i][knnSizes[i] - 1] = res.knnIndexes[i][j];\n knnSizes[i] -= 1;\n }\n }\n }\n return knnRes;\n }\n async multiColumnKNN(values, fnNames, nNeighbours = 15, opts, weights, aggregationMethod = DistanceAggregationMethods.EUCLIDEAN) {\n if (values.length !== fnNames.length || values.length !== opts.length || values.length !== weights.length)\n throw new Error('values, distance functions, options and weights arrays should have the same length');\n if (values.some((v) => v.length !== values[0].length))\n throw new Error('all values arrays should have the same length');\n const matSize = values[0].length * (values[0].length - 1) / 2;\n const chunkSize = Math.floor(matSize / this._workerCount);\n const promises = new Array(this._workerCount);\n const workers = new Array(this._workerCount)\n .fill(null).map(() => new Worker(new URL('./knn-worker', import.meta.url)));\n for (let idx = 0; idx < this._workerCount; idx++) {\n promises[idx] = new Promise((resolveWorker, rejectWorker) => {\n const startIdx = idx * chunkSize;\n const endIdx = idx === this._workerCount - 1 ? matSize : (idx + 1) * chunkSize;\n if (endIdx <= startIdx)\n resolveWorker({ knnDistances: new Array(0), knnIndexes: new Array(0) });\n workers[idx].postMessage({ values, startIdx, endIdx, fnNames, opts, nNeighbours, weights, aggregationMethod });\n workers[idx].onmessage = ({ data: { error, knnDistances, knnIndexes } }) => {\n if (error) {\n workers[idx].terminate();\n rejectWorker(error);\n }\n else {\n workers[idx].terminate();\n resolveWorker({ knnDistances, knnIndexes });\n }\n };\n });\n }\n const results = await Promise.all(promises);\n const knnRes = {\n knnDistances: new Array(values[0].length).fill(null).map(() => new Array(nNeighbours).fill(99999)),\n knnIndexes: new Array(values[0].length).fill(null).map(() => new Array(nNeighbours).fill(-1))\n };\n for (const res of results) {\n for (let i = 0; i < values[0].length; ++i) {\n for (let j = 0; j < res.knnDistances[i]?.length ?? 0; ++j)\n insertSmaller(knnRes.knnDistances[i], knnRes.knnIndexes[i], res.knnDistances[i][j], res.knnIndexes[i][j]);\n }\n }\n return knnRes;\n }\n async getSampleDistances(values, fnNames, opts = [], weights, aggregationMethod = DistanceAggregationMethods.EUCLIDEAN) {\n const thresholdWorkers = new Array(this._workerCount).fill(null)\n .map(() => new Worker(new URL('./sparse-matrix-threshold-worker', import.meta.url)));\n try {\n const matSize = values[0].length * (values[0].length - 1) / 2;\n const chunkSize = Math.floor(matSize / this._workerCount);\n const maxSampleSize = 1000000;\n const sampleSise = Math.max(Math.min(matSize / 1000, maxSampleSize), Math.min(matSize, maxSampleSize));\n const testSetSizePerWorker = Math.floor(sampleSise / this._workerCount);\n const tPromises = new Array(this._workerCount);\n for (let idx = 0; idx < this._workerCount; idx++) {\n tPromises[idx] = new Promise((resolveWorker, rejectWorker) => {\n const startIdx = idx * chunkSize;\n const endIdx = idx === this._workerCount - 1 ? matSize : (idx + 1) * chunkSize;\n thresholdWorkers[idx].postMessage({\n values: values, startIdx, endIdx, sampleLength: testSetSizePerWorker,\n fnNames, opts, weights, aggregationMethod\n });\n thresholdWorkers[idx].onmessage = ({ data: { error, distance } }) => {\n thresholdWorkers[idx].terminate();\n if (error)\n rejectWorker(error);\n else\n resolveWorker({ distance });\n };\n });\n }\n const results = await Promise.all(tPromises);\n const fullSize = results.reduce((acc, val) => acc + val.distance.length, 0);\n const distance = new Float32Array(fullSize);\n let offset = 0;\n for (const res of results) {\n distance.set(res.distance, offset);\n offset += res.distance.length;\n }\n distance.sort();\n return distance;\n }\n catch (e) {\n thresholdWorkers?.forEach((w) => w?.terminate());\n console.error(e);\n return new Float32Array(1).fill(0.5);\n }\n }\n async getMinimalThreshold(values, fnNames, opts = [], weights, aggregationMethod = DistanceAggregationMethods.EUCLIDEAN) {\n //We need to calculate the minimal threshold first,\n //in order to get matrix such that it does not exceed the maximum size of 1GB\n //we have 3 return arrays, each 4 bites per element, so if the maximum size of the matrix is 1GB,\n const maxSparseMatrixSize = 70000000;\n try {\n const matSize = values.length * (values.length - 1) / 2;\n const distance = await this.getSampleDistances(values, fnNames, opts, weights, aggregationMethod);\n const fractionIndex = Math.floor(maxSparseMatrixSize / matSize * distance.length);\n const threshold = 1 - distance[fractionIndex];\n // threshold = Math.max(threshold, 0.3);\n return threshold;\n }\n catch (e) {\n console.error(e);\n return 0.5;\n }\n }\n static calcSync(values, fnName, distanceFn, threshold) {\n const i = [];\n const j = [];\n const distances = [];\n let cnt = 0;\n let mi = 0;\n let mj = 0;\n const fullSize = values.length * (values.length - 1) / 2;\n while (cnt < fullSize) {\n //const value = seq1List[mi] && seq1List[mj] ? hamming(seq1List[mi], seq1List[mj]) : 0;\n const value = !isNil(values[mi]) && !isNil(values[mj]) ?\n distanceFn(values[mi], values[mj]) : 1;\n const similarity = 1 - value;\n if (similarity >= threshold) {\n i.push(mi);\n j.push(mj);\n distances.push(value);\n }\n cnt++;\n mj++;\n if (mj === values.length) {\n mi++;\n mj = mi + 1;\n }\n }\n const iArray = new Int32Array(i);\n const jArray = new Int32Array(j);\n const distanceArray = new Float32Array(distances);\n return { i: iArray, j: jArray, distance: distanceArray };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnNlLW1hdHJpeC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BhcnNlLW1hdHJpeC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBNEIsMEJBQTBCLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDOUUsT0FBTyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFhN0MsTUFBTSxPQUFPLG1CQUFtQjtJQUU1QjtRQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQW9CLEVBQUUsT0FBdUIsRUFDeEUsU0FBaUIsRUFBRSxPQUE2QixDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQzdFLG9CQUErQywwQkFBMEIsQ0FBQyxTQUFTO1FBRW5GLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFMUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFNLENBQUMsQ0FBQztZQUM5QyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFD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Q0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNYLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsQ0FBQztZQUNELEdBQUcsRUFBRSxDQUFDO1lBQ04sRUFBRSxFQUFFLENBQUM7WUFDTCxJQUFJLEVBQUUsS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLEVBQUUsRUFBRSxDQUFDO2dCQUNMLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLGFBQWEsR0FBRyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVsRCxPQUFPLEVBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0tub3duTWV0cmljc30gZnJvbSAnLi4vdHlwZWQtbWV0cmljcyc7XG5pbXBvcnQge0Rpc3RhbmNlQWdncmVnYXRpb25NZXRob2QsIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7aW5zZXJ0U21hbGxlciwgaXNOaWx9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBTcGFyc2VNYXRyaXhSZXN1bHQgPSB7XG4gIGk6IEludDMyQXJyYXkgfCBVaW50MzJBcnJheSxcbiAgajogSW50MzJBcnJheSB8IFVpbnQzMkFycmF5LFxuICBkaXN0YW5jZTogRmxvYXQzMkFycmF5LFxuICBpZHg/OiBudW1iZXJcbn07XG5cbmV4cG9ydCB0eXBlIEtublJlc3VsdCA9IHtcbiAga25uRGlzdGFuY2VzOiBudW1iZXJbXVtdLFxuICBrbm5JbmRleGVzOiBudW1iZXJbXVtdXG59XG5leHBvcnQgY2xhc3MgU3BhcnNlTWF0cml4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfd29ya2VyQ291bnQ6IG51bWJlcjtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHRoaXMuX3dvcmtlckNvdW50ID0gTWF0aC5tYXgobmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3kgLSAyLCAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FsY011bHRpQ29sdW1uKHZhbHVlczogQXJyYXk8YW55W10+LCBmbk5hbWVzOiBLbm93bk1ldHJpY3NbXSxcbiAgICAgIHRocmVzaG9sZDogbnVtYmVyLCBvcHRzOiB7W186IHN0cmluZ106IGFueX1bXSA9IFt7fV0sIHdlaWdodHM6IG51bWJlcltdID0gWzFdLFxuICAgICAgYWdncmVnYXRpb25NZXRob2Q6IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2QgPSBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcy5FVUNMSURFQU5cbiAgICApIHtcbiAgICAgIGNvbnN0IG1hdFNpemUgPSB2YWx1ZXNbMF0ubGVuZ3RoICogKHZhbHVlc1swXS5sZW5ndGggLSAxKSAvIDI7XG4gICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKG1hdFNpemUgLyB0aGlzLl93b3JrZXJDb3VudCk7XG5cbiAgICAgIGNvbnN0IG1pblRocmVzaG9sZCA9IHZhbHVlc1swXS5sZW5ndGggPiAyMF8wMDAgP1xuICAgICAgICBhd2FpdCB0aGlzLmdldE1pbmltYWxUaHJlc2hvbGQodmFsdWVzLCBmbk5hbWVzLCBvcHRzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZCkgOiAwO1xuICAgICAgaWYgKHRocmVzaG9sZCA8IG1pblRocmVzaG9sZCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNpbmcgdGhyZXNob2xkICR7bWluVGhyZXNob2xkfWApO1xuICAgICAgICB0aHJlc2hvbGQgPSBtaW5UaHJlc2hvbGQ7XG4gICAgICB9XG4gICAgICBvcHRzLmZvckVhY2goKF8sIGkpID0+IG9wdHNbaV1bJ3RocmVzaG9sZCddID0gdGhyZXNob2xkKTtcbiAgICAgIGNvbnN0IHByb21pc2VzID1cbiAgICAgICAgbmV3IEFycmF5PFByb21pc2U8U3BhcnNlTWF0cml4UmVzdWx0Pj4odGhpcy5fd29ya2VyQ291bnQpO1xuXG4gICAgICBjb25zdCB3b3JrZXJzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KVxuICAgICAgICAuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IFdvcmtlcihuZXcgVVJMKCcuL3NwYXJzZS1tYXRyaXgtd29ya2VyJywgaW1wb3J0Lm1ldGEudXJsKSkpO1xuICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgdGhpcy5fd29ya2VyQ291bnQ7IGlkeCsrKSB7XG4gICAgICAgIHByb21pc2VzW2lkeF0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZVdvcmtlciwgcmVqZWN0V29ya2VyKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnRJZHggPSBpZHggKiBjaHVua1NpemU7XG4gICAgICAgICAgY29uc3QgZW5kSWR4ID0gaWR4ID09PSB0aGlzLl93b3JrZXJDb3VudCAtIDEgPyBtYXRTaXplIDogKGlkeCArIDEpICogY2h1bmtTaXplO1xuICAgICAgICAgIGlmIChlbmRJZHggPD0gc3RhcnRJZHgpXG4gICAgICAgICAgICByZXNvbHZlV29ya2VyKHtpOiBuZXcgSW50MzJBcnJheSgwKSwgajogbmV3IEludDMyQXJyYXkoMCksIGRpc3RhbmNlOiBuZXcgRmxvYXQzMkFycmF5KDApLCBpZHh9KTtcbiAgICAgICAgICB3b3JrZXJzW2lkeF0ucG9zdE1lc3NhZ2Uoe3ZhbHVlcywgc3RhcnRJZHgsIGVuZElkeCwgdGhyZXNob2xkLCBmbk5hbWVzLCBvcHRzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZH0pO1xuICAgICAgICAgIHdvcmtlcnNbaWR4XS5vbm1lc3NhZ2UgPSAoe2RhdGE6IHtlcnJvciwgaSwgaiwgZGlzdGFuY2V9fSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgcmVqZWN0V29ya2VyKGVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZVdvcmtlcih7aSwgaiwgZGlzdGFuY2UsIGlkeH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgY29uc3QgZnVsbFNpemUgPSByZXN1bHRzLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYyArIHZhbC5pLmxlbmd0aCwgMCk7XG4gICAgICBjb25zdCBpID0gbmV3IEludDMyQXJyYXkoZnVsbFNpemUpO1xuICAgICAgY29uc3QgaiA9IG5ldyBJbnQzMkFycmF5KGZ1bGxTaXplKTtcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gbmV3IEZsb2F0MzJBcnJheShmdWxsU2l6ZSk7XG4gICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHJlc3VsdHNcbiAgICAgIGZvciAoY29uc3QgcmVzIG9mIHJlc3VsdHMpIHtcbiAgICAgICAgaS5zZXQocmVzLmksIG9mZnNldCk7XG4gICAgICAgIGouc2V0KHJlcy5qLCBvZmZzZXQpO1xuICAgICAgICBkaXN0YW5jZS5zZXQocmVzLmRpc3RhbmNlLCBvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgKz0gcmVzLmkubGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtpLCBqLCBkaXN0YW5jZX07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhbGM8VD4odmFsdWVzOiBBcnJheTxUPiwgZm5OYW1lOiBLbm93bk1ldHJpY3MsIHRocmVzaG9sZDogbnVtYmVyLCBvcHRzOiB7W186IHN0cmluZ106IGFueX0gPSB7fSkge1xuICAgICAgLy9zaXplIG9mIGZ1bGwgbWF0cml4XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5jYWxjTXVsdGlDb2x1bW4oW3ZhbHVlc10sIFtmbk5hbWVdLCB0aHJlc2hvbGQsIFtvcHRzXSwgWzFdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0S05OKFxuICAgICAgdmFsdWVzOiBBcnJheTxhbnk+LCBmbk5hbWU6IEtub3duTWV0cmljcywgbk5laWdoYm91cnM6IG51bWJlciA9IDE1LCBvcHRzOiB7W186IHN0cmluZ106IGFueX0gPSB7fVxuICAgICkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubXVsdGlDb2x1bW5LTk4oW3ZhbHVlc10sIFtmbk5hbWVdLCBuTmVpZ2hib3VycywgW29wdHNdLCBbMV0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRUaHJlc2hvbGRLTk4oXG4gICAgICB2YWx1ZXM6IEFycmF5PGFueT4sIGZuTmFtZTogS25vd25NZXRyaWNzLCB0aHJlc2hvbGQ6IG51bWJlciA9IDAuOCwgb3B0czoge1tfOiBzdHJpbmddOiBhbnl9ID0ge31cbiAgICApIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLm11bHRpQ29sdW1uVGhyZXNob2xkS25uKFt2YWx1ZXNdLCBbZm5OYW1lXSwgdGhyZXNob2xkLCBbb3B0c10sIFsxXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG11bHRpQ29sdW1uVGhyZXNob2xkS25uKHZhbHVlczogQXJyYXk8QXJyYXk8YW55Pj4sIGZuTmFtZXM6IEtub3duTWV0cmljc1tdLCB0aHJlc2hvbGQ6IG51bWJlciA9IDAuOCxcbiAgICAgIG9wdHM6IHtbXzogc3RyaW5nXTogYW55fVtdLCB3ZWlnaHRzOiBudW1iZXJbXSxcbiAgICAgIGFnZ3JlZ2F0aW9uTWV0aG9kOiBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kID0gRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMuRVVDTElERUFOXG4gICAgKSB7XG4gICAgICBpZiAodmFsdWVzLmxlbmd0aCAhPT0gZm5OYW1lcy5sZW5ndGggfHwgdmFsdWVzLmxlbmd0aCAhPT0gb3B0cy5sZW5ndGggfHwgdmFsdWVzLmxlbmd0aCAhPT0gd2VpZ2h0cy5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndmFsdWVzLCBkaXN0YW5jZSBmdW5jdGlvbnMsIG9wdGlvbnMgYW5kIHdlaWdodHMgYXJyYXlzIHNob3VsZCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuXG4gICAgICBpZiAodmFsdWVzLnNvbWUoKHYpID0+IHYubGVuZ3RoICE9PSB2YWx1ZXNbMF0ubGVuZ3RoKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdhbGwgdmFsdWVzIGFycmF5cyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBsZW5ndGgnKTtcblxuICAgICAgY29uc3QgbWF0U2l6ZSA9IHZhbHVlc1swXS5sZW5ndGggKiAodmFsdWVzWzBdLmxlbmd0aCAtIDEpIC8gMjtcbiAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IobWF0U2l6ZSAvIHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgIGNvbnN0IHByb21pc2VzID1cbiAgICAgICAgbmV3IEFycmF5PFByb21pc2U8S25uUmVzdWx0Pj4odGhpcy5fd29ya2VyQ291bnQpO1xuICAgICAgY29uc3Qgd29ya2VycyA9IG5ldyBBcnJheSh0aGlzLl93b3JrZXJDb3VudClcbiAgICAgICAgLmZpbGwobnVsbCkubWFwKCgpID0+IG5ldyBXb3JrZXIobmV3IFVSTCgnLi9rbm4tdGhyZXNob2xkLXdvcmtlcicsIGltcG9ydC5tZXRhLnVybCkpKTtcbiAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMuX3dvcmtlckNvdW50OyBpZHgrKykge1xuICAgICAgICBwcm9taXNlc1tpZHhdID0gbmV3IFByb21pc2UoKHJlc29sdmVXb3JrZXIsIHJlamVjdFdvcmtlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SWR4ID0gaWR4ICogY2h1bmtTaXplO1xuICAgICAgICAgIGNvbnN0IGVuZElkeCA9IGlkeCA9PT0gdGhpcy5fd29ya2VyQ291bnQgLSAxID8gbWF0U2l6ZSA6IChpZHggKyAxKSAqIGNodW5rU2l6ZTtcbiAgICAgICAgICBpZiAoZW5kSWR4IDw9IHN0YXJ0SWR4KVxuICAgICAgICAgICAgcmVzb2x2ZVdvcmtlcih7a25uRGlzdGFuY2VzOiBuZXcgQXJyYXkoMCksIGtubkluZGV4ZXM6IG5ldyBBcnJheSgwKX0pO1xuICAgICAgICAgIHdvcmtlcnNbaWR4XS5wb3N0TWVzc2FnZSh7dmFsdWVzLCBzdGFydElkeCwgZW5kSWR4LCBmbk5hbWVzLCBvcHRzLCB0aHJlc2hvbGQsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kfSk7XG4gICAgICAgICAgd29ya2Vyc1tpZHhdLm9ubWVzc2FnZSA9ICh7ZGF0YToge2Vycm9yLCBrbm5EaXN0YW5jZXMsIGtubkluZGV4ZXN9fSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgcmVqZWN0V29ya2VyKGVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHdvcmtlcnNbaWR4XS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZVdvcmtlcih7a25uRGlzdGFuY2VzLCBrbm5JbmRleGVzfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICBjb25zdCBrbm5TaXplcyA9IG5ldyBJbnQzMkFycmF5KHZhbHVlc1swXS5sZW5ndGgpO1xuICAgICAgZm9yIChjb25zdCByZXMgb2YgcmVzdWx0cykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlc1swXS5sZW5ndGg7ICsraSlcbiAgICAgICAgICBrbm5TaXplc1tpXSArPSByZXMua25uSW5kZXhlc1tpXT8ubGVuZ3RoID8/IDA7XG4gICAgICB9XG4gICAgICBjb25zdCBrbm5SZXM6IEtublJlc3VsdCA9IHtcbiAgICAgICAga25uRGlzdGFuY2VzOiBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKF8sIGkpID0+IG5ldyBBcnJheTxudW1iZXI+KGtublNpemVzW2ldKSksXG4gICAgICAgIGtubkluZGV4ZXM6IG5ldyBBcnJheSh2YWx1ZXNbMF0ubGVuZ3RoKS5maWxsKG51bGwpLm1hcCgoXywgaSkgPT4gbmV3IEFycmF5PG51bWJlcj4oa25uU2l6ZXNbaV0pKX07XG4gICAgICBmb3IgKGNvbnN0IHJlcyBvZiByZXN1bHRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzWzBdLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByZXMua25uRGlzdGFuY2VzW2ldPy5sZW5ndGggPz8gMDsgKytqKSB7XG4gICAgICAgICAgICBrbm5SZXMua25uRGlzdGFuY2VzW2ldW2tublNpemVzW2ldIC0gMV0gPSByZXMua25uRGlzdGFuY2VzW2ldW2pdO1xuICAgICAgICAgICAga25uUmVzLmtubkluZGV4ZXNbaV1ba25uU2l6ZXNbaV0gLSAxXSA9IHJlcy5rbm5JbmRleGVzW2ldW2pdO1xuICAgICAgICAgICAga25uU2l6ZXNbaV0gLT0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBrbm5SZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG11bHRpQ29sdW1uS05OKHZhbHVlczogQXJyYXk8QXJyYXk8YW55Pj4sIGZuTmFtZXM6IEtub3duTWV0cmljc1tdLCBuTmVpZ2hib3VyczogbnVtYmVyID0gMTUsXG4gICAgICBvcHRzOiB7W186IHN0cmluZ106IGFueX1bXSwgd2VpZ2h0czogbnVtYmVyW10sXG4gICAgICBhZ2dyZWdhdGlvbk1ldGhvZDogRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZCA9IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzLkVVQ0xJREVBTlxuICAgICkge1xuICAgICAgaWYgKHZhbHVlcy5sZW5ndGggIT09IGZuTmFtZXMubGVuZ3RoIHx8IHZhbHVlcy5sZW5ndGggIT09IG9wdHMubGVuZ3RoIHx8IHZhbHVlcy5sZW5ndGggIT09IHdlaWdodHMubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3ZhbHVlcywgZGlzdGFuY2UgZnVuY3Rpb25zLCBvcHRpb25zIGFuZCB3ZWlnaHRzIGFycmF5cyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBsZW5ndGgnKTtcblxuICAgICAgaWYgKHZhbHVlcy5zb21lKCh2KSA9PiB2Lmxlbmd0aCAhPT0gdmFsdWVzWzBdLmxlbmd0aCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYWxsIHZhbHVlcyBhcnJheXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbGVuZ3RoJyk7XG5cbiAgICAgIGNvbnN0IG1hdFNpemUgPSB2YWx1ZXNbMF0ubGVuZ3RoICogKHZhbHVlc1swXS5sZW5ndGggLSAxKSAvIDI7XG4gICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKG1hdFNpemUgLyB0aGlzLl93b3JrZXJDb3VudCk7XG4gICAgICBjb25zdCBwcm9taXNlcyA9XG4gICAgICAgIG5ldyBBcnJheTxQcm9taXNlPEtublJlc3VsdD4+KHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgIGNvbnN0IHdvcmtlcnMgPSBuZXcgQXJyYXkodGhpcy5fd29ya2VyQ291bnQpXG4gICAgICAgIC5maWxsKG51bGwpLm1hcCgoKSA9PiBuZXcgV29ya2VyKG5ldyBVUkwoJy4va25uLXdvcmtlcicsIGltcG9ydC5tZXRhLnVybCkpKTtcbiAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMuX3dvcmtlckNvdW50OyBpZHgrKykge1xuICAgICAgICBwcm9taXNlc1tpZHhdID0gbmV3IFByb21pc2UoKHJlc29sdmVXb3JrZXIsIHJlamVjdFdvcmtlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SWR4ID0gaWR4ICogY2h1bmtTaXplO1xuICAgICAgICAgIGNvbnN0IGVuZElkeCA9IGlkeCA9PT0gdGhpcy5fd29ya2VyQ291bnQgLSAxID8gbWF0U2l6ZSA6IChpZHggKyAxKSAqIGNodW5rU2l6ZTtcbiAgICAgICAgICBpZiAoZW5kSWR4IDw9IHN0YXJ0SWR4KVxuICAgICAgICAgICAgcmVzb2x2ZVdvcmtlcih7a25uRGlzdGFuY2VzOiBuZXcgQXJyYXkoMCksIGtubkluZGV4ZXM6IG5ldyBBcnJheSgwKX0pO1xuICAgICAgICAgIHdvcmtlcnNbaWR4XS5wb3N0TWVzc2FnZSh7dmFsdWVzLCBzdGFydElkeCwgZW5kSWR4LCBmbk5hbWVzLCBvcHRzLCBuTmVpZ2hib3Vycywgd2VpZ2h0cywgYWdncmVnYXRpb25NZXRob2R9KTtcbiAgICAgICAgICB3b3JrZXJzW2lkeF0ub25tZXNzYWdlID0gKHtkYXRhOiB7ZXJyb3IsIGtubkRpc3RhbmNlcywga25uSW5kZXhlc319KTogdm9pZCA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgd29ya2Vyc1tpZHhdLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICByZWplY3RXb3JrZXIoZXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd29ya2Vyc1tpZHhdLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICByZXNvbHZlV29ya2VyKHtrbm5EaXN0YW5jZXMsIGtubkluZGV4ZXN9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgIGNvbnN0IGtublJlczogS25uUmVzdWx0ID0ge1xuICAgICAgICBrbm5EaXN0YW5jZXM6IG5ldyBBcnJheSh2YWx1ZXNbMF0ubGVuZ3RoKS5maWxsKG51bGwpLm1hcCgoKSA9PiBuZXcgQXJyYXk8bnVtYmVyPihuTmVpZ2hib3VycykuZmlsbCg5OTk5OSkpLFxuICAgICAgICBrbm5JbmRleGVzOiBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IEFycmF5PG51bWJlcj4obk5laWdoYm91cnMpLmZpbGwoLTEpKX07XG4gICAgICBmb3IgKGNvbnN0IHJlcyBvZiByZXN1bHRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzWzBdLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByZXMua25uRGlzdGFuY2VzW2ldPy5sZW5ndGggPz8gMDsgKytqKVxuICAgICAgICAgICAgaW5zZXJ0U21hbGxlcihrbm5SZXMua25uRGlzdGFuY2VzW2ldLCBrbm5SZXMua25uSW5kZXhlc1tpXSwgcmVzLmtubkRpc3RhbmNlc1tpXVtqXSwgcmVzLmtubkluZGV4ZXNbaV1bal0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ga25uUmVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRTYW1wbGVEaXN0YW5jZXModmFsdWVzOiBBcnJheTxhbnlbXT4sXG4gICAgICBmbk5hbWVzOiBLbm93bk1ldHJpY3NbXSwgb3B0czoge1tfOiBzdHJpbmddOiBhbnl9W10gPSBbXSwgd2VpZ2h0czogbnVtYmVyW10sXG4gICAgICBhZ2dyZWdhdGlvbk1ldGhvZDogRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZCA9IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzLkVVQ0xJREVBTik6IFByb21pc2U8RmxvYXQzMkFycmF5PiB7XG4gICAgICBjb25zdCB0aHJlc2hvbGRXb3JrZXJzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KS5maWxsKG51bGwpXG4gICAgICAgIC5tYXAoKCkgPT4gbmV3IFdvcmtlcihuZXcgVVJMKCcuL3NwYXJzZS1tYXRyaXgtdGhyZXNob2xkLXdvcmtlcicsIGltcG9ydC5tZXRhLnVybCkpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWF0U2l6ZSA9IHZhbHVlc1swXS5sZW5ndGggKiAodmFsdWVzWzBdLmxlbmd0aCAtIDEpIC8gMjtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5mbG9vcihtYXRTaXplIC8gdGhpcy5fd29ya2VyQ291bnQpO1xuICAgICAgICBjb25zdCBtYXhTYW1wbGVTaXplID0gMV8wMDBfMDAwO1xuICAgICAgICBjb25zdCBzYW1wbGVTaXNlID0gTWF0aC5tYXgoTWF0aC5taW4obWF0U2l6ZSAvIDEwMDAsIG1heFNhbXBsZVNpemUpLCBNYXRoLm1pbihtYXRTaXplLCBtYXhTYW1wbGVTaXplKSk7XG4gICAgICAgIGNvbnN0IHRlc3RTZXRTaXplUGVyV29ya2VyID0gTWF0aC5mbG9vcihzYW1wbGVTaXNlIC8gdGhpcy5fd29ya2VyQ291bnQpO1xuICAgICAgICBjb25zdCB0UHJvbWlzZXMgPSBuZXcgQXJyYXk8UHJvbWlzZTx7ZGlzdGFuY2U6IEZsb2F0MzJBcnJheX0+Pih0aGlzLl93b3JrZXJDb3VudCk7XG5cbiAgICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgdGhpcy5fd29ya2VyQ291bnQ7IGlkeCsrKSB7XG4gICAgICAgICAgdFByb21pc2VzW2lkeF0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZVdvcmtlciwgcmVqZWN0V29ya2VyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGFydElkeCA9IGlkeCAqIGNodW5rU2l6ZTtcbiAgICAgICAgICAgIGNvbnN0IGVuZElkeCA9IGlkeCA9PT0gdGhpcy5fd29ya2VyQ291bnQgLSAxID8gbWF0U2l6ZSA6IChpZHggKyAxKSAqIGNodW5rU2l6ZTtcbiAgICAgICAgICAgIHRocmVzaG9sZFdvcmtlcnNbaWR4XS5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIHZhbHVlczogdmFsdWVzLCBzdGFydElkeCwgZW5kSWR4LCBzYW1wbGVMZW5ndGg6IHRlc3RTZXRTaXplUGVyV29ya2VyLFxuICAgICAgICAgICAgICBmbk5hbWVzLCBvcHRzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aHJlc2hvbGRXb3JrZXJzW2lkeF0ub25tZXNzYWdlID0gKHtkYXRhOiB7ZXJyb3IsIGRpc3RhbmNlfX0pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgdGhyZXNob2xkV29ya2Vyc1tpZHhdLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICBpZiAoZXJyb3IpIHJlamVjdFdvcmtlcihlcnJvcik7IGVsc2VcbiAgICAgICAgICAgICAgICByZXNvbHZlV29ya2VyKHtkaXN0YW5jZX0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbCh0UHJvbWlzZXMpO1xuICAgICAgICBjb25zdCBmdWxsU2l6ZSA9IHJlc3VsdHMucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjICsgdmFsLmRpc3RhbmNlLmxlbmd0aCwgMCk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gbmV3IEZsb2F0MzJBcnJheShmdWxsU2l6ZSk7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IHJlcyBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgZGlzdGFuY2Uuc2V0KHJlcy5kaXN0YW5jZSwgb2Zmc2V0KTtcbiAgICAgICAgICBvZmZzZXQgKz0gcmVzLmRpc3RhbmNlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBkaXN0YW5jZS5zb3J0KCk7XG5cbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJlc2hvbGRXb3JrZXJzPy5mb3JFYWNoKCh3KSA9PiB3Py50ZXJtaW5hdGUoKSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KDEpLmZpbGwoMC41KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldE1pbmltYWxUaHJlc2hvbGQodmFsdWVzOiBBcnJheTxhbnlbXT4sXG4gICAgICBmbk5hbWVzOiBLbm93bk1ldHJpY3NbXSwgb3B0czoge1tfOiBzdHJpbmddOiBhbnl9W10gPSBbXSwgd2VpZ2h0czogbnVtYmVyW10sXG4gICAgICBhZ2dyZWdhdGlvbk1ldGhvZDogRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZCA9IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzLkVVQ0xJREVBTikge1xuICAgICAgLy9XZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbWluaW1hbCB0aHJlc2hvbGQgZmlyc3QsXG4gICAgICAvL2luIG9yZGVyIHRvIGdldCBtYXRyaXggc3VjaCB0aGF0IGl0IGRvZXMgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSBzaXplIG9mIDFHQlxuICAgICAgLy93ZSBoYXZlIDMgcmV0dXJuIGFycmF5cywgZWFjaCA0IGJpdGVzIHBlciBlbGVtZW50LCBzbyBpZiB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBtYXRyaXggaXMgMUdCLFxuICAgICAgY29uc3QgbWF4U3BhcnNlTWF0cml4U2l6ZSA9IDcwXzAwMF8wMDA7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBtYXRTaXplID0gdmFsdWVzLmxlbmd0aCAqICh2YWx1ZXMubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGF3YWl0IHRoaXMuZ2V0U2FtcGxlRGlzdGFuY2VzKHZhbHVlcywgZm5OYW1lcywgb3B0cywgd2VpZ2h0cywgYWdncmVnYXRpb25NZXRob2QpO1xuICAgICAgICBjb25zdCBmcmFjdGlvbkluZGV4ID0gTWF0aC5mbG9vcihtYXhTcGFyc2VNYXRyaXhTaXplIC8gbWF0U2l6ZSAqIGRpc3RhbmNlLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZCA9IDEgLSBkaXN0YW5jZVtmcmFjdGlvbkluZGV4XTtcbiAgICAgICAgLy8gdGhyZXNob2xkID0gTWF0aC5tYXgodGhyZXNob2xkLCAwLjMpO1xuICAgICAgICByZXR1cm4gdGhyZXNob2xkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICByZXR1cm4gMC41O1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY2FsY1N5bmM8VD4oXG4gICAgICB2YWx1ZXM6IEFycmF5PFQ+IHwgQXJyYXlMaWtlPFQ+LCBmbk5hbWU6IEtub3duTWV0cmljcywgZGlzdGFuY2VGbjogRnVuY3Rpb24sIHRocmVzaG9sZDogbnVtYmVyXG4gICAgKSB7XG4gICAgICBjb25zdCBpOiBudW1iZXJbXSA9IFtdO1xuICAgICAgY29uc3QgajogbnVtYmVyW10gPSBbXTtcbiAgICAgIGNvbnN0IGRpc3RhbmNlczogbnVtYmVyW10gPSBbXTtcbiAgICAgIGxldCBjbnQgPSAwO1xuICAgICAgbGV0IG1pID0gMDtcbiAgICAgIGxldCBtaiA9IDA7XG4gICAgICBjb25zdCBmdWxsU2l6ZSA9IHZhbHVlcy5sZW5ndGggKiAodmFsdWVzLmxlbmd0aCAtIDEpIC8gMjtcbiAgICAgIHdoaWxlIChjbnQgPCBmdWxsU2l6ZSkge1xuICAgICAgICAvL2NvbnN0IHZhbHVlID0gc2VxMUxpc3RbbWldICYmIHNlcTFMaXN0W21qXSA/IGhhbW1pbmcoc2VxMUxpc3RbbWldLCBzZXExTGlzdFttal0pIDogMDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAhaXNOaWwodmFsdWVzW21pXSkgJiYgIWlzTmlsKHZhbHVlc1ttal0pID9cbiAgICAgICAgICBkaXN0YW5jZUZuKHZhbHVlc1ttaV0sIHZhbHVlc1ttal0pIDogMTtcbiAgICAgICAgY29uc3Qgc2ltaWxhcml0eSA9IDEgLSB2YWx1ZTtcbiAgICAgICAgaWYgKHNpbWlsYXJpdHkgPj0gdGhyZXNob2xkKSB7XG4gICAgICAgICAgaS5wdXNoKG1pKTtcbiAgICAgICAgICBqLnB1c2gobWopO1xuICAgICAgICAgIGRpc3RhbmNlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjbnQrKztcbiAgICAgICAgbWorKztcbiAgICAgICAgaWYgKG1qID09PSB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgbWkrKztcbiAgICAgICAgICBtaiA9IG1pICsgMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpQXJyYXkgPSBuZXcgSW50MzJBcnJheShpKTtcbiAgICAgIGNvbnN0IGpBcnJheSA9IG5ldyBJbnQzMkFycmF5KGopO1xuICAgICAgY29uc3QgZGlzdGFuY2VBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoZGlzdGFuY2VzKTtcblxuICAgICAgcmV0dXJuIHtpOiBpQXJyYXksIGo6IGpBcnJheSwgZGlzdGFuY2U6IGRpc3RhbmNlQXJyYXl9O1xuICAgIH1cbn1cbiJdfQ==","export var DistanceAggregationMethods;\n(function (DistanceAggregationMethods) {\n DistanceAggregationMethods[\"EUCLIDEAN\"] = \"EUCLIDEAN\";\n DistanceAggregationMethods[\"MANHATTAN\"] = \"MANHATTAN\";\n})(DistanceAggregationMethods || (DistanceAggregationMethods = {}));\n;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSwwQkFHVDtBQUhILFdBQVksMEJBQTBCO0lBQ2xDLHFEQUF1QixDQUFBO0lBQ3ZCLHFEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIUywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBR25DO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIHtcbiAgICBFVUNMSURFQU4gPSAnRVVDTElERUFOJyxcbiAgICBNQU5IQVRUQU4gPSAnTUFOSEFUVEFOJyxcbiAgfTtcblxuZXhwb3J0IHR5cGUgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZCA9IGtleW9mIHR5cGVvZiBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcztcbiJdfQ=="],"names":["SparseMatrixService","constructor","this","_workerCount","Math","max","navigator","hardwareConcurrency","calcMultiColumn","values","fnNames","threshold","opts","weights","aggregationMethod","EUCLIDEAN","matSize","length","chunkSize","floor","minThreshold","getMinimalThreshold","console","log","forEach","_","i","promises","Array","workers","fill","map","Worker","URL","idx","Promise","resolveWorker","rejectWorker","startIdx","endIdx","Int32Array","j","distance","Float32Array","postMessage","onmessage","data","error","terminate","results","all","fullSize","reduce","acc","val","offset","res","set","calc","fnName","getKNN","nNeighbours","multiColumnKNN","getThresholdKNN","multiColumnThresholdKnn","Error","some","v","knnDistances","knnIndexes","knnSizes","knnRes","getSampleDistances","thresholdWorkers","maxSampleSize","sampleSise","min","testSetSizePerWorker","tPromises","sampleLength","sort","e","w","calcSync","distanceFn","distances","cnt","mi","mj","value","push","DistanceAggregationMethods"],"sourceRoot":""}
|
package/dist/778.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var bio;(()=>{"use strict";var e,t,r={3778:(e,t,r)=>{var o=r(6066);const n=e=>null==e;var a=r(2780),s=r(8774);onmessage=async e=>{const{values:t,startIdx:r,endIdx:l,sampleLength:i,fnNames:c,opts:h,weights:p,aggregationMethod:f}=e.data;try{let e=new Float32Array(i);const u=l-r,g=function(e,t){return e===o.G.MANHATTAN?e=>e.reduce(((e,r,o)=>e+r*t[o]),0):e=>{const r=e.reduce(((e,r,o)=>e+(r*t[o])**2),0);return Math.sqrt(r)}}(f,p);t.forEach(((e,r)=>{if((0,a.lW)(c[r]))for(let o=0;o<e.length;++o)n(e[o])||(t[r][o]=new s.A(t[r][o]._data,t[r][o]._length))}));let v=0;const d=Math.floor(u/i),b=new Array(c.length).fill(null).map(((e,t)=>new a.t$(c[t]).getMeasure(h[t]))),m=t[0].length-2-Math.floor(Math.sqrt(-8*r+4*t[0].length*(t[0].length-1)-7)/2-.5),w=r-t[0].length*m+Math.floor((m+1)*(m+2)/2);let y=m,x=w,M=0;for(;v<u&&M<i;){const r=b.map(((e,r)=>n(t[r][y])||n(t[r][x])?1:e(t[r][y],t[r][x]))),o=1===r.length?r[0]:g(r);for(e[M]=o,M++,v+=d,x+=d;x>=t[0].length&&v<u;)y++,x=y+1+(x-t[0].length)}M<i&&(e=e.slice(0,M)),postMessage({distance:e})}catch(e){postMessage({error:e})}}}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.x=()=>{var e=n.O(void 0,[242,589],(()=>n(3778)));return n.O(e)},e=[],n.O=(t,r,o,a)=>{if(!r){var s=1/0;for(h=0;h<e.length;h++){for(var[r,o,a]=e[h],l=!0,i=0;i<r.length;i++)(!1&a||s>=a)&&Object.keys(n.O).every((e=>n.O[e](r[i])))?r.splice(i--,1):(l=!1,a<s&&(s=a));if(l){e.splice(h--,1);var c=o();void 0!==c&&(t=c)}}return t}a=a||0;for(var h=e.length;h>0&&e[h-1][2]>a;h--)e[h]=e[h-1];e[h]=[r,o,a]},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,r)=>(n.f[r](e,t),t)),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var o=r.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=r[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={778:1};n.f.i=(t,r)=>{e[t]||importScripts(n.p+n.u(t))};var t=self.webpackChunkbio=self.webpackChunkbio||[],r=t.push.bind(t);t.push=t=>{var[o,a,s]=t;for(var l in a)n.o(a,l)&&(n.m[l]=a[l]);for(s&&s(n);o.length;)e[o.pop()]=1;r(t)}})(),t=n.x,n.x=()=>Promise.all([n.e(242),n.e(589)]).then(t);var a=n.x();bio=a})();
|
|
2
|
+
//# sourceMappingURL=778.js.map
|
package/dist/778.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"778.js","mappings":"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","sources":["webpack://bio/webpack/runtime/chunk loaded","webpack://bio/webpack/runtime/startup chunk dependencies","webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/utils.js","webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/sparse-matrix-threshold-worker.js","webpack://bio/webpack/bootstrap","webpack://bio/webpack/runtime/define property getters","webpack://bio/webpack/runtime/ensure chunk","webpack://bio/webpack/runtime/get javascript chunk filename","webpack://bio/webpack/runtime/global","webpack://bio/webpack/runtime/hasOwnProperty shorthand","webpack://bio/webpack/runtime/publicPath","webpack://bio/webpack/runtime/importScripts chunk loading","webpack://bio/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn Promise.all([\n\t\t__webpack_require__.e(242),\n\t\t__webpack_require__.e(589)\n\t]).then(next);\n};","import { DistanceAggregationMethods } from './types';\nexport const isNil = (x) => x === null || x === undefined;\nexport function insertSmaller(distancesAr, indexes, num, index) {\n if (num > distancesAr[distancesAr.length - 1])\n return;\n const newPosition = distancesAr.findIndex((v) => num < v);\n distancesAr.pop();\n distancesAr.splice(newPosition, 0, num);\n indexes.pop();\n indexes.splice(newPosition, 0, index);\n}\nexport function insertLarger(distancesAr, indexes, num, index) {\n if (num < distancesAr[distancesAr.length - 1])\n return;\n const newPosition = distancesAr.findIndex((v) => num > v);\n distancesAr.pop();\n distancesAr.splice(newPosition, 0, num);\n indexes.pop();\n indexes.splice(newPosition, 0, index);\n}\nexport function getAggregationFunction(aggregationMethod, weights) {\n switch (aggregationMethod) {\n case DistanceAggregationMethods.MANHATTAN:\n return (vs) => vs.reduce((acc, val, idx) => acc + val * weights[idx], 0);\n default:\n return (vs) => {\n // euclidean\n const sum = vs.reduce((acc, val, idx) => acc + (val * weights[idx]) ** 2, 0);\n return Math.sqrt(sum);\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLDBCQUEwQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRTlFLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBRS9ELE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBcUIsRUFBRSxPQUFpQixFQUFFLEdBQVcsRUFBRSxLQUFhO0lBQ2hHLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPO0lBRVQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQixXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQXFCLEVBQUUsT0FBaUIsRUFBRSxHQUFXLEVBQUUsS0FBYTtJQUMvRixJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7UUFDekMsT0FBTztJQUVULE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxpQkFBNEMsRUFBRSxPQUFpQjtJQUUvRCxRQUFRLGlCQUFpQixFQUFFLENBQUM7UUFDMUIsS0FBSywwQkFBMEIsQ0FBQyxTQUFTO1lBQ3ZDLE9BQU8sQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckY7WUFDRSxPQUFPLENBQUMsRUFBWSxFQUFFLEVBQUU7Z0JBQ3RCLFlBQVk7Z0JBQ1osTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rpc3RhbmNlQWdncmVnYXRpb25NZXRob2QsIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzTmlsID0gKHg6IGFueSkgPT4geCA9PT0gbnVsbCB8fCB4ID09PSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRTbWFsbGVyKGRpc3RhbmNlc0FyOiBudW1iZXJbXSwgaW5kZXhlczogbnVtYmVyW10sIG51bTogbnVtYmVyLCBpbmRleDogbnVtYmVyKSB7XG4gIGlmIChudW0gPiBkaXN0YW5jZXNBcltkaXN0YW5jZXNBci5sZW5ndGgtMV0pXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlzdGFuY2VzQXIuZmluZEluZGV4KCh2KSA9PiBudW0gPCB2KTtcbiAgZGlzdGFuY2VzQXIucG9wKCk7XG4gIGRpc3RhbmNlc0FyLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgbnVtKTtcbiAgaW5kZXhlcy5wb3AoKTtcbiAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExhcmdlcihkaXN0YW5jZXNBcjogbnVtYmVyW10sIGluZGV4ZXM6IG51bWJlcltdLCBudW06IG51bWJlciwgaW5kZXg6IG51bWJlcikge1xuICBpZiAobnVtIDwgZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoLTFdKVxuICAgIHJldHVybjtcblxuICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtID4gdik7XG4gIGRpc3RhbmNlc0FyLnBvcCgpO1xuICBkaXN0YW5jZXNBci5zcGxpY2UobmV3UG9zaXRpb24sIDAsIG51bSk7XG4gIGluZGV4ZXMucG9wKCk7XG4gIGluZGV4ZXMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpbmRleCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKFxuICBhZ2dyZWdhdGlvbk1ldGhvZDogRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZCwgd2VpZ2h0czogbnVtYmVyW11cbik6ICh2YWx1ZXM6IG51bWJlcltdKSA9PiBudW1iZXIge1xuICBzd2l0Y2ggKGFnZ3JlZ2F0aW9uTWV0aG9kKSB7XG4gICAgY2FzZSBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcy5NQU5IQVRUQU46XG4gICAgICByZXR1cm4gKHZzOiBudW1iZXJbXSkgPT4gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyB2YWwgKiB3ZWlnaHRzW2lkeF0sIDApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gKHZzOiBudW1iZXJbXSkgPT4ge1xuICAgICAgICAvLyBldWNsaWRlYW5cbiAgICAgICAgY29uc3Qgc3VtID0gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyAodmFsICogd2VpZ2h0c1tpZHhdKSAqKiAyLCAwKTtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xuICAgICAgfTtcbiAgfVxufVxuIl19","import { getAggregationFunction, isNil } from './utils';\nimport { Measure, isBitArrayMetric } from '../typed-metrics';\nimport BitArray from '@datagrok-libraries/utils/src/bit-array';\nonmessage = async (event) => {\n const { values, startIdx, endIdx, sampleLength, fnNames, opts, weights, aggregationMethod } = event.data;\n try {\n // if (startIdx != -1)\n // throw new Error('Error in sparse threshold worker'); // TODO: remove this line\n let distances = new Float32Array(sampleLength);\n const chunkSize = endIdx - startIdx;\n const aggregate = getAggregationFunction(aggregationMethod, weights);\n values.forEach((v, colIdx) => {\n if (isBitArrayMetric(fnNames[colIdx])) {\n for (let i = 0; i < v.length; ++i) {\n if (isNil(v[i]))\n continue;\n values[colIdx][i] = new BitArray(values[colIdx][i]._data, values[colIdx][i]._length);\n }\n }\n });\n let cnt = 0;\n const increment = Math.floor(chunkSize / sampleLength);\n const distanceFns = new Array(fnNames.length).fill(null).map((_, i) => new Measure(fnNames[i]).getMeasure(opts[i]));\n const startRow = values[0].length - 2 - Math.floor(Math.sqrt(-8 * startIdx + 4 * values[0].length * (values[0].length - 1) - 7) / 2 - 0.5);\n const startCol = startIdx - values[0].length * startRow + Math.floor((startRow + 1) * (startRow + 2) / 2);\n let mi = startRow;\n let mj = startCol;\n let distanceArrayCounter = 0;\n while (cnt < chunkSize && distanceArrayCounter < sampleLength) {\n //const value = seq1List[mi] && seq1List[mj] ? hamming(seq1List[mi], seq1List[mj]) : 0;\n const distanceValues = distanceFns.map((fn, idx) => !isNil(values[idx][mi]) && !isNil(values[idx][mj]) ?\n fn(values[idx][mi], values[idx][mj]) : 1);\n const value = distanceValues.length === 1 ? distanceValues[0] : aggregate(distanceValues);\n distances[distanceArrayCounter] = value;\n distanceArrayCounter++;\n // const currentIncrement = Math.floor(Math.random() * increment) + 1\n cnt += increment;\n mj += increment;\n while (mj >= values[0].length && cnt < chunkSize) {\n mi++;\n mj = mi + 1 + (mj - values[0].length);\n }\n }\n if (distanceArrayCounter < sampleLength)\n distances = distances.slice(0, distanceArrayCounter);\n postMessage({ distance: distances });\n }\n catch (e) {\n postMessage({ error: e });\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnNlLW1hdHJpeC10aHJlc2hvbGQtd29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BhcnNlLW1hdHJpeC10aHJlc2hvbGQtd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDdEQsT0FBTyxFQUFlLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sUUFBUSxNQUFNLHlDQUF5QyxDQUFDO0FBRS9ELFNBQVMsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDMUIsTUFBTSxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBQyxHQUdsQixLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xGLElBQUksQ0FBQztRQUNILHNCQUFzQjtRQUN0QixtRkFBbUY7UUFDbkYsSUFBSSxTQUFTLEdBQWlCLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDcEMsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFckUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQixJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFBRSxTQUFTO29CQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQztRQUN2RCxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDMUYsTUFBTSxRQUFRLEdBQUcsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUcsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQ2xCLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUNsQixJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQztRQUM3QixPQUFPLEdBQUcsR0FBRyxTQUFTLElBQUksb0JBQW9CLEdBQUcsWUFBWSxFQUFFLENBQUM7WUFDOUQsdUZBQXVGO1lBQ3ZGLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDMUYsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3hDLG9CQUFvQixFQUFFLENBQUM7WUFDdkIscUVBQXFFO1lBQ3JFLEdBQUcsSUFBRSxTQUFTLENBQUM7WUFDZixFQUFFLElBQUUsU0FBUyxDQUFDO1lBQ2QsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsU0FBUyxFQUFFLENBQUM7Z0JBQ2pELEVBQUUsRUFBRSxDQUFDO2dCQUNMLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksb0JBQW9CLEdBQUcsWUFBWTtZQUNyQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUV2RCxXQUFXLENBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLFdBQVcsQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dldEFnZ3JlZ2F0aW9uRnVuY3Rpb24sIGlzTmlsfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7S25vd25NZXRyaWNzLCBNZWFzdXJlLCBpc0JpdEFycmF5TWV0cmljfSBmcm9tICcuLi90eXBlZC1tZXRyaWNzJztcbmltcG9ydCBCaXRBcnJheSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXknO1xuaW1wb3J0IHtEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kfSBmcm9tICcuL3R5cGVzJztcbm9ubWVzc2FnZSA9IGFzeW5jIChldmVudCkgPT4ge1xuICBjb25zdCB7dmFsdWVzLCBzdGFydElkeCwgZW5kSWR4LCBzYW1wbGVMZW5ndGgsIGZuTmFtZXMsIG9wdHMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kfTpcbiAgICB7dmFsdWVzOiBBcnJheTxhbnlbXT4sIHN0YXJ0SWR4OiBudW1iZXIsIGVuZElkeDogbnVtYmVyLFxuICAgICAgc2FtcGxlTGVuZ3RoOiBudW1iZXIsIGZuTmFtZXM6IEtub3duTWV0cmljc1tdLCBvcHRzOiBhbnlbXSxcbiAgICAgIHdlaWdodHM6IG51bWJlcltdLCBhZ2dyZWdhdGlvbk1ldGhvZDogRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZH0gPSBldmVudC5kYXRhO1xuICB0cnkge1xuICAgIC8vIGlmIChzdGFydElkeCAhPSAtMSlcbiAgICAvLyAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgaW4gc3BhcnNlIHRocmVzaG9sZCB3b3JrZXInKTsgLy8gVE9ETzogcmVtb3ZlIHRoaXMgbGluZVxuICAgIGxldCBkaXN0YW5jZXM6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoc2FtcGxlTGVuZ3RoKTtcbiAgICBjb25zdCBjaHVua1NpemUgPSBlbmRJZHggLSBzdGFydElkeDtcbiAgICBjb25zdCBhZ2dyZWdhdGUgPSBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKGFnZ3JlZ2F0aW9uTWV0aG9kLCB3ZWlnaHRzKTtcblxuICAgIHZhbHVlcy5mb3JFYWNoKCh2LCBjb2xJZHgpID0+IHtcbiAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKGZuTmFtZXNbY29sSWR4XSkpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgaWYgKGlzTmlsKHZbaV0pKSBjb250aW51ZTtcbiAgICAgICAgICB2YWx1ZXNbY29sSWR4XVtpXSA9IG5ldyBCaXRBcnJheSh2YWx1ZXNbY29sSWR4XVtpXS5fZGF0YSwgdmFsdWVzW2NvbElkeF1baV0uX2xlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgY250ID0gMDtcbiAgICBjb25zdCBpbmNyZW1lbnQgPSBNYXRoLmZsb29yKGNodW5rU2l6ZSAvIHNhbXBsZUxlbmd0aCk7XG4gICAgY29uc3QgZGlzdGFuY2VGbnMgPSBuZXcgQXJyYXkoZm5OYW1lcy5sZW5ndGgpLmZpbGwobnVsbCkubWFwKChfLCBpKSA9PiBuZXcgTWVhc3VyZShmbk5hbWVzW2ldKS5nZXRNZWFzdXJlKG9wdHNbaV0pKTtcbiAgICBjb25zdCBzdGFydFJvdyA9IHZhbHVlc1swXS5sZW5ndGggLSAyIC0gTWF0aC5mbG9vcihcbiAgICAgIE1hdGguc3FydCgtOCAqIHN0YXJ0SWR4ICsgNCAqIHZhbHVlc1swXS5sZW5ndGggKiAodmFsdWVzWzBdLmxlbmd0aCAtIDEpIC0gNykgLyAyIC0gMC41KTtcbiAgICBjb25zdCBzdGFydENvbCA9IHN0YXJ0SWR4IC0gdmFsdWVzWzBdLmxlbmd0aCAqIHN0YXJ0Um93ICsgTWF0aC5mbG9vcigoc3RhcnRSb3cgKyAxKSAqIChzdGFydFJvdyArIDIpIC8gMik7XG4gICAgbGV0IG1pID0gc3RhcnRSb3c7XG4gICAgbGV0IG1qID0gc3RhcnRDb2w7XG4gICAgbGV0IGRpc3RhbmNlQXJyYXlDb3VudGVyID0gMDtcbiAgICB3aGlsZSAoY250IDwgY2h1bmtTaXplICYmIGRpc3RhbmNlQXJyYXlDb3VudGVyIDwgc2FtcGxlTGVuZ3RoKSB7XG4gICAgICAvL2NvbnN0IHZhbHVlID0gc2VxMUxpc3RbbWldICYmIHNlcTFMaXN0W21qXSA/IGhhbW1pbmcoc2VxMUxpc3RbbWldLCBzZXExTGlzdFttal0pIDogMDtcbiAgICAgIGNvbnN0IGRpc3RhbmNlVmFsdWVzID0gZGlzdGFuY2VGbnMubWFwKChmbiwgaWR4KSA9PiAhaXNOaWwodmFsdWVzW2lkeF1bbWldKSAmJiAhaXNOaWwodmFsdWVzW2lkeF1bbWpdKSA/XG4gICAgICAgIGZuKHZhbHVlc1tpZHhdW21pXSwgdmFsdWVzW2lkeF1bbWpdKSA6IDEpO1xuICAgICAgY29uc3QgdmFsdWUgPSBkaXN0YW5jZVZhbHVlcy5sZW5ndGggPT09IDEgPyBkaXN0YW5jZVZhbHVlc1swXSA6IGFnZ3JlZ2F0ZShkaXN0YW5jZVZhbHVlcyk7XG4gICAgICBkaXN0YW5jZXNbZGlzdGFuY2VBcnJheUNvdW50ZXJdID0gdmFsdWU7XG4gICAgICBkaXN0YW5jZUFycmF5Q291bnRlcisrO1xuICAgICAgLy8gY29uc3QgY3VycmVudEluY3JlbWVudCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGluY3JlbWVudCkgKyAxXG4gICAgICBjbnQrPWluY3JlbWVudDtcbiAgICAgIG1qKz1pbmNyZW1lbnQ7XG4gICAgICB3aGlsZSAobWogPj0gdmFsdWVzWzBdLmxlbmd0aCAmJiBjbnQgPCBjaHVua1NpemUpIHtcbiAgICAgICAgbWkrKztcbiAgICAgICAgbWogPSBtaSArIDEgKyAobWogLSB2YWx1ZXNbMF0ubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGlzdGFuY2VBcnJheUNvdW50ZXIgPCBzYW1wbGVMZW5ndGgpXG4gICAgICBkaXN0YW5jZXMgPSBkaXN0YW5jZXMuc2xpY2UoMCwgZGlzdGFuY2VBcnJheUNvdW50ZXIpO1xuXG4gICAgcG9zdE1lc3NhZ2Uoe2Rpc3RhbmNlOiBkaXN0YW5jZXN9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHBvc3RNZXNzYWdlKHtlcnJvcjogZX0pO1xuICB9XG59O1xuIl19","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n__webpack_require__.x = () => {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [242,589], () => (__webpack_require__(3778)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and sibling chunks for the entrypoint\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t778: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunkbio\"] = self[\"webpackChunkbio\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["deferred","next","isNil","x","onmessage","async","event","values","startIdx","endIdx","sampleLength","fnNames","opts","weights","aggregationMethod","data","distances","Float32Array","chunkSize","aggregate","MANHATTAN","vs","reduce","acc","val","idx","sum","Math","sqrt","getAggregationFunction","forEach","v","colIdx","i","length","_data","_length","cnt","increment","floor","distanceFns","Array","fill","map","_","getMeasure","startRow","startCol","mi","mj","distanceArrayCounter","distanceValues","fn","value","slice","postMessage","distance","e","error","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","__webpack_exports__","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","d","definition","o","defineProperty","enumerable","get","f","chunkId","Promise","all","promises","u","g","globalThis","this","Function","window","obj","prop","prototype","hasOwnProperty","call","scriptUrl","importScripts","location","document","currentScript","src","scripts","getElementsByTagName","test","Error","replace","p","installedChunks","chunkLoadingGlobal","self","parentChunkLoadingFunction","push","bind","moreModules","runtime","pop","then"],"sourceRoot":""}
|
package/dist/793.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var bio;(()=>{"use strict";var r,e,t={2793:(r,e,t)=>{var o=t(6066);const n=r=>null==r;var a=t(2780),i=t(8774);onmessage=r=>{const{values:e,fnNames:t,startRow:s,startCol:c,chunckSize:l,opts:p,weights:u,aggregationMethod:f}=r.data,h={};try{let r=s,g=c,v=0,b=0,m=Number.MIN_VALUE;const d=function(r,e){return r===o.G.MANHATTAN?r=>r.reduce(((r,t,o)=>r+t*e[o]),0):r=>{const t=r.reduce(((r,t,o)=>r+(t*e[o])**2),0);return Math.sqrt(t)}}(f,u);e.forEach(((r,o)=>{if((0,a.lW)(t[o]))for(let t=0;t<r.length;++t)n(r[t])||(e[o][t]=new i.A(e[o][t]._data,e[o][t]._length))}));const w=new Array(t.length).fill(null).map(((r,e)=>new a.t$(t[e]).getMeasure(p[e]))),y=new Float32Array(l);for(;v<l;){const t=w.map(((t,o)=>n(e[o][r])||n(e[o][g])?1:t(e[o][r],e[o][g]))),o=1===t.length?t[0]:d(t);y[v]=o,o<b&&(b=o),o>m&&(m=o),v++,g++,g===e[0].length&&(r++,g=r+1)}h.distanceMatrixData=y,h.min=b,h.max=m}catch(r){h.error=r}postMessage(h)}}},o={};function n(r){var e=o[r];if(void 0!==e)return e.exports;var a=o[r]={exports:{}};return t[r](a,a.exports,n),a.exports}n.m=t,n.x=()=>{var r=n.O(void 0,[242,589],(()=>n(2793)));return n.O(r)},r=[],n.O=(e,t,o,a)=>{if(!t){var i=1/0;for(p=0;p<r.length;p++){for(var[t,o,a]=r[p],s=!0,c=0;c<t.length;c++)(!1&a||i>=a)&&Object.keys(n.O).every((r=>n.O[r](t[c])))?t.splice(c--,1):(s=!1,a<i&&(i=a));if(s){r.splice(p--,1);var l=o();void 0!==l&&(e=l)}}return e}a=a||0;for(var p=r.length;p>0&&r[p-1][2]>a;p--)r[p]=r[p-1];r[p]=[t,o,a]},n.d=(r,e)=>{for(var t in e)n.o(e,t)&&!n.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},n.f={},n.e=r=>Promise.all(Object.keys(n.f).reduce(((e,t)=>(n.f[t](r,e),e)),[])),n.u=r=>r+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r;n.g.importScripts&&(r=n.g.location+"");var e=n.g.document;if(!r&&e&&(e.currentScript&&(r=e.currentScript.src),!r)){var t=e.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!r||!/^http(s?):/.test(r));)r=t[o--].src}if(!r)throw new Error("Automatic publicPath is not supported in this browser");r=r.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=r})(),(()=>{var r={793:1};n.f.i=(e,t)=>{r[e]||importScripts(n.p+n.u(e))};var e=self.webpackChunkbio=self.webpackChunkbio||[],t=e.push.bind(e);e.push=e=>{var[o,a,i]=e;for(var s in a)n.o(a,s)&&(n.m[s]=a[s]);for(i&&i(n);o.length;)r[o.pop()]=1;t(e)}})(),e=n.x,n.x=()=>Promise.all([n.e(242),n.e(589)]).then(e);var a=n.x();bio=a})();
|
|
2
|
+
//# sourceMappingURL=793.js.map
|
package/dist/793.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"793.js","mappings":"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","sources":["webpack://bio/webpack/runtime/chunk loaded","webpack://bio/webpack/runtime/startup chunk dependencies","webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/utils.js","webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/distance-matrix-worker.js","webpack://bio/webpack/bootstrap","webpack://bio/webpack/runtime/define property getters","webpack://bio/webpack/runtime/ensure chunk","webpack://bio/webpack/runtime/get javascript chunk filename","webpack://bio/webpack/runtime/global","webpack://bio/webpack/runtime/hasOwnProperty shorthand","webpack://bio/webpack/runtime/publicPath","webpack://bio/webpack/runtime/importScripts chunk loading","webpack://bio/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn Promise.all([\n\t\t__webpack_require__.e(242),\n\t\t__webpack_require__.e(589)\n\t]).then(next);\n};","import { DistanceAggregationMethods } from './types';\nexport const isNil = (x) => x === null || x === undefined;\nexport function insertSmaller(distancesAr, indexes, num, index) {\n if (num > distancesAr[distancesAr.length - 1])\n return;\n const newPosition = distancesAr.findIndex((v) => num < v);\n distancesAr.pop();\n distancesAr.splice(newPosition, 0, num);\n indexes.pop();\n indexes.splice(newPosition, 0, index);\n}\nexport function insertLarger(distancesAr, indexes, num, index) {\n if (num < distancesAr[distancesAr.length - 1])\n return;\n const newPosition = distancesAr.findIndex((v) => num > v);\n distancesAr.pop();\n distancesAr.splice(newPosition, 0, num);\n indexes.pop();\n indexes.splice(newPosition, 0, index);\n}\nexport function getAggregationFunction(aggregationMethod, weights) {\n switch (aggregationMethod) {\n case DistanceAggregationMethods.MANHATTAN:\n return (vs) => vs.reduce((acc, val, idx) => acc + val * weights[idx], 0);\n default:\n return (vs) => {\n // euclidean\n const sum = vs.reduce((acc, val, idx) => acc + (val * weights[idx]) ** 2, 0);\n return Math.sqrt(sum);\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLDBCQUEwQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRTlFLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBRS9ELE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBcUIsRUFBRSxPQUFpQixFQUFFLEdBQVcsRUFBRSxLQUFhO0lBQ2hHLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPO0lBRVQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQixXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQXFCLEVBQUUsT0FBaUIsRUFBRSxHQUFXLEVBQUUsS0FBYTtJQUMvRixJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7UUFDekMsT0FBTztJQUVULE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxpQkFBNEMsRUFBRSxPQUFpQjtJQUUvRCxRQUFRLGlCQUFpQixFQUFFLENBQUM7UUFDMUIsS0FBSywwQkFBMEIsQ0FBQyxTQUFTO1lBQ3ZDLE9BQU8sQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckY7WUFDRSxPQUFPLENBQUMsRUFBWSxFQUFFLEVBQUU7Z0JBQ3RCLFlBQVk7Z0JBQ1osTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rpc3RhbmNlQWdncmVnYXRpb25NZXRob2QsIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzTmlsID0gKHg6IGFueSkgPT4geCA9PT0gbnVsbCB8fCB4ID09PSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRTbWFsbGVyKGRpc3RhbmNlc0FyOiBudW1iZXJbXSwgaW5kZXhlczogbnVtYmVyW10sIG51bTogbnVtYmVyLCBpbmRleDogbnVtYmVyKSB7XG4gIGlmIChudW0gPiBkaXN0YW5jZXNBcltkaXN0YW5jZXNBci5sZW5ndGgtMV0pXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlzdGFuY2VzQXIuZmluZEluZGV4KCh2KSA9PiBudW0gPCB2KTtcbiAgZGlzdGFuY2VzQXIucG9wKCk7XG4gIGRpc3RhbmNlc0FyLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgbnVtKTtcbiAgaW5kZXhlcy5wb3AoKTtcbiAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExhcmdlcihkaXN0YW5jZXNBcjogbnVtYmVyW10sIGluZGV4ZXM6IG51bWJlcltdLCBudW06IG51bWJlciwgaW5kZXg6IG51bWJlcikge1xuICBpZiAobnVtIDwgZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoLTFdKVxuICAgIHJldHVybjtcblxuICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtID4gdik7XG4gIGRpc3RhbmNlc0FyLnBvcCgpO1xuICBkaXN0YW5jZXNBci5zcGxpY2UobmV3UG9zaXRpb24sIDAsIG51bSk7XG4gIGluZGV4ZXMucG9wKCk7XG4gIGluZGV4ZXMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpbmRleCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKFxuICBhZ2dyZWdhdGlvbk1ldGhvZDogRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZCwgd2VpZ2h0czogbnVtYmVyW11cbik6ICh2YWx1ZXM6IG51bWJlcltdKSA9PiBudW1iZXIge1xuICBzd2l0Y2ggKGFnZ3JlZ2F0aW9uTWV0aG9kKSB7XG4gICAgY2FzZSBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcy5NQU5IQVRUQU46XG4gICAgICByZXR1cm4gKHZzOiBudW1iZXJbXSkgPT4gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyB2YWwgKiB3ZWlnaHRzW2lkeF0sIDApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gKHZzOiBudW1iZXJbXSkgPT4ge1xuICAgICAgICAvLyBldWNsaWRlYW5cbiAgICAgICAgY29uc3Qgc3VtID0gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyAodmFsICogd2VpZ2h0c1tpZHhdKSAqKiAyLCAwKTtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xuICAgICAgfTtcbiAgfVxufVxuIl19","import { getAggregationFunction, isNil } from './utils';\nimport { Measure, isBitArrayMetric } from '../typed-metrics';\nimport BitArray from '@datagrok-libraries/utils/src/bit-array';\nonmessage = (event) => {\n const { values, fnNames, startRow, startCol, chunckSize, opts, weights, aggregationMethod } = event.data;\n const data = {};\n try {\n // if (startRow != -1)\n // throw new Error('Error in distance matrix worker'); // TODO: remove this line\n let i = startRow;\n let j = startCol;\n let cnt = 0;\n let lmin = 0;\n let lmax = Number.MIN_VALUE;\n const aggregate = getAggregationFunction(aggregationMethod, weights);\n values.forEach((v, colIdx) => {\n if (isBitArrayMetric(fnNames[colIdx])) {\n for (let mi = 0; mi < v.length; ++mi) {\n if (isNil(v[mi]))\n continue;\n values[colIdx][mi] = new BitArray(values[colIdx][mi]._data, values[colIdx][mi]._length);\n }\n }\n });\n const distanceFns = new Array(fnNames.length)\n .fill(null)\n .map((_, di) => new Measure(fnNames[di]).getMeasure(opts[di]));\n const retVal = new Float32Array(chunckSize);\n while (cnt < chunckSize) {\n const distanceValues = distanceFns.map((fn, idx) => !isNil(values[idx][i]) && !isNil(values[idx][j]) ?\n fn(values[idx][i], values[idx][j]) : 1);\n const value = distanceValues.length === 1 ? distanceValues[0] : aggregate(distanceValues);\n retVal[cnt] = value;\n if (value < lmin)\n lmin = value;\n if (value > lmax)\n lmax = value;\n cnt++;\n j++;\n if (j === values[0].length) {\n i++;\n j = i + 1;\n }\n }\n data.distanceMatrixData = retVal;\n data.min = lmin;\n data.max = lmax;\n }\n catch (e) {\n data.error = e;\n }\n postMessage(data);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdGFuY2UtbWF0cml4LXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpc3RhbmNlLW1hdHJpeC13b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQWUsT0FBTyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxRQUFRLE1BQU0seUNBQXlDLENBQUM7QUFHL0QsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDcEIsTUFBTSxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBQyxHQUdyRixLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2YsTUFBTSxJQUFJLEdBQWtGLEVBQUUsQ0FBQztJQUMvRixJQUFJLENBQUM7UUFDSCxzQkFBc0I7UUFDdEIsa0ZBQWtGO1FBQ2xGLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNqQixJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDakIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNCLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUFFLFNBQVM7b0JBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7YUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sR0FBRyxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDMUYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLEtBQUssR0FBRyxJQUFJO2dCQUNkLElBQUksR0FBRyxLQUFLLENBQUM7WUFDZixJQUFJLEtBQUssR0FBRyxJQUFJO2dCQUNkLElBQUksR0FBRyxLQUFLLENBQUM7WUFDZixHQUFHLEVBQUUsQ0FBQztZQUNOLENBQUMsRUFBRSxDQUFDO1lBQ0osSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixDQUFDLEVBQUUsQ0FBQztnQkFDSixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztJQUNsQixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uLCBpc05pbH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge0tub3duTWV0cmljcywgTWVhc3VyZSwgaXNCaXRBcnJheU1ldHJpY30gZnJvbSAnLi4vdHlwZWQtbWV0cmljcyc7XG5pbXBvcnQgQml0QXJyYXkgZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvYml0LWFycmF5JztcbmltcG9ydCB7RGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZH0gZnJvbSAnLi90eXBlcyc7XG5cbm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xuICBjb25zdCB7dmFsdWVzLCBmbk5hbWVzLCBzdGFydFJvdywgc3RhcnRDb2wsIGNodW5ja1NpemUsIG9wdHMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kfToge1xuICAgIHZhbHVlczogYW55W11bXSwgZm5OYW1lczogS25vd25NZXRyaWNzW10sIHN0YXJ0Um93OiBudW1iZXIsIHN0YXJ0Q29sOiBudW1iZXIsIGNodW5ja1NpemU6IG51bWJlcixcbiAgICBvcHRzOiB7W186IHN0cmluZ106IGFueX1bXSwgd2VpZ2h0czogbnVtYmVyW10sIGFnZ3JlZ2F0aW9uTWV0aG9kOiBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kLFxuICB9ID0gZXZlbnQuZGF0YTtcbiAgY29uc3QgZGF0YTogeyBlcnJvcj86IGFueSwgZGlzdGFuY2VNYXRyaXhEYXRhPzogRmxvYXQzMkFycmF5LCBtaW4/OiBudW1iZXIsIG1heD86IG51bWJlcn0gPSB7fTtcbiAgdHJ5IHtcbiAgICAvLyBpZiAoc3RhcnRSb3cgIT0gLTEpXG4gICAgLy8gICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGluIGRpc3RhbmNlIG1hdHJpeCB3b3JrZXInKTsgLy8gVE9ETzogcmVtb3ZlIHRoaXMgbGluZVxuICAgIGxldCBpID0gc3RhcnRSb3c7XG4gICAgbGV0IGogPSBzdGFydENvbDtcbiAgICBsZXQgY250ID0gMDtcbiAgICBsZXQgbG1pbiA9IDA7XG4gICAgbGV0IGxtYXggPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZSA9IGdldEFnZ3JlZ2F0aW9uRnVuY3Rpb24oYWdncmVnYXRpb25NZXRob2QsIHdlaWdodHMpO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2LCBjb2xJZHgpID0+IHtcbiAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKGZuTmFtZXNbY29sSWR4XSkpIHtcbiAgICAgICAgZm9yIChsZXQgbWkgPSAwOyBtaSA8IHYubGVuZ3RoOyArK21pKSB7XG4gICAgICAgICAgaWYgKGlzTmlsKHZbbWldKSkgY29udGludWU7XG4gICAgICAgICAgdmFsdWVzW2NvbElkeF1bbWldID0gbmV3IEJpdEFycmF5KHZhbHVlc1tjb2xJZHhdW21pXS5fZGF0YSwgdmFsdWVzW2NvbElkeF1bbWldLl9sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZGlzdGFuY2VGbnMgPSBuZXcgQXJyYXkoZm5OYW1lcy5sZW5ndGgpXG4gICAgICAuZmlsbChudWxsKVxuICAgICAgLm1hcCgoXywgZGkpID0+IG5ldyBNZWFzdXJlKGZuTmFtZXNbZGldKS5nZXRNZWFzdXJlKG9wdHNbZGldKSk7XG4gICAgY29uc3QgcmV0VmFsID0gbmV3IEZsb2F0MzJBcnJheShjaHVuY2tTaXplKTtcbiAgICB3aGlsZSAoY250IDwgY2h1bmNrU2l6ZSkge1xuICAgICAgY29uc3QgZGlzdGFuY2VWYWx1ZXMgPSBkaXN0YW5jZUZucy5tYXAoKGZuLCBpZHgpID0+ICFpc05pbCh2YWx1ZXNbaWR4XVtpXSkgJiYgIWlzTmlsKHZhbHVlc1tpZHhdW2pdKSA/XG4gICAgICAgIGZuKHZhbHVlc1tpZHhdW2ldLCB2YWx1ZXNbaWR4XVtqXSkgOiAxKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gZGlzdGFuY2VWYWx1ZXMubGVuZ3RoID09PSAxID8gZGlzdGFuY2VWYWx1ZXNbMF0gOiBhZ2dyZWdhdGUoZGlzdGFuY2VWYWx1ZXMpO1xuICAgICAgcmV0VmFsW2NudF0gPSB2YWx1ZTtcbiAgICAgIGlmICh2YWx1ZSA8IGxtaW4pXG4gICAgICAgIGxtaW4gPSB2YWx1ZTtcbiAgICAgIGlmICh2YWx1ZSA+IGxtYXgpXG4gICAgICAgIGxtYXggPSB2YWx1ZTtcbiAgICAgIGNudCsrO1xuICAgICAgaisrO1xuICAgICAgaWYgKGogPT09IHZhbHVlc1swXS5sZW5ndGgpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBqID0gaSArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIGRhdGEuZGlzdGFuY2VNYXRyaXhEYXRhID0gcmV0VmFsO1xuICAgIGRhdGEubWluID0gbG1pbjtcbiAgICBkYXRhLm1heCA9IGxtYXg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBkYXRhLmVycm9yID0gZTtcbiAgfVxuICBwb3N0TWVzc2FnZShkYXRhKTtcbn07XG4iXX0=","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n__webpack_require__.x = () => {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [242,589], () => (__webpack_require__(2793)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and sibling chunks for the entrypoint\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t793: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunkbio\"] = self[\"webpackChunkbio\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["deferred","next","isNil","x","onmessage","event","values","fnNames","startRow","startCol","chunckSize","opts","weights","aggregationMethod","data","i","j","cnt","lmin","lmax","Number","MIN_VALUE","aggregate","MANHATTAN","vs","reduce","acc","val","idx","sum","Math","sqrt","getAggregationFunction","forEach","v","colIdx","mi","length","_data","_length","distanceFns","Array","fill","map","_","di","getMeasure","retVal","Float32Array","distanceValues","fn","value","distanceMatrixData","min","max","e","error","postMessage","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","__webpack_exports__","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","Object","keys","every","key","splice","r","d","definition","o","defineProperty","enumerable","get","f","chunkId","Promise","all","promises","u","g","globalThis","this","Function","window","obj","prop","prototype","hasOwnProperty","call","scriptUrl","importScripts","location","document","currentScript","src","scripts","getElementsByTagName","test","Error","replace","p","installedChunks","chunkLoadingGlobal","self","parentChunkLoadingFunction","push","bind","moreModules","runtime","pop","then"],"sourceRoot":""}
|
package/dist/950.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var bio;(()=>{"use strict";var e,r,t={9950:(e,r,t)=>{var n=t(6066);const o=e=>null==e;function a(e,r,t,n){if(t>e[e.length-1])return;const o=e.findIndex((e=>t<e));e.pop(),e.splice(o,0,t),r.pop(),r.splice(o,0,n)}var l=t(2780),s=t(8774);onmessage=async e=>{const{values:r,startIdx:t,endIdx:i,fnNames:c,opts:p,nNeighbours:f,weights:h,aggregationMethod:u}=e.data;try{const e=new Array(r[0].length).fill(null).map((()=>new Array(f).fill(-1))),g=new Array(r[0].length).fill(null).map((()=>new Array(f).fill(999999))),v=function(e,r){return e===n.G.MANHATTAN?e=>e.reduce(((e,t,n)=>e+t*r[n]),0):e=>{const t=e.reduce(((e,t,n)=>e+(t*r[n])**2),0);return Math.sqrt(t)}}(u,h),d=i-t;r.forEach(((e,t)=>{if((0,l.lW)(c[t]))for(let n=0;n<e.length;++n)o(e[n])||(r[t][n]=new s.A(r[t][n]._data,r[t][n]._length))}));let b=0;const w=new Array(c.length).fill(null).map(((e,r)=>new l.t$(c[r]).getMeasure(p[r]))),m=r[0].length-2-Math.floor(Math.sqrt(-8*t+4*r[0].length*(r[0].length-1)-7)/2-.5),y=t-r[0].length*m+Math.floor((m+1)*(m+2)/2);let x=m,A=y;for(;b<d;){const t=w.map(((e,t)=>o(r[t][x])||o(r[t][A])?1:e(r[t][x],r[t][A]))),n=1===t.length?t[0]:v(t);a(g[x],e[x],n,A),a(g[A],e[A],n,x),b++,A++,A===r[0].length&&(x++,A=x+1)}postMessage({knnDistances:g,knnIndexes:e})}catch(e){postMessage({error:e})}}}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.m=t,o.x=()=>{var e=o.O(void 0,[242,589],(()=>o(9950)));return o.O(e)},e=[],o.O=(r,t,n,a)=>{if(!t){var l=1/0;for(p=0;p<e.length;p++){for(var[t,n,a]=e[p],s=!0,i=0;i<t.length;i++)(!1&a||l>=a)&&Object.keys(o.O).every((e=>o.O[e](t[i])))?t.splice(i--,1):(s=!1,a<l&&(l=a));if(s){e.splice(p--,1);var c=n();void 0!==c&&(r=c)}}return r}a=a||0;for(var p=e.length;p>0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[t,n,a]},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>e+".js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var r=o.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{var e={950:1};o.f.i=(r,t)=>{e[r]||importScripts(o.p+o.u(r))};var r=self.webpackChunkbio=self.webpackChunkbio||[],t=r.push.bind(r);r.push=r=>{var[n,a,l]=r;for(var s in a)o.o(a,s)&&(o.m[s]=a[s]);for(l&&l(o);n.length;)e[n.pop()]=1;t(r)}})(),r=o.x,o.x=()=>Promise.all([o.e(242),o.e(589)]).then(r);var a=o.x();bio=a})();
|
|
2
|
+
//# sourceMappingURL=950.js.map
|
package/dist/950.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"950.js","mappings":"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","sources":["webpack://bio/webpack/runtime/chunk loaded","webpack://bio/webpack/runtime/startup chunk dependencies","webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/utils.js","webpack://bio/./node_modules/@datagrok-libraries/ml/src/distance-matrix/knn-worker.js","webpack://bio/webpack/bootstrap","webpack://bio/webpack/runtime/define property getters","webpack://bio/webpack/runtime/ensure chunk","webpack://bio/webpack/runtime/get javascript chunk filename","webpack://bio/webpack/runtime/global","webpack://bio/webpack/runtime/hasOwnProperty shorthand","webpack://bio/webpack/runtime/publicPath","webpack://bio/webpack/runtime/importScripts chunk loading","webpack://bio/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn Promise.all([\n\t\t__webpack_require__.e(242),\n\t\t__webpack_require__.e(589)\n\t]).then(next);\n};","import { DistanceAggregationMethods } from './types';\nexport const isNil = (x) => x === null || x === undefined;\nexport function insertSmaller(distancesAr, indexes, num, index) {\n if (num > distancesAr[distancesAr.length - 1])\n return;\n const newPosition = distancesAr.findIndex((v) => num < v);\n distancesAr.pop();\n distancesAr.splice(newPosition, 0, num);\n indexes.pop();\n indexes.splice(newPosition, 0, index);\n}\nexport function insertLarger(distancesAr, indexes, num, index) {\n if (num < distancesAr[distancesAr.length - 1])\n return;\n const newPosition = distancesAr.findIndex((v) => num > v);\n distancesAr.pop();\n distancesAr.splice(newPosition, 0, num);\n indexes.pop();\n indexes.splice(newPosition, 0, index);\n}\nexport function getAggregationFunction(aggregationMethod, weights) {\n switch (aggregationMethod) {\n case DistanceAggregationMethods.MANHATTAN:\n return (vs) => vs.reduce((acc, val, idx) => acc + val * weights[idx], 0);\n default:\n return (vs) => {\n // euclidean\n const sum = vs.reduce((acc, val, idx) => acc + (val * weights[idx]) ** 2, 0);\n return Math.sqrt(sum);\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLDBCQUEwQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRTlFLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBRS9ELE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBcUIsRUFBRSxPQUFpQixFQUFFLEdBQVcsRUFBRSxLQUFhO0lBQ2hHLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPO0lBRVQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQixXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQXFCLEVBQUUsT0FBaUIsRUFBRSxHQUFXLEVBQUUsS0FBYTtJQUMvRixJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7UUFDekMsT0FBTztJQUVULE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxpQkFBNEMsRUFBRSxPQUFpQjtJQUUvRCxRQUFRLGlCQUFpQixFQUFFLENBQUM7UUFDMUIsS0FBSywwQkFBMEIsQ0FBQyxTQUFTO1lBQ3ZDLE9BQU8sQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckY7WUFDRSxPQUFPLENBQUMsRUFBWSxFQUFFLEVBQUU7Z0JBQ3RCLFlBQVk7Z0JBQ1osTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rpc3RhbmNlQWdncmVnYXRpb25NZXRob2QsIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzTmlsID0gKHg6IGFueSkgPT4geCA9PT0gbnVsbCB8fCB4ID09PSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRTbWFsbGVyKGRpc3RhbmNlc0FyOiBudW1iZXJbXSwgaW5kZXhlczogbnVtYmVyW10sIG51bTogbnVtYmVyLCBpbmRleDogbnVtYmVyKSB7XG4gIGlmIChudW0gPiBkaXN0YW5jZXNBcltkaXN0YW5jZXNBci5sZW5ndGgtMV0pXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlzdGFuY2VzQXIuZmluZEluZGV4KCh2KSA9PiBudW0gPCB2KTtcbiAgZGlzdGFuY2VzQXIucG9wKCk7XG4gIGRpc3RhbmNlc0FyLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgbnVtKTtcbiAgaW5kZXhlcy5wb3AoKTtcbiAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExhcmdlcihkaXN0YW5jZXNBcjogbnVtYmVyW10sIGluZGV4ZXM6IG51bWJlcltdLCBudW06IG51bWJlciwgaW5kZXg6IG51bWJlcikge1xuICBpZiAobnVtIDwgZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoLTFdKVxuICAgIHJldHVybjtcblxuICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtID4gdik7XG4gIGRpc3RhbmNlc0FyLnBvcCgpO1xuICBkaXN0YW5jZXNBci5zcGxpY2UobmV3UG9zaXRpb24sIDAsIG51bSk7XG4gIGluZGV4ZXMucG9wKCk7XG4gIGluZGV4ZXMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpbmRleCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKFxuICBhZ2dyZWdhdGlvbk1ldGhvZDogRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZCwgd2VpZ2h0czogbnVtYmVyW11cbik6ICh2YWx1ZXM6IG51bWJlcltdKSA9PiBudW1iZXIge1xuICBzd2l0Y2ggKGFnZ3JlZ2F0aW9uTWV0aG9kKSB7XG4gICAgY2FzZSBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcy5NQU5IQVRUQU46XG4gICAgICByZXR1cm4gKHZzOiBudW1iZXJbXSkgPT4gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyB2YWwgKiB3ZWlnaHRzW2lkeF0sIDApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gKHZzOiBudW1iZXJbXSkgPT4ge1xuICAgICAgICAvLyBldWNsaWRlYW5cbiAgICAgICAgY29uc3Qgc3VtID0gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyAodmFsICogd2VpZ2h0c1tpZHhdKSAqKiAyLCAwKTtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xuICAgICAgfTtcbiAgfVxufVxuIl19","import { getAggregationFunction, insertSmaller, isNil } from './utils';\nimport { Measure, isBitArrayMetric } from '../typed-metrics';\nimport BitArray from '@datagrok-libraries/utils/src/bit-array';\nonmessage = async (event) => {\n const { values, startIdx, endIdx, fnNames, opts, nNeighbours, weights, aggregationMethod } = event.data;\n try {\n const knnIndexes = new Array(values[0].length).fill(null).map(() => new Array(nNeighbours).fill(-1));\n const knnDistances = new Array(values[0].length).fill(null).map(() => new Array(nNeighbours).fill(999999));\n const aggregate = getAggregationFunction(aggregationMethod, weights);\n const chunkSize = endIdx - startIdx;\n values.forEach((v, colIdx) => {\n if (isBitArrayMetric(fnNames[colIdx])) {\n for (let i = 0; i < v.length; ++i) {\n if (isNil(v[i]))\n continue;\n values[colIdx][i] = new BitArray(values[colIdx][i]._data, values[colIdx][i]._length);\n }\n }\n });\n let cnt = 0;\n const distanceFns = new Array(fnNames.length).fill(null).map((_, i) => new Measure(fnNames[i]).getMeasure(opts[i]));\n const startRow = values[0].length - 2 - Math.floor(Math.sqrt(-8 * startIdx + 4 * values[0].length * (values[0].length - 1) - 7) / 2 - 0.5);\n const startCol = startIdx - values[0].length * startRow + Math.floor((startRow + 1) * (startRow + 2) / 2);\n let mi = startRow;\n let mj = startCol;\n while (cnt < chunkSize) {\n //const value = seq1List[mi] && seq1List[mj] ? hamming(seq1List[mi], seq1List[mj]) : 0;\n const distanceValues = distanceFns.map((fn, idx) => !isNil(values[idx][mi]) && !isNil(values[idx][mj]) ?\n fn(values[idx][mi], values[idx][mj]) : 1);\n // const value = !isNil(values[mi]) && !isNil(values[mj]) ?\n // distanceFn(values[mi], values[mj]) : 1;\n const value = distanceValues.length === 1 ? distanceValues[0] : aggregate(distanceValues);\n insertSmaller(knnDistances[mi], knnIndexes[mi], value, mj);\n insertSmaller(knnDistances[mj], knnIndexes[mj], value, mi);\n cnt++;\n mj++;\n if (mj === values[0].length) {\n mi++;\n mj = mi + 1;\n }\n }\n postMessage({ knnDistances, knnIndexes });\n }\n catch (e) {\n postMessage({ error: e });\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25uLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImtubi13b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDckUsT0FBTyxFQUFlLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sUUFBUSxNQUFNLHlDQUF5QyxDQUFDO0FBRy9ELFNBQVMsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDMUIsTUFBTSxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBQyxHQUVpQixLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3BILElBQUksQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFTLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csTUFBTSxZQUFZLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQVMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbkgsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckUsTUFBTSxTQUFTLEdBQUcsTUFBTSxHQUFH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QUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNELGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUUzRCxHQUFHLEVBQUUsQ0FBQztZQUNOLEVBQUUsRUFBRSxDQUFDO1lBQ0wsSUFBSSxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixFQUFFLEVBQUUsQ0FBQztnQkFDTCxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsV0FBVyxDQUFDLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxXQUFXLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uLCBpbnNlcnRTbWFsbGVyLCBpc05pbH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge0tub3duTWV0cmljcywgTWVhc3VyZSwgaXNCaXRBcnJheU1ldHJpY30gZnJvbSAnLi4vdHlwZWQtbWV0cmljcyc7XG5pbXBvcnQgQml0QXJyYXkgZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvYml0LWFycmF5JztcbmltcG9ydCB7RGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZH0gZnJvbSAnLi90eXBlcyc7XG5cbm9ubWVzc2FnZSA9IGFzeW5jIChldmVudCkgPT4ge1xuICBjb25zdCB7dmFsdWVzLCBzdGFydElkeCwgZW5kSWR4LCBmbk5hbWVzLCBvcHRzLCBuTmVpZ2hib3Vycywgd2VpZ2h0cywgYWdncmVnYXRpb25NZXRob2R9OlxuICAgIHt2YWx1ZXM6IEFycmF5PGFueVtdPiwgc3RhcnRJZHg6IG51bWJlciwgZW5kSWR4OiBudW1iZXIsIGZuTmFtZXM6IEtub3duTWV0cmljc1tdLFxuICAgICAgb3B0czogYW55W10sIG5OZWlnaGJvdXJzOiBudW1iZXIsIHdlaWdodHM6IG51bWJlcltdLCBhZ2dyZWdhdGlvbk1ldGhvZDogRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZH0gPSBldmVudC5kYXRhO1xuICB0cnkge1xuICAgIGNvbnN0IGtubkluZGV4ZXMgPSBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IEFycmF5PG51bWJlcj4obk5laWdoYm91cnMpLmZpbGwoLTEpKTtcbiAgICBjb25zdCBrbm5EaXN0YW5jZXMgPSBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IEFycmF5PG51bWJlcj4obk5laWdoYm91cnMpLmZpbGwoOTk5OTk5KSk7XG4gICAgY29uc3QgYWdncmVnYXRlID0gZ2V0QWdncmVnYXRpb25GdW5jdGlvbihhZ2dyZWdhdGlvbk1ldGhvZCwgd2VpZ2h0cyk7XG4gICAgY29uc3QgY2h1bmtTaXplID0gZW5kSWR4IC0gc3RhcnRJZHg7XG4gICAgdmFsdWVzLmZvckVhY2goKHYsIGNvbElkeCkgPT4ge1xuICAgICAgaWYgKGlzQml0QXJyYXlNZXRyaWMoZm5OYW1lc1tjb2xJZHhdKSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBpZiAoaXNOaWwodltpXSkpIGNvbnRpbnVlO1xuICAgICAgICAgIHZhbHVlc1tjb2xJZHhdW2ldID0gbmV3IEJpdEFycmF5KHZhbHVlc1tjb2xJZHhdW2ldLl9kYXRhLCB2YWx1ZXNbY29sSWR4XVtpXS5fbGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBjbnQgPSAwO1xuICAgIGNvbnN0IGRpc3RhbmNlRm5zID0gbmV3IEFycmF5KGZuTmFtZXMubGVuZ3RoKS5maWxsKG51bGwpLm1hcCgoXywgaSkgPT4gbmV3IE1lYXN1cmUoZm5OYW1lc1tpXSkuZ2V0TWVhc3VyZShvcHRzW2ldKSk7XG4gICAgY29uc3Qgc3RhcnRSb3cgPSB2YWx1ZXNbMF0ubGVuZ3RoIC0gMiAtIE1hdGguZmxvb3IoXG4gICAgICBNYXRoLnNxcnQoLTggKiBzdGFydElkeCArIDQgKiB2YWx1ZXNbMF0ubGVuZ3RoICogKHZhbHVlc1swXS5sZW5ndGggLSAxKSAtIDcpIC8gMiAtIDAuNSk7XG4gICAgY29uc3Qgc3RhcnRDb2wgPSBzdGFydElkeCAtIHZhbHVlc1swXS5sZW5ndGggKiBzdGFydFJvdyArIE1hdGguZmxvb3IoKHN0YXJ0Um93ICsgMSkgKiAoc3RhcnRSb3cgKyAyKSAvIDIpO1xuICAgIGxldCBtaSA9IHN0YXJ0Um93O1xuICAgIGxldCBtaiA9IHN0YXJ0Q29sO1xuICAgIHdoaWxlIChjbnQgPCBjaHVua1NpemUpIHtcbiAgICAgIC8vY29uc3QgdmFsdWUgPSBzZXExTGlzdFttaV0gJiYgc2VxMUxpc3RbbWpdID8gaGFtbWluZyhzZXExTGlzdFttaV0sIHNlcTFMaXN0W21qXSkgOiAwO1xuICAgICAgY29uc3QgZGlzdGFuY2VWYWx1ZXMgPSBkaXN0YW5jZUZucy5tYXAoKGZuLCBpZHgpID0+ICFpc05pbCh2YWx1ZXNbaWR4XVttaV0pICYmICFpc05pbCh2YWx1ZXNbaWR4XVttal0pID9cbiAgICAgICAgZm4odmFsdWVzW2lkeF1bbWldLCB2YWx1ZXNbaWR4XVttal0pIDogMSk7XG4gICAgICAvLyBjb25zdCB2YWx1ZSA9ICFpc05pbCh2YWx1ZXNbbWldKSAmJiAhaXNOaWwodmFsdWVzW21qXSkgP1xuICAgICAgLy8gICBkaXN0YW5jZUZuKHZhbHVlc1ttaV0sIHZhbHVlc1ttal0pIDogMTtcbiAgICAgIGNvbnN0IHZhbHVlID0gZGlzdGFuY2VWYWx1ZXMubGVuZ3RoID09PSAxID8gZGlzdGFuY2VWYWx1ZXNbMF0gOiBhZ2dyZWdhdGUoZGlzdGFuY2VWYWx1ZXMpO1xuICAgICAgaW5zZXJ0U21hbGxlcihrbm5EaXN0YW5jZXNbbWldLCBrbm5JbmRleGVzW21pXSwgdmFsdWUsIG1qKTtcbiAgICAgIGluc2VydFNtYWxsZXIoa25uRGlzdGFuY2VzW21qXSwga25uSW5kZXhlc1ttal0sIHZhbHVlLCBtaSk7XG5cbiAgICAgIGNudCsrO1xuICAgICAgbWorKztcbiAgICAgIGlmIChtaiA9PT0gdmFsdWVzWzBdLmxlbmd0aCkge1xuICAgICAgICBtaSsrO1xuICAgICAgICBtaiA9IG1pICsgMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwb3N0TWVzc2FnZSh7a25uRGlzdGFuY2VzLCBrbm5JbmRleGVzfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBwb3N0TWVzc2FnZSh7ZXJyb3I6IGV9KTtcbiAgfVxufTtcbiJdfQ==","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n__webpack_require__.x = () => {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [242,589], () => (__webpack_require__(9950)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and sibling chunks for the entrypoint\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t950: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunkbio\"] = self[\"webpackChunkbio\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["deferred","next","isNil","x","insertSmaller","distancesAr","indexes","num","index","length","newPosition","findIndex","v","pop","splice","onmessage","async","event","values","startIdx","endIdx","fnNames","opts","nNeighbours","weights","aggregationMethod","data","knnIndexes","Array","fill","map","knnDistances","aggregate","MANHATTAN","vs","reduce","acc","val","idx","sum","Math","sqrt","getAggregationFunction","chunkSize","forEach","colIdx","i","_data","_length","cnt","distanceFns","_","getMeasure","startRow","floor","startCol","mi","mj","distanceValues","fn","value","postMessage","e","error","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","__webpack_exports__","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","r","d","definition","o","defineProperty","enumerable","get","f","chunkId","Promise","all","promises","u","g","globalThis","this","Function","window","obj","prop","prototype","hasOwnProperty","call","scriptUrl","importScripts","location","document","currentScript","src","scripts","getElementsByTagName","test","Error","replace","p","installedChunks","chunkLoadingGlobal","self","parentChunkLoadingFunction","push","bind","moreModules","runtime","then"],"sourceRoot":""}
|