@datagrok/eda 1.4.12 → 1.5.0
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 +0 -1
- package/CHANGELOG.md +10 -0
- package/CLAUDE.md +185 -0
- package/css/pmpo.css +9 -0
- package/dist/111.js +1 -1
- package/dist/111.js.map +1 -1
- package/dist/128.js +1 -1
- package/dist/128.js.map +1 -1
- package/dist/153.js +1 -1
- package/dist/153.js.map +1 -1
- package/dist/23.js +1 -1
- package/dist/23.js.map +1 -1
- package/dist/234.js +1 -1
- package/dist/234.js.map +1 -1
- package/dist/242.js +1 -1
- package/dist/242.js.map +1 -1
- package/dist/260.js +1 -1
- package/dist/260.js.map +1 -1
- package/dist/33.js +1 -1
- package/dist/33.js.map +1 -1
- package/dist/348.js +1 -1
- package/dist/348.js.map +1 -1
- package/dist/377.js +1 -1
- package/dist/377.js.map +1 -1
- package/dist/397.js +2 -0
- package/dist/397.js.map +1 -0
- package/dist/412.js +1 -1
- package/dist/412.js.map +1 -1
- package/dist/415.js +1 -1
- package/dist/415.js.map +1 -1
- package/dist/501.js +1 -1
- package/dist/501.js.map +1 -1
- package/dist/531.js +1 -1
- package/dist/531.js.map +1 -1
- package/dist/583.js +1 -1
- package/dist/583.js.map +1 -1
- package/dist/589.js +1 -1
- package/dist/589.js.map +1 -1
- package/dist/603.js +1 -1
- package/dist/603.js.map +1 -1
- package/dist/656.js +1 -1
- package/dist/656.js.map +1 -1
- package/dist/682.js +1 -1
- package/dist/682.js.map +1 -1
- package/dist/705.js +1 -1
- package/dist/705.js.map +1 -1
- package/dist/727.js +1 -1
- package/dist/727.js.map +1 -1
- package/dist/731.js +1 -1
- package/dist/731.js.map +1 -1
- package/dist/738.js +1 -1
- package/dist/738.js.map +1 -1
- package/dist/763.js +1 -1
- package/dist/763.js.map +1 -1
- package/dist/778.js +1 -1
- package/dist/778.js.map +1 -1
- package/dist/783.js +1 -1
- package/dist/783.js.map +1 -1
- package/dist/793.js +1 -1
- package/dist/793.js.map +1 -1
- package/dist/810.js +1 -1
- package/dist/810.js.map +1 -1
- package/dist/860.js +1 -1
- package/dist/860.js.map +1 -1
- package/dist/907.js +1 -1
- package/dist/907.js.map +1 -1
- package/dist/950.js +1 -1
- package/dist/950.js.map +1 -1
- package/dist/980.js +1 -1
- package/dist/980.js.map +1 -1
- package/dist/990.js +1 -1
- package/dist/990.js.map +1 -1
- package/dist/package-test.js +1 -1
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/eslintrc.json +0 -1
- package/files/drugs-props-train-scores.csv +664 -0
- package/package.json +11 -7
- package/src/package-api.ts +7 -3
- package/src/package-test.ts +4 -1
- package/src/package.g.ts +21 -9
- package/src/package.ts +33 -23
- package/src/pareto-optimization/pareto-computations.ts +6 -0
- package/src/pareto-optimization/pareto-optimizer.ts +1 -1
- package/src/pls/pls-constants.ts +3 -1
- package/src/pls/pls-tools.ts +73 -69
- package/src/probabilistic-scoring/data-generator.ts +202 -0
- package/src/probabilistic-scoring/nelder-mead.ts +204 -0
- package/src/probabilistic-scoring/pmpo-defs.ts +141 -3
- package/src/probabilistic-scoring/pmpo-utils.ts +240 -126
- package/src/probabilistic-scoring/prob-scoring.ts +862 -135
- package/src/probabilistic-scoring/stat-tools.ts +141 -6
- package/src/tests/anova-tests.ts +1 -1
- package/src/tests/classifiers-tests.ts +1 -1
- package/src/tests/dim-reduction-tests.ts +1 -1
- package/src/tests/linear-methods-tests.ts +1 -1
- package/src/tests/mis-vals-imputation-tests.ts +1 -1
- package/src/tests/pareto-tests.ts +251 -0
- package/src/tests/pmpo-tests.ts +797 -0
- package/test-console-output-1.log +303 -239
- package/test-record-1.mp4 +0 -0
- package/files/mpo-done.ipynb +0 -2123
package/dist/package-test.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var eda_test;(()=>{var t={944:(t,n)=>{"use strict";n.Vb=void 0,n.Vb=function(t,n,e){var r=function(t,n,e){if(0===t.length||0===n.length)return 0;if(e&&!e.caseSensitive&&(t=t.toUpperCase(),n=n.toUpperCase()),t===n)return 1;for(var r=0,o=t.length,i=n.length,s=Math.floor(Math.max(o,i)/2)-1,a=new Array(o),u=new Array(i),c=0;c<o;c++)for(var l=Math.max(0,c-s);l<=Math.min(i,c+s+1);l++)if(!a[c]&&!u[l]&&t[c]===n[l]){++r,a[c]=u[l]=!0;break}if(0===r)return 0;var f=0,h=0;for(c=0;c<o;c++)if(a[c]){for(;!u[h];)h++;t.charAt(c)!==n.charAt(h++)&&f++}return(r/o+r/i+(r-(f/=2))/r)/3}(t,n,e),o=0;if(r>.7){for(var i=Math.min(t.length,n.length),s=0;t[s]===n[s]&&s<4&&s<i;)++o,s++;r+=.1*o*(1-r)}return r}},5540:(t,n,e)=>{"use strict";t=e.hmd(t);var r,o=(r="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(t={}){var n,e,o=void 0!==t?t:{};o.ready=new Promise(function(t,r){n=t,e=r});var i,s=Object.assign({},o),a="object"==typeof window,u="function"==typeof importScripts,c=("object"==typeof process&&"object"==typeof process.versions&&process.versions.node,"");(a||u)&&(u?c=self.location.href:"undefined"!=typeof document&&document.currentScript&&(c=document.currentScript.src),r&&(c=r),c=0!==c.indexOf("blob:")?c.substr(0,c.replace(/[?#].*/,"").lastIndexOf("/")+1):"",u&&(i=t=>{var n=new XMLHttpRequest;return n.open("GET",t,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)})),o.print||console.log.bind(console);var l,f,h=o.printErr||console.warn.bind(console);Object.assign(o,s),s=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(l=o.wasmBinary),o.noExitRuntime,"object"!=typeof WebAssembly&&T("no native wasm support detected");var m,d,p,g=!1;function y(){var t=f.buffer;o.HEAP8=m=new Int8Array(t),o.HEAP16=new Int16Array(t),o.HEAP32=new Int32Array(t),o.HEAPU8=d=new Uint8Array(t),o.HEAPU16=new Uint16Array(t),o.HEAPU32=p=new Uint32Array(t),o.HEAPF32=new Float32Array(t),o.HEAPF64=new Float64Array(t)}var v=[],w=[],E=[];function A(t){v.unshift(t)}function C(t){E.unshift(t)}var _,N,x=0,b=null,S=null;function T(t){o.onAbort&&o.onAbort(t),h(t="Aborted("+t+")"),g=!0,t+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(t);throw e(n),n}function I(t){return t.startsWith("data:application/octet-stream;base64,")}function M(t){try{if(t==_&&l)return new Uint8Array(l);if(i)return i(t);throw"both async and sync fetching of the wasm failed"}catch(t){T(t)}}function O(t,n,e){return function(t){return l||!a&&!u||"function"!=typeof fetch?Promise.resolve().then(function(){return M(t)}):fetch(t,{credentials:"same-origin"}).then(function(n){if(!n.ok)throw"failed to load wasm binary file at '"+t+"'";return n.arrayBuffer()}).catch(function(){return M(t)})}(t).then(function(t){return WebAssembly.instantiate(t,n)}).then(function(t){return t}).then(e,function(t){h("failed to asynchronously prepare wasm: "+t),T(t)})}function R(t){for(;t.length>0;)t.shift()(o)}function L(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(t){p[this.ptr+4>>2]=t},this.get_type=function(){return p[this.ptr+4>>2]},this.set_destructor=function(t){p[this.ptr+8>>2]=t},this.get_destructor=function(){return p[this.ptr+8>>2]},this.set_caught=function(t){t=t?1:0,m[this.ptr+12|0]=t},this.get_caught=function(){return 0!=m[this.ptr+12|0]},this.set_rethrown=function(t){t=t?1:0,m[this.ptr+13|0]=t},this.get_rethrown=function(){return 0!=m[this.ptr+13|0]},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n)},this.set_adjusted_ptr=function(t){p[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return p[this.ptr+16>>2]},this.get_exception_ptr=function(){if(q(this.get_type()))return p[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}function P(t){var n=f.buffer;try{return f.grow(t-n.byteLength+65535>>>16),y(),1}catch(t){}}function D(t){return o["_"+t]}I(_="wasmDbscan.wasm")||(N=_,_=o.locateFile?o.locateFile(N,c):c+N);var F="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function U(t,n,e,r,o){var i={string:t=>{var n=0;return null!=t&&0!==t&&(n=function(t){var n=function(t){for(var n=0,e=0;e<t.length;++e){var r=t.charCodeAt(e);r<=127?n++:r<=2047?n+=2:r>=55296&&r<=57343?(n+=4,++e):n+=3}return n}(t)+1,e=V(n);return function(t,n,e){!function(t,n,e,r){if(!(r>0))return 0;for(var o=e+r-1,i=0;i<t.length;++i){var s=t.charCodeAt(i);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++i)),s<=127){if(e>=o)break;n[e++]=s}else if(s<=2047){if(e+1>=o)break;n[e++]=192|s>>6,n[e++]=128|63&s}else if(s<=65535){if(e+2>=o)break;n[e++]=224|s>>12,n[e++]=128|s>>6&63,n[e++]=128|63&s}else{if(e+3>=o)break;n[e++]=240|s>>18,n[e++]=128|s>>12&63,n[e++]=128|s>>6&63,n[e++]=128|63&s}}n[e]=0}(t,d,n,e)}(t,e,n),e}(t)),n},array:t=>{var n,e,r=V(t.length);return n=t,e=r,m.set(n,e),r}},s=D(t),a=[],u=0;if(r)for(var c=0;c<r.length;c++){var l=i[e[c]];l?(0===u&&(u=H()),a[c]=l(r[c])):a[c]=r[c]}var f=s.apply(null,a);return function(t){return 0!==u&&G(u),function(t){return"string"===n?(e=t)?function(t,n,e){for(var r=n+e,o=n;t[o]&&!(o>=r);)++o;if(o-n>16&&t.buffer&&F)return F.decode(t.subarray(n,o));for(var i="";n<o;){var s=t[n++];if(128&s){var a=63&t[n++];if(192!=(224&s)){var u=63&t[n++];if((s=224==(240&s)?(15&s)<<12|a<<6|u:(7&s)<<18|a<<12|u<<6|63&t[n++])<65536)i+=String.fromCharCode(s);else{var c=s-65536;i+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else i+=String.fromCharCode((31&s)<<6|a)}else i+=String.fromCharCode(s)}return i}(d,e,r):"":"boolean"===n?Boolean(t):t;var e,r}(t)}(f)}var B,k={__cxa_throw:function(t,n,e){throw new L(t).init(n,e),t},abort:function(){T("")},emscripten_memcpy_big:function(t,n,e){d.copyWithin(t,n,n+e)},emscripten_resize_heap:function(t){var n=d.length,e=2147483648;if((t>>>=0)>e)return!1;let r=(t,n)=>t+(n-t%n)%n;for(var o=1;o<=4;o*=2){var i=n*(1+.2/o);if(i=Math.min(i,t+100663296),P(Math.min(e,r(Math.max(t,i),65536))))return!0}return!1}},H=(function(){var t,n,r,i,s={env:k,wasi_snapshot_preview1:k};function a(t,n){var e,r=t.exports;return o.asm=r,f=o.asm.memory,y(),o.asm.__indirect_function_table,e=o.asm.__wasm_call_ctors,w.unshift(e),function(){if(x--,o.monitorRunDependencies&&o.monitorRunDependencies(x),0==x&&(null!==b&&(clearInterval(b),b=null),S)){var t=S;S=null,t()}}(),r}if(x++,o.monitorRunDependencies&&o.monitorRunDependencies(x),o.instantiateWasm)try{return o.instantiateWasm(s,a)}catch(t){h("Module.instantiateWasm callback failed with error: "+t),e(t)}(t=l,n=_,r=s,i=function(t){a(t.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||I(n)||"function"!=typeof fetch?O(n,r,i):fetch(n,{credentials:"same-origin"}).then(function(t){return WebAssembly.instantiateStreaming(t,r).then(i,function(t){return h("wasm streaming compile failed: "+t),h("falling back to ArrayBuffer instantiation"),O(n,r,i)})})).catch(e)}(),o._dbscan=function(){return(o._dbscan=o.asm.dbscan).apply(null,arguments)},o._malloc=function(){return(o._malloc=o.asm.malloc).apply(null,arguments)},o._free=function(){return(o._free=o.asm.free).apply(null,arguments)},function(){return(H=o.asm.stackSave).apply(null,arguments)}),G=function(){return(G=o.asm.stackRestore).apply(null,arguments)},V=function(){return(V=o.asm.stackAlloc).apply(null,arguments)},q=function(){return(q=o.asm.__cxa_is_pointer_type).apply(null,arguments)};function W(){function t(){B||(B=!0,o.calledRun=!0,g||(R(w),n(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)C(o.postRun.shift());R(E)}()))}x>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)A(o.preRun.shift());R(v)}(),x>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),t()},1)):t()))}if(o.ccall=U,o.cwrap=function(t,n,e,r){var o=!e||e.every(t=>"number"===t||"boolean"===t);return"string"!==n&&o&&!r?D(t):function(){return U(t,n,e,arguments)}},S=function t(){B||W(),B||(S=t)},o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return W(),t.ready});"object"==typeof exports?t.exports=o:"function"==typeof define&&e.amdO?define([],function(){return o}):"object"==typeof exports&&(exports.exportCppDbscanLib=o)},6572:function(t){var n;t.exports=(n=function(t,n){var e=Array.prototype.concat,r=Array.prototype.slice,o=Object.prototype.toString;function i(n,e){var r=n>e?n:e;return t.pow(10,17-~~(t.log(r>0?r:-r)*t.LOG10E))}var s=Array.isArray||function(t){return"[object Array]"===o.call(t)};function a(t){return"[object Function]"===o.call(t)}function u(t){return"number"==typeof t&&t-t===0}function c(){return new c._init(arguments)}function l(){return 0}function f(){return 1}function h(t,n){return t===n?1:0}c.fn=c.prototype,c._init=function(t){if(s(t[0]))if(s(t[0][0])){a(t[1])&&(t[0]=c.map(t[0],t[1]));for(var n=0;n<t[0].length;n++)this[n]=t[0][n];this.length=t[0].length}else this[0]=a(t[1])?c.map(t[0],t[1]):t[0],this.length=1;else if(u(t[0]))this[0]=c.seq.apply(null,t),this.length=1;else{if(t[0]instanceof c)return c(t[0].toArray());this[0]=[],this.length=1}return this},c._init.prototype=c.prototype,c._init.constructor=c,c.utils={calcRdx:i,isArray:s,isFunction:a,isNumber:u,toVector:function(t){return e.apply([],t)}},c._random_fn=t.random,c.setRandom=function(t){if("function"!=typeof t)throw new TypeError("fn is not a function");c._random_fn=t},c.extend=function(t){var n,e;if(1===arguments.length){for(e in t)c[e]=t[e];return this}for(n=1;n<arguments.length;n++)for(e in arguments[n])t[e]=arguments[n][e];return t},c.rows=function(t){return t.length||1},c.cols=function(t){return t[0].length||1},c.dimensions=function(t){return{rows:c.rows(t),cols:c.cols(t)}},c.row=function(t,n){return s(n)?n.map(function(n){return c.row(t,n)}):t[n]},c.rowa=function(t,n){return c.row(t,n)},c.col=function(t,n){if(s(n)){var e=c.arange(t.length).map(function(){return new Array(n.length)});return n.forEach(function(n,r){c.arange(t.length).forEach(function(o){e[o][r]=t[o][n]})}),e}for(var r=new Array(t.length),o=0;o<t.length;o++)r[o]=[t[o][n]];return r},c.cola=function(t,n){return c.col(t,n).map(function(t){return t[0]})},c.diag=function(t){for(var n=c.rows(t),e=new Array(n),r=0;r<n;r++)e[r]=[t[r][r]];return e},c.antidiag=function(t){for(var n=c.rows(t)-1,e=new Array(n),r=0;n>=0;n--,r++)e[r]=[t[r][n]];return e},c.transpose=function(t){var n,e,r,o,i,a=[];for(s(t[0])||(t=[t]),e=t.length,r=t[0].length,i=0;i<r;i++){for(n=new Array(e),o=0;o<e;o++)n[o]=t[o][i];a.push(n)}return 1===a.length?a[0]:a},c.map=function(t,n,e){var r,o,i,a,u;for(s(t[0])||(t=[t]),o=t.length,i=t[0].length,a=e?t:new Array(o),r=0;r<o;r++)for(a[r]||(a[r]=new Array(i)),u=0;u<i;u++)a[r][u]=n(t[r][u],r,u);return 1===a.length?a[0]:a},c.cumreduce=function(t,n,e){var r,o,i,a,u;for(s(t[0])||(t=[t]),o=t.length,i=t[0].length,a=e?t:new Array(o),r=0;r<o;r++)for(a[r]||(a[r]=new Array(i)),i>0&&(a[r][0]=t[r][0]),u=1;u<i;u++)a[r][u]=n(a[r][u-1],t[r][u]);return 1===a.length?a[0]:a},c.alter=function(t,n){return c.map(t,n,!0)},c.create=function(t,n,e){var r,o,i=new Array(t);for(a(n)&&(e=n,n=t),r=0;r<t;r++)for(i[r]=new Array(n),o=0;o<n;o++)i[r][o]=e(r,o);return i},c.zeros=function(t,n){return u(n)||(n=t),c.create(t,n,l)},c.ones=function(t,n){return u(n)||(n=t),c.create(t,n,f)},c.rand=function(t,n){return u(n)||(n=t),c.create(t,n,c._random_fn)},c.identity=function(t,n){return u(n)||(n=t),c.create(t,n,h)},c.symmetric=function(t){var n,e,r=t.length;if(t.length!==t[0].length)return!1;for(n=0;n<r;n++)for(e=0;e<r;e++)if(t[e][n]!==t[n][e])return!1;return!0},c.clear=function(t){return c.alter(t,l)},c.seq=function(t,n,e,r){a(r)||(r=!1);var o,s=[],u=i(t,n),c=(n*u-t*u)/((e-1)*u),l=t;for(o=0;l<=n&&o<e;l=(t*u+c*u*++o)/u)s.push(r?r(l,o):l);return s},c.arange=function(t,e,r){var o,i=[];if(r=r||1,e===n&&(e=t,t=0),t===e||0===r)return[];if(t<e&&r<0)return[];if(t>e&&r>0)return[];if(r>0)for(o=t;o<e;o+=r)i.push(o);else for(o=t;o>e;o+=r)i.push(o);return i},c.slice=function(){function t(t,e,r,o){var i,s=[],a=t.length;if(e===n&&r===n&&o===n)return c.copy(t);if(o=o||1,(e=(e=e||0)>=0?e:a+e)===(r=(r=r||t.length)>=0?r:a+r)||0===o)return[];if(e<r&&o<0)return[];if(e>r&&o>0)return[];if(o>0)for(i=e;i<r;i+=o)s.push(t[i]);else for(i=e;i>r;i+=o)s.push(t[i]);return s}return function(n,e){var r,o;return u((e=e||{}).row)?u(e.col)?n[e.row][e.col]:t(c.rowa(n,e.row),(r=e.col||{}).start,r.end,r.step):u(e.col)?t(c.cola(n,e.col),(o=e.row||{}).start,o.end,o.step):(o=e.row||{},r=e.col||{},t(n,o.start,o.end,o.step).map(function(n){return t(n,r.start,r.end,r.step)}))}}(),c.sliceAssign=function(e,r,o){var i,s;if(u(r.row)){if(u(r.col))return e[r.row][r.col]=o;r.col=r.col||{},r.col.start=r.col.start||0,r.col.end=r.col.end||e[0].length,r.col.step=r.col.step||1,i=c.arange(r.col.start,t.min(e.length,r.col.end),r.col.step);var a=r.row;return i.forEach(function(t,n){e[a][t]=o[n]}),e}if(u(r.col)){r.row=r.row||{},r.row.start=r.row.start||0,r.row.end=r.row.end||e.length,r.row.step=r.row.step||1,s=c.arange(r.row.start,t.min(e[0].length,r.row.end),r.row.step);var l=r.col;return s.forEach(function(t,n){e[t][l]=o[n]}),e}return o[0].length===n&&(o=[o]),r.row.start=r.row.start||0,r.row.end=r.row.end||e.length,r.row.step=r.row.step||1,r.col.start=r.col.start||0,r.col.end=r.col.end||e[0].length,r.col.step=r.col.step||1,s=c.arange(r.row.start,t.min(e.length,r.row.end),r.row.step),i=c.arange(r.col.start,t.min(e[0].length,r.col.end),r.col.step),s.forEach(function(t,n){i.forEach(function(r,i){e[t][r]=o[n][i]})}),e},c.diagonal=function(t){var n=c.zeros(t.length,t.length);return t.forEach(function(t,e){n[e][e]=t}),n},c.copy=function(t){return t.map(function(t){return u(t)?t:t.map(function(t){return t})})};var m=c.prototype;return m.length=0,m.push=Array.prototype.push,m.sort=Array.prototype.sort,m.splice=Array.prototype.splice,m.slice=Array.prototype.slice,m.toArray=function(){return this.length>1?r.call(this):r.call(this)[0]},m.map=function(t,n){return c(c.map(this,t,n))},m.cumreduce=function(t,n){return c(c.cumreduce(this,t,n))},m.alter=function(t){return c.alter(this,t),this},function(t){for(var n=0;n<t.length;n++)(function(t){m[t]=function(n){var e,r=this;return n?(setTimeout(function(){n.call(r,m[t].call(r))}),this):(e=c[t](this),s(e)?c(e):e)}})(t[n])}("transpose clear symmetric rows cols dimensions diag antidiag".split(" ")),function(t){for(var n=0;n<t.length;n++)(function(t){m[t]=function(n,e){var r=this;return e?(setTimeout(function(){e.call(r,m[t].call(r,n))}),this):c(c[t](this,n))}})(t[n])}("row col".split(" ")),function(t){for(var n=0;n<t.length;n++)(function(t){m[t]=function(){return c(c[t].apply(null,arguments))}})(t[n])}("create zeros ones rand identity".split(" ")),c}(Math),function(t,n){var e=t.utils.isFunction;function r(t,n){return t-n}function o(t,e,r){return n.max(e,n.min(t,r))}t.sum=function(t){for(var n=0,e=t.length;--e>=0;)n+=t[e];return n},t.sumsqrd=function(t){for(var n=0,e=t.length;--e>=0;)n+=t[e]*t[e];return n},t.sumsqerr=function(n){for(var e,r=t.mean(n),o=0,i=n.length;--i>=0;)o+=(e=n[i]-r)*e;return o},t.sumrow=function(t){for(var n=0,e=t.length;--e>=0;)n+=t[e];return n},t.product=function(t){for(var n=1,e=t.length;--e>=0;)n*=t[e];return n},t.min=function(t){for(var n=t[0],e=0;++e<t.length;)t[e]<n&&(n=t[e]);return n},t.max=function(t){for(var n=t[0],e=0;++e<t.length;)t[e]>n&&(n=t[e]);return n},t.unique=function(t){for(var n={},e=[],r=0;r<t.length;r++)n[t[r]]||(n[t[r]]=!0,e.push(t[r]));return e},t.mean=function(n){return t.sum(n)/n.length},t.meansqerr=function(n){return t.sumsqerr(n)/n.length},t.geomean=function(e){var r=e.map(n.log),o=t.mean(r);return n.exp(o)},t.median=function(t){var n=t.length,e=t.slice().sort(r);return 1&n?e[n/2|0]:(e[n/2-1]+e[n/2])/2},t.cumsum=function(n){return t.cumreduce(n,function(t,n){return t+n})},t.cumprod=function(n){return t.cumreduce(n,function(t,n){return t*n})},t.diff=function(t){var n,e=[],r=t.length;for(n=1;n<r;n++)e.push(t[n]-t[n-1]);return e},t.rank=function(t){var n,e=[],o={};for(n=0;n<t.length;n++)o[u=t[n]]?o[u]++:(o[u]=1,e.push(u));var i=e.sort(r),s={},a=1;for(n=0;n<i.length;n++){var u,c=o[u=i[n]],l=(a+(a+c-1))/2;s[u]=l,a+=c}return t.map(function(t){return s[t]})},t.mode=function(t){var n,e=t.length,o=t.slice().sort(r),i=1,s=0,a=0,u=[];for(n=0;n<e;n++)o[n]===o[n+1]?i++:(i>s?(u=[o[n]],s=i,a=0):i===s&&(u.push(o[n]),a++),i=1);return 0===a?u[0]:u},t.range=function(n){return t.max(n)-t.min(n)},t.variance=function(n,e){return t.sumsqerr(n)/(n.length-(e?1:0))},t.pooledvariance=function(n){return n.reduce(function(n,e){return n+t.sumsqerr(e)},0)/(n.reduce(function(t,n){return t+n.length},0)-n.length)},t.deviation=function(n){for(var e=t.mean(n),r=n.length,o=new Array(r),i=0;i<r;i++)o[i]=n[i]-e;return o},t.stdev=function(e,r){return n.sqrt(t.variance(e,r))},t.pooledstdev=function(e){return n.sqrt(t.pooledvariance(e))},t.meandev=function(e){for(var r=t.mean(e),o=[],i=e.length-1;i>=0;i--)o.push(n.abs(e[i]-r));return t.mean(o)},t.meddev=function(e){for(var r=t.median(e),o=[],i=e.length-1;i>=0;i--)o.push(n.abs(e[i]-r));return t.median(o)},t.coeffvar=function(n){return t.stdev(n)/t.mean(n)},t.quartiles=function(t){var e=t.length,o=t.slice().sort(r);return[o[n.round(e/4)-1],o[n.round(e/2)-1],o[n.round(3*e/4)-1]]},t.quantiles=function(t,e,i,s){var a,u,c,l,f,h=t.slice().sort(r),m=[e.length],d=t.length;for(void 0===i&&(i=3/8),void 0===s&&(s=3/8),a=0;a<e.length;a++)c=d*(u=e[a])+(i+u*(1-i-s)),l=n.floor(o(c,1,d-1)),f=o(c-l,0,1),m[a]=(1-f)*h[l-1]+f*h[l];return m},t.percentile=function(t,n,e){var o=t.slice().sort(r),i=n*(o.length+(e?1:-1))+(e?0:1),s=parseInt(i),a=i-s;return s+1<o.length?o[s-1]+a*(o[s]-o[s-1]):o[s-1]},t.percentileOfScore=function(t,n,e){var r,o,i=0,s=t.length,a=!1;for("strict"===e&&(a=!0),o=0;o<s;o++)r=t[o],(a&&r<n||!a&&r<=n)&&i++;return i/s},t.histogram=function(e,r){r=r||4;var o,i=t.min(e),s=(t.max(e)-i)/r,a=e.length,u=[];for(o=0;o<r;o++)u[o]=0;for(o=0;o<a;o++)u[n.min(n.floor((e[o]-i)/s),r-1)]+=1;return u},t.covariance=function(n,e){var r,o=t.mean(n),i=t.mean(e),s=n.length,a=new Array(s);for(r=0;r<s;r++)a[r]=(n[r]-o)*(e[r]-i);return t.sum(a)/(s-1)},t.corrcoeff=function(n,e){return t.covariance(n,e)/t.stdev(n,1)/t.stdev(e,1)},t.spearmancoeff=function(n,e){return n=t.rank(n),e=t.rank(e),t.corrcoeff(n,e)},t.stanMoment=function(e,r){for(var o=t.mean(e),i=t.stdev(e),s=e.length,a=0,u=0;u<s;u++)a+=n.pow((e[u]-o)/i,r);return a/e.length},t.skewness=function(n){return t.stanMoment(n,3)},t.kurtosis=function(n){return t.stanMoment(n,4)-3};var i=t.prototype;!function(n){for(var r=0;r<n.length;r++)(function(n){i[n]=function(r,o){var s=[],a=0,u=this;if(e(r)&&(o=r,r=!1),o)return setTimeout(function(){o.call(u,i[n].call(u,r))}),this;if(this.length>1){for(u=!0===r?this:this.transpose();a<u.length;a++)s[a]=t[n](u[a]);return s}return t[n](this[0],r)}})(n[r])}("cumsum cumprod".split(" ")),function(n){for(var r=0;r<n.length;r++)(function(n){i[n]=function(r,o){var s=[],a=0,u=this;if(e(r)&&(o=r,r=!1),o)return setTimeout(function(){o.call(u,i[n].call(u,r))}),this;if(this.length>1){for("sumrow"!==n&&(u=!0===r?this:this.transpose());a<u.length;a++)s[a]=t[n](u[a]);return!0===r?t[n](t.utils.toVector(s)):s}return t[n](this[0],r)}})(n[r])}("sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr geomean median diff rank mode range variance deviation stdev meandev meddev coeffvar quartiles histogram skewness kurtosis".split(" ")),function(n){for(var r=0;r<n.length;r++)(function(n){i[n]=function(){var r,o=[],s=0,a=this,u=Array.prototype.slice.call(arguments);if(e(u[u.length-1])){r=u[u.length-1];var c=u.slice(0,u.length-1);return setTimeout(function(){r.call(a,i[n].apply(a,c))}),this}r=void 0;var l=function(e){return t[n].apply(a,[e].concat(u))};if(this.length>1){for(a=a.transpose();s<a.length;s++)o[s]=l(a[s]);return o}return l(this[0])}})(n[r])}("quantiles percentileOfScore".split(" "))}(n,Math),function(t,n){t.gammaln=function(t){var e,r,o,i=0,s=[76.18009172947146,-86.50532032941678,24.01409824083091,-1.231739572450155,.001208650973866179,-5395239384953e-18],a=1.000000000190015;for(o=(r=e=t)+5.5,o-=(e+.5)*n.log(o);i<6;i++)a+=s[i]/++r;return n.log(2.5066282746310007*a/e)-o},t.loggam=function(t){var e,r,o,i,s,a,u,c=[.08333333333333333,-.002777777777777778,.0007936507936507937,-.0005952380952380952,.0008417508417508418,-.001917526917526918,.00641025641025641,-.02955065359477124,.1796443723688307,-1.3924322169059];if(e=t,u=0,1==t||2==t)return 0;for(t<=7&&(e=t+(u=n.floor(7-t))),r=1/(e*e),o=2*n.PI,s=c[9],a=8;a>=0;a--)s*=r,s+=c[a];if(i=s/e+.5*n.log(o)+(e-.5)*n.log(e)-e,t<=7)for(a=1;a<=u;a++)i-=n.log(e-1),e-=1;return i},t.gammafn=function(t){var e,r,o,i,s=[-1.716185138865495,24.76565080557592,-379.80425647094563,629.3311553128184,866.9662027904133,-31451.272968848367,-36144.413418691176,66456.14382024054],a=[-30.8402300119739,315.35062697960416,-1015.1563674902192,-3107.771671572311,22538.11842098015,4755.846277527881,-134659.9598649693,-115132.2596755535],u=!1,c=0,l=0,f=0,h=t;if(t>171.6243769536076)return 1/0;if(h<=0){if(!(i=h%1+36e-17))return 1/0;u=(1&h?-1:1)*n.PI/n.sin(n.PI*i),h=1-h}for(o=h,r=h<1?h++:(h-=c=(0|h)-1)-1,e=0;e<8;++e)f=(f+s[e])*r,l=l*r+a[e];if(i=f/l+1,o<h)i/=o;else if(o>h)for(e=0;e<c;++e)i*=h,h++;return u&&(i=u/i),i},t.gammap=function(n,e){return t.lowRegGamma(n,e)*t.gammafn(n)},t.lowRegGamma=function(e,r){var o,i=t.gammaln(e),s=e,a=1/e,u=a,c=r+1-e,l=1/1e-30,f=1/c,h=f,m=1,d=-~(8.5*n.log(e>=1?e:1/e)+.4*e+17);if(r<0||e<=0)return NaN;if(r<e+1){for(;m<=d;m++)a+=u*=r/++s;return a*n.exp(-r+e*n.log(r)-i)}for(;m<=d;m++)h*=(f=1/(f=(o=-m*(m-e))*f+(c+=2)))*(l=c+o/l);return 1-h*n.exp(-r+e*n.log(r)-i)},t.factorialln=function(n){return n<0?NaN:t.gammaln(n+1)},t.factorial=function(n){return n<0?NaN:t.gammafn(n+1)},t.combination=function(e,r){return e>170||r>170?n.exp(t.combinationln(e,r)):t.factorial(e)/t.factorial(r)/t.factorial(e-r)},t.combinationln=function(n,e){return t.factorialln(n)-t.factorialln(e)-t.factorialln(n-e)},t.permutation=function(n,e){return t.factorial(n)/t.factorial(n-e)},t.betafn=function(e,r){if(!(e<=0||r<=0))return e+r>170?n.exp(t.betaln(e,r)):t.gammafn(e)*t.gammafn(r)/t.gammafn(e+r)},t.betaln=function(n,e){return t.gammaln(n)+t.gammaln(e)-t.gammaln(n+e)},t.betacf=function(t,e,r){var o,i,s,a,u=1e-30,c=1,l=e+r,f=e+1,h=e-1,m=1,d=1-l*t/f;for(n.abs(d)<u&&(d=u),a=d=1/d;c<=100&&(d=1+(i=c*(r-c)*t/((h+(o=2*c))*(e+o)))*d,n.abs(d)<u&&(d=u),m=1+i/m,n.abs(m)<u&&(m=u),a*=(d=1/d)*m,d=1+(i=-(e+c)*(l+c)*t/((e+o)*(f+o)))*d,n.abs(d)<u&&(d=u),m=1+i/m,n.abs(m)<u&&(m=u),a*=s=(d=1/d)*m,!(n.abs(s-1)<3e-7));c++);return a},t.gammapinv=function(e,r){var o,i,s,a,u,c,l=0,f=r-1,h=t.gammaln(r);if(e>=1)return n.max(100,r+100*n.sqrt(r));if(e<=0)return 0;for(r>1?(u=n.log(f),c=n.exp(f*(u-1)-h),a=e<.5?e:1-e,o=(2.30753+.27061*(i=n.sqrt(-2*n.log(a))))/(1+i*(.99229+.04481*i))-i,e<.5&&(o=-o),o=n.max(.001,r*n.pow(1-1/(9*r)-o/(3*n.sqrt(r)),3))):o=e<(i=1-r*(.253+.12*r))?n.pow(e/i,1/r):1-n.log(1-(e-i)/(1-i));l<12;l++){if(o<=0)return 0;if((o-=i=(s=(t.lowRegGamma(r,o)-e)/(i=r>1?c*n.exp(-(o-f)+f*(n.log(o)-u)):n.exp(-o+f*n.log(o)-h)))/(1-.5*n.min(1,s*((r-1)/o-1))))<=0&&(o=.5*(o+i)),n.abs(i)<1e-8*o)break}return o},t.erf=function(t){var e,r,o,i,s=[-1.3026537197817094,.6419697923564902,.019476473204185836,-.00956151478680863,-.000946595344482036,.000366839497852761,42523324806907e-18,-20278578112534e-18,-1624290004647e-18,130365583558e-17,1.5626441722e-8,-8.5238095915e-8,6.529054439e-9,5.059343495e-9,-9.91364156e-10,-2.27365122e-10,96467911e-18,2394038e-18,-6886027e-18,894487e-18,313092e-18,-112708e-18,381e-18,7106e-18,-1523e-18,-94e-18,121e-18,-28e-18],a=s.length-1,u=!1,c=0,l=0;for(t<0&&(t=-t,u=!0),r=4*(e=2/(2+t))-2;a>0;a--)o=c,c=r*c-l+s[a],l=o;return i=e*n.exp(-t*t+.5*(s[0]+r*c)-l),u?i-1:1-i},t.erfc=function(n){return 1-t.erf(n)},t.erfcinv=function(e){var r,o,i,s,a=0;if(e>=2)return-100;if(e<=0)return 100;for(s=e<1?e:2-e,r=-.70711*((2.30753+.27061*(i=n.sqrt(-2*n.log(s/2))))/(1+i*(.99229+.04481*i))-i);a<2;a++)r+=(o=t.erfc(r)-s)/(1.1283791670955126*n.exp(-r*r)-r*o);return e<1?r:-r},t.ibetainv=function(e,r,o){var i,s,a,u,c,l,f,h,m,d,p=r-1,g=o-1,y=0;if(e<=0)return 0;if(e>=1)return 1;for(r>=1&&o>=1?(a=e<.5?e:1-e,l=(2.30753+.27061*(u=n.sqrt(-2*n.log(a))))/(1+u*(.99229+.04481*u))-u,e<.5&&(l=-l),f=(l*l-3)/6,h=2/(1/(2*r-1)+1/(2*o-1)),m=l*n.sqrt(f+h)/h-(1/(2*o-1)-1/(2*r-1))*(f+5/6-2/(3*h)),l=r/(r+o*n.exp(2*m))):(i=n.log(r/(r+o)),s=n.log(o/(r+o)),l=e<(u=n.exp(r*i)/r)/(m=u+(c=n.exp(o*s)/o))?n.pow(r*m*e,1/r):1-n.pow(o*m*(1-e),1/o)),d=-t.gammaln(r)-t.gammaln(o)+t.gammaln(r+o);y<10;y++){if(0===l||1===l)return l;if((l-=u=(c=(t.ibeta(l,r,o)-e)/(u=n.exp(p*n.log(l)+g*n.log(1-l)+d)))/(1-.5*n.min(1,c*(p/l-g/(1-l)))))<=0&&(l=.5*(l+u)),l>=1&&(l=.5*(l+u+1)),n.abs(u)<1e-8*l&&y>0)break}return l},t.ibeta=function(e,r,o){var i=0===e||1===e?0:n.exp(t.gammaln(r+o)-t.gammaln(r)-t.gammaln(o)+r*n.log(e)+o*n.log(1-e));return!(e<0||e>1)&&(e<(r+1)/(r+o+2)?i*t.betacf(e,r,o)/r:1-i*t.betacf(1-e,o,r)/o)},t.randn=function(e,r){var o,i,s,a,u;if(r||(r=e),e)return t.create(e,r,function(){return t.randn()});do{o=t._random_fn(),i=1.7156*(t._random_fn()-.5),u=(s=o-.449871)*s+(a=n.abs(i)+.386595)*(.196*a-.25472*s)}while(u>.27597&&(u>.27846||i*i>-4*n.log(o)*o*o));return i/o},t.randg=function(e,r,o){var i,s,a,u,c,l,f=e;if(o||(o=r),e||(e=1),r)return(l=t.zeros(r,o)).alter(function(){return t.randg(e)}),l;e<1&&(e+=1),i=e-1/3,s=1/n.sqrt(9*i);do{do{u=1+s*(c=t.randn())}while(u<=0);u*=u*u,a=t._random_fn()}while(a>1-.331*n.pow(c,4)&&n.log(a)>.5*c*c+i*(1-u+n.log(u)));if(e==f)return i*u;do{a=t._random_fn()}while(0===a);return n.pow(a,1/f)*i*u},function(n){for(var e=0;e<n.length;e++)(function(n){t.fn[n]=function(){return t(t.map(this,function(e){return t[n](e)}))}})(n[e])}("gammaln gammafn factorial factorialln".split(" ")),function(n){for(var e=0;e<n.length;e++)(function(n){t.fn[n]=function(){return t(t[n].apply(null,arguments))}})(n[e])}("randn".split(" "))}(n,Math),function(t,n){function e(t,e,r,o){for(var i,s=0,a=1,u=1,c=1,l=0,f=0;n.abs((u-f)/u)>o;)f=u,a=c+(i=-(e+l)*(e+r+l)*t/(e+2*l)/(e+2*l+1))*a,u=(s=u+i*s)+(i=(l+=1)*(r-l)*t/(e+2*l-1)/(e+2*l))*u,s/=c=a+i*c,a/=c,u/=c,c=1;return u/e}function r(e,r,o){var i=[.9815606342467192,.9041172563704749,.7699026741943047,.5873179542866175,.3678314989981802,.1252334085114689],s=[.04717533638651183,.10693932599531843,.16007832854334622,.20316742672306592,.2334925365383548,.24914704581340277],a=.5*e;if(a>=8)return 1;var u,c=2*t.normal.cdf(a,0,1,1,0)-1;c=c>=n.exp(-50/o)?n.pow(c,o):0;for(var l=a,f=(8-a)/(u=e>3?2:3),h=l+f,m=0,d=o-1,p=1;p<=u;p++){for(var g=0,y=.5*(h+l),v=.5*(h-l),w=1;w<=12;w++){var E,A=y+v*(6<w?i[(E=12-w+1)-1]:-i[(E=w)-1]),C=A*A;if(C>60)break;var _=2*t.normal.cdf(A,0,1,1,0)*.5-2*t.normal.cdf(A,e,1,1,0)*.5;_>=n.exp(-30/d)&&(g+=_=s[E-1]*n.exp(-.5*C)*n.pow(_,d))}m+=g*=2*v*o/n.sqrt(2*n.PI),l=h,h+=f}return(c+=m)<=n.exp(-30/r)?0:(c=n.pow(c,r))>=1?1:c}!function(n){for(var e=0;e<n.length;e++)(function(n){t[n]=function t(n,e,r){return this instanceof t?(this._a=n,this._b=e,this._c=r,this):new t(n,e,r)},t.fn[n]=function(e,r,o){var i=t[n](e,r,o);return i.data=this,i},t[n].prototype.sample=function(e){var r=this._a,o=this._b,i=this._c;return e?t.alter(e,function(){return t[n].sample(r,o,i)}):t[n].sample(r,o,i)},function(e){for(var r=0;r<e.length;r++)(function(e){t[n].prototype[e]=function(r){var o=this._a,i=this._b,s=this._c;return r||0===r||(r=this.data),"number"!=typeof r?t.fn.map.call(r,function(r){return t[n][e](r,o,i,s)}):t[n][e](r,o,i,s)}})(e[r])}("pdf cdf inv".split(" ")),function(e){for(var r=0;r<e.length;r++)(function(e){t[n].prototype[e]=function(){return t[n][e](this._a,this._b,this._c)}})(e[r])}("mean median mode variance".split(" "))})(n[e])}("beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy laplace lognormal noncentralt normal pareto studentt weibull uniform binomial negbin hypgeom poisson triangular tukey arcsine".split(" ")),t.extend(t.beta,{pdf:function(e,r,o){return e>1||e<0?0:1==r&&1==o?1:r<512&&o<512?n.pow(e,r-1)*n.pow(1-e,o-1)/t.betafn(r,o):n.exp((r-1)*n.log(e)+(o-1)*n.log(1-e)-t.betaln(r,o))},cdf:function(n,e,r){return n>1||n<0?1*(n>1):t.ibeta(n,e,r)},inv:function(n,e,r){return t.ibetainv(n,e,r)},mean:function(t,n){return t/(t+n)},median:function(n,e){return t.ibetainv(.5,n,e)},mode:function(t,n){return(t-1)/(t+n-2)},sample:function(n,e){var r=t.randg(n);return r/(r+t.randg(e))},variance:function(t,e){return t*e/(n.pow(t+e,2)*(t+e+1))}}),t.extend(t.centralF,{pdf:function(e,r,o){var i;return e<0?0:r<=2?0===e&&r<2?1/0:0===e&&2===r?1:1/t.betafn(r/2,o/2)*n.pow(r/o,r/2)*n.pow(e,r/2-1)*n.pow(1+r/o*e,-(r+o)/2):(i=r*e/(o+e*r),r*(o/(o+e*r))/2*t.binomial.pdf((r-2)/2,(r+o-2)/2,i))},cdf:function(n,e,r){return n<0?0:t.ibeta(e*n/(e*n+r),e/2,r/2)},inv:function(n,e,r){return r/(e*(1/t.ibetainv(n,e/2,r/2)-1))},mean:function(t,n){return n>2?n/(n-2):void 0},mode:function(t,n){return t>2?n*(t-2)/(t*(n+2)):void 0},sample:function(n,e){return 2*t.randg(n/2)/n/(2*t.randg(e/2)/e)},variance:function(t,n){if(!(n<=4))return 2*n*n*(t+n-2)/(t*(n-2)*(n-2)*(n-4))}}),t.extend(t.cauchy,{pdf:function(t,e,r){return r<0?0:r/(n.pow(t-e,2)+n.pow(r,2))/n.PI},cdf:function(t,e,r){return n.atan((t-e)/r)/n.PI+.5},inv:function(t,e,r){return e+r*n.tan(n.PI*(t-.5))},median:function(t){return t},mode:function(t){return t},sample:function(e,r){return t.randn()*n.sqrt(1/(2*t.randg(.5)))*r+e}}),t.extend(t.chisquare,{pdf:function(e,r){return e<0?0:0===e&&2===r?.5:n.exp((r/2-1)*n.log(e)-e/2-r/2*n.log(2)-t.gammaln(r/2))},cdf:function(n,e){return n<0?0:t.lowRegGamma(e/2,n/2)},inv:function(n,e){return 2*t.gammapinv(n,.5*e)},mean:function(t){return t},median:function(t){return t*n.pow(1-2/(9*t),3)},mode:function(t){return t-2>0?t-2:0},sample:function(n){return 2*t.randg(n/2)},variance:function(t){return 2*t}}),t.extend(t.exponential,{pdf:function(t,e){return t<0?0:e*n.exp(-e*t)},cdf:function(t,e){return t<0?0:1-n.exp(-e*t)},inv:function(t,e){return-n.log(1-t)/e},mean:function(t){return 1/t},median:function(t){return 1/t*n.log(2)},mode:function(){return 0},sample:function(e){return-1/e*n.log(t._random_fn())},variance:function(t){return n.pow(t,-2)}}),t.extend(t.gamma,{pdf:function(e,r,o){return e<0?0:0===e&&1===r?1/o:n.exp((r-1)*n.log(e)-e/o-t.gammaln(r)-r*n.log(o))},cdf:function(n,e,r){return n<0?0:t.lowRegGamma(e,n/r)},inv:function(n,e,r){return t.gammapinv(n,e)*r},mean:function(t,n){return t*n},mode:function(t,n){if(t>1)return(t-1)*n},sample:function(n,e){return t.randg(n)*e},variance:function(t,n){return t*n*n}}),t.extend(t.invgamma,{pdf:function(e,r,o){return e<=0?0:n.exp(-(r+1)*n.log(e)-o/e-t.gammaln(r)+r*n.log(o))},cdf:function(n,e,r){return n<=0?0:1-t.lowRegGamma(e,r/n)},inv:function(n,e,r){return r/t.gammapinv(1-n,e)},mean:function(t,n){return t>1?n/(t-1):void 0},mode:function(t,n){return n/(t+1)},sample:function(n,e){return e/t.randg(n)},variance:function(t,n){if(!(t<=2))return n*n/((t-1)*(t-1)*(t-2))}}),t.extend(t.kumaraswamy,{pdf:function(t,e,r){return 0===t&&1===e?r:1===t&&1===r?e:n.exp(n.log(e)+n.log(r)+(e-1)*n.log(t)+(r-1)*n.log(1-n.pow(t,e)))},cdf:function(t,e,r){return t<0?0:t>1?1:1-n.pow(1-n.pow(t,e),r)},inv:function(t,e,r){return n.pow(1-n.pow(1-t,1/r),1/e)},mean:function(n,e){return e*t.gammafn(1+1/n)*t.gammafn(e)/t.gammafn(1+1/n+e)},median:function(t,e){return n.pow(1-n.pow(2,-1/e),1/t)},mode:function(t,e){if(t>=1&&e>=1&&1!==t&&1!==e)return n.pow((t-1)/(t*e-1),1/t)},variance:function(){throw new Error("variance not yet implemented")}}),t.extend(t.lognormal,{pdf:function(t,e,r){return t<=0?0:n.exp(-n.log(t)-.5*n.log(2*n.PI)-n.log(r)-n.pow(n.log(t)-e,2)/(2*r*r))},cdf:function(e,r,o){return e<0?0:.5+.5*t.erf((n.log(e)-r)/n.sqrt(2*o*o))},inv:function(e,r,o){return n.exp(-1.4142135623730951*o*t.erfcinv(2*e)+r)},mean:function(t,e){return n.exp(t+e*e/2)},median:function(t){return n.exp(t)},mode:function(t,e){return n.exp(t-e*e)},sample:function(e,r){return n.exp(t.randn()*r+e)},variance:function(t,e){return(n.exp(e*e)-1)*n.exp(2*t+e*e)}}),t.extend(t.noncentralt,{pdf:function(e,r,o){return n.abs(o)<1e-14?t.studentt.pdf(e,r):n.abs(e)<1e-14?n.exp(t.gammaln((r+1)/2)-o*o/2-.5*n.log(n.PI*r)-t.gammaln(r/2)):r/e*(t.noncentralt.cdf(e*n.sqrt(1+2/r),r+2,o)-t.noncentralt.cdf(e,r,o))},cdf:function(e,r,o){var i=1e-14;if(n.abs(o)<i)return t.studentt.cdf(e,r);var s=!1;e<0&&(s=!0,o=-o);for(var a=t.normal.cdf(-o,0,1),u=i+1,c=u,l=e*e/(e*e+r),f=0,h=n.exp(-o*o/2),m=n.exp(-o*o/2-.5*n.log(2)-t.gammaln(1.5))*o;f<200||c>i||u>i;)c=u,f>0&&(h*=o*o/(2*f),m*=o*o/(2*(f+.5))),a+=.5*(u=h*t.beta.cdf(l,f+.5,r/2)+m*t.beta.cdf(l,f+1,r/2)),f++;return s?1-a:a}}),t.extend(t.normal,{pdf:function(t,e,r){return n.exp(-.5*n.log(2*n.PI)-n.log(r)-n.pow(t-e,2)/(2*r*r))},cdf:function(e,r,o){return.5*(1+t.erf((e-r)/n.sqrt(2*o*o)))},inv:function(n,e,r){return-1.4142135623730951*r*t.erfcinv(2*n)+e},mean:function(t){return t},median:function(t){return t},mode:function(t){return t},sample:function(n,e){return t.randn()*e+n},variance:function(t,n){return n*n}}),t.extend(t.pareto,{pdf:function(t,e,r){return t<e?0:r*n.pow(e,r)/n.pow(t,r+1)},cdf:function(t,e,r){return t<e?0:1-n.pow(e/t,r)},inv:function(t,e,r){return e/n.pow(1-t,1/r)},mean:function(t,e){if(!(e<=1))return e*n.pow(t,e)/(e-1)},median:function(t,e){return t*(e*n.SQRT2)},mode:function(t){return t},variance:function(t,e){if(!(e<=2))return t*t*e/(n.pow(e-1,2)*(e-2))}}),t.extend(t.studentt,{pdf:function(e,r){return r=r>1e100?1e100:r,1/(n.sqrt(r)*t.betafn(.5,r/2))*n.pow(1+e*e/r,-(r+1)/2)},cdf:function(e,r){var o=r/2;return t.ibeta((e+n.sqrt(e*e+r))/(2*n.sqrt(e*e+r)),o,o)},inv:function(e,r){var o=t.ibetainv(2*n.min(e,1-e),.5*r,.5);return o=n.sqrt(r*(1-o)/o),e>.5?o:-o},mean:function(t){return t>1?0:void 0},median:function(){return 0},mode:function(){return 0},sample:function(e){return t.randn()*n.sqrt(e/(2*t.randg(e/2)))},variance:function(t){return t>2?t/(t-2):t>1?1/0:void 0}}),t.extend(t.weibull,{pdf:function(t,e,r){return t<0||e<0||r<0?0:r/e*n.pow(t/e,r-1)*n.exp(-n.pow(t/e,r))},cdf:function(t,e,r){return t<0?0:1-n.exp(-n.pow(t/e,r))},inv:function(t,e,r){return e*n.pow(-n.log(1-t),1/r)},mean:function(n,e){return n*t.gammafn(1+1/e)},median:function(t,e){return t*n.pow(n.log(2),1/e)},mode:function(t,e){return e<=1?0:t*n.pow((e-1)/e,1/e)},sample:function(e,r){return e*n.pow(-n.log(t._random_fn()),1/r)},variance:function(e,r){return e*e*t.gammafn(1+2/r)-n.pow(t.weibull.mean(e,r),2)}}),t.extend(t.uniform,{pdf:function(t,n,e){return t<n||t>e?0:1/(e-n)},cdf:function(t,n,e){return t<n?0:t<e?(t-n)/(e-n):1},inv:function(t,n,e){return n+t*(e-n)},mean:function(t,n){return.5*(t+n)},median:function(n,e){return t.mean(n,e)},mode:function(){throw new Error("mode is not yet implemented")},sample:function(n,e){return n/2+e/2+(e/2-n/2)*(2*t._random_fn()-1)},variance:function(t,e){return n.pow(e-t,2)/12}}),t.extend(t.binomial,{pdf:function(e,r,o){return 0===o||1===o?r*o===e?1:0:t.combination(r,e)*n.pow(o,e)*n.pow(1-o,r-e)},cdf:function(r,o,i){var s,a=1e-10;if(r<0)return 0;if(r>=o)return 1;if(i<0||i>1||o<=0)return NaN;var u=i,c=(r=n.floor(r))+1,l=o-r,f=c+l,h=n.exp(t.gammaln(f)-t.gammaln(l)-t.gammaln(c)+c*n.log(u)+l*n.log(1-u));return s=u<(c+1)/(f+2)?h*e(u,c,l,a):1-h*e(1-u,l,c,a),n.round(1/a*(1-s))/(1/a)}}),t.extend(t.negbin,{pdf:function(e,r,o){return e===e>>>0&&(e<0?0:t.combination(e+r-1,r-1)*n.pow(1-o,e)*n.pow(o,r))},cdf:function(n,e,r){var o=0,i=0;if(n<0)return 0;for(;i<=n;i++)o+=t.negbin.pdf(i,e,r);return o}}),t.extend(t.hypgeom,{pdf:function(e,r,o,i){if(e!=e|0)return!1;if(e<0||e<o-(r-i))return 0;if(e>i||e>o)return 0;if(2*o>r)return 2*i>r?t.hypgeom.pdf(r-o-i+e,r,r-o,r-i):t.hypgeom.pdf(i-e,r,r-o,i);if(2*i>r)return t.hypgeom.pdf(o-e,r,o,r-i);if(o<i)return t.hypgeom.pdf(e,r,i,o);for(var s=1,a=0,u=0;u<e;u++){for(;s>1&&a<i;)s*=1-o/(r-a),a++;s*=(i-u)*(o-u)/((u+1)*(r-o-i+u+1))}for(;a<i;a++)s*=1-o/(r-a);return n.min(1,n.max(0,s))},cdf:function(e,r,o,i){if(e<0||e<o-(r-i))return 0;if(e>=i||e>=o)return 1;if(2*o>r)return 2*i>r?t.hypgeom.cdf(r-o-i+e,r,r-o,r-i):1-t.hypgeom.cdf(i-e-1,r,r-o,i);if(2*i>r)return 1-t.hypgeom.cdf(o-e-1,r,o,r-i);if(o<i)return t.hypgeom.cdf(e,r,i,o);for(var s=1,a=1,u=0,c=0;c<e;c++){for(;s>1&&u<i;){var l=1-o/(r-u);a*=l,s*=l,u++}s+=a*=(i-c)*(o-c)/((c+1)*(r-o-i+c+1))}for(;u<i;u++)s*=1-o/(r-u);return n.min(1,n.max(0,s))}}),t.extend(t.poisson,{pdf:function(e,r){return r<0||e%1!=0||e<0?0:n.pow(r,e)*n.exp(-r)/t.factorial(e)},cdf:function(n,e){var r=[],o=0;if(n<0)return 0;for(;o<=n;o++)r.push(t.poisson.pdf(o,e));return t.sum(r)},mean:function(t){return t},variance:function(t){return t},sampleSmall:function(e){var r=1,o=0,i=n.exp(-e);do{o++,r*=t._random_fn()}while(r>i);return o-1},sampleLarge:function(e){var r,o,i,s,a,u,c,l,f,h,m=e;for(s=n.sqrt(m),a=n.log(m),u=.02483*(c=.931+2.53*s)-.059,l=1.1239+1.1328/(c-3.4),f=.9277-3.6224/(c-2);;){if(o=n.random()-.5,i=n.random(),h=.5-n.abs(o),r=n.floor((2*u/h+c)*o+m+.43),h>=.07&&i<=f)return r;if(!(r<0||h<.013&&i>h)&&n.log(i)+n.log(l)-n.log(u/(h*h)+c)<=r*a-m-t.loggam(r+1))return r}},sample:function(t){return t<10?this.sampleSmall(t):this.sampleLarge(t)}}),t.extend(t.triangular,{pdf:function(t,n,e,r){return e<=n||r<n||r>e?NaN:t<n||t>e?0:t<r?2*(t-n)/((e-n)*(r-n)):t===r?2/(e-n):2*(e-t)/((e-n)*(e-r))},cdf:function(t,e,r,o){return r<=e||o<e||o>r?NaN:t<=e?0:t>=r?1:t<=o?n.pow(t-e,2)/((r-e)*(o-e)):1-n.pow(r-t,2)/((r-e)*(r-o))},inv:function(t,e,r,o){return r<=e||o<e||o>r?NaN:t<=(o-e)/(r-e)?e+(r-e)*n.sqrt(t*((o-e)/(r-e))):e+(r-e)*(1-n.sqrt((1-t)*(1-(o-e)/(r-e))))},mean:function(t,n,e){return(t+n+e)/3},median:function(t,e,r){return r<=(t+e)/2?e-n.sqrt((e-t)*(e-r))/n.sqrt(2):r>(t+e)/2?t+n.sqrt((e-t)*(r-t))/n.sqrt(2):void 0},mode:function(t,n,e){return e},sample:function(e,r,o){var i=t._random_fn();return i<(o-e)/(r-e)?e+n.sqrt(i*(r-e)*(o-e)):r-n.sqrt((1-i)*(r-e)*(r-o))},variance:function(t,n,e){return(t*t+n*n+e*e-t*n-t*e-n*e)/18}}),t.extend(t.arcsine,{pdf:function(t,e,r){return r<=e?NaN:t<=e||t>=r?0:2/n.PI*n.pow(n.pow(r-e,2)-n.pow(2*t-e-r,2),-.5)},cdf:function(t,e,r){return t<e?0:t<r?2/n.PI*n.asin(n.sqrt((t-e)/(r-e))):1},inv:function(t,e,r){return e+(.5-.5*n.cos(n.PI*t))*(r-e)},mean:function(t,n){return n<=t?NaN:(t+n)/2},median:function(t,n){return n<=t?NaN:(t+n)/2},mode:function(){throw new Error("mode is not yet implemented")},sample:function(e,r){return(e+r)/2+(r-e)/2*n.sin(2*n.PI*t.uniform.sample(0,1))},variance:function(t,e){return e<=t?NaN:n.pow(e-t,2)/8}}),t.extend(t.laplace,{pdf:function(t,e,r){return r<=0?0:n.exp(-n.abs(t-e)/r)/(2*r)},cdf:function(t,e,r){return r<=0?0:t<e?.5*n.exp((t-e)/r):1-.5*n.exp(-(t-e)/r)},mean:function(t){return t},median:function(t){return t},mode:function(t){return t},variance:function(t,n){return 2*n*n},sample:function(e,r){var o,i=t._random_fn()-.5;return e-r*((o=i)/n.abs(o))*n.log(1-2*n.abs(i))}}),t.extend(t.tukey,{cdf:function(e,o,i){var s=o,a=[.9894009349916499,.9445750230732326,.8656312023878318,.755404408355003,.6178762444026438,.45801677765722737,.2816035507792589,.09501250983763744],u=[.027152459411754096,.062253523938647894,.09515851168249279,.12462897125553388,.14959598881657674,.16915651939500254,.18260341504492358,.1894506104550685];if(e<=0)return 0;if(i<2||s<2)return NaN;if(!Number.isFinite(e))return 1;if(i>25e3)return r(e,1,s);var c,l=.5*i,f=l*n.log(i)-i*n.log(2)-t.gammaln(l),h=l-1,m=.25*i;c=i<=100?1:i<=800?.5:i<=5e3?.25:.125,f+=n.log(c);for(var d=0,p=1;p<=50;p++){for(var g=0,y=(2*p-1)*c,v=1;v<=16;v++){var w,E;8<v?(w=v-8-1,E=f+h*n.log(y+a[w]*c)-(a[w]*c+y)*m):(w=v-1,E=f+h*n.log(y-a[w]*c)+(a[w]*c-y)*m),E>=-30&&(g+=r(8<v?e*n.sqrt(.5*(a[w]*c+y)):e*n.sqrt(.5*(-a[w]*c+y)),1,s)*u[w]*n.exp(E))}if(p*c>=1&&g<=1e-14)break;d+=g}if(g>1e-14)throw new Error("tukey.cdf failed to converge");return d>1&&(d=1),d},inv:function(e,r,o){if(o<2||r<2)return NaN;if(e<0||e>1)return NaN;if(0===e)return 0;if(1===e)return 1/0;var i,s=function(t,e,r){var o=.5-.5*t,i=n.sqrt(n.log(1/(o*o))),s=i+((((-453642210148e-16*i-.204231210125)*i-.342242088547)*i-1)*i+.322232421088)/((((.0038560700634*i+.10353775285)*i+.531103462366)*i+.588581570495)*i+.099348462606);r<120&&(s+=(s*s*s+s)/r/4);var a=.8832-.2368*s;return r<120&&(a+=-1.214/r+1.208*s/r),s*(a*n.log(e-1)+1.4142)}(e,r,o),a=t.tukey.cdf(s,r,o)-e;i=a>0?n.max(0,s-1):s+1;for(var u,c=t.tukey.cdf(i,r,o)-e,l=1;l<50;l++)if(u=i-c*(i-s)/(c-a),a=c,s=i,u<0&&(u=0,c=-e),c=t.tukey.cdf(u,r,o)-e,i=u,n.abs(i-s)<1e-4)return u;throw new Error("tukey.inv failed to converge")}})}(n,Math),function(t,n){var e,r,o=Array.prototype.push,i=t.utils.isArray;function s(n){return i(n)||n instanceof t}t.extend({add:function(n,e){return s(e)?(s(e[0])||(e=[e]),t.map(n,function(t,n,r){return t+e[n][r]})):t.map(n,function(t){return t+e})},subtract:function(n,e){return s(e)?(s(e[0])||(e=[e]),t.map(n,function(t,n,r){return t-e[n][r]||0})):t.map(n,function(t){return t-e})},divide:function(n,e){return s(e)?(s(e[0])||(e=[e]),t.multiply(n,t.inv(e))):t.map(n,function(t){return t/e})},multiply:function(n,e){var r,o,i,a,u,c,l,f;if(void 0===n.length&&void 0===e.length)return n*e;if(u=n.length,c=n[0].length,l=t.zeros(u,i=s(e)?e[0].length:c),f=0,s(e)){for(;f<i;f++)for(r=0;r<u;r++){for(a=0,o=0;o<c;o++)a+=n[r][o]*e[o][f];l[r][f]=a}return 1===u&&1===f?l[0][0]:l}return t.map(n,function(t){return t*e})},outer:function(n,e){return t.multiply(n.map(function(t){return[t]}),[e])},dot:function(n,e){s(n[0])||(n=[n]),s(e[0])||(e=[e]);for(var r,o,i=1===n[0].length&&1!==n.length?t.transpose(n):n,a=1===e[0].length&&1!==e.length?t.transpose(e):e,u=[],c=0,l=i.length,f=i[0].length;c<l;c++){for(u[c]=[],r=0,o=0;o<f;o++)r+=i[c][o]*a[c][o];u[c]=r}return 1===u.length?u[0]:u},pow:function(e,r){return t.map(e,function(t){return n.pow(t,r)})},exp:function(e){return t.map(e,function(t){return n.exp(t)})},log:function(e){return t.map(e,function(t){return n.log(t)})},abs:function(e){return t.map(e,function(t){return n.abs(t)})},norm:function(t,e){var r=0,o=0;for(isNaN(e)&&(e=2),s(t[0])&&(t=t[0]);o<t.length;o++)r+=n.pow(n.abs(t[o]),e);return n.pow(r,1/e)},angle:function(e,r){return n.acos(t.dot(e,r)/(t.norm(e)*t.norm(r)))},aug:function(t,n){var e,r=[];for(e=0;e<t.length;e++)r.push(t[e].slice());for(e=0;e<r.length;e++)o.apply(r[e],n[e]);return r},inv:function(n){for(var e,r=n.length,o=n[0].length,i=t.identity(r,o),s=t.gauss_jordan(n,i),a=[],u=0;u<r;u++)for(a[u]=[],e=o;e<s[0].length;e++)a[u][e-o]=s[u][e];return a},det:function t(n){if(2===n.length)return n[0][0]*n[1][1]-n[0][1]*n[1][0];for(var e=0,r=0;r<n.length;r++){for(var o=[],i=1;i<n.length;i++){o[i-1]=[];for(var s=0;s<n.length;s++)s<r?o[i-1][s]=n[i][s]:s>r&&(o[i-1][s-1]=n[i][s])}var a=r%2?-1:1;e+=t(o)*n[0][r]*a}return e},gauss_elimination:function(e,r){var o,i,s,a,u=0,c=0,l=e.length,f=e[0].length,h=1,m=0,d=[];for(o=(e=t.aug(e,r))[0].length,u=0;u<l;u++){for(i=e[u][u],c=u,a=u+1;a<f;a++)i<n.abs(e[a][u])&&(i=e[a][u],c=a);if(c!=u)for(a=0;a<o;a++)s=e[u][a],e[u][a]=e[c][a],e[c][a]=s;for(c=u+1;c<l;c++)for(h=e[c][u]/e[u][u],a=u;a<o;a++)e[c][a]=e[c][a]-h*e[u][a]}for(u=l-1;u>=0;u--){for(m=0,c=u+1;c<=l-1;c++)m+=d[c]*e[u][c];d[u]=(e[u][o-1]-m)/e[u][u]}return d},gauss_jordan:function(e,r){var o,i,s,a=t.aug(e,r),u=a.length,c=a[0].length,l=0;for(i=0;i<u;i++){var f=i;for(s=i+1;s<u;s++)n.abs(a[s][i])>n.abs(a[f][i])&&(f=s);var h=a[i];for(a[i]=a[f],a[f]=h,s=i+1;s<u;s++)for(l=a[s][i]/a[i][i],o=i;o<c;o++)a[s][o]-=a[i][o]*l}for(i=u-1;i>=0;i--){for(l=a[i][i],s=0;s<i;s++)for(o=c-1;o>i-1;o--)a[s][o]-=a[i][o]*a[s][i]/l;for(a[i][i]/=l,o=u;o<c;o++)a[i][o]/=l}return a},triaUpSolve:function(n,e){var r,o=n[0].length,i=t.zeros(1,o)[0],s=!1;return null!=e[0].length&&(e=e.map(function(t){return t[0]}),s=!0),t.arange(o-1,-1,-1).forEach(function(s){r=t.arange(s+1,o).map(function(t){return i[t]*n[s][t]}),i[s]=(e[s]-t.sum(r))/n[s][s]}),s?i.map(function(t){return[t]}):i},triaLowSolve:function(n,e){var r,o=n[0].length,i=t.zeros(1,o)[0],s=!1;return null!=e[0].length&&(e=e.map(function(t){return t[0]}),s=!0),t.arange(o).forEach(function(o){r=t.arange(o).map(function(t){return n[o][t]*i[t]}),i[o]=(e[o]-t.sum(r))/n[o][o]}),s?i.map(function(t){return[t]}):i},lu:function(n){var e,r=n.length,o=t.identity(r),i=t.zeros(n.length,n[0].length);return t.arange(r).forEach(function(t){i[0][t]=n[0][t]}),t.arange(1,r).forEach(function(s){t.arange(s).forEach(function(r){e=t.arange(r).map(function(t){return o[s][t]*i[t][r]}),o[s][r]=(n[s][r]-t.sum(e))/i[r][r]}),t.arange(s,r).forEach(function(r){e=t.arange(s).map(function(t){return o[s][t]*i[t][r]}),i[s][r]=n[e.length][r]-t.sum(e)})}),[o,i]},cholesky:function(e){var r,o=e.length,i=t.zeros(e.length,e[0].length);return t.arange(o).forEach(function(s){r=t.arange(s).map(function(t){return n.pow(i[s][t],2)}),i[s][s]=n.sqrt(e[s][s]-t.sum(r)),t.arange(s+1,o).forEach(function(n){r=t.arange(s).map(function(t){return i[s][t]*i[n][t]}),i[n][s]=(e[s][n]-t.sum(r))/i[s][s]})}),i},gauss_jacobi:function(e,r,o,i){for(var s,a,u,c,l=0,f=0,h=e.length,m=[],d=[],p=[];l<h;l++)for(m[l]=[],d[l]=[],p[l]=[],f=0;f<h;f++)l>f?(m[l][f]=e[l][f],d[l][f]=p[l][f]=0):l<f?(d[l][f]=e[l][f],m[l][f]=p[l][f]=0):(p[l][f]=e[l][f],m[l][f]=d[l][f]=0);for(u=t.multiply(t.multiply(t.inv(p),t.add(m,d)),-1),a=t.multiply(t.inv(p),r),s=o,c=t.add(t.multiply(u,o),a),l=2;n.abs(t.norm(t.subtract(c,s)))>i;)s=c,c=t.add(t.multiply(u,s),a),l++;return c},gauss_seidel:function(e,r,o,i){for(var s,a,u,c,l,f=0,h=e.length,m=[],d=[],p=[];f<h;f++)for(m[f]=[],d[f]=[],p[f]=[],s=0;s<h;s++)f>s?(m[f][s]=e[f][s],d[f][s]=p[f][s]=0):f<s?(d[f][s]=e[f][s],m[f][s]=p[f][s]=0):(p[f][s]=e[f][s],m[f][s]=d[f][s]=0);for(c=t.multiply(t.multiply(t.inv(t.add(p,m)),d),-1),u=t.multiply(t.inv(t.add(p,m)),r),a=o,l=t.add(t.multiply(c,o),u),f=2;n.abs(t.norm(t.subtract(l,a)))>i;)a=l,l=t.add(t.multiply(c,a),u),f+=1;return l},SOR:function(e,r,o,i,s){for(var a,u,c,l,f,h=0,m=e.length,d=[],p=[],g=[];h<m;h++)for(d[h]=[],p[h]=[],g[h]=[],a=0;a<m;a++)h>a?(d[h][a]=e[h][a],p[h][a]=g[h][a]=0):h<a?(p[h][a]=e[h][a],d[h][a]=g[h][a]=0):(g[h][a]=e[h][a],d[h][a]=p[h][a]=0);for(l=t.multiply(t.inv(t.add(g,t.multiply(d,s))),t.subtract(t.multiply(g,1-s),t.multiply(p,s))),c=t.multiply(t.multiply(t.inv(t.add(g,t.multiply(d,s))),r),s),u=o,f=t.add(t.multiply(l,o),c),h=2;n.abs(t.norm(t.subtract(f,u)))>i;)u=f,f=t.add(t.multiply(l,u),c),h++;return f},householder:function(e){for(var r,o,i,s,a=e.length,u=e[0].length,c=0,l=[],f=[];c<a-1;c++){for(r=0,s=c+1;s<u;s++)r+=e[s][c]*e[s][c];for(r=(e[c+1][c]>0?-1:1)*n.sqrt(r),o=n.sqrt((r*r-e[c+1][c]*r)/2),(l=t.zeros(a,1))[c+1][0]=(e[c+1][c]-r)/(2*o),i=c+2;i<a;i++)l[i][0]=e[i][c]/(2*o);f=t.subtract(t.identity(a,u),t.multiply(t.multiply(l,t.transpose(l)),2)),e=t.multiply(f,t.multiply(e,f))}return e},QR:(e=t.sum,r=t.arange,function(o){var i,s,a,u=o.length,c=o[0].length,l=t.zeros(c,c);for(o=t.copy(o),s=0;s<c;s++){for(l[s][s]=n.sqrt(e(r(u).map(function(t){return o[t][s]*o[t][s]}))),i=0;i<u;i++)o[i][s]=o[i][s]/l[s][s];for(a=s+1;a<c;a++)for(l[s][a]=e(r(u).map(function(t){return o[t][s]*o[t][a]})),i=0;i<u;i++)o[i][a]=o[i][a]-o[i][s]*l[s][a]}return[o,l]}),lstsq:function(n,e){var r=!1;void 0===e[0].length&&(e=e.map(function(t){return[t]}),r=!0);var o=t.QR(n),i=o[0],s=o[1],a=n[0].length,u=t.slice(i,{col:{end:a}}),c=function(n){var e=(n=t.copy(n)).length,r=t.identity(e);return t.arange(e-1,-1,-1).forEach(function(e){t.sliceAssign(r,{row:e},t.divide(t.slice(r,{row:e}),n[e][e])),t.sliceAssign(n,{row:e},t.divide(t.slice(n,{row:e}),n[e][e])),t.arange(e).forEach(function(o){var i=t.multiply(n[o][e],-1),s=t.slice(n,{row:o}),a=t.multiply(t.slice(n,{row:e}),i);t.sliceAssign(n,{row:o},t.add(s,a));var u=t.slice(r,{row:o}),c=t.multiply(t.slice(r,{row:e}),i);t.sliceAssign(r,{row:o},t.add(u,c))})}),r}(t.slice(s,{row:{end:a}})),l=t.transpose(u);void 0===l[0].length&&(l=[l]);var f=t.multiply(t.multiply(c,l),e);return void 0===f.length&&(f=[[f]]),r?f.map(function(t){return t[0]}):f},jacobi:function(e){for(var r,o,i,s,a,u,c,l=1,f=e.length,h=t.identity(f,f),m=[];1===l;){for(a=e[0][1],i=0,s=1,r=0;r<f;r++)for(o=0;o<f;o++)r!=o&&a<n.abs(e[r][o])&&(a=n.abs(e[r][o]),i=r,s=o);for(u=e[i][i]===e[s][s]?e[i][s]>0?n.PI/4:-n.PI/4:n.atan(2*e[i][s]/(e[i][i]-e[s][s]))/2,(c=t.identity(f,f))[i][i]=n.cos(u),c[i][s]=-n.sin(u),c[s][i]=n.sin(u),c[s][s]=n.cos(u),h=t.multiply(h,c),e=t.multiply(t.multiply(t.inv(c),e),c),l=0,r=1;r<f;r++)for(o=1;o<f;o++)r!=o&&n.abs(e[r][o])>.001&&(l=1)}for(r=0;r<f;r++)m.push(e[r][r]);return[h,m]},rungekutta:function(t,n,e,r,o,i){var s,a,u;if(2===i)for(;r<=e;)o+=((s=n*t(r,o))+(a=n*t(r+n,o+s)))/2,r+=n;if(4===i)for(;r<=e;)o+=((s=n*t(r,o))+2*(a=n*t(r+n/2,o+s/2))+2*(u=n*t(r+n/2,o+a/2))+n*t(r+n,o+u))/6,r+=n;return o},romberg:function(t,e,r,o){for(var i,s,a,u,c,l=0,f=(r-e)/2,h=[],m=[],d=[];l<o/2;){for(c=t(e),a=e,u=0;a<=r;a+=f,u++)h[u]=a;for(i=h.length,a=1;a<i-1;a++)c+=(a%2!=0?4:2)*t(h[a]);c=f/3*(c+t(r)),d[l]=c,f/=2,l++}for(s=d.length,i=1;1!==s;){for(a=0;a<s-1;a++)m[a]=(n.pow(4,i)*d[a+1]-d[a])/(n.pow(4,i)-1);s=m.length,d=m,m=[],i++}return d},richardson:function(t,e,r,o){function i(t,n){for(var e,r=0,o=t.length;r<o;r++)t[r]===n&&(e=r);return e}for(var s,a,u,c,l,f=n.abs(r-t[i(t,r)+1]),h=0,m=[],d=[];o>=f;)s=i(t,r+o),a=i(t,r),m[h]=(e[s]-2*e[a]+e[2*a-s])/(o*o),o/=2,h++;for(c=m.length,u=1;1!=c;){for(l=0;l<c-1;l++)d[l]=(n.pow(4,u)*m[l+1]-m[l])/(n.pow(4,u)-1);c=d.length,m=d,d=[],u++}return m},simpson:function(t,n,e,r){for(var o,i=(e-n)/r,s=t(n),a=[],u=n,c=0,l=1;u<=e;u+=i,c++)a[c]=u;for(o=a.length;l<o-1;l++)s+=(l%2!=0?4:2)*t(a[l]);return i/3*(s+t(e))},hermite:function(t,n,e,r){for(var o,i=t.length,s=0,a=0,u=[],c=[],l=[],f=[];a<i;a++){for(u[a]=1,o=0;o<i;o++)a!=o&&(u[a]*=(r-t[o])/(t[a]-t[o]));for(c[a]=0,o=0;o<i;o++)a!=o&&(c[a]+=1/(t[a]-t[o]));l[a]=(1-2*(r-t[a])*c[a])*(u[a]*u[a]),f[a]=(r-t[a])*(u[a]*u[a]),s+=l[a]*n[a]+f[a]*e[a]}return s},lagrange:function(t,n,e){for(var r,o,i=0,s=0,a=t.length;s<a;s++){for(o=n[s],r=0;r<a;r++)s!=r&&(o*=(e-t[r])/(t[s]-t[r]));i+=o}return i},cubic_spline:function(n,e,r){for(var o,i,s=n.length,a=0,u=[],c=[],l=[],f=[],h=[],m=[];a<s-1;a++)f[a]=n[a+1]-n[a];for(l[0]=0,a=1;a<s-1;a++)l[a]=3/f[a]*(e[a+1]-e[a])-3/f[a-1]*(e[a]-e[a-1]);for(a=1;a<s-1;a++)u[a]=[],c[a]=[],u[a][a-1]=f[a-1],u[a][a]=2*(f[a-1]+f[a]),u[a][a+1]=f[a],c[a][0]=l[a];for(i=t.multiply(t.inv(u),c),o=0;o<s-1;o++)h[o]=(e[o+1]-e[o])/f[o]-f[o]*(i[o+1][0]+2*i[o][0])/3,m[o]=(i[o+1][0]-i[o][0])/(3*f[o]);for(o=0;o<s&&!(n[o]>r);o++);return e[o-=1]+(r-n[o])*h[o]+t.sq(r-n[o])*i[o]+(r-n[o])*t.sq(r-n[o])*m[o]},gauss_quadrature:function(){throw new Error("gauss_quadrature not yet implemented")},PCA:function(n){var e,r,o,i,s,a=n.length,u=n[0].length,c=0,l=[],f=[],h=[],m=[],d=[],p=[],g=[];for(c=0;c<a;c++)l[c]=t.sum(n[c])/u;for(c=0;c<u;c++)for(d[c]=[],e=0;e<a;e++)d[c][e]=n[e][c]-l[e];for(d=t.transpose(d),c=0;c<a;c++)for(p[c]=[],e=0;e<a;e++)p[c][e]=t.dot([d[c]],[d[e]])/(u-1);for(s=(o=t.jacobi(p))[0],f=o[1],g=t.transpose(s),c=0;c<f.length;c++)for(e=c;e<f.length;e++)f[c]<f[e]&&(r=f[c],f[c]=f[e],f[e]=r,h=g[c],g[c]=g[e],g[e]=h);for(i=t.transpose(d),c=0;c<a;c++)for(m[c]=[],e=0;e<i.length;e++)m[c][e]=t.dot([g[c]],[i[e]]);return[n,f,g,m]}}),function(n){for(var e=0;e<n.length;e++)(function(n){t.fn[n]=function(e,r){var o=this;return r?(setTimeout(function(){r.call(o,t.fn[n].call(o,e))},15),this):"number"==typeof t[n](this,e)?t[n](this,e):t(t[n](this,e))}})(n[e])}("add divide multiply subtract dot pow exp log abs norm angle".split(" "))}(n,Math),function(t,n){var e=[].slice,r=t.utils.isNumber,o=t.utils.isArray;function i(t,e,r,o){if(t>1||r>1||t<=0||r<=0)throw new Error("Proportions should be greater than 0 and less than 1");var i=(t*e+r*o)/(e+o);return(t-r)/n.sqrt(i*(1-i)*(1/e+1/o))}t.extend({zscore:function(){var n=e.call(arguments);return r(n[1])?(n[0]-n[1])/n[2]:(n[0]-t.mean(n[1]))/t.stdev(n[1],n[2])},ztest:function(){var r,i=e.call(arguments);return o(i[1])?(r=t.zscore(i[0],i[1],i[3]),1===i[2]?t.normal.cdf(-n.abs(r),0,1):2*t.normal.cdf(-n.abs(r),0,1)):i.length>2?(r=t.zscore(i[0],i[1],i[2]),1===i[3]?t.normal.cdf(-n.abs(r),0,1):2*t.normal.cdf(-n.abs(r),0,1)):(r=i[0],1===i[1]?t.normal.cdf(-n.abs(r),0,1):2*t.normal.cdf(-n.abs(r),0,1))}}),t.extend(t.fn,{zscore:function(t,n){return(t-this.mean())/this.stdev(n)},ztest:function(e,r,o){var i=n.abs(this.zscore(e,o));return 1===r?t.normal.cdf(-i,0,1):2*t.normal.cdf(-i,0,1)}}),t.extend({tscore:function(){var r=e.call(arguments);return 4===r.length?(r[0]-r[1])/(r[2]/n.sqrt(r[3])):(r[0]-t.mean(r[1]))/(t.stdev(r[1],!0)/n.sqrt(r[1].length))},ttest:function(){var o,i=e.call(arguments);return 5===i.length?(o=n.abs(t.tscore(i[0],i[1],i[2],i[3])),1===i[4]?t.studentt.cdf(-o,i[3]-1):2*t.studentt.cdf(-o,i[3]-1)):r(i[1])?(o=n.abs(i[0]),1==i[2]?t.studentt.cdf(-o,i[1]-1):2*t.studentt.cdf(-o,i[1]-1)):(o=n.abs(t.tscore(i[0],i[1])),1==i[2]?t.studentt.cdf(-o,i[1].length-1):2*t.studentt.cdf(-o,i[1].length-1))}}),t.extend(t.fn,{tscore:function(t){return(t-this.mean())/(this.stdev(!0)/n.sqrt(this.cols()))},ttest:function(e,r){return 1===r?1-t.studentt.cdf(n.abs(this.tscore(e)),this.cols()-1):2*t.studentt.cdf(-n.abs(this.tscore(e)),this.cols()-1)}}),t.extend({anovafscore:function(){var r,o,i,s,a,u,c,l,f=e.call(arguments);if(1===f.length){for(a=new Array(f[0].length),c=0;c<f[0].length;c++)a[c]=f[0][c];f=a}for(o=new Array,c=0;c<f.length;c++)o=o.concat(f[c]);for(i=t.mean(o),r=0,c=0;c<f.length;c++)r+=f[c].length*n.pow(t.mean(f[c])-i,2);for(r/=f.length-1,u=0,c=0;c<f.length;c++)for(s=t.mean(f[c]),l=0;l<f[c].length;l++)u+=n.pow(f[c][l]-s,2);return r/(u/(o.length-f.length))},anovaftest:function(){var n,o,i,s,a=e.call(arguments);if(r(a[0]))return 1-t.centralF.cdf(a[0],a[1],a[2]);var u=t.anovafscore(a);for(n=a.length-1,i=0,s=0;s<a.length;s++)i+=a[s].length;return o=i-n-1,1-t.centralF.cdf(u,n,o)},ftest:function(n,e,r){return 1-t.centralF.cdf(n,e,r)}}),t.extend(t.fn,{anovafscore:function(){return t.anovafscore(this.toArray())},anovaftes:function(){var n,e=0;for(n=0;n<this.length;n++)e+=this[n].length;return t.ftest(this.anovafscore(),this.length-1,e-this.length)}}),t.extend({qscore:function(){var o,i,s,a,u,c=e.call(arguments);return r(c[0])?(o=c[0],i=c[1],s=c[2],a=c[3],u=c[4]):(o=t.mean(c[0]),i=t.mean(c[1]),s=c[0].length,a=c[1].length,u=c[2]),n.abs(o-i)/(u*n.sqrt((1/s+1/a)/2))},qtest:function(){var n,r=e.call(arguments);3===r.length?(n=r[0],r=r.slice(1)):7===r.length?(n=t.qscore(r[0],r[1],r[2],r[3],r[4]),r=r.slice(5)):(n=t.qscore(r[0],r[1],r[2]),r=r.slice(3));var o=r[0],i=r[1];return 1-t.tukey.cdf(n,i,o-i)},tukeyhsd:function(n){for(var e=t.pooledstdev(n),r=n.map(function(n){return t.mean(n)}),o=n.reduce(function(t,n){return t+n.length},0),i=[],s=0;s<n.length;++s)for(var a=s+1;a<n.length;++a){var u=t.qtest(r[s],r[a],n[s].length,n[a].length,e,o,n.length);i.push([[s,a],u])}return i}}),t.extend({normalci:function(){var r,o=e.call(arguments),i=new Array(2);return r=4===o.length?n.abs(t.normal.inv(o[1]/2,0,1)*o[2]/n.sqrt(o[3])):n.abs(t.normal.inv(o[1]/2,0,1)*t.stdev(o[2])/n.sqrt(o[2].length)),i[0]=o[0]-r,i[1]=o[0]+r,i},tci:function(){var r,o=e.call(arguments),i=new Array(2);return r=4===o.length?n.abs(t.studentt.inv(o[1]/2,o[3]-1)*o[2]/n.sqrt(o[3])):n.abs(t.studentt.inv(o[1]/2,o[2].length-1)*t.stdev(o[2],!0)/n.sqrt(o[2].length)),i[0]=o[0]-r,i[1]=o[0]+r,i},significant:function(t,n){return t<n}}),t.extend(t.fn,{normalci:function(n,e){return t.normalci(n,e,this.toArray())},tci:function(n,e){return t.tci(n,e,this.toArray())}}),t.extend(t.fn,{oneSidedDifferenceOfProportions:function(n,e,r,o){var s=i(n,e,r,o);return t.ztest(s,1)},twoSidedDifferenceOfProportions:function(n,e,r,o){var s=i(n,e,r,o);return t.ztest(s,2)}})}(n,Math),n.models=function(){function t(t,e){var r=t.length,o=e[0].length-1,i=r-o-1,s=n.lstsq(e,t),a=n.multiply(e,s.map(function(t){return[t]})).map(function(t){return t[0]}),u=n.subtract(t,a),c=n.mean(t),l=n.sum(a.map(function(t){return Math.pow(t-c,2)})),f=n.sum(t.map(function(t,n){return Math.pow(t-a[n],2)})),h=l+f;return{exog:e,endog:t,nobs:r,df_model:o,df_resid:i,coef:s,predict:a,resid:u,ybar:c,SST:h,SSE:l,SSR:f,R2:l/h}}function e(e){var r,o,i=(r=e.exog,o=r[0].length,n.arange(o).map(function(e){var i=n.arange(o).filter(function(t){return t!==e});return t(n.col(r,e).map(function(t){return t[0]}),n.col(r,i))})),s=Math.sqrt(e.SSR/e.df_resid),a=i.map(function(t){var n=t.SST,e=t.R2;return s/Math.sqrt(n*(1-e))}),u=e.coef.map(function(t,n){return(t-0)/a[n]}),c=u.map(function(t){var r=n.studentt.cdf(t,e.df_resid);return 2*(r>.5?1-r:r)}),l=n.studentt.inv(.975,e.df_resid),f=e.coef.map(function(t,n){var e=l*a[n];return[t-e,t+e]});return{se:a,t:u,p:c,sigmaHat:s,interval95:f}}return{ols:function(r,o){var i=t(r,o),s=e(i),a=function(t){var e,r,o,i=t.R2/t.df_model/((1-t.R2)/t.df_resid);return{F_statistic:i,pvalue:1-(e=i,r=t.df_model,o=t.df_resid,n.beta.cdf(e/(o/r+e),r/2,o/2))}}(i),u=1-(1-i.R2)*((i.nobs-1)/i.df_resid);return i.t=s,i.f=a,i.adjust_R2=u,i}}}(),n.extend({buildxmatrix:function(){for(var t=new Array(arguments.length),e=0;e<arguments.length;e++){t[e]=[1].concat(arguments[e])}return n(t)},builddxmatrix:function(){for(var t=new Array(arguments[0].length),e=0;e<arguments[0].length;e++){t[e]=[1].concat(arguments[0][e])}return n(t)},buildjxmatrix:function(t){for(var e=new Array(t.length),r=0;r<t.length;r++)e[r]=t[r];return n.builddxmatrix(e)},buildymatrix:function(t){return n(t).transpose()},buildjymatrix:function(t){return t.transpose()},matrixmult:function(t,e){var r,o,i,s,a;if(t.cols()==e.rows()){if(e.rows()>1){for(s=[],r=0;r<t.rows();r++)for(s[r]=[],o=0;o<e.cols();o++){for(a=0,i=0;i<t.cols();i++)a+=t.toArray()[r][i]*e.toArray()[i][o];s[r][o]=a}return n(s)}for(s=[],r=0;r<t.rows();r++)for(s[r]=[],o=0;o<e.cols();o++){for(a=0,i=0;i<t.cols();i++)a+=t.toArray()[r][i]*e.toArray()[o];s[r][o]=a}return n(s)}},regress:function(t,e){var r=n.xtranspxinv(t),o=t.transpose(),i=n.matrixmult(n(r),o);return n.matrixmult(i,e)},regresst:function(t,e,r){var o=n.regress(t,e),i={anova:{}},s=n.jMatYBar(t,o);i.yBar=s;var a=e.mean();i.anova.residuals=n.residuals(e,s),i.anova.ssr=n.ssr(s,a),i.anova.msr=i.anova.ssr/(t[0].length-1),i.anova.sse=n.sse(e,s),i.anova.mse=i.anova.sse/(e.length-(t[0].length-1)-1),i.anova.sst=n.sst(e,a),i.anova.mst=i.anova.sst/(e.length-1),i.anova.r2=1-i.anova.sse/i.anova.sst,i.anova.r2<0&&(i.anova.r2=0),i.anova.fratio=i.anova.msr/i.anova.mse,i.anova.pvalue=n.anovaftest(i.anova.fratio,t[0].length-1,e.length-(t[0].length-1)-1),i.anova.rmse=Math.sqrt(i.anova.mse),i.anova.r2adj=1-i.anova.mse/i.anova.mst,i.anova.r2adj<0&&(i.anova.r2adj=0),i.stats=new Array(t[0].length);for(var u,c,l,f=n.xtranspxinv(t),h=0;h<o.length;h++)u=Math.sqrt(i.anova.mse*Math.abs(f[h][h])),c=Math.abs(o[h]/u),l=n.ttest(c,e.length-t[0].length-1,r),i.stats[h]=[o[h],u,c,l];return i.regress=o,i},xtranspx:function(t){return n.matrixmult(t.transpose(),t)},xtranspxinv:function(t){var e=n.matrixmult(t.transpose(),t);return n.inv(e)},jMatYBar:function(t,e){var r=n.matrixmult(t,e);return new n(r)},residuals:function(t,e){return n.matrixsubtract(t,e)},ssr:function(t,n){for(var e=0,r=0;r<t.length;r++)e+=Math.pow(t[r]-n,2);return e},sse:function(t,n){for(var e=0,r=0;r<t.length;r++)e+=Math.pow(t[r]-n[r],2);return e},sst:function(t,n){for(var e=0,r=0;r<t.length;r++)e+=Math.pow(t[r]-n,2);return e},matrixsubtract:function(t,e){for(var r=new Array(t.length),o=0;o<t.length;o++){r[o]=new Array(t[o].length);for(var i=0;i<t[o].length;i++)r[o][i]=t[o][i]-e[o][i]}return n(r)}}),n.jStat=n,n)},9982:function(t,n,e){var r;!function(){var n={};!function(t){"use strict";t.__esModule=!0,t.digestLength=32,t.blockSize=64;var n=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function e(t,e,r,o,i){for(var s,a,u,c,l,f,h,m,d,p,g,y,v;i>=64;){for(s=e[0],a=e[1],u=e[2],c=e[3],l=e[4],f=e[5],h=e[6],m=e[7],p=0;p<16;p++)g=o+4*p,t[p]=(255&r[g])<<24|(255&r[g+1])<<16|(255&r[g+2])<<8|255&r[g+3];for(p=16;p<64;p++)y=((d=t[p-2])>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,v=((d=t[p-15])>>>7|d<<25)^(d>>>18|d<<14)^d>>>3,t[p]=(y+t[p-7]|0)+(v+t[p-16]|0);for(p=0;p<64;p++)y=(((l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7))+(l&f^~l&h)|0)+(m+(n[p]+t[p]|0)|0)|0,v=((s>>>2|s<<30)^(s>>>13|s<<19)^(s>>>22|s<<10))+(s&a^s&u^a&u)|0,m=h,h=f,f=l,l=c+y|0,c=u,u=a,a=s,s=y+v|0;e[0]+=s,e[1]+=a,e[2]+=u,e[3]+=c,e[4]+=l,e[5]+=f,e[6]+=h,e[7]+=m,o+=64,i-=64}return o}var r=function(){function n(){this.digestLength=t.digestLength,this.blockSize=t.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return n.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},n.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},n.prototype.update=function(t,n){if(void 0===n&&(n=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=n,this.bufferLength>0){for(;this.bufferLength<64&&n>0;)this.buffer[this.bufferLength++]=t[r++],n--;64===this.bufferLength&&(e(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(n>=64&&(r=e(this.temp,this.state,t,r,n),n%=64);n>0;)this.buffer[this.bufferLength++]=t[r++],n--;return this},n.prototype.finish=function(t){if(!this.finished){var n=this.bytesHashed,r=this.bufferLength,o=n/536870912|0,i=n<<3,s=n%64<56?64:128;this.buffer[r]=128;for(var a=r+1;a<s-8;a++)this.buffer[a]=0;this.buffer[s-8]=o>>>24&255,this.buffer[s-7]=o>>>16&255,this.buffer[s-6]=o>>>8&255,this.buffer[s-5]=o>>>0&255,this.buffer[s-4]=i>>>24&255,this.buffer[s-3]=i>>>16&255,this.buffer[s-2]=i>>>8&255,this.buffer[s-1]=i>>>0&255,e(this.temp,this.state,this.buffer,0,s),this.finished=!0}for(a=0;a<8;a++)t[4*a+0]=this.state[a]>>>24&255,t[4*a+1]=this.state[a]>>>16&255,t[4*a+2]=this.state[a]>>>8&255,t[4*a+3]=this.state[a]>>>0&255;return this},n.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},n.prototype._saveState=function(t){for(var n=0;n<this.state.length;n++)t[n]=this.state[n]},n.prototype._restoreState=function(t,n){for(var e=0;e<this.state.length;e++)this.state[e]=t[e];this.bytesHashed=n,this.finished=!1,this.bufferLength=0},n}();t.Hash=r;var o=function(){function t(t){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var n=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new r).update(t).finish(n).clean();else for(var e=0;e<t.length;e++)n[e]=t[e];for(e=0;e<n.length;e++)n[e]^=54;for(this.inner.update(n),e=0;e<n.length;e++)n[e]^=106;for(this.outer.update(n),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate),e=0;e<n.length;e++)n[e]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function i(t){var n=(new r).update(t),e=n.digest();return n.clean(),e}function s(t,n){var e=new o(t).update(n),r=e.digest();return e.clean(),r}function a(t,n,e,r){var o=r[0];if(0===o)throw new Error("hkdf: cannot expand more");n.reset(),o>1&&n.update(t),e&&n.update(e),n.update(r),n.finish(t),r[0]++}t.HMAC=o,t.hash=i,t.default=i,t.hmac=s;var u=new Uint8Array(t.digestLength);t.hkdf=function(t,n,e,r){void 0===n&&(n=u),void 0===r&&(r=32);for(var i=new Uint8Array([1]),c=s(n,t),l=new o(c),f=new Uint8Array(l.digestLength),h=f.length,m=new Uint8Array(r),d=0;d<r;d++)h===f.length&&(a(f,l,e,i),h=0),m[d]=f[h++];return l.clean(),f.fill(0),i.fill(0),m},t.pbkdf2=function(t,n,e,r){for(var i=new o(t),s=i.digestLength,a=new Uint8Array(4),u=new Uint8Array(s),c=new Uint8Array(s),l=new Uint8Array(r),f=0;f*s<r;f++){var h=f+1;a[0]=h>>>24&255,a[1]=h>>>16&255,a[2]=h>>>8&255,a[3]=h>>>0&255,i.reset(),i.update(n),i.update(a),i.finish(c);for(var m=0;m<s;m++)u[m]=c[m];for(m=2;m<=e;m++){i.reset(),i.update(c).finish(c);for(var d=0;d<s;d++)u[d]^=c[d]}for(m=0;m<s&&f*s+m<r;m++)l[f*s+m]=u[m]}for(f=0;f<s;f++)u[f]=c[f]=0;for(f=0;f<4;f++)a[f]=0;return i.clean(),l}}(n);var o=n.default;for(var i in n)o[i]=n[i];"object"==typeof t.exports?t.exports=o:void 0===(r=function(){return o}.call(n,e,n,t))||(t.exports=r)}()}},n={};function e(r){var o=n[r];if(void 0!==o)return o.exports;var i=n[r]={id:r,loaded:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}e.m=t,e.amdO={},e.d=(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.u=t=>t+".js",e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),e.hmd=t=>((t=Object.create(t)).children||(t.children=[]),Object.defineProperty(t,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+t.id)}}),t),e.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),e.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;e.g.importScripts&&(t=e.g.location+"");var n=e.g.document;if(!t&&n&&(n.currentScript&&"SCRIPT"===n.currentScript.tagName.toUpperCase()&&(t=n.currentScript.src),!t)){var r=n.getElementsByTagName("script");if(r.length)for(var o=r.length-1;o>-1&&(!t||!/^http(s?):/.test(t));)t=r[o--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=t})(),e.b=document.baseURI||self.location.href;var r={};(()=>{"use strict";e.r(r),e.d(r,{_package:()=>Ie,initAutoTests:()=>Oe,test:()=>Me,tests:()=>h});const t=DG,n=grok;e(9982);const o=t.DataFrame.fromCsv('countries,fasta,smiles,molregno,LON,Zip Code,Street Address Line 1,ImageUrl,user_id,error_message,xray,flag,magnitude,CS-id,pdb_id,accel_a,time_offset,chart,fit,Questions,empty_number,empty_string\nBelgium,MSNFHNEHVMQFYRNNLKTKGVFGRQ,CC(C(=O)OCCCc1cccnc1)c2cccc(c2)C(=O)c3ccccc3,1480014,36.276729583740234,995042300,14016 ROUTE 31W,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,1,1,1QBS,1,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[2.497360340644872, 1.7058694986686864, 5.278052678195135, 0.16000320889028383],""points"":[{""x"":0.10000000149011612,""y"":2.374499797821045},{""x"":0.6000000238418579,""y"":2.6242473125457764},{""x"":1.100000023841858,""y"":2.367267608642578},{""x"":1.600000023841858,""y"":2.6723148822784424},{""x"":2.0999999046325684,""y"":2.6537344455718994},{""x"":2.5999999046325684,""y"":2.3651671409606934},{""x"":3.0999999046325684,""y"":2.5654284954071045},{""x"":3.5999999046325684,""y"":2.4160959720611572},{""x"":4.099999904632568,""y"":2.286726713180542},{""x"":4.599999904632568,""y"":2.5100042819976807},{""x"":5.099999904632568,""y"":1.6676985025405884},{""x"":5.599999904632568,""y"":0.680136501789093},{""x"":6.099999904632568,""y"":0.3391543924808502},{""x"":6.599999904632568,""y"":0.09038983285427094},{""x"":7.099999904632568,""y"":0.19802775979042053}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[7.525235855508179, 1.3186911876809984, 5.335672608564294, 0.7860743343958098],""points"":[{""x"":0.10000000149011612,""y"":7.988070487976074},{""x"":0.6000000238418579,""y"":7.018453121185303},{""x"":1.100000023841858,""y"":8.115279197692871},{""x"":1.600000023841858,""y"":7.486658096313477},{""x"":2.0999999046325684,""y"":7.396438121795654},{""x"":2.5999999046325684,""y"":7.477052211761475},{""x"":3.0999999046325684,""y"":6.913095474243164},{""x"":3.5999999046325684,""y"":8.01385498046875},{""x"":4.099999904632568,""y"":6.985900402069092},{""x"":4.599999904632568,""y"":6.970335960388184},{""x"":5.099999904632568,""y"":5.448817253112793},{""x"":5.599999904632568,""y"":2.5534818172454834},{""x"":6.099999904632568,""y"":1.893947958946228},{""x"":6.599999904632568,""y"":0.6340042352676392},{""x"":7.099999904632568,""y"":0.8403874039649963}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,100,abc\nBurundi,MDYKETLLMPKTDFPMRGGLPNKEPQIQEKW,COc1ccc2cc(ccc2c1)C(C)C(=O)Oc3ccc(C)cc3OC,1480015,36.276729583740234,995073444,80 STATE HIGHWAY 310,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,2,2,1ZP8,2,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[4.431460753103398, 2.1691498799246745, 5.266445597102774, 0.7825762827017926],""points"":[{""x"":0.10000000149011612,""y"":4.751083850860596},{""x"":0.6000000238418579,""y"":4.203000068664551},{""x"":1.100000023841858,""y"":4.415858745574951},{""x"":1.600000023841858,""y"":4.68414306640625},{""x"":2.0999999046325684,""y"":4.198400974273682},{""x"":2.5999999046325684,""y"":4.179222106933594},{""x"":3.0999999046325684,""y"":4.638473987579346},{""x"":3.5999999046325684,""y"":4.708553314208984},{""x"":4.099999904632568,""y"":4.291589260101318},{""x"":4.599999904632568,""y"":4.038082599639893},{""x"":5.099999904632568,""y"":3.4349939823150635},{""x"":5.599999904632568,""y"":1.2194708585739136},{""x"":6.099999904632568,""y"":1.1920831203460693},{""x"":6.599999904632568,""y"":0.5352635979652405},{""x"":7.099999904632568,""y"":0.3346920311450958}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[2.339458017970126, -1.0734184310171178, 4.746332950550934, 0.2482416857595658],""points"":[{""x"":0.10000000149011612,""y"":0.2139337658882141},{""x"":0.6000000238418579,""y"":0.4269562065601349},{""x"":1.100000023841858,""y"":0.2441573292016983},{""x"":1.600000023841858,""y"":0.146635964512825},{""x"":2.0999999046325684,""y"":0.08818462491035461},{""x"":2.5999999046325684,""y"":0.2560656666755676},{""x"":3.0999999046325684,""y"":0.42434045672416687},{""x"":3.5999999046325684,""y"":0.37111231684684753},{""x"":4.099999904632568,""y"":0.5581737160682678},{""x"":4.599999904632568,""y"":1.183590054512024},{""x"":5.099999904632568,""y"":1.5629843473434448},{""x"":5.599999904632568,""y"":2.3211288452148438},{""x"":6.099999904632568,""y"":2.229961633682251},{""x"":6.599999904632568,""y"":2.2560226917266846},{""x"":7.099999904632568,""y"":2.2142398357391357}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nCameroon,MIEVFLFGIVLGLIPITLAGLFVTAYLQYRRGDQLDL,COc1ccc2cc(ccc2c1)C(C)C(=O)OCCCc3cccnc3,1480016,36.26095962524414,995153596,30-56 WHITESTONE EXPY,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,3,3,2BDJ,3,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[4.6760652578642325, 0.9046956320756703, 5.651408971856738, 0.07738846012184185],""points"":[{""x"":0.10000000149011612,""y"":4.32425594329834},{""x"":0.6000000238418579,""y"":4.668442249298096},{""x"":1.100000023841858,""y"":4.379785060882568},{""x"":1.600000023841858,""y"":5.0345139503479},{""x"":2.0999999046325684,""y"":4.878653526306152},{""x"":2.5999999046325684,""y"":4.3451313972473145},{""x"":3.0999999046325684,""y"":4.336992263793945},{""x"":3.5999999046325684,""y"":5.037430286407471},{""x"":4.099999904632568,""y"":5.0092692375183105},{""x"":4.599999904632568,""y"":4.151902675628662},{""x"":5.099999904632568,""y"":3.4066951274871826},{""x"":5.599999904632568,""y"":2.3732759952545166},{""x"":6.099999904632568,""y"":1.673728108406067},{""x"":6.599999904632568,""y"":0.48574790358543396},{""x"":7.099999904632568,""y"":0.2783052325248718}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[2.938395863010111, -1.4658480661392117, 5.462702751996584, 0.3473139023615039],""points"":[{""x"":0.10000000149011612,""y"":0.4941710829734802},{""x"":0.6000000238418579,""y"":0.15323974192142487},{""x"":1.100000023841858,""y"":0.46373432874679565},{""x"":1.600000023841858,""y"":0.3370431363582611},{""x"":2.0999999046325684,""y"":0.5179030299186707},{""x"":2.5999999046325684,""y"":0.27899765968322754},{""x"":3.0999999046325684,""y"":0.22075064480304718},{""x"":3.5999999046325684,""y"":0.5789918899536133},{""x"":4.099999904632568,""y"":0.21169911324977875},{""x"":4.599999904632568,""y"":0.27857646346092224},{""x"":5.099999904632568,""y"":1.0906332731246948},{""x"":5.599999904632568,""y"":1.8520300388336182},{""x"":6.099999904632568,""y"":2.7177059650421143},{""x"":6.599999904632568,""y"":2.8680918216705322},{""x"":7.099999904632568,""y"":3.2413077354431152}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nCanada,MMELVLKTIIGPIVVGVVLRIVDKWLNKDK,CC(C(=O)NCCS)c1cccc(c1)C(=O)c2ccccc2,1480017,36.26095962524414,99515,30-56 WHITESTONE EXPY,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,4,4,1IAN,4,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[0.8597390975430008, 1.0957625732481946, 5.260537067987958, 0.07974187998177736],""points"":[{""x"":0.10000000149011612,""y"":0.8190152645111084},{""x"":0.6000000238418579,""y"":0.8421689867973328},{""x"":1.100000023841858,""y"":0.8740922212600708},{""x"":1.600000023841858,""y"":0.8924275040626526},{""x"":2.0999999046325684,""y"":0.8249067664146423},{""x"":2.5999999046325684,""y"":0.9327669143676758},{""x"":3.0999999046325684,""y"":0.8522974252700806},{""x"":3.5999999046325684,""y"":0.8174492716789246},{""x"":4.099999904632568,""y"":0.8394647240638733},{""x"":4.599999904632568,""y"":0.7139387726783752},{""x"":5.099999904632568,""y"":0.5561167597770691},{""x"":5.599999904632568,""y"":0.3276226818561554},{""x"":6.099999904632568,""y"":0.12479474395513535},{""x"":6.599999904632568,""y"":0.13006797432899475},{""x"":7.099999904632568,""y"":0.059702079743146896}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[5.760930219582546, 1.6591793293833013, 4.667155929720851, 0.7858109544121652],""points"":[{""x"":0.10000000149011612,""y"":6.156993389129639},{""x"":0.6000000238418579,""y"":5.236701965332031},{""x"":1.100000023841858,""y"":6.010560512542725},{""x"":1.600000023841858,""y"":5.495512962341309},{""x"":2.0999999046325684,""y"":6.087770462036133},{""x"":2.5999999046325684,""y"":5.79986572265625},{""x"":3.0999999046325684,""y"":5.597546577453613},{""x"":3.5999999046325684,""y"":5.520902156829834},{""x"":4.099999904632568,""y"":5.360654354095459},{""x"":4.599999904632568,""y"":3.5539746284484863},{""x"":5.099999904632568,""y"":1.577236294746399},{""x"":5.599999904632568,""y"":1.0001264810562134},{""x"":6.099999904632568,""y"":0.9305797815322876},{""x"":6.599999904632568,""y"":0.6033638715744019},{""x"":7.099999904632568,""y"":0.4203685522079468}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nColombia,MDRTDEVSNHTHDKPTLTWFEEIFEEYHSPFHN,FC(F)(F)c1ccc(OC2CCNCC2)cc1,1480029,36.3309440612793,995152050,1 COURT HOUSE SQUARE,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,5,5,4UJ1,5,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[6.4995088314153655, 2.4270351004539914, 5.178659535348579, 0.625653346241577],""points"":[{""x"":0.10000000149011612,""y"":6.496231555938721},{""x"":0.6000000238418579,""y"":6.42543363571167},{""x"":1.100000023841858,""y"":7.040063858032227},{""x"":1.600000023841858,""y"":6.1115403175354},{""x"":2.0999999046325684,""y"":6.680728435516357},{""x"":2.5999999046325684,""y"":6.406774520874023},{""x"":3.0999999046325684,""y"":6.611269474029541},{""x"":3.5999999046325684,""y"":5.889094352722168},{""x"":4.099999904632568,""y"":6.75344705581665},{""x"":4.599999904632568,""y"":6.361435890197754},{""x"":5.099999904632568,""y"":4.1666975021362305},{""x"":5.599999904632568,""y"":1.172118902206421},{""x"":6.099999904632568,""y"":0.801048994064331},{""x"":6.599999904632568,""y"":0.4640021026134491},{""x"":7.099999904632568,""y"":0.0010357667924836278}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[1.4734381347446401, 1.1649805188074196, 4.82958608866421, 0.09500545496710007],""points"":[{""x"":0.10000000149011612,""y"":1.5279096364974976},{""x"":0.6000000238418579,""y"":1.3559974431991577},{""x"":1.100000023841858,""y"":1.5246378183364868},{""x"":1.600000023841858,""y"":1.5567657947540283},{""x"":2.0999999046325684,""y"":1.4114240407943726},{""x"":2.5999999046325684,""y"":1.4045010805130005},{""x"":3.0999999046325684,""y"":1.4769829511642456},{""x"":3.5999999046325684,""y"":1.4875500202178955},{""x"":4.099999904632568,""y"":1.2991987466812134},{""x"":4.599999904632568,""y"":0.922961413860321},{""x"":5.099999904632568,""y"":0.6520044803619385},{""x"":5.599999904632568,""y"":0.15350978076457977},{""x"":6.099999904632568,""y"":0.1078903079032898},{""x"":6.599999904632568,""y"":0.17276449501514435},{""x"":7.099999904632568,""y"":0.14066608250141144}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nCosta Rica,MKSTKEEIQTIKTLLKDSRTAKYHKRLQIVL,CC(C)Cc1ccc(cc1)C(C)C(=O)N2CCCC2C(=O)OCCCc3ccccc3,1480018,36.3309440612793,995084218,4041 SOUTHWESTERN BLVD,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,6,6,2BPW,6,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[2.4833641843311227, -1.8945978742090062, 4.671127708092568, 0.24159861311815153],""points"":[{""x"":0.10000000149011612,""y"":0.0969524160027504},{""x"":0.6000000238418579,""y"":0.028483040630817413},{""x"":1.100000023841858,""y"":0.22087176144123077},{""x"":1.600000023841858,""y"":0.0068915546871721745},{""x"":2.0999999046325684,""y"":0.4305879771709442},{""x"":2.5999999046325684,""y"":0.44774115085601807},{""x"":3.0999999046325684,""y"":0.45346319675445557},{""x"":3.5999999046325684,""y"":0.2370593100786209},{""x"":4.099999904632568,""y"":0.4657953977584839},{""x"":4.599999904632568,""y"":1.155200719833374},{""x"":5.099999904632568,""y"":2.2294070720672607},{""x"":5.599999904632568,""y"":2.4311530590057373},{""x"":6.099999904632568,""y"":2.33846116065979},{""x"":6.599999904632568,""y"":2.608201026916504},{""x"":7.099999904632568,""y"":2.8136143684387207}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[5.224573521642033, 1.4454033924198528, 5.6014197746076535, 0.2823216054197577],""points"":[{""x"":0.10000000149011612,""y"":4.95027494430542},{""x"":0.6000000238418579,""y"":5.1754679679870605},{""x"":1.100000023841858,""y"":5.276752948760986},{""x"":1.600000023841858,""y"":5.589294910430908},{""x"":2.0999999046325684,""y"":5.616994857788086},{""x"":2.5999999046325684,""y"":5.120813846588135},{""x"":3.0999999046325684,""y"":5.340766906738281},{""x"":3.5999999046325684,""y"":4.876471042633057},{""x"":4.099999904632568,""y"":4.94999361038208},{""x"":4.599999904632568,""y"":5.162564754486084},{""x"":5.099999904632568,""y"":4.399557590484619},{""x"":5.599999904632568,""y"":2.7977969646453857},{""x"":6.099999904632568,""y"":1.0229872465133667},{""x"":6.599999904632568,""y"":0.48275601863861084},{""x"":7.099999904632568,""y"":0.10408931970596313}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nCuba,MHAILRYFIRRLFYHIFYKIYSLISKKHQSLPSDVRQF,COc1ccc2c(c1)c(CC(=O)N3CCCC3C(=O)Oc4ccc(C)cc4OC)c(C)n2C(=O)c5ccc(Cl)cc5,1480019,36.33115768432617,995081928,1227 US HIGHWAY 11,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,7,7,1QBS,7,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[3.320838679713925, -1.2421619987316728, 4.831325425225256, 0.3236011098403072],""points"":[{""x"":0.10000000149011612,""y"":0.3727470338344574},{""x"":0.6000000238418579,""y"":0.12365014106035233},{""x"":1.100000023841858,""y"":0.48422467708587646},{""x"":1.600000023841858,""y"":0.2264465093612671},{""x"":2.0999999046325684,""y"":0.16821794211864471},{""x"":2.5999999046325684,""y"":0.3879014551639557},{""x"":3.0999999046325684,""y"":0.5470244884490967},{""x"":3.5999999046325684,""y"":0.3419053554534912},{""x"":4.099999904632568,""y"":0.7655120491981506},{""x"":4.599999904632568,""y"":1.2346516847610474},{""x"":5.099999904632568,""y"":2.453336715698242},{""x"":5.599999904632568,""y"":2.9565491676330566},{""x"":6.099999904632568,""y"":3.335299491882324},{""x"":6.599999904632568,""y"":3.240290880203247},{""x"":7.099999904632568,""y"":3.1107218265533447}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[3.6401853521511094, 1.26211588875013, 5.399028074402744, 0.5089580830068091],""points"":[{""x"":0.10000000149011612,""y"":3.8585598468780518},{""x"":0.6000000238418579,""y"":3.6077206134796143},{""x"":1.100000023841858,""y"":3.855252265930176},{""x"":1.600000023841858,""y"":3.619039297103882},{""x"":2.0999999046325684,""y"":3.839388370513916},{""x"":2.5999999046325684,""y"":3.335283041000366},{""x"":3.0999999046325684,""y"":3.571141481399536},{""x"":3.5999999046325684,""y"":3.4155046939849854},{""x"":4.099999904632568,""y"":3.7316646575927734},{""x"":4.599999904632568,""y"":3.0680155754089355},{""x"":5.099999904632568,""y"":2.891066551208496},{""x"":5.599999904632568,""y"":1.6022753715515137},{""x"":6.099999904632568,""y"":0.7652576565742493},{""x"":6.599999904632568,""y"":0.6875326037406921},{""x"":7.099999904632568,""y"":0.5828871726989746}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nItaly,MSNFHNEHVMQFYRNNLKTKGVFGRQ,CC(C)Cc1ccc(cc1)C(C)C(=O)N2CCCC2C(=O)OCCO[N+](=O)[O-],1480020,36.33115768432617,99502,"168-46 91ST AVE., 2ND FLR",https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,8,8,1ZP8,8,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[2.293592105923809, 1.3781586549141835, 5.1025898038676605, 0.03493851245291291],""points"":[{""x"":0.10000000149011612,""y"":2.1287283897399902},{""x"":0.6000000238418579,""y"":2.267972230911255},{""x"":1.100000023841858,""y"":2.398442506790161},{""x"":1.600000023841858,""y"":2.5130622386932373},{""x"":2.0999999046325684,""y"":2.3255116939544678},{""x"":2.5999999046325684,""y"":2.127340793609619},{""x"":3.0999999046325684,""y"":2.47259783744812},{""x"":3.5999999046325684,""y"":2.131181478500366},{""x"":4.099999904632568,""y"":2.090421438217163},{""x"":4.599999904632568,""y"":2.02299165725708},{""x"":5.099999904632568,""y"":1.1105059385299683},{""x"":5.599999904632568,""y"":0.4494485855102539},{""x"":6.099999904632568,""y"":0.1375635862350464},{""x"":6.599999904632568,""y"":0.036351121962070465},{""x"":7.099999904632568,""y"":0.1619771122932434}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[5.953125499439879, 1.2528620255306528, 5.187637440149802, 0.3110348753260886],""points"":[{""x"":0.10000000149011612,""y"":5.6585283279418945},{""x"":0.6000000238418579,""y"":5.911152362823486},{""x"":1.100000023841858,""y"":5.924920082092285},{""x"":1.600000023841858,""y"":5.8469438552856445},{""x"":2.0999999046325684,""y"":5.929472923278809},{""x"":2.5999999046325684,""y"":6.190037727355957},{""x"":3.0999999046325684,""y"":6.236179828643799},{""x"":3.5999999046325684,""y"":6.141019344329834},{""x"":4.099999904632568,""y"":5.295210838317871},{""x"":4.599999904632568,""y"":5.265801906585693},{""x"":5.099999904632568,""y"":3.3722851276397705},{""x"":5.599999904632568,""y"":1.8299226760864258},{""x"":6.099999904632568,""y"":0.32690900564193726},{""x"":6.599999904632568,""y"":0.6274543404579163},{""x"":7.099999904632568,""y"":0.8441857099533081}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nRwanda,MPNSEPASLLELFNSIATQGELVRSLKAGNASK,CC(C)Cc1ccc(cc1)C(C)C(=O)N2CCCC2C(=O)OCCO,1480021,36.33137130737305,995037247,"168-46 91ST AVE., 2ND FLR",https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,9,9,2BDJ,9,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[3.8209972202654474, 1.3779216716448506, 5.299882228439686, 0.06040645519069608],""points"":[{""x"":0.10000000149011612,""y"":3.7821109294891357},{""x"":0.6000000238418579,""y"":3.542433023452759},{""x"":1.100000023841858,""y"":3.7008674144744873},{""x"":1.600000023841858,""y"":3.717301607131958},{""x"":2.0999999046325684,""y"":4.024452209472656},{""x"":2.5999999046325684,""y"":4.013899326324463},{""x"":3.0999999046325684,""y"":3.945094347000122},{""x"":3.5999999046325684,""y"":3.866621971130371},{""x"":4.099999904632568,""y"":3.7461626529693604},{""x"":4.599999904632568,""y"":3.3454740047454834},{""x"":5.099999904632568,""y"":2.61944317817688},{""x"":5.599999904632568,""y"":0.999405026435852},{""x"":6.099999904632568,""y"":0.46259793639183044},{""x"":6.599999904632568,""y"":0.054134611040353775},{""x"":7.099999904632568,""y"":0.05711187422275543}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[5.6318079657726035, 1.8495493770000595, 5.391793312471116, 0.17060707587348442],""points"":[{""x"":0.10000000149011612,""y"":5.458079814910889},{""x"":0.6000000238418579,""y"":5.554427146911621},{""x"":1.100000023841858,""y"":5.799983024597168},{""x"":1.600000023841858,""y"":5.364140033721924},{""x"":2.0999999046325684,""y"":5.864485740661621},{""x"":2.5999999046325684,""y"":5.4509806632995605},{""x"":3.0999999046325684,""y"":5.702574729919434},{""x"":3.5999999046325684,""y"":5.7314534187316895},{""x"":4.099999904632568,""y"":5.5123443603515625},{""x"":4.599999904632568,""y"":5.724395751953125},{""x"":5.099999904632568,""y"":4.354506969451904},{""x"":5.599999904632568,""y"":1.7307666540145874},{""x"":6.099999904632568,""y"":0.6305936574935913},{""x"":6.599999904632568,""y"":0.035183437168598175},{""x"":7.099999904632568,""y"":0.7575169205665588}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nSwitzerland,IRVVGRYLIEVWKAAGMDMDKVLFLWSSDEI,CN1CCC(CC1)Oc2ccc(cc2)C(F)(F)F,1480028,36.33137130737305,99504,92-11 179TH PLACE,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,9,10,1IAN,10,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[1.1190255865097471, 2.3163895161544437, 5.4968866182279195, 0.2035204047289052],""points"":[{""x"":0.10000000149011612,""y"":1.1057683229446411},{""x"":0.6000000238418579,""y"":1.1019697189331055},{""x"":1.100000023841858,""y"":1.0818607807159424},{""x"":1.600000023841858,""y"":1.062997817993164},{""x"":2.0999999046325684,""y"":1.046447515487671},{""x"":2.5999999046325684,""y"":1.1217249631881714},{""x"":3.0999999046325684,""y"":1.2166996002197266},{""x"":3.5999999046325684,""y"":1.215477705001831},{""x"":4.099999904632568,""y"":1.0581893920898438},{""x"":4.599999904632568,""y"":1.1747995615005493},{""x"":5.099999904632568,""y"":1.0181127786636353},{""x"":5.599999904632568,""y"":0.5344523191452026},{""x"":6.099999904632568,""y"":0.2569526433944702},{""x"":6.599999904632568,""y"":0.1912207305431366},{""x"":7.099999904632568,""y"":0.15060538053512573}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[3.1038581025805785, 2.0032224204185245, 5.087602825989163, 0.13277988512492753],""points"":[{""x"":0.10000000149011612,""y"":3.0498509407043457},{""x"":0.6000000238418579,""y"":2.805217742919922},{""x"":1.100000023841858,""y"":3.3415253162384033},{""x"":1.600000023841858,""y"":3.0549843311309814},{""x"":2.0999999046325684,""y"":3.250074863433838},{""x"":2.5999999046325684,""y"":3.0432586669921875},{""x"":3.0999999046325684,""y"":3.265852451324463},{""x"":3.5999999046325684,""y"":2.9475724697113037},{""x"":4.099999904632568,""y"":3.1929898262023926},{""x"":4.599999904632568,""y"":2.7460060119628906},{""x"":5.099999904632568,""y"":1.6175861358642578},{""x"":5.599999904632568,""y"":0.3006608486175537},{""x"":6.099999904632568,""y"":0.3444803059101105},{""x"":6.599999904632568,""y"":0.015537971630692482},{""x"":7.099999904632568,""y"":0.5527358055114746}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\n,,,,,,,,,,,,,,,,,,,,,');o.columns.add(t.Column.fromList(t.TYPE.BYTE_ARRAY,"BinaryImage",Array.from(new Uint8Array(11))));var i=function(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{u(r.next(t))}catch(t){i(t)}}function a(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,a)}u((r=r.apply(t,n||[])).next())})};const s=3e4,a=108e5,u=console.log.bind(console),c=console.info.bind(console),l=console.warn.bind(console),f=console.error.bind(console),h={},m="Auto Tests",d="Demo",p="Detectors",g="Core",y={};let v;var w,E,A,C,_,N,x,b,S,T;!function(t){t.notNull=function(t,n){if(null==t)throw new Error(`${null==n?"Value":n} not defined`)}}(w||(w={}));class I{constructor(t,n){this.catchUnhandled=!0,this.report=!1,void 0!==t&&(this.catchUnhandled=t),void 0!==n&&(this.report=n)}}class M{constructor(n,e,r,o){var a;this.category=n,this.name=e,null!=o||(o={}),null!==(a=o.timeout)&&void 0!==a||(o.timeout=s),this.options=o,this.test=()=>i(this,void 0,void 0,function*(){return new Promise((n,e)=>i(this,void 0,void 0,function*(){var o;let i="";try{t.Test.isInDebug;let n=yield r();try{i=null!==(o=null==n?void 0:n.toString())&&void 0!==o?o:""}catch(t){i="Can't convert test's result to string",console.error(`Can't convert test's result to string in the ${this.category}:${this.name} test`)}}catch(t){e(t)}n(i)}))})}}function O(t,n,e){null==h[v]&&(h[v]={}),null==h[v].tests&&(h[v].tests=[]),h[v].tests.push(new M(v,t,n,e))}function R(t,n=!0,e){if(e=e?`${e}, `:"",t!==n)throw new Error(`${e}Expected "${n}", got "${t}"`)}function L(t,n,e){var r;v=t,n(),h[v]&&(h[v].clear=null===(r=null==e?void 0:e.clear)||void 0===r||r,h[v].timeout=null==e?void 0:e.timeout,h[v].benchmarks=null==e?void 0:e.benchmarks,h[v].stressTests=null==e?void 0:e.stressTests,h[v].owner=null==e?void 0:e.owner)}function P(t,n){return t.replace(new RegExp(n.name,"gi"),n.nqName)}function D(e,r){var u,c,l,f,v,w,E,A,C,_;return i(this,void 0,void 0,function*(){const N=e.id;if(y[N])return;const x=r?r.tests:h;if("DevTools"===e.name||r&&"DevTools"===r._package.name)for(const t of window.dartTests){const n=t.name.split(/\s*\|\s*!/g);let e=null!==(u=n.pop())&&void 0!==u?u:t.name,r=n.length?g+": "+n.join(": "):g,o=e.split(" | ");e=o[o.length-1],o.unshift(r),o.pop(),r=o.join(": "),void 0===x[r]&&(x[r]={tests:[],clear:!0}),x[r].tests.push(new M(r,e,t.test,{isAggregated:!1,timeout:null!==(l=null===(c=t.options)||void 0===c?void 0:c.timeout)&&void 0!==l?l:s,skipReason:null===(f=t.options)||void 0===f?void 0:f.skipReason,owner:null===(v=t.options)||void 0===v?void 0:v.owner,benchmark:null!==(E=null===(w=t.options)||void 0===w?void 0:w.benchmark)&&void 0!==E&&E}))}const b=[],S=[],T=[],I=yield n.dapi.functions.filter(`package.id = "${N}"`).list(),O=new RegExp(/skip:\s*([^,\s]+)|wait:\s*(\d+)|cat:\s*([^,\s]+)|timeout:\s*(\d+)/g);for(const r of I){const u=r.options.test,c=r.options.demoPath;if(u&&Array.isArray(u)&&u.length)for(let e=0;e<u.length;e++){const o=u[e].matchAll(O),c={};Array.from(o).forEach(t=>{t[0].startsWith("skip")?c.skip=t[1]:t[0].startsWith("wait")?c.wait=parseInt(t[2]):t[0].startsWith("cat")?c.cat=t[3]:t[0].startsWith("timeout")&&(c.timeout=parseInt(t[4]))});const l=new M(null!==(A=c.cat)&&void 0!==A?A:m,1===u.length?r.name:`${r.name} ${e+1}`,()=>i(this,void 0,void 0,function*(){const t=yield n.functions.eval(P(u[e],r));if(c.wait&&(yield H(c.wait)),"boolean"==typeof t&&!t)throw`Failed: ${u[e]}, expected true, got ${t}`}),{skipReason:c.skip,timeout:t.Test.isInBenchmark?null!==(C=c.benchmarkTimeout)&&void 0!==C?C:a:null!==(_=c.timeout)&&void 0!==_?_:s});if(c.cat){const t=c.cat;void 0===x[t]&&(x[t]={tests:[],clear:!0}),x[t].tests||(x[t].tests=[]),x[t].tests.push(l)}else b.push(l)}if(c){const t=r.options.demoWait?parseInt(r.options.demoWait):void 0,e=new M(d,r.friendlyName,()=>i(this,void 0,void 0,function*(){yield H(300),n.shell.clearLastError(),yield r.apply(),yield H(t||2e3);const e=yield n.shell.lastError;if(e)throw new Error(e)}),{skipReason:r.options.demoSkip});S.push(e)}if(r.hasTag("semTypeDetector")){let t=o;r.options.testData&&(t=yield n.data.files.openTable(`System:AppData/${e.nqName}/${r.options.testData}`));const s=new M(p,r.friendlyName,()=>i(this,void 0,void 0,function*(){const n=[];console.log(`System:AppData/${e.nqName}/${r.options.testData}`);for(const e of t.clone().columns){const t=yield r.apply([e]);n.push(t||e.semType)}const o=n.filter(t=>t);R(o.length,1),r.options.testDataColumnName&&R(o[0],r.options.testDataColumnName)}),{skipReason:r.options.skipTest});T.push(s)}}y[N]=!0,b.length>0&&(x[m]={tests:b,clear:!0}),S.length>0&&(x[d]={tests:S,clear:!0}),T.length>0&&(x[p]={tests:T,clear:!1})})}function F(t,e){return i(this,void 0,void 0,function*(){null!=n.shell.reportTest?yield n.shell.reportTest(t,e):yield fetch(`${n.dapi.root}/log/tests/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(e)})})}function U(n){return i(this,void 0,void 0,function*(){return`${n.toString()}\n${n.stack?yield t.Logger.translateStackTrace(n.stack):""}`})}function B(e,r,o,a,c,l){var h,m,d,p,g,y,v,w,E,A,C,_,N,x;return i(this,void 0,void 0,function*(){let i;o.length=0;const b=null!=r&&e.name.toLowerCase()!==r.toLowerCase();let S=(null===(h=e.options)||void 0===h?void 0:h.skipReason)||b,T=b?"skipped":null===(m=e.options)||void 0===m?void 0:m.skipReason;if(console.log(O.name,S),t.Test.isInBenchmark&&!(null===(d=e.options)||void 0===d?void 0:d.benchmark))return void u(`SKIPPED: ${e.category} ${e.name} doesnt available in benchmark mode`);S||u(`Started ${e.category} ${e.name}`);const I=Date.now(),M=new Date(I).toISOString();try{if(S)i={name:e.name,owner:null!==(g=null===(p=e.options)||void 0===p?void 0:p.owner)&&void 0!==g?g:"",category:e.category,logs:"",date:M,success:!0,result:T,ms:0,skipped:!0,package:null!=c?c:"",flaking:t.Test.isReproducing};else{let r=null!=a?a:s;t.Test.isProfiling&&console.profile(`${e.category}: ${e.name}`),i={name:e.name,owner:null!==(v=null===(y=e.options)||void 0===y?void 0:y.owner)&&void 0!==v?v:"",category:e.category,logs:"",date:M,success:!0,result:null!==(w=(yield G(e.test,r)).toString())&&void 0!==w?w:"OK",ms:0,skipped:!1,package:null!=c?c:"",flaking:t.Test.isReproducing},t.Test.isProfiling&&(console.profileEnd(`${e.category}: ${e.name}`),n.shell.info(`Profiling of ${e.category}: ${e.name} finished \n Please ensure that you have opened DevTools (F12) / Performance panel before test starts.`))}}catch(t){f(t),i={name:e.name,owner:null!==(A=null===(E=e.options)||void 0===E?void 0:E.owner)&&void 0!==A?A:"",category:e.category,logs:"",date:M,success:!1,result:yield U(t),ms:0,skipped:!1,package:null!=c?c:"",flaking:!1}}if((null===(C=e.options)||void 0===C?void 0:C.isAggregated)&&i.result.constructor===t.DataFrame){const t=i.result.col("success");if(t&&(i.success=t.stats.sum===t.length),!l){const t=i.result;t.columns.remove("stack"),t.rows.removeWhere(t=>t.get("success")),i.result=t}i.result=i.result.toCsv()}if(i.logs=o.join("\n"),i.ms=Date.now()-I,S||u(`Finished ${e.category} ${e.name} for ${i.ms} ms`),i.category=e.category,i.name=e.name,i.owner=null!==(N=null===(_=e.options)||void 0===_?void 0:_.owner)&&void 0!==N?N:"",!b){let n={success:i.success,result:i.result,ms:i.ms,date:i.date,skipped:i.skipped,category:e.category,name:e.name,logs:i.logs,owner:i.owner,flaking:t.Test.isReproducing&&i.success,package:i.package};if(i.result.constructor==Object){const t=Object.keys(i.result).reduce((t,n)=>Object.assign(Object.assign({},t),{["result."+n]:i.result[n]}),{});n=Object.assign(Object.assign({},n),t)}n.result instanceof t.DataFrame&&(n.result=JSON.stringify(null===(x=n.result)||void 0===x?void 0:x.toJson())||""),yield F("package",n)}return i})}function k(t){const n=t.slice();return n.sort(()=>Math.random()-.5),n}function H(t){return i(this,void 0,void 0,function*(){yield new Promise(n=>setTimeout(n,t))})}function G(t,n,e="EXECUTION TIMEOUT"){return i(this,void 0,void 0,function*(){let r=null;const o=new Promise((t,o)=>{r=setTimeout(()=>{o(e)},n)});try{return yield Promise.race([t(),o])}finally{r&&clearTimeout(r)}})}t.DataFrame.fromColumns([t.Column.fromStrings("col",["val1","val2","val3"])]),function(t){t.UMAP="UMAP",t.T_SNE="t-SNE"}(E||(E={})),function(t){t.Levenshtein="Levenshtein",t.JaroWinkler="Jaro-Winkler",t.Manhattan="Manhattan String",t.Onehot="One-Hot"}(A||(A={})),function(t){t.Euclidean="Euclidean",t.Manhattan="Manhattan",t.Cosine="Vector Cosine"}(C||(C={})),function(t){t.Tanimoto="Tanimoto",t.Dice="Dice",t.Asymmetric="Asymmetric",t.BraunBlanquet="Braun-Blanquet",t.Cosine="Cosine",t.Kulczynski="Kulczynski",t.McConnaughey="Mc-Connaughey",t.RogotGoldberg="Rogot-Goldberg",t.Russel="Russel",t.Sokal="Sokal",t.Hamming="Hamming",t.Euclidean="Euclidean BitArray"}(_||(_={})),function(t){t.TanimotoIntArray="TanimotoIntArray"}(N||(N={})),(T=x||(x={})).Vector="Vector",T.String="String",T.BitArray="BitArray",T.MacroMolecule="MacroMolecule",T.Number="Number",T.IntArray="IntArray",T.NumberArray="NumberArray",function(t){t.Difference="Difference"}(b||(b={})),function(t){t.CommonItems="Common Items"}(S||(S={}));const V=new Uint32Array(65536),q=(t,n)=>{if(t.length<n.length){const e=n;n=t,t=e}return 0===n.length?t.length:t.length<=32?((t,n)=>{const e=t.length,r=n.length,o=1<<e-1;let i=-1,s=0,a=e,u=e;for(;u--;)V[t.charCodeAt(u)]|=1<<u;for(u=0;u<r;u++){let t=V[n.charCodeAt(u)];const e=t|s;t|=(t&i)+i^i,s|=~(t|i),i&=t,s&o&&a++,i&o&&a--,s=s<<1|1,i=i<<1|~(e|s),s&=e}for(u=e;u--;)V[t.charCodeAt(u)]=0;return a})(t,n):((t,n)=>{const e=n.length,r=t.length,o=[],i=[],s=Math.ceil(e/32),a=Math.ceil(r/32);for(let t=0;t<s;t++)i[t]=-1,o[t]=0;let u=0;for(;u<a-1;u++){let s=0,a=-1;const c=32*u,l=Math.min(32,r)+c;for(let n=c;n<l;n++)V[t.charCodeAt(n)]|=1<<n;for(let t=0;t<e;t++){const e=V[n.charCodeAt(t)],r=i[t/32|0]>>>t&1,u=o[t/32|0]>>>t&1,c=e|s,l=((e|u)&a)+a^a|e|u;let f=s|~(l|a),h=a&l;f>>>31^r&&(i[t/32|0]^=1<<t),h>>>31^u&&(o[t/32|0]^=1<<t),f=f<<1|r,h=h<<1|u,a=h|~(c|f),s=f&c}for(let n=c;n<l;n++)V[t.charCodeAt(n)]=0}let c=0,l=-1;const f=32*u,h=Math.min(32,r-f)+f;for(let n=f;n<h;n++)V[t.charCodeAt(n)]|=1<<n;let m=r;for(let t=0;t<e;t++){const e=V[n.charCodeAt(t)],s=i[t/32|0]>>>t&1,a=o[t/32|0]>>>t&1,u=e|c,f=((e|a)&l)+l^l|e|a;let h=c|~(f|l),d=l&f;m+=h>>>r-1&1,m-=d>>>r-1&1,h>>>31^s&&(i[t/32|0]^=1<<t),d>>>31^a&&(o[t/32|0]^=1<<t),h=h<<1|s,d=d<<1|a,l=d|~(u|h),c=h&u}for(let n=f;n<h;n++)V[t.charCodeAt(n)]=0;return m})(t,n)};var W=e(944);class ${constructor(t,n=!1){if(this._length=0,this._version=0,this._updateLevel=0,this._selectedCount=0,this._selectedCountVersion=-1,this._selectedIndexesVersion=-1,this._versionedName="",this._versionedNameVersion=-1,this.SHRINK_THRESHOLD=256,"number"==typeof t){const e=t,r=$._createBuffer(e);if(n)for(let t=0;t<r.length;t++)r[t]=-1;this._data=r,this._length=e}else{if(!(t instanceof Uint32Array))throw new Error("Invalid constructor");this._data=t,this._length=n}}getRawData(){return this._data}assureGoez(t,n){if(t<0)throw new Error(`${n} should be greater than zero`)}assureInRange(t,n,e,r){if(t<n||t>e)throw new Error(`Argument ${r} (${t}) out of range (${n}, ${e})`)}copy(t,n,e){for(let r=0;r<e;r++)n[r]=t[r]}copyFrom(t){if(this._length!=t._length)throw new Error(`Lengths differ (${this._length} != ${t._length})`);this.copy(t._data,this._data,this.lengthInInts),this._version++}get length(){return this._length}get buffer(){return this._data}set buffer(t){this._data=t,this._version++}get version(){return this._version}set version(t){this._version=t}incrementVersion(t=!0){this._version++}get lengthInInts(){return Math.floor((this._length+31)/32)}get versionedName(){return this._version==this._versionedNameVersion?this._versionedName:""}set versionedName(t){this._versionedName=t,this._versionedNameVersion=this._version}get self(){return this}setLength(t){if(t<0)throw new Error("should be >= 0");if(t==this._length)return;const n=Math.floor((t+31)/32);if(n>this._data.length||n+this.SHRINK_THRESHOLD<this._data.length){const t=new Uint32Array(n);this.copy(this._data,t,n>this._data.length?this._data.length:n),this._data=t}t>this._length&&(this._length%32>0&&(this._data[this.lengthInInts-1]&=(1<<(this._length%32&31))-1),this._data.fill(0,this.lengthInInts,n)),this._length=t,this._version++}static fromAnd(t,n){if(t._length!=n._length)throw new Error(`Lengths differ (${t._length} != ${n._length})`);const e=new $(t._length);e._length=t._length,e._data=$._createBuffer(e._length),e._version=0;const r=t.lengthInInts;for(let o=0;o<r;o++)e._data[o]=t._data[o]&n._data[o];return e}static _createBuffer(t){return new Uint32Array(Math.floor((t+31)/32))}static fromValues(t){const n=new $(t.length);n._version=0;for(let e=0;e<n._length;e++)t[e]&&(n._data[Math.floor(e/32)]|=1<<(e%32&31));return n}static fromSeq(t,n){const e=new $(t);for(let r=0;r<t;++r)e.setBit(r,n(r));return e._version=0,e}static fromString(t){return $.fromSeq(t.length,n=>"1"==t.charAt(n))}static fromUint32Array(t,n){const e=new $(t);return e._data=n,e}static fromBytes(t){const n=t.length,e=new $(8*n);e._data=new Uint32Array(Math.floor((n+3)/4)),e._length=8*n;let r=0,o=0;for(;n-o>=4;)e._data[r++]=255&t[o]|(255&t[o+1])<<8|(255&t[o+2])<<16|(255&t[o+3])<<24,o+=4;return n-o==3&&(e._data[r]=(255&t[o+2])<<16),n-o==2&&(e._data[r]|=(255&t[o+1])<<8),n-o==1&&(e._data[r]|=255&t[o]),e._version=0,e}toString(){return`${this._length} bits, ${this.countBits(!0)} set`}equals(t){if(this==t)return!0;if(null==t)return!1;if(this._length!=t._length)return!1;if(0==this._length)return!0;for(let n=0;n<this._data.length-1;n++)if(this._data[n]!=t._data[n])return!1;for(let n=8*(this._data.length-1);n<this._length;n++)if(this.getBit(n)!=t.getBit(n))return!1;return!0}clone(){const t=new $(0,!1);return t._data=Uint32Array.from(this._data),t._length=this._length,t._version=this._version,t}init(t,n){this.setAll(!1,!1);for(let n=0;n<this._length;n++)t(n)&&(this._data[Math.floor(n/32)]|=1<<(n%32&31));return this.incrementVersion(n),this}invert(t=!0){for(let t=0;t<this._data.length;t++)this._data[t]^=-1;this.incrementVersion(t)}setAll(t,n=!1){const e=t?-1:0,r=this.lengthInInts;for(let t=0;t<r;t++)this._data[t]=e;this.incrementVersion(n)}setIndexes(t,n=!0,e=!0,r=!0){e&&this.setAll(!n,!1);for(const e of t)this.setFast(e,n);this.incrementVersion(r)}everyIndex(t,n=!0){for(const e of t)if(this.getBit(e)!=n)return!1;return!0}anyIndex(t,n=!0){for(const e of t)if(this.getBit(e)==n)return!0;return!1}setWhere(t,n=!0,e=!0,r=!0,o=!0){if(e&&o&&this.setAll(!n,!1),o)for(let e=0;e<this._length;e++)t(e)&&this.setFast(e,n);else for(let e=0;e<this._length;e++)this.setFast(e,t(e)?n:!n);this.incrementVersion(r)}getRange(t,n){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(n,0,this._length,"to");const e=[];for(let r=t;r<n;++r)e.push(this.getBit(r));return $.fromValues(e)}getRangeAsList(t,n){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(n,0,this._length,"to");const e=[];for(let r=t;r<n;++r)e.push(this.getBit(r));return e}setRange(t,n,e,r=!0){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(n,0,this._length-1,"to");const o=Math.min(t,n),i=Math.max(t,n);if(e)for(let t=o;t<=i;t++)this.setTrue(t);else for(let t=o;t<=i;t++)this.setFalse(t);return this.incrementVersion(r),this}setRandom(t,n,e=!0){if(t<0||t>this._length)throw new Error("n must be >= 0 && <= Count");t>this._length/2&&this.setRandom(this._length-t,!n),this.setAll(!n);for(let e=0;e<t;){const t=Math.floor(Math.random()*this._length);this.getBit(t)!=n&&(this.setFast(t,n),e++)}this.incrementVersion(e)}and(t,n=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let n=0,e=this.lengthInInts;n<e;n++)this._data[n]&=t._data[n];return this.incrementVersion(n),this}andNot(t,n=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");const e=this.lengthInInts;for(let n=0;n<e;n++)this._data[n]&=~t._data[n];return this.incrementVersion(n),this}notAnd(t,n=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let n=0,e=this.lengthInInts;n<e;n++)this._data[n]=~this._data[n]&t._data[n];return this.incrementVersion(n),this}not(t=!0){for(let t=0,n=this.lengthInInts;t<n;t++)this._data[t]=~this._data[t];return this.incrementVersion(t),this}or(t,n=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let n=0,e=this.lengthInInts;n<e;n++)this._data[n]|=t._data[n];return this.incrementVersion(n),this}xor(t,n=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let n=0,e=this.lengthInInts;n<e;n++)this._data[n]^=t._data[n];return this.incrementVersion(n),this}insertAt(t,n,e=!1){if(this.assureInRange(t,0,this._length,"pos"),0==n)return;const r=this._length;this.setLength(this._length+n);for(let e=r-1;e>=t;e--)this.setBit(e+n,this.getBit(e));for(let r=t;r<t+n;r++)this.setBit(r,e)}removeAt(t,n=1){if(n<0)throw new Error("n cannot be negative");if(this.assureInRange(t,0,this._length-n,"pos"),this.contains(!0))for(let e=t;e<this._length-n;e++)this.setBit(e,this.getBit(e+n));this.setLength(this._length-n)}removeByMask(t,n=!0){if(this._length!=t.length)throw new Error("length != mask.length");if(t==this)this.setLength(t.countBits(!n)),this.setAll(!n);else{let e=0;for(let r=-1;-1!=(r=t.findNext(r,!n));)this.setFast(e++,this.getBit(r));this._length=e,this._version++}return this}getBit(t){return!!(this._data[Math.floor(t/32)]&1<<(31&t))}setBit(t,n,e=!0){this.setFast(t,n),this._version++}setFast(t,n){n?this._data[Math.floor(t/32)]|=1<<(31&t):this._data[Math.floor(t/32)]&=~(1<<(31&t))}setTrue(t){this._data[Math.floor(t/32)]|=1<<(31&t)}setFalse(t){this._data[Math.floor(t/32)]&=~(1<<(31&t))}trueCount(){return this.countBits(!0)}falseCount(){return this.countBits(!1)}countBits(t){if(0==this._length)return 0;if(this._selectedCountVersion!=this._version){this._selectedCount=0;const t=this.lengthInInts;let n=0;for(;n<t-1;n++)for(let t=this._data[n];0!=t;t>>>=8)this._selectedCount+=$._onBitCount[255&t];let e=this._data[n];const r=31&this._length;for(0!=r&&(e&=~(4294967295<<r));0!=e;e>>>=8)this._selectedCount+=$._onBitCount[255&e];this._selectedCountVersion=this._version}return t?this._selectedCount:this._length-this._selectedCount}countWhere(t){let n=0;if(this.trueCount()==this._length)for(let e=0;e<this._length;e++)n+=t(e)?1:0;else for(let e=-1;-1!=(e=this.findNext(e,!0));)n+=t(e)?1:0;return n}andWithCountBits(t,n){if(0==this._length)return 0;let e=0;const r=this.lengthInInts;let o=0;for(;o<r-1;o++)for(let n=this._data[o]&t._data[o];0!=n;n>>>=8)e+=$._onBitCount[255&n];let i=this._data[o]&t._data[o];const s=31&this._length;for(0!=s&&(i&=~(4294967295<<s));0!=i;i>>>=8)e+=$._onBitCount[255&i];return n?e:this._length-e}clear(){this.setLength(0)}contains(t){return this.findNext(-1,t)>=0}get allTrue(){return this.countBits(!0)==this._length}get allFalse(){return this.countBits(!1)==this._length}get anyTrue(){return this.countBits(!0)>0}get anyFalse(){return this.countBits(!1)>0}findNext(t,n=!0){if(this.assureInRange(t,-1,this._length,"index"),t>=this._length-1)return-1;let e=31&(t=t<0?0:t+1);const r=this.lengthInInts;for(let o=Math.floor(t/32);o<r;o++){let r=n?this._data[o]:~this._data[o];if(0!=e)r&=4294967295<<e&4294967295,e=0;else if(!n&&-4294967296==r)continue;for(let n=0;0!=r;n+=8,r>>>=8){const e=$._firstOnBit[255&r];if(e>=0)return(t=e+32*o+n)>=this._length?-1:t}}return-1}findPrev(t,n=!0){if(0==t)return-1;this.assureInRange(t,-1,this._length,"index");let e=1+(t=t<0?this._length-1:t-1)&31;for(let r=Math.floor(t/32);r>=0;r--){let t=n?this._data[r]:~this._data[r];0!=e&&(t&=~(4294967295<<e),e=0);for(let n=24;0!=t;n-=8,t<<=8){const e=$._lastOnBit[t>>>24];if(e>=0)return e+32*r+n}}return-1}}function Y(t={}){const n=function(){if(!t||!t.scoringMatrix||!t.alphabetIndexes)return(t,n)=>t===n?0:1;if(t.scoringMatrix.length!==Object.keys(t.alphabetIndexes).length)throw new Error("Scoring matrix and alphabet indexes should have the same length");const n=t.alphabetIndexes,e=t.scoringMatrix,r=Math.min(...Object.keys(n).map(t=>t.charCodeAt(0)))+1,o=new Float32Array((e.length+r)*(e.length+r));return Object.entries(n).forEach(([t,r])=>{const i=e[r];Object.entries(n).forEach(([n,r])=>{o[t.charCodeAt(0)*e.length+n.charCodeAt(0)]=i[r]})}),(t,n)=>1-o[t.charCodeAt(0)*e.length+n.charCodeAt(0)]}(),e=t?.threshold??0;return(t,r)=>{let o=0;const i=t.length,s=r.length,a=Math.ceil(Math.max(i,s)*(1-e));i!==s&&(o=Math.abs(i-s));let u=0;for(let e=0;e<Math.min(i,s);e++)if(t[e]!==r[e]&&(u+=n(t[e],r[e]),u>a))return 1;return u+=o,u/=Math.max(i,s),u}}$._onBitCount=Int8Array.from([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8]),$._firstOnBit=Int8Array.from([-1,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]),$._lastOnBit=Int8Array.from([-1,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]);const K={gapOpen:1,gapExtend:.6,scoringMatrix:[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],alphabetIndexes:{A:0,R:1,N:2,D:3,C:4,Q:5,E:6,G:7,H:8,I:9,L:10,K:11,M:12,F:13,P:14,S:15,T:16,W:17,Y:18,V:19,B:20,Z:21,X:22,"*":23}};var j;!function(t){t.HAMMING="Hamming",t.LEVENSHTEIN="Levenshtein",t.NEEDLEMANN_WUNSCH="Needlemann-Wunsch",t.MONOMER_CHEMICAL_DISTANCE="Monomer chemical distance"}(j||(j={}));const z={[j.HAMMING]:Y,[j.LEVENSHTEIN]:function(){return(t,n)=>q(t,n)/Math.max(t.length,n.length)},[j.NEEDLEMANN_WUNSCH]:function(t){const n=new Uint16Array(65536),{gapOpen:e,gapExtend:r,scoringMatrix:o,alphabetIndexes:i}={...K,...t};Object.entries(i).forEach(([t,e])=>n[t.charCodeAt(0)]=e);const s=[new Float32Array(1e4),new Float32Array(1e4)];return(t,i)=>{const a=new Array(t.length+1).fill(!1),u=new Array(t.length+1).fill(!1);let c=0,l=1;for(let n=1;n<t.length+1;n++)s[0][n]=-r-(n-1)*r,s[1][n]=0;s[0][0]=0;for(let f=1;f<i.length+1;f++){s[l][0]=-r-(f-1)*r;for(let h=1;h<t.length+1;h++){const m=s[c][h-1]+o[n[t.charCodeAt(h-1)]][n[i.charCodeAt(f-1)]],d=s[c][h]-(a[h]||1===f||f===i.length?r:e),p=s[l][h-1]-(u[h-1]||1===h||h===t.length?r:e);s[l][h]=Math.max(m,p,d),s[l][h]===m?(a[h]=!1,u[h]=!1):s[l][h]===p?(a[h]=!1,u[h]=!0):(a[h]=!0,u[h]=!1)}c=l,l=(l+1)%2}const f=Math.min(t.length,i.length);return(f-s[c][t.length])/f}},[j.MONOMER_CHEMICAL_DISTANCE]:Y};function X(t,n){const e=t.trueCount()+n.trueCount();if(0==e)return 1;const r=t.andWithCountBits(n,!0);return r/(e-r)}function Q(t){return t<=0?3402823e32:1/t-1}_.Tanimoto,_.Dice,_.Asymmetric,_.BraunBlanquet,_.Cosine,_.Kulczynski,_.McConnaughey,_.RogotGoldberg,_.Russel,_.Sokal,_.Hamming,_.Euclidean,_.Tanimoto,_.Dice,_.Asymmetric,_.BraunBlanquet,_.Cosine,_.Kulczynski,_.McConnaughey,_.RogotGoldberg,_.Russel,_.Sokal,_.Hamming,_.Euclidean,_.Tanimoto,_.Dice,_.Cosine,_.Tanimoto,_.Asymmetric,_.Cosine,_.Sokal,j.HAMMING,j.LEVENSHTEIN,j.MONOMER_CHEMICAL_DISTANCE,j.NEEDLEMANN_WUNSCH;const Z={[C.Euclidean]:function(t,n){let e=0;for(let r=0;r<t.length;r++)e+=Math.pow(t[r]-n[r],2);return Math.sqrt(e)},[C.Manhattan]:function(t,n){let e=0;for(let r=0;r<t.length;r++)e+=Math.abs(t[r]-n[r]);return e},[C.Cosine]:function(t,n){let e=0,r=0,o=0;for(let i=0;i<t.length;i++)e+=t[i]*n[i],r+=t[i]*t[i],o+=n[i]*n[i];return(1-e/(Math.sqrt(r)*Math.sqrt(o)))/2}},J={[A.Levenshtein]:q,[A.JaroWinkler]:W.Vb,[A.Manhattan]:function(t,n){if(t.length!==n.length)return 1;{let e=0;for(let r=1;r<t.length;r++)e+=t[r]==n[r]?0:1;return e/t.length}},[A.Onehot]:function(t,n){return t===n?0:1}},tt={[_.Tanimoto]:function(t,n){return 1-X(t,n)},[_.Dice]:function(t,n){return 1-function(t,n){const e=t.trueCount()+n.trueCount();return 0==e?0:2*t.andWithCountBits(n,!0)/e}(t,n)},[_.Asymmetric]:function(t,n){return 1-function(t,n){const e=Math.min(t.trueCount(),n.trueCount());return 0==e?0:t.andWithCountBits(n,!0)/e}(t,n)},[_.BraunBlanquet]:function(t,n){return Q(function(t,n){const e=Math.max(t.trueCount(),n.trueCount());return 0==e?0:t.andWithCountBits(n,!0)/e}(t,n))},[_.Cosine]:function(t,n){return 1-function(t,n){const e=t.trueCount()*n.trueCount();return 0==e?0:t.andWithCountBits(n,!0)/Math.sqrt(e)}(t,n)},[_.Kulczynski]:function(t,n){return Q(function(t,n){const e=t.trueCount()+n.trueCount(),r=t.trueCount()*n.trueCount();return 0==r?0:t.andWithCountBits(n,!0)*e/(2*r)}(t,n))},[_.McConnaughey]:function(t,n){return Q(function(t,n){const e=t.trueCount()+n.trueCount(),r=t.trueCount()*n.trueCount();return 0==r?0:(t.andWithCountBits(n,!0)*e-r)/r}(t,n))},[_.RogotGoldberg]:function(t,n){return Q(function(t,n){const e=t.andWithCountBits(n,!0),r=t.countBits(!0)+n.countBits(!0),o=t.length,i=o-r+e;return e==o||i==o?1:e/r+i/(2*o-r)}(t,n))},[_.Russel]:function(t,n){return Q(function(t,n){return 0==t.length?0:t.andWithCountBits(n,!0)/t.length}(t,n))},[_.Sokal]:function(t,n){return 1-function(t,n){const e=t.trueCount()+n.trueCount(),r=t.andWithCountBits(n,!0);return r/(2*e-3*r)}(t,n)},[_.Hamming]:function(t,n){return t.trueCount()+n.trueCount()-2*t.andWithCountBits(n,!0)},[_.Euclidean]:function(t,n){return Math.sqrt(t.trueCount()+n.trueCount()-2*t.andWithCountBits(n,!0))}},nt={[N.TanimotoIntArray]:function(t,n){return Q(X(new $(t,32*t.length),new $(n,32*n.length)))}},et={[b.Difference]:function(t){if(t&&null!=t.range&&t.range>0){const n=t.range;return(t,e)=>Math.abs(t-e)/n}return(t,n)=>Math.abs(t-n)}},rt={[S.CommonItems]:function(t){const n=function(t){const n=t?.mostCommon??new Set;return(t,e)=>{const r=t.length,o=e.length;let i=0,s=0,a=0;for(;s<r&&a<o;)t[s]===e[a]?(n?.has(t[s])||++i,++s,++a):t[s]<e[a]?++s:++a;return i}}(t);return(t,e)=>0===e.length||0===t.length?1e4:Math.min(t.length,e.length)/(n(t,e)+1e-4)}},ot={[x.Vector]:{[C.Euclidean]:Z[C.Euclidean],[C.Manhattan]:Z[C.Manhattan],[C.Cosine]:Z[C.Cosine]},[x.String]:{[A.Levenshtein]:J[A.Levenshtein],[A.JaroWinkler]:J[A.JaroWinkler],[A.Manhattan]:J[A.Manhattan],[A.Onehot]:J[A.Onehot]},[x.BitArray]:{[_.Tanimoto]:tt[_.Tanimoto],[_.Dice]:tt[_.Dice],[_.Asymmetric]:tt[_.Asymmetric],[_.BraunBlanquet]:tt[_.BraunBlanquet],[_.Cosine]:tt[_.Cosine],[_.Kulczynski]:tt[_.Kulczynski],[_.McConnaughey]:tt[_.McConnaughey],[_.RogotGoldberg]:tt[_.RogotGoldberg],[_.Russel]:tt[_.Russel],[_.Sokal]:tt[_.Sokal]},[x.MacroMolecule]:{[j.HAMMING]:z[j.HAMMING],[j.LEVENSHTEIN]:z[j.LEVENSHTEIN],[j.NEEDLEMANN_WUNSCH]:z[j.NEEDLEMANN_WUNSCH],[j.MONOMER_CHEMICAL_DISTANCE]:z[j.MONOMER_CHEMICAL_DISTANCE]},[x.Number]:{[b.Difference]:et[b.Difference]},[x.IntArray]:{[N.TanimotoIntArray]:nt[N.TanimotoIntArray]},[x.NumberArray]:{[S.CommonItems]:rt[S.CommonItems]}};Object.keys(ot).reduce((t,n)=>{for(const e of Object.keys(ot[n]))t[e]=n;return t},{});const it=ui,st="bypassLargeDataWarning";var at,ut,ct,lt,ft,ht,mt;e(5540),(ut=at||(at={})).EUCLIDEAN="EUCLIDEAN",ut.MANHATTAN="MANHATTAN",at.EUCLIDEAN,at.MANHATTAN,(lt=ct||(ct={})).HAMMING="Hamming",lt.EUCLIDEAN="Euclidean",lt.VECTOR_COSINE="Vector Cosine",lt.MANHATTAN="Manhattan",lt.TANIMOTO="Tanimoto",lt.LEVENSTEIN="Levenshtein",lt.NEEDLEMAN_WUNSCH="Needlemann-Wunsch",lt.MONOMER_CHEMICAL_DISTANCE="Monomer chemical distance",lt.SOKAL="Sokal",lt.COSINE="Cosine",lt.ASYMMETRIC="Asymmetric",lt.Difference="Difference",lt.OneHot="One-Hot",ct.HAMMING,ct.EUCLIDEAN,ct.MANHATTAN,ct.VECTOR_COSINE,ct.TANIMOTO,ct.LEVENSTEIN,ct.NEEDLEMAN_WUNSCH,ct.MONOMER_CHEMICAL_DISTANCE,ct.SOKAL,ct.COSINE,ct.ASYMMETRIC,ct.Difference,ct.OneHot,ct.HAMMING,ct.EUCLIDEAN,ct.MANHATTAN,ct.TANIMOTO,ct.SOKAL,ct.COSINE,ct.ASYMMETRIC,ct.LEVENSTEIN,ct.NEEDLEMAN_WUNSCH,ct.MONOMER_CHEMICAL_DISTANCE,ct.Difference,ct.OneHot,ct.VECTOR_COSINE,new Set([ct.HAMMING,ct.LEVENSTEIN,ct.NEEDLEMAN_WUNSCH,ct.MONOMER_CHEMICAL_DISTANCE,ct.OneHot]),new Set([ct.HAMMING,ct.EUCLIDEAN,ct.MANHATTAN,ct.MONOMER_CHEMICAL_DISTANCE,ct.LEVENSTEIN,ct.NEEDLEMAN_WUNSCH,ct.TANIMOTO,ct.COSINE,ct.VECTOR_COSINE,ct.SOKAL,ct.ASYMMETRIC,ct.OneHot,ct.Difference]),new Set([ct.EUCLIDEAN,ct.MANHATTAN,ct.OneHot,ct.Difference,ct.VECTOR_COSINE]),new Set([ct.EUCLIDEAN,ct.MANHATTAN,ct.Difference,ct.VECTOR_COSINE]),new Set([ct.EUCLIDEAN,ct.MANHATTAN,ct.Difference]),new Set([ct.TANIMOTO,ct.COSINE,ct.SOKAL,ct.ASYMMETRIC]),function(t){t.ADD="ADD",t.SUB="SUB",t.MULT="MULT"}(ft||(ft={})),function(t){t.SQUARE="SQUARE",t.INVERSE="INVERSE",t.TRANSPOSE="TRANSPOSE",t.NORM="NORM",t.COLUMN_NORM="COLUMN_NORM"}(ht||(ht={})),function(t){t.SCALARMULT="SCALARMULT",t.SCALARADD="SCALARADD",t.SCALARPOW="SCALARPOW"}(mt||(mt={})),Object.prototype.toString;const dt="dimensionality-reducer-terminate-event";var pt,gt;(gt=pt||(pt={})).EUCLIDEAN="EUCLIDEAN",gt.MANHATTAN="MANHATTAN";const yt=t=>null==t;function vt(t,n){return`${n} (${t.length>4?`${t.length} columns`:t.map(t=>t.name).join(", ")})`}async function wt(r,o,i,s,a,u,c,l=!0,f=!1,h={preprocessingFuncArgs:[]},m={},d=null,p={},g){const y={showXAxis:!1,showYAxis:!1,showXSelector:!1,showYSelector:!1};if(o.length!==s.length||o.length!==u.length||o.length!==a.length||o.length!==h.preprocessingFuncArgs.length)throw new Error("columns, metrics and preprocessing functions, weights and function argumentsmust have the same length");const v=l?m.tableView??n.shell.tableView(r.name)??n.shell.addTableView(r):null,w=async()=>{const w=t.TaskBarProgressIndicator.create(`Initializing ${m.scatterPlotName??"dimensionality reduction"} ...`);let E;try{const A=function(t){const n=["Embed_X","Embed_Y"],e=t.columns.names().filter(t=>t.includes(n[0])).length+1;return n.map(t=>`${t}_${e}`)}(r);function C(n,e,s){let a=null,u=null;r.columns.names().includes(A[0])?(a=r.columns.byName(A[0]),u=r.columns.byName(A[1])):(a=r.columns.add(t.Column.float(A[0],r.rowCount)),u=r.columns.add(t.Column.float(A[1],r.rowCount)),l&&!E&&(E=v.scatterPlot({...y,x:A[0],y:A[1],title:m.scatterPlotName??vt(o,i)}))),m["show-scatterplot-progress"]&&(E?.root&&it.setUpdateIndicator(E.root,!1),a.init(t=>s[0]?s[0][t]:void 0),u.init(t=>s[1]?s[1][t]:void 0));const c=n/e*100;w.update(c,`Running ${m.scatterPlotName??"dimensionality reduction"}... ${c.toFixed(0)}%`)}async function _(){r.columns.add(t.Column.float(A[0],r.rowCount)),r.columns.add(t.Column.float(A[1],r.rowCount));let f=null;l&&(E=v.scatterPlot({...y,x:A[0],y:A[1],title:m.scatterPlotName??vt(o,i)}),it.setUpdateIndicator(E.root,!0));const d=n.events.onViewerClosed.subscribe(t=>{const e=t.args.viewer;e?.getOptions()?.look?.title&&E?.getOptions()?.look?.title&&e?.getOptions()?.look?.title===E?.getOptions()?.look?.title&&(n.events.fireCustomEvent(dt,{}),d.unsubscribe(),f?.(),w.close())}),p=new Promise(async(t,l)=>{try{f=t;const l=[];let d=s,p=a,y=c;if(g&&o.every(t=>t.isNumerical)){const t=o.map(t=>t.toList()),n=new Array(r.rowCount).fill(0).map((t,n)=>new Float32Array(o.length));for(let e=0;e<o.length;++e)for(let o=0;o<r.rowCount;++o)n[o][e]=t[e][o];h.distanceFnArgs=[{}],l.push({entries:n,options:{}}),d=[g],p=[1],y="MANHATTAN"}else for(let t=0;t<u.length;++t){const n=u[t];if(h.distanceFnArgs||(h.distanceFnArgs=[]),n){const e=n.inputs[0].name,r=n.inputs[1].name,{entries:i,options:a}=await n.apply({[e]:o[t],[r]:s[t],...h.preprocessingFuncArgs[t]??{}});l.push({entries:i,options:a}),h.distanceFnArgs.push(a)}else{const n=o[t].toList(),e={};l.push({entries:n,options:e}),h.distanceFnArgs.push(e)}}t(await async function(t,r,o,i,s,a,u){let c=await async function(t,r,o,i,s,a,u){if(!a.distanceFnArgs)throw new Error("options.distanceFnArgs must be defined");if(t.length!==r.length||t.length!==a.distanceFnArgs.length||t.length!==i.length)throw new Error("data, metrics and options and weights must have the same length");return new Promise(function(c,l){const f=new Worker(new URL(e.p+e.u(234),e.b));f.postMessage({columnsData:t,distanceMetrics:r,method:o,options:a,weights:i,aggregationMethod:s});const h=n.events.onCustomEvent(dt).subscribe(()=>{try{f?.terminate()}finally{h.unsubscribe()}});f.onmessage=({data:{error:t,embedding:n,epochNum:e,epochsLength:r}})=>{yt(e)||yt(r)?(h.unsubscribe(),t?l(t):c(n),setTimeout(()=>f.terminate(),100)):u&&u(e,r,n)}})}(t,o,r,i,s,a,u);return c=c.map(t=>function(t){const n=t.length;let e=0,r=0;for(let o=0;o<n;++o)e+=t[o],r+=Math.pow(t[o],2);const o=e/n,i=1/Math.sqrt(r/n-Math.pow(o,2));for(let e=0;e<n;++e)t[e]=(t[e]-o)*i;return t}(t)),c}(l.map(t=>t.entries),i,d,p,c,h,m[st]?void 0:C))}catch(t){l(t)}}),_=await p;return w.close(),d.unsubscribe(),_}const N=await _();if(f&&N){const x=t.TaskBarProgressIndicator.create("Clustering embeddings ...");try{const b=await function(t,n,r,o){return i=this,s=void 0,u=function*(){return new Promise(function(i,s){const a=new Worker(new URL(e.p+e.u(682),e.b));a.postMessage({embedX:t,embedY:n,minPts:o,epsilon:r}),a.onmessage=({data:{error:t,clusters:n}})=>{a.terminate(),t?s(t):i(n)}})},new((a=void 0)||(a=Promise))(function(t,n){function e(t){try{o(u.next(t))}catch(t){n(t)}}function r(t){try{o(u.throw(t))}catch(t){n(t)}}function o(n){var o;n.done?t(n.value):(o=n.value,o instanceof a?o:new a(function(t){t(o)})).then(e,r)}o((u=u.apply(i,s||[])).next())});var i,s,a,u}(N[0],N[1],h.dbScanEpsilon??.01,h.dbScanMinPts??4),S=r.columns.getUnusedName("Cluster (DBSCAN)");r.columns.addNewString(S).init(t=>b[t].toString()),E&&(E.props.colorColumnName=S)}catch(T){n.shell.error("Clustering embeddings failed"),console.error(T)}finally{x.close()}}if(N){const I=r.columns.byName(A[0]),M=r.columns.byName(A[1]);if(I.init(t=>N[0][t]),M.init(t=>N[1][t]),d)try{const O=d.inputs[0].name,R=d.inputs[1].name;await d.prepare({[O]:I,[R]:M,...p}).call(!0)}catch(L){n.shell.error("Post-processing failed"),console.error(L)}if(E)return it.setUpdateIndicator(E.root,!1),E.helpUrl="/help/compute/sequence-space",E}}catch(P){n.shell.error("Dimensionality reduction failed"),console.error(P),w.close(),E&&it.setUpdateIndicator(E.root,!1)}};return new Promise(async(t,n)=>{try{if(m.fastRowCount&&r.rowCount>m.fastRowCount&&!m[st])it.dialog().add(it.divText("Analysis might take several minutes. Do you want to continue?")).onOK(async()=>{try{const n=await w();t(n)}catch(t){n(t)}}).onCancel(()=>t(void 0)).show();else{const n=await w();t(n)}}catch(t){n(t)}})}var Et=function(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{u(r.next(t))}catch(t){i(t)}}function a(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,a)}u((r=r.apply(t,n||[])).next())})};const At={SUBJ:"subj",STUDY:"study",SITE:"site",AGE:"age",SEX:"sex",RACE:"race",DISEASE:"disease",WEIGHT:"weight",HEIGHT:"height"};function Ct(t,e,r){return Et(this,void 0,void 0,function*(){const o=n.data.demo.demog(100);n.shell.addTableView(o),R(!!(yield wt(o,t.map(t=>o.col(t)),e,r,t.map(()=>1),t.map(()=>{}),"EUCLIDEAN",!0,!0,{preprocessingFuncArgs:t.map(()=>({}))})),!0,"No scatterplot returned");const i=o.columns.names().filter(t=>t.toLowerCase().startsWith("embed"));R(i.length,2,"Wrong number of embeddings added"),R(!!o.columns.names().find(t=>t.toLowerCase().startsWith("cluster")),!0,"No cluster column added");for(const t of i){const n=o.col(t);R(new Array(n.length).fill(null).every((t,e)=>!n.isNone(e)&&!isNaN(n.get(e))),!0,"Embedding column has null-ish values")}yield new Promise(t=>setTimeout(t,500))})}L("Dimensionality reduction: UMAP",()=>{O("Numeric column",()=>Et(void 0,void 0,void 0,function*(){yield Ct([At.AGE],E.UMAP,[b.Difference])}),{timeout:3e4}),O("String column",()=>Et(void 0,void 0,void 0,function*(){yield Ct([At.SEX],E.UMAP,[A.Onehot])}),{timeout:3e4}),O("Numeric and string columns",()=>Et(void 0,void 0,void 0,function*(){yield Ct([At.SEX,At.AGE],E.UMAP,[A.Onehot,b.Difference])})),O("All demog columns",()=>Et(void 0,void 0,void 0,function*(){const e=n.data.demo.demog(10).columns.toList().filter(t=>Object.values(At).includes(t.name)),r=e.map(n=>n.type===t.COLUMN_TYPE.STRING?A.Onehot:b.Difference),o=e.map(t=>t.name);yield Ct(o,E.UMAP,r)}))}),L("Dimensionality reduction: T-SNE",()=>{O("Numeric column",()=>Et(void 0,void 0,void 0,function*(){yield Ct([At.AGE],E.T_SNE,[b.Difference])}),{timeout:3e4}),O("String column",()=>Et(void 0,void 0,void 0,function*(){yield Ct([At.SEX],E.T_SNE,[A.Onehot])}),{timeout:3e4}),O("Numeric and string columns",()=>Et(void 0,void 0,void 0,function*(){yield Ct([At.SEX,At.AGE],E.T_SNE,[A.Onehot,b.Difference])})),O("All demog columns",()=>Et(void 0,void 0,void 0,function*(){const e=n.data.demo.demog(10).columns.toList().filter(t=>Object.values(At).includes(t.name)),r=e.map(n=>n.type===t.COLUMN_TYPE.STRING?A.Onehot:b.Difference),o=e.map(t=>t.name);yield Ct(o,E.T_SNE,r)}))});const _t={i32:"HEAP32",f32:"HEAPF32"},Nt={i32:Int32Array,f32:Float32Array},xt={i32:2,f32:2},bt={i32:DG.Column.fromInt32Array,f32:DG.Column.fromFloat32Array};class St{constructor(t){this.data=t}complementArrOfParams(t){t.push(this.data)}complementArrOfTypes(t){t.push("number")}allocateMemoryForBuffer(t){}isMemoryForBufferAllocated(){return!0}putDataToBuffer(t){}getDataFromBuffer(t){}freeBuffer(t){}}class Tt extends St{constructor(t,n,e=!1){super(t),this.type=n,this.toUpdate=e,this.buf=0,this.numOfRows=t.length}complementArrOfParams(t){t.push(this.buf),t.push(this.numOfRows)}complementArrOfTypes(t){t.push("number"),t.push("number")}allocateMemoryForBuffer(t){this.buf=t._malloc(this.numOfRows*Nt[this.type].BYTES_PER_ELEMENT)}isMemoryForBufferAllocated(){return 0!=this.buf}putDataToBuffer(t){if(this.isMemoryForBufferAllocated()){const n=this.type,e=xt[n],r=t[_t[n]];let o=null;const i=this.data;o="int"==i.type&&"i32"==n||"double"==i.type&&"f32"==n?i.getRawData():new Nt[n](i.getRawData()),o&&r.set(o,this.buf>>e)}}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const n=this.type,e=t[_t[n]],r=this.buf,o=Nt[n].BYTES_PER_ELEMENT,i=this.data.getRawData();for(let t=0;t<this.numOfRows;t++)i[t]=e[r/o+t]}}freeBuffer(t){this.isMemoryForBufferAllocated()&&(t._free(this.buf),this.buf=0)}}class It extends Tt{constructor(t,n){super([],t,!0),this.numOfRows=n}putDataToBuffer(t){}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const n=this.type,e=t[_t[n]],r=this.buf,o=bt[n],i=new Nt[n](this.numOfRows);for(let t=0;t<i.length;t++)i[t]=e[r/i.BYTES_PER_ELEMENT+t];this.data=o("name",i)}}}class Mt extends St{constructor(t,n,e=!1){super(t),this.type=n,this.toUpdate=e,this.buf=0,this.numOfColumns=t.length,this.numOfRows=t[0].length}complementArrOfParams(t){t.push(this.buf),t.push(this.numOfRows),t.push(this.numOfColumns)}complementArrOfTypes(t){t.push("number"),t.push("number"),t.push("number")}allocateMemoryForBuffer(t){this.buf=t._malloc(this.numOfRows*this.numOfColumns*Nt[this.type].BYTES_PER_ELEMENT)}isMemoryForBufferAllocated(){return 0!=this.buf}putDataToBuffer(t){if(this.isMemoryForBufferAllocated()){const n=this.type,e=xt[n],r=t[_t[n]],o=Nt[n].BYTES_PER_ELEMENT;for(let t=0;t<this.numOfColumns;t++){let i=null;const s=this.data[t];i="int"==s.type&&"i32"==n||"double"==s.type&&"f32"==n?s.getRawData():new Nt[n](s.getRawData()),null!=i&&r.set(i,this.buf+t*this.numOfRows*o>>e)}}}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const n=this.type,e=t[_t[n]],r=this.numOfRows,o=this.numOfColumns,i=new Nt[n](e.buffer,this.buf,r*o);for(let t=0;t<o;t++){const n=this.data[t].getRawData();for(let e=0;e<r;e++)n[e]=i[e+t*r]}}}freeBuffer(t){this.isMemoryForBufferAllocated()&&(t._free(this.buf),this.buf=0)}}class Ot extends Mt{constructor(t,n,e){super([[]],t,!0),this.data=[],this.numOfColumns=e,this.numOfRows=n}putDataToBuffer(t){}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const n=this.type,e=t[_t[n]],r=this.numOfRows,o=this.numOfColumns,i=Nt[n].BYTES_PER_ELEMENT,s=bt[n],a=this.buf;for(let t=0;t<o;t++){const o=new Nt[n](r);for(let n=0;n<r;n++)o[n]=e[a/i+n+t*r];this.data.push(s((t+1).toString(),o))}}}}const Rt={intColumn:t=>new Tt(t,"i32"),newIntColumn:t=>new It("i32",t),intColumns:t=>new Mt(t.toList(),"i32"),newIntColumns:(t,n)=>new Ot("i32",t,n),floatColumn:t=>new Tt(t,"f32"),newFloatColumn:t=>new It("f32",t),floatColumns:t=>new Mt(t.toList(),"f32"),newFloatColumns:(t,n)=>new Ot("f32",t,n),int:t=>new St(t),num:t=>new St(t)},Lt={tableFromColumns:t=>DG.DataFrame.fromColumns(t.data),num:t=>t,int:t=>t,double:t=>t,column:t=>t.data};function Pt(t,n,e){const r=t[n],o=r.arguments,i=[];let s=0;for(const t in o){const n=o[t];if("_callResult"!=t){switch(n.type){case"floatColumns":case"int":case"num":case"floatColumn":case"intColumn":case"intColumns":n.data=Rt[n.type](e[s]),s++;break;case"newFloatColumns":case"newIntColumns":const t=o[n.numOfRows.ref].data[n.numOfRows.value],r=o[n.numOfColumns.ref].data[n.numOfColumns.value];n.data=Rt[n.type](t,r);break;case"newFloatColumn":case"newIntColumn":const i=o[n.numOfRows.ref].data[n.numOfRows.value];n.data=Rt[n.type](i)}i.push(o[t].data)}}const a=function(t,n,e,r){let o;for(const n of r)n.allocateMemoryForBuffer(t);let i=!0;for(const t of r)i&=t.isMemoryForBufferAllocated();if(i){const e=[],i=[];for(const n of r)n.complementArrOfParams(e),n.complementArrOfTypes(i),n.putDataToBuffer(t);const s="number";o=t.ccall(n,s,i,e);for(const n of r)n.getDataFromBuffer(t)}for(const n of r)n.freeBuffer(t);if(null!=o)return o}(t,n,0,i);o._callResult=Rt.num(a);const u=r.output;if("objects"!=u.type)return Lt[u.type](o[u.source].data);const c=[];for(const t of u.source)c.push(o[t].data.data);return c}const Dt="num",Ft="floatColumn",Ut="intColumn",Bt="floatColumns",kt="newFloatColumns",Ht="intColumns",Gt="newIntColumns",Vt="newFloatColumn",qt="newIntColumn",Wt="numOfRows",$t="numOfColumns",Yt="ref",Kt="value",jt="int",zt="double",Xt={intColumn:Int32Array,floatColumn:Float32Array,floatColumns:Float32Array,newFloatColumns:Float32Array,intColumns:Int32Array,newIntColumns:Int32Array,newFloatColumn:Float32Array,newIntColumn:Int32Array};function Qt(t,n){let e,r=[],o=0;for(const i in t){const s=t[i],a=s.type;if("_callResult"!==i){switch(a){case Dt:case jt:case zt:s.data=n[o],o++;break;case Ut:case Ft:let r;const i=n[o],u=i.length;r=i.type===jt&&a===Ut||i.type===zt&&a===Ft?i.getRawData().slice(0,u):new Xt[a](i.getRawData().slice(0,u)),s.data={array:r,numOfRows:u},o++;break;case qt:case Vt:let c=0;e=s[Wt][Yt],c=t[e].type===Dt?t[e].data:t[e].data[s[Wt][Kt]],s.data={numOfRows:c},o++;break;case Ht:case Bt:let l=[];const f=n[o].byIndex(0).length;for(const t of n[o].toList())t.type===jt&&a===Ut||t.type===zt&&a===Ft?l.push(t.getRawData().slice(0,f)):l.push(new Xt[a](t.getRawData().slice(0,f)));s.data={arrays:l,numOfRows:f,numOfColumns:l.length},o++;break;case Gt:case kt:let h=0,m=0;e=s[Wt][Yt],h=t[e].type===Dt?t[e].data:t[e].data[s[Wt][Kt]],e=s[$t][Yt],m=t[e].type===Dt?t[e].data:t[e].data[s[$t][Kt]],s.data={numOfRows:h,numOfColumns:m},o++;break;default:return}r.push(s)}}return r}function Zt(t,n){t.arguments._callResult=n.callResult,function(t,n){const e={newFloatColumns:DG.Column.fromFloat32Array,newIntColumns:DG.Column.fromInt32Array,newFloatColumn:DG.Column.fromFloat32Array,newIntColumn:DG.Column.fromInt32Array};let r=0;for(const o in t){const i=t[o];switch(i.type){case Dt:case jt:case zt:case Ut:case Ft:case Bt:case Ht:break;case Vt:case qt:let t;null==i.name?t=(0).toString():a=i.name,i.column=e[i.type](t,n[r].array);break;case Gt:case kt:let o=[],s=n[r].arrays.length,a=[];if(null==i.names)for(let t=1;t<=s;t++)a.push(t.toString());else a=i.names;for(let t=0;t<s;t++)o.push(e[i.type](a[t],n[r].arrays[t]));i.columns=o}r++}}(t.arguments,n.args);let e=function(t){let n=t.output;const e={newFloatColumns:"columns",newIntColumns:"columns",newFloatColumn:"column",newIntColumn:"column"};switch(n.type){case Dt:case jt:case zt:return t.arguments[n.source];case"column":return t.arguments[n.source].column;case"tableFromColumns":return DG.DataFrame.fromColumns(t.arguments[n.source].columns);case"objects":let r=[];for(let o of n.source){let n=t.arguments[o];r.push(n[e[n.type]])}return r}}(t);return function(t){for(const n in t){const e=t[n];switch(e.type){case Dt:case jt:case zt:case Ut:case Ft:case Ht:case Bt:break;case qt:case Vt:e.column=null;break;case Gt:case kt:e.columns=null}}}(t.arguments),e}async function Jt(t,n,r){return new Promise((t,o)=>{const i=new Worker(new URL(e.p+e.u(128),e.b));i.postMessage(Qt(EDA.principalComponentAnalysisNipals.arguments,[n,r])),i.onmessage=function(n){i.terminate(),t(Zt(EDA.principalComponentAnalysisNipals,n.data))}})}const tn=1e-6;function nn(n){if(n.type!=t.COLUMN_TYPE.FLOAT&&n.type!=t.COLUMN_TYPE.INT)throw new Error("unsupported column type: "+n.type)}function en(t){if(t.stats.missingValueCount>0)throw new Error(`The column '${t.name}' has missing values.`)}function rn(t,n){if(function(t,n){if(n<1)throw new Error("components must be positive.");if(n>t.length)throw new Error("components must not be greater than features count.");for(const n of t)nn(n),en(n)}(t,n),t.length*t.byIndex(0).length>1e8)throw new Error("dataframe is too big.")}function on(t,n,e){return n?e?function(t){const n=t.rowCount;for(const e of t.columns)if(e.isNumerical){const t=e.stats.stdev,r=e.stats.avg,o=e.getRawData();if(t>0)for(let e=0;e<n;++e)o[e]=(o[e]-r)/t;else for(let t=0;t<n;++t)o[t]-=r}return t}(t):function(t){const n=t.rowCount;for(const e of t.columns)if(e.isNumerical){const t=e.stats.avg;if(Math.abs(t)>tn){const r=e.getRawData();for(let e=0;e<n;++e)r[e]-=t}}return t}(t):e?function(t){const n=t.rowCount;for(const e of t.columns)if(e.isNumerical){const t=e.stats.stdev;if(Math.abs(t-1)>tn&&t>0){const r=e.getRawData();for(let e=0;e<n;++e)r[e]/=t}}return t}(t):t}var sn,an,un,cn,ln,fn,hn,mn,dn,pn,gn,yn,vn,wn,En;function An(n,r,o,i,s){return a=this,u=void 0,l=function*(){rn(r,o);const a=n.rowCount,u=function(n){const e=[];for(const t of n)t.stats.stdev>0&&t.stats.missingValueCount<1&&e.push(t);return t.DataFrame.fromColumns(e)}(r),c=u.columns.length;if(0===c){const n=[];for(let e=0;e<o;++e)n.push(t.Column.fromFloat32Array(`${e+1}`,new Float32Array(a).fill(0)));return t.DataFrame.fromColumns(n)}const l=c<o?o-c:0,f=Math.min(o,c);let h;if(c>900)h=yield Jt(0,r,f);else{const t=yield async function(t,n,r){return new Promise((t,o)=>{const i=new Worker(new URL(e.p+e.u(860),e.b));i.postMessage(Qt(EDA.principalComponentAnalysis.arguments,[n,r,1,0])),i.onmessage=function(n){i.terminate(),0===n.data.callResult?t(Zt(EDA.principalComponentAnalysis,n.data)):t(-1)}})}(0,r,f);h=-1!==t?on(t,i,s):yield Jt(0,r,f)}if(void 0===h)throw new Error("Failed to compute PCA");h=on(h,i,s);const m=h.columns,d=m.length;for(let n=0;n<l;++n)m.add(t.Column.fromFloat32Array(`${d+n+1}`,new Float32Array(a).fill(0)));return h},new((c=void 0)||(c=Promise))(function(t,n){function e(t){try{o(l.next(t))}catch(t){n(t)}}function r(t){try{o(l.throw(t))}catch(t){n(t)}}function o(n){var o;n.done?t(n.value):(o=n.value,o instanceof c?o:new c(function(t){t(o)})).then(e,r)}o((l=l.apply(a,u||[])).next())});var a,u,c,l}(En=sn||(sn={}))[En.COMPUTE_COMPONENTS=0]="COMPUTE_COMPONENTS",En[En.PERFORM_MVA=1]="PERFORM_MVA",En[En.DEMO=2]="DEMO",(wn=an||(an={})).NO_DF="No dataframe is opened",wn.NO_COLS="No numeric columns without missing values",wn.ONE_COL="No columns to be used as features (just one numeric columns without missing values)",wn.EMPTY_DF="Dataframe is empty",wn.PREDICT="Predictors must not contain a response variable",wn.ENOUGH="Not enough of features",wn.COMP_LIN_PLS="Components count must be less than the number of features",wn.COMP_QUA_PLS="Too large components count for the quadratic PLS regression",wn.COMPONENTS="Components count must be greater than 1",wn.INV_INP="Invalid inputs",(vn=un||(un={})).PREDICT="Predict",vn.USING="Using",vn.COMPONENTS="Components",vn.PLS="PLS",vn.MVA="Multivariate Analysis (PLS)",vn.RUN="RUN",vn.NAMES="Names",vn.MODEL="Observed vs. Predicted",vn.FEATURE="Feature",vn.REGR_COEFS="Regression Coefficients",vn.XLOADING="x.loading.p",vn.LOADINGS="Loadings",vn.XSCORE="x.score.t",vn.YSCORE="y.score.u",vn.SCORES="Scores",vn.EXPL_VAR="Explained Variance",vn.EXPLORE="Explore",vn.FEATURES="Feature names",vn.BROWSE="Browse",vn.ANALYSIS="Features Analysis",vn.QUADRATIC="Quadratic",(yn=cn||(cn={})).PREDICT="Column with the response variable",yn.FEATURES="Predictors (features)",yn.COMPONENTS="Number of PLS components",yn.PLS="Compute PLS components",yn.MVA="Perform multivariate analysis",yn.NAMES="Names of data samples",yn.QUADRATIC="Specifies whether to include squared terms as additional predictors in the PLS model",(gn=ln||(ln={})).PLS="/help/explore/multivariate-analysis#pls-components",gn.MVA="/help/explore/multivariate-analysis",gn.MODEL="/help/explore/multivariate-analysis#observed-vs-predicted",gn.COEFFS="/help/explore/multivariate-analysis#regression-coefficients",gn.LOADINGS="/help/explore/multivariate-analysis#loadings",gn.EXPL_VARS="/help/explore/multivariate-analysis#explained-variance",gn.SCORES="/help/explore/multivariate-analysis#scores",(pn=fn||(fn={}))[pn.DEFAULT=3]="DEFAULT",pn[pn.MIN=1]="MIN",(dn=hn||(hn={})).PREFIX="PLS",dn.SUFFIX="(predicted)",dn.COMP="component",dn.COMPS="components",function(t){t[t.PREDICTION=0]="PREDICTION",t[t.REGR_COEFFS=1]="REGR_COEFFS",t[t.T_SCORES=2]="T_SCORES",t[t.U_SCORES=3]="U_SCORES",t[t.X_LOADINGS=4]="X_LOADINGS",t[t.Y_LOADINGS=5]="Y_LOADINGS"}(mn||(mn={}));const Cn=[.49,.79,.99];var _n,Nn;(Nn=_n||(_n={})).AXIS="#838383",Nn.CIRCLE="#0000FF",Nn.INVALID="#EB6767",Nn.VALID_TEXT="#4d5261",Nn.VALID_LINE="#dbdcdf",[{caption:un.MODEL,text:"Closer to the line means better price prediction."},{caption:un.SCORES,text:"The latent factor values for each sample reflect the similarities and dissimilarities among observations."},{caption:un.LOADINGS,text:"The impact of each feature on the latent factors: higher loading means stronger influence."},{caption:un.REGR_COEFS,text:"Parameters of the obtained model: features make different contribution to the prediction."},{caption:un.EXPL_VAR,text:"How well the latent components fit source data: closer to one means better fit."}].map(t=>`# ${t.caption}\n\n${t.text}`).join("\n\n"),ln.MVA;function xn(t){return n=this,r=void 0,i=function*(){rn(t.features,t.components),nn(t.predict),en(t.predict);const n=yield async function(t,n,r,o){return new Promise((t,i)=>{const s=new Worker(new URL(e.p+e.u(412),e.b));s.postMessage(Qt(EDA.partialLeastSquareRegression.arguments,[n,r,o])),s.onmessage=function(n){s.terminate(),t(Zt(EDA.partialLeastSquareRegression,n.data))}})}(t.table,t.features,t.predict,t.components);return{prediction:n[mn.PREDICTION],regressionCoefficients:n[mn.REGR_COEFFS],tScores:n[mn.T_SCORES],uScores:n[mn.U_SCORES],xLoadings:n[mn.X_LOADINGS],yLoadings:n[mn.Y_LOADINGS]}},new((o=void 0)||(o=Promise))(function(t,e){function s(t){try{u(i.next(t))}catch(t){e(t)}}function a(t){try{u(i.throw(t))}catch(t){e(t)}}function u(n){var e;n.done?t(n.value):(e=n.value,e instanceof o?e:new o(function(t){t(e)})).then(s,a)}u((i=i.apply(n,r||[])).next())});var n,r,o,i}Math.min,Math.max;var bn=function(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{u(r.next(t))}catch(t){i(t)}}function a(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,a)}u((r=r.apply(t,n||[])).next())})};function Sn(n,e){return bn(this,void 0,void 0,function*(){const r=n.length,o=e.length,i=e.stats.avg,s=e.stats.stdev,a=new Float32Array(r+1).fill(0);if(a[r]=i,0===s||1===o)return a;try{const o=[],u=[],c=new Float32Array(r),l=new Float32Array(r);let f=0,h=0;for(const t of n){const n=t.stats;n.stdev>0&&(o.push(f),u.push(t),c[h]=n.avg,l[h]=n.stdev,++h),++f}if(0===h)return a;const m=function(t,n,e,r,o,i,s){return Pt(EDA,"fitLinearRegressionParamsWithDataNormalizing",[t,n,e,r,o,i,s])}(t.DataFrame.fromColumns(u).columns,t.Column.fromFloat32Array("xAvgs",c,h),t.Column.fromFloat32Array("xStdevs",l,h),e,i,s,h+1).getRawData();for(let t=0;t<h;++t)a[o[t]]=m[t];a[r]=m[h]}catch(o){const i=yield function(n,e,r){return bn(this,void 0,void 0,function*(){return(yield xn({table:t.DataFrame.fromColumns([e]),features:n,predict:e,components:r,names:void 0,isQuadratic:!1})).regressionCoefficients.getRawData()})}(n,e,In(n.length,e.length));let s=0;for(let t=0;t<r;++t)a[t]=i[t],s+=i[t]*n.byIndex(t).stats.avg;a[r]-=s}return a})}function Tn(n,e){const r=n.length;if(r!==e.length-1)throw new Error("Incorrect parameters count");const o=n.byIndex(0),i=o.length,s=new Float32Array(i);let a=o.getRawData();const u=e[r];let c=e[0];for(let t=0;t<i;++t)s[t]=u+c*a[t];for(let t=1;t<r;++t){a=n.byIndex(t).getRawData(),c=e[t];for(let t=0;t<i;++t)s[t]+=c*a[t]}return t.Column.fromFloat32Array(n.getUnusedName("prediction"),s,i)}const In=(t,n)=>n<=t?Math.min(10,n):Math.min(10,t);var Mn;!function(t){t[t.MAX_SAMLPES=1e5]="MAX_SAMLPES",t[t.MAX_FEATURES=1e3]="MAX_FEATURES"}(Mn||(Mn={}));class On{static isApplicable(t,n){for(const n of t)if(!n.matches("numerical"))return!1;return!!n.matches("numerical")}static isInteractive(t,n){return t.length<=Mn.MAX_FEATURES&&n.length<=Mn.MAX_SAMLPES}constructor(n){if(this.specn=null,n)try{const e=new Uint32Array(n.buffer,0,2),r=e[0],o=e[1],i=new Uint8Array(n.buffer,8,r),s=t.DataFrame.fromByteArray(i),a=s.rowCount,u=s.columns,c=u.length,l=new Uint8Array(n.buffer,8+r,o),f=t.DataFrame.fromByteArray(l);if(c<3)throw new Error("incorrect columns count");const h=u.byName(un.FEATURES).toList(),m=new Float32Array(a);m.set(u.byName(un.REGR_COEFS).getRawData());const d=c-2,p=new Array(d);for(let t=0;t<d;++t)p[t]=new Float32Array(a),p[t].set(u.byIndex(t+2).getRawData());this.specn={params:m,loadings:p,names:h,dim:a-1,components:c-2,scores:f}}catch(t){throw new Error(`Failed to load model: ${t instanceof Error?t.message:"the platform issue"}`)}}fit(n,e,r){return o=this,i=void 0,a=function*(){const o=yield xn({table:t.DataFrame.fromColumns([e]),features:n,predict:e,components:r,names:void 0,isQuadratic:!1}),i=n.names();i.push("_");const s=this.getRegrCoeffs(n,e,o.regressionCoefficients),a=this.getLoadings(r,o.xLoadings);this.specn={names:i,params:s,loadings:a,components:r,dim:n.length,scores:this.getScoresDf(o)},this.computeExplVars(e.length,r,o.yLoadings)},new((s=void 0)||(s=Promise))(function(t,n){function e(t){try{u(a.next(t))}catch(t){n(t)}}function r(t){try{u(a.throw(t))}catch(t){n(t)}}function u(n){var o;n.done?t(n.value):(o=n.value,o instanceof s?o:new s(function(t){t(o)})).then(e,r)}u((a=a.apply(o,i||[])).next())});var o,i,s,a}getLoadings(t,n){const e=Array(t),r=n[0].length+1;for(let o=0;o<t;++o)e[o]=new Float32Array(r),e[o].set(n[o].getRawData());return e}getRegrCoeffs(t,n,e){const r=t.length,o=new Float32Array(r+1),i=e.getRawData();let s=0;for(let n=0;n<r;++n)o[n]=i[n],s+=i[n]*t.byIndex(n).stats.avg;return o[r]=n.stats.avg-s,o}computeExplVars(t,n,e){if(null===this.specn)throw new Error("Failed to compute explained variances");const r=e.getRawData(),o=this.specn.loadings[0].length-1;let i=Math.pow(r[0],2)/t;this.specn.loadings[0][o]=i;for(let e=1;e<n;++e)i+=Math.pow(r[e],2)/t,this.specn.loadings[e][o]=i}toBytes(){if(null===this.specn)throw new Error("Failed to pack untrained model");const n=t.DataFrame.fromColumns([t.Column.fromStrings(un.FEATURES,this.specn.names),t.Column.fromFloat32Array(un.REGR_COEFS,this.specn.params)]);this.specn.loadings.forEach((e,r)=>n.columns.add(t.Column.fromFloat32Array(`${un.XLOADING}${r+1}`,e)));const e=n.toByteArray(),r=e.length,o=this.specn.scores.toByteArray(),i=o.length,s=r+i+8,a=new Uint8Array(64*(Math.ceil(s/64)+1)),u=new Uint32Array(a.buffer,0,2);return u[0]=r,u[1]=i,a.set(e,8),a.set(o,8+r),a}predict(t){if(null===this.specn)throw new Error("Predicting failed: model is not trained");return Tn(t,this.specn.params)}loadingsParamsViewers(){if(null===this.specn)throw new Error("Failed to create loadings and parameters viewers: untrained model");const n=[],e=this.specn.dim,r=t.DataFrame.fromColumns([t.Column.fromStrings(un.FEATURES,this.specn.names.slice(0,-1)),t.Column.fromFloat32Array(un.REGR_COEFS,this.specn.params,e)]),o=r.columns,i=o.length,s=this.specn.components;return this.specn.loadings.forEach((n,o)=>r.columns.add(t.Column.fromFloat32Array(`${un.XLOADING}${o+1}`,n,e))),n.push(t.Viewer.scatterPlot(r,{title:un.LOADINGS,xColumnName:o.byIndex(i).name,yColumnName:o.byIndex(i+(s>1?1:0)).name,markerType:t.MARKER_TYPE.CIRCLE,labelFormColumnNames:[un.FEATURES],help:ln.LOADINGS})),n.push(t.Viewer.barChart(r,{title:un.REGR_COEFS,splitColumnName:un.FEATURES,valueColumnName:un.REGR_COEFS,valueAggrType:t.AGG.AVG,help:ln.COEFFS,showValueSelector:!1,showStackSelector:!1})),n}explVarsViewer(){if(null===this.specn)throw new Error("Failed to create exaplained variances viewer: untrained model");const n=this.specn.components,e=this.specn.dim,r=new Array(n),o=new Float32Array(n);r[0]=`${hn.COMP} 1`,o[0]=this.specn.loadings[0][e];for(let t=1;t<n;++t)r[t]=`${hn.COMPS} ${t+1}`,o[t]=this.specn.loadings[t][e];return t.Viewer.barChart(t.DataFrame.fromColumns([t.Column.fromStrings(hn.COMPS,r),t.Column.fromFloat32Array(un.EXPL_VAR,o)]),{title:un.EXPL_VAR,splitColumnName:hn.COMPS,valueColumnName:un.EXPL_VAR,valueAggrType:t.AGG.AVG,help:ln.EXPL_VARS,showCategorySelector:!1,showStackSelector:!1,showValueSelector:!1})}viewers(){if(null===this.specn)throw new Error("Failed to create viewers: untrained model");const t=this.loadingsParamsViewers();return t.push(this.explVarsViewer(),this.getScoresScatter()),t}getScoresDf(n){const e=n.tScores,r=n.uScores;return e.forEach((t,n)=>t.name=`${un.XSCORE}${n+1}`),r.forEach((t,n)=>t.name=`${un.YSCORE}${n+1}`),t.DataFrame.fromColumns(e.concat(r))}getScoresScatter(){if(null===this.specn)throw new Error("Failed to create scores scatter: untrained model");const n=this.specn.scores.columns.names(),e=t.Viewer.scatterPlot(this.specn.scores,{title:un.SCORES,xColumnName:n[0],yColumnName:n[1],markerType:t.MARKER_TYPE.CIRCLE,help:ln.SCORES,showViewerFormulaLines:!0});return e.meta.formulaLines.addAll(function(t){const n=[],e=(t,e)=>{n.push({type:"line",formula:t,width:1,visible:!0,title:" ",min:-e,max:e,color:_n.CIRCLE})};return t.forEach(r=>{const o="${"+r+"}";n.push({type:"line",formula:`${o} = 0`,width:1,visible:!0,title:" ",color:_n.AXIS}),t.forEach(t=>{const n="${"+t+"}";Cn.forEach(t=>{e(n+` = sqrt(${t*t} - ${o} * ${o})`,t),e(n+` = -sqrt(${t*t} - ${o} * ${o})`,t)})})}),n}(n)),e}}const Rn=["Alpha","Beta","Gamma","Delta"];function Ln(t,n){if(t.length!==n.length)throw new Error(`Non-equal elements count: ${t.length} vs. ${n.length}`)}function Pn(e,r,o){const i=n.data.demo.randomWalk(e,r),s=i.columns,a=new Float32Array(r),u=new Array(r);for(let t=0;t<r;++t)u[t]=s.byIndex(t).getRawData();for(let n=0;n<o;++n){const o=new Float32Array(e);for(let t=0;t<r;++t)a[t]=Math.random();for(let t=0;t<e;++t)for(let n=0;n<r;++n)o[t]+=a[n]*u[n][t];s.add(t.Column.fromFloat32Array(`y${n}`,o))}return i}function Dn(t,n){Ln(t,n);let e=0;const r=t.length,o=t.getRawData(),i=n.getRawData();for(let t=0;t<r;++t)e=Math.max(e,Math.abs(o[t]-i[t]));return e}function Fn(n,e,r){const o=new Array(n),i=new Array(e);for(let t=0;t<e;++t){const e=new Float32Array(n);for(let t=0;t<n;++t)e[t]=Math.random();i[t]=e}const s=t.DataFrame.fromColumns(i.map((n,e)=>t.Column.fromFloat32Array(`#${e}`,n)));for(let t=0;t<n;++t)o[t]=i.slice(0,2).map(n=>n[t]>.5?"A":"B").join("");if(s.columns.add(t.Column.fromStrings("Labels",o)),r)for(let t=0;t<e;++t)for(let e=0;e<n;++e)i[t][e]+=1*(i[t][e]>0?1:-1);return s}function Un(t,n){Ln(t,n);let e=0;const r=t.length;if(r<1)return 1;for(let o=0;o<r;++o)t.get(o)===n.get(o)&&++e;return e/r}var Bn=function(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{u(r.next(t))}catch(t){i(t)}}function a(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,a)}u((r=r.apply(t,n||[])).next())})};const kn=100,Hn=9e3,Gn=.1;L("Principal component analysis",()=>{O("Performance: 100K rows, 100 cols, 3 components",()=>Bn(void 0,void 0,void 0,function*(){const t=n.data.demo.randomWalk(1e5,kn);yield An(t,t.columns,3,!1,!1)}),{timeout:Hn,benchmark:!0}),O("Performance: 1K rows, 5K cols, 3 components",()=>Bn(void 0,void 0,void 0,function*(){const t=n.data.demo.randomWalk(1e3,5e3);yield An(t,t.columns,3,!1,!1)}),{timeout:Hn,benchmark:!0}),O("Correctness",()=>Bn(void 0,void 0,void 0,function*(){const t=Pn(100,3,5);R(function(t){let n=0;const e=t.length,r=t.getRawData();for(let t=0;t<e;++t)n=Math.max(n,Math.abs(r[t]));return n}((yield An(t,t.columns,4,!1,!1)).columns.byIndex(3))<Gn,!0,"Incorrect PCA computations")}),{timeout:Hn})}),L("Partial least squares regression",()=>{O("Performance: 100K rows, 100 cols, 3 components",()=>Bn(void 0,void 0,void 0,function*(){const t=n.data.demo.randomWalk(1e5,kn),e=t.columns;yield xn({table:t,features:e,predict:e.byIndex(99),components:3,names:void 0,isQuadratic:!1})}),{timeout:Hn,benchmark:!0}),O("Correctness",()=>Bn(void 0,void 0,void 0,function*(){const t=Pn(100,3,5),n=t.columns,e=n.byIndex(7),r=Dn(e,(yield xn({table:t,features:n,predict:e,components:3,isQuadratic:!1,names:void 0})).prediction);R(r<Gn,!0,`Incorrect PLS computations, error is too big: ${r}; expected: < 0.1`)}),{timeout:Hn}),O("Predictive modeling: 100K samples, 100 features, 3 components",()=>Bn(void 0,void 0,void 0,function*(){const t=Pn(1e5,3,98).columns,n=t.byIndex(kn);t.remove(n.name);const e=new On;yield e.fit(t,n,3);const r=e.toBytes(),o=Dn(n,new On(r).predict(t));R(o<Gn,!0,`Incorrect PLS (ML) computations, error is too big: ${o}; expected: < 0.1`)}),{timeout:Hn,benchmark:!0})}),L("Linear regression",()=>{O("Performance: 100K samples, 100 features",()=>Bn(void 0,void 0,void 0,function*(){const t=Pn(1e5,kn,1).columns,n=t.byIndex(kn),e=yield Sn(t,n),r=new Uint8Array(e.buffer);Tn(t,new Float32Array(r.buffer))}),{timeout:Hn,benchmark:!0}),O("Correctness",()=>Bn(void 0,void 0,void 0,function*(){const t=Pn(100,2,1).columns,n=t.byIndex(2),e=yield Sn(t,n),r=new Uint8Array(e.buffer),o=Tn(t,new Float32Array(r.buffer)),i=Dn(o,o);R(i<Gn,!0,`Incorrect linear regression computations, error is too big: ${i}; expected: < 0.1`)}),{timeout:Hn})});var Vn=function(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{u(r.next(t))}catch(t){i(t)}}function a(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,a)}u((r=r.apply(t,n||[])).next())})};const qn="Avg-s",Wn="Stddev-s";var $n;!function(t){t[t.MAX_SAMLPES=5e4]="MAX_SAMLPES",t[t.MAX_FEATURES=100]="MAX_FEATURES"}($n||($n={}));class Yn{static isApplicable(n,e){for(const t of n)if(!t.matches("numerical"))return!1;return e.type===t.COLUMN_TYPE.STRING}static isInteractive(t,n){return t.length<=$n.MAX_FEATURES&&n.length<=$n.MAX_SAMLPES}constructor(n,e){if(this.params=void 0,this.classesCount=1,this.featuresCount=1,void 0!==n){const t=n.featuresCount,e=n.classesCount;if(t<1)throw new Error("Incorrect features count");if(e<1)throw new Error("Incorrect classes count");const r=t+1;this.avgs=new Float32Array(r),this.stdevs=new Float32Array(r),this.categories=new Array(r),this.featuresCount=t,this.classesCount=e}else{if(void 0===e)throw new Error("Softmax classifier not initialized");try{const n=new Uint32Array(e.buffer,0,1)[0],r=new Uint8Array(e.buffer,4,n),o=t.DataFrame.fromByteArray(r),i=o.columns,s=i.length;if(s<3)throw new Error("incorrect columns count");this.classesCount=s-2,this.featuresCount=o.rowCount-1;const a=this.classesCount;this.params=new Array(a),this.categories=new Array(o.rowCount);for(let n=0;n<a;++n){const e=i.byIndex(n);if(this.categories[n]=e.name,e.type!==t.COLUMN_TYPE.FLOAT)throw new Error(`Incorrect input column type. Expected: float, passed: ${e.type}`);this.params[n]=e.getRawData()}const u=i.byName(qn);if(u.type!==t.COLUMN_TYPE.FLOAT)throw new Error("incorrect average values column type");this.avgs=u.getRawData();const c=i.byName(Wn);if(c.type!==t.COLUMN_TYPE.FLOAT)throw new Error("incorrect standard deviations column type");this.stdevs=c.getRawData()}catch(t){throw new Error(`Failed to load model: ${t instanceof Error?t.message:"the platform issue"}`)}}}toBytes(){if(void 0===this.params)throw new Error("Non-trained model");const n=this.classesCount,e=new Array(n+2);for(let r=0;r<n;++r)e[r]=t.Column.fromFloat32Array(this.categories[r],this.params[r]);e[n]=t.Column.fromFloat32Array(qn,this.avgs),e[n+1]=t.Column.fromFloat32Array(Wn,this.stdevs);const r=t.DataFrame.fromColumns(e).toByteArray(),o=r.length,i=new Uint8Array(o+4);return new Uint32Array(i.buffer,0,1)[0]=o,i.set(r,4),i}fit(n,e){return Vn(this,arguments,void 0,function*(n,e,r=1,o=100,i=.1,s=.001){if(n.length!==this.featuresCount)throw new Error("Training failes - incorrect features count");if(r<=0||o<1||i<=0||s<=0)throw new Error("Training failes - incorrect fitting hyperparameters");this.extractStats(n);const a=e.length,u=e.categories.length,c=e.categories;for(let t=0;t<u;++t)this.categories[t]=c[t];try{const c=function(t,n,e,r,o,i,s,a,u,c,l){return Pt(EDA,"fitSoftmax",[t,n,e,r,o,i,s,a,u,c,l])}(n,t.Column.fromFloat32Array("avgs",this.avgs,this.featuresCount),t.Column.fromFloat32Array("stdevs",this.stdevs,this.featuresCount),t.Column.fromInt32Array("targets",e.getRawData(),a),u,o,r,i,s,this.featuresCount+1,u).columns;this.params=new Array(u);for(let t=0;t<u;++t)this.params[t]=c.byIndex(t).getRawData()}catch(t){try{this.params=yield this.fitSoftmaxParams(n,e,o,r,i,s)}catch(t){throw new Error("Training failes")}}if(void 0===this.params)throw new Error("Training failes")})}extractStats(n){let e=0;for(const r of n){if(r.type!==t.COLUMN_TYPE.INT&&r.type!==t.COLUMN_TYPE.FLOAT)throw new Error("Training failes - incorrect features type");this.avgs[e]=r.stats.avg,this.stdevs[e]=r.stats.stdev,++e}}normalized(n){const e=n.byIndex(0).length,r=new Array(e);for(let t=0;t<e;++t)r[t]=new Float32Array(this.featuresCount);let o=0;for(const i of n){if(i.type!==t.COLUMN_TYPE.INT&&i.type!==t.COLUMN_TYPE.FLOAT)throw new Error("Training failes - incorrect features type");const n=i.getRawData(),s=this.avgs[o],a=this.stdevs[o];if(a>0)for(let t=0;t<e;++t)r[t][o]=(n[t]-s)/a;else for(let t=0;t<e;++t)r[t][o]=0;++o}return r}transposed(n){const e=n.byIndex(0).length,r=this.featuresCount,o=new Array(r);for(let t=0;t<r;++t)o[t]=new Float32Array(e);let i=0;for(const r of n){if(r.type!==t.COLUMN_TYPE.INT&&r.type!==t.COLUMN_TYPE.FLOAT)throw new Error("Training failes - incorrect features type");const n=r.getRawData(),s=this.avgs[i],a=this.stdevs[i];if(a>0)for(let t=0;t<e;++t)o[i][t]=(n[t]-s)/a;else for(let t=0;t<e;++t)o[i][t]=0;++i}return o}preprocessedTargets(n){if(n.type!==t.COLUMN_TYPE.STRING)throw new Error("Training failes - incorrect target type");const e=this.classesCount,r=n.length,o=n.getRawData(),i=new Array(r),s=new Uint32Array(e).fill(0);for(let t=0;t<r;++t)i[t]=new Uint8Array(e).fill(0);for(let t=0;t<r;++t)i[t][o[t]]=1,++s[o[t]];return{oneHot:i,weights:s}}predict(n){if(void 0===this.params)throw new Error("Non-trained model");if(n.length!==this.featuresCount)throw new Error("Predcition fails: incorrect features count");const e=this.normalized(n),r=e.length,o=this.featuresCount,i=this.classesCount;let s,a;const u=new Float32Array(i);let c,l,f;const h=new Array(r);for(let t=0;t<r;++t){s=e[t],c=0;for(let t=0;t<i;++t){a=this.params[t],c=a[o];for(let t=0;t<o;++t)c+=a[t]*s[t];u[t]=Math.exp(c)}l=u[0],f=0;for(let t=1;t<i;++t)l<u[t]&&(l=u[t],f=t);h[t]=this.categories[f]}return t.Column.fromStrings("predicted",h)}fitSoftmaxParams(t,n,r,o,i,s){return Vn(this,void 0,void 0,function*(){const a=this.preprocessedTargets(n);return new Promise((u,c)=>{const l=new Worker(new URL(e.p+e.u(501),e.b));l.postMessage({features:this.normalized(t),transposed:this.transposed(t),oneHot:a.oneHot,classesWeights:a.weights,targetRaw:n.getRawData(),iterations:r,rate:o,penalty:i,tolerance:s}),l.onmessage=function(t){l.terminate(),u(t.data.params),console.log(`Loss: ${t.data.loss}`)}})})}}var Kn,jn,zn,Xn;(Xn=Kn||(Kn={}))[Xn.ITERATIONS=20]="ITERATIONS",Xn[Xn.ETA=.3]="ETA",Xn[Xn.MAX_DEPTH=6]="MAX_DEPTH",Xn[Xn.LAMBDA=1]="LAMBDA",Xn[Xn.ALPHA=0]="ALPHA",function(t){t[t.SAMLPES_HIGH=1e5]="SAMLPES_HIGH",t[t.SAMLPES_MID=5e4]="SAMLPES_MID",t[t.SAMPLES_LOW=1e4]="SAMPLES_LOW",t[t.FEATURES_HIGH=10]="FEATURES_HIGH",t[t.FEATURES_MID=20]="FEATURES_MID",t[t.FEATURES_LOW=100]="FEATURES_LOW"}(jn||(jn={})),function(t){t[t.MODEL=1e7]="MODEL",t[t.UTILS=1]="UTILS",t[t.PACK=128]="PACK",t[t.SIZE=4]="SIZE"}(zn||(zn={}));const Qn=t.FLOAT_NULL;var Zn;!function(t){t.PREDICT="Prediction",t.TYPE="Type",t.PARAMS="Params count",t.CATS="Categories",t.CATS_SIZE="Categories size"}(Zn||(Zn={}));class Jn{static isApplicable(t,n){for(const n of t)if(!n.matches("numerical"))return!1;return!(!n.matches("numerical")&&!n.matches("string"))}static isInteractive(t,n){const e=t.length,r=n.length;return r<=jn.SAMPLES_LOW?e<=jn.FEATURES_LOW:r<=jn.SAMLPES_MID?e<=jn.FEATURES_MID:r<=jn.SAMLPES_HIGH&&e<=jn.FEATURES_HIGH}constructor(n){var e;if(this.modelParams=void 0,this.targetType=void 0,this.targetCategories=void 0,n)try{let r=0;const o=new Uint32Array(n.buffer,r,1)[0];r+=zn.SIZE;const i=t.DataFrame.fromByteArray(new Uint8Array(n.buffer,r,o));r+=o,this.targetType=i.get(Zn.TYPE,0);const s=i.get(Zn.PARAMS,0),a=i.get(Zn.CATS_SIZE,0);if(a>0){const o=t.DataFrame.fromByteArray(new Uint8Array(n.buffer,r,a));this.targetCategories=null===(e=o.col(Zn.CATS))||void 0===e?void 0:e.toList()}r+=a,r=4*Math.ceil(r/4),this.modelParams=new Int32Array(n.buffer,r,s)}catch(t){throw new Error(`Failed to load model: ${t instanceof Error?t.message:"the platform issue"}`)}}fit(n,r){return o=this,i=arguments,a=function*(n,r,o=Kn.ITERATIONS,i=Kn.ETA,s=Kn.MAX_DEPTH,a=Kn.LAMBDA,u=Kn.ALPHA){this.targetType=r.type,this.targetType===t.COLUMN_TYPE.STRING&&(this.targetCategories=r.categories),this.modelParams=yield async function(t,n,r,o,i,s,a,u,c,l){return new Promise((f,h)=>{const m=n.length,d=t.length,p=new Float32Array(m*d);let g,y;for(let n=0;n<d;++n){y=t.byIndex(n).getRawData(),g=n*m;for(let t=0;t<m;++t)p[t+g]=y[t]}const v=new Worker(new URL(e.p+e.u(990),e.b));v.postMessage({features:p,target:n.getRawData(),samplesCount:m,featuresCount:d,modelReserve:c,utilsLength:l,iterations:o,eta:i,maxDepth:s,lambda:a,alpha:u,missingValue:r}),v.onmessage=function(t){v.terminate(),f(t.data.params)}})}(n,r,Qn,o,i,s,a,u,zn.MODEL,zn.UTILS)},new((s=void 0)||(s=Promise))(function(t,n){function e(t){try{u(a.next(t))}catch(t){n(t)}}function r(t){try{u(a.throw(t))}catch(t){n(t)}}function u(n){var o;n.done?t(n.value):(o=n.value,o instanceof s?o:new s(function(t){t(o)})).then(e,r)}u((a=a.apply(o,i||[])).next())});var o,i,s,a}predict(n){if(void 0===this.modelParams)throw new Error("Failed to apply non-trained model");const e=function(t,n,e){const r=t.byIndex(0).length,o=t.length,i=e.length;let s=XGBoostModule.HEAPF32;const a=XGBoostModule.HEAP32,u=XGBoostModule._malloc(r*o*4),c=XGBoostModule._malloc(4*r),l=XGBoostModule._malloc(4*i);for(let n=0;n<o;++n){const e=t.byIndex(n).getRawData();for(let t=0;t<r;++t)s[u/4+t+n*r]=e[t]}for(let t=0;t<i;++t)a[l/4+t]=e[t];XGBoostModule._predict(u,r,o,n,l,i,c,r),s=XGBoostModule.HEAPF32;const f=new Float32Array(r);for(let t=0;t<r;++t)f[t]=s[c/4+t];return XGBoostModule._free(u),XGBoostModule._free(c),XGBoostModule._free(l),f}(n,Qn,this.modelParams);switch(this.targetType){case t.COLUMN_TYPE.STRING:return this.stringColPrediction(e);case t.COLUMN_TYPE.INT:return this.intColPrediction(e);case t.COLUMN_TYPE.BIG_INT:return this.bigIntColPrediction(e);default:return t.Column.fromFloat32Array(Zn.PREDICT,e)}}toBytes(){if(void 0===this.modelParams||void 0===this.targetType)throw new Error("Failed to pack non-trained model");const n=void 0!==this.targetCategories?t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.STRING,Zn.CATS,this.targetCategories)]).toByteArray():void 0,e=void 0!==n?n.length:0,r=this.modelParams.length*this.modelParams.BYTES_PER_ELEMENT,o=t.DataFrame.fromColumns([t.Column.fromStrings(Zn.TYPE,[this.targetType]),t.Column.fromInt32Array(Zn.PARAMS,new Int32Array([this.modelParams.length])),t.Column.fromInt32Array(Zn.CATS_SIZE,new Int32Array([e]))]).toByteArray(),i=o.length,s=64*Math.ceil((zn.SIZE+i+e+r+zn.PACK)/64),a=new Uint8Array(s);let u=0;return new Uint32Array(a.buffer,u,1)[0]=i,u+=zn.SIZE,a.set(o,u),u+=i,e>0&&a.set(n,u),u+=e,u=4*Math.ceil(u/4),a.set(new Uint8Array(this.modelParams.buffer),u),a}stringColPrediction(n){const e=n.length;if(void 0===this.targetCategories)throw new Error("Predicting fails: undefined categories");const r=new Array(e),o=this.targetCategories.length-1,i=t=>Math.max(0,Math.min(t,o));for(let t=0;t<e;++t)r[t]=this.targetCategories[i(Math.round(n[t]))];return t.Column.fromList(t.COLUMN_TYPE.STRING,Zn.PREDICT,r)}intColPrediction(n){const e=n.length,r=new Int32Array(e);for(let t=0;t<e;++t)r[t]=Math.round(n[t]);return t.Column.fromInt32Array(Zn.PREDICT,r,e)}bigIntColPrediction(n){const e=n.length,r=new BigInt64Array(e);for(let t=0;t<e;++t)r[t]=BigInt(Math.round(n[t]));return t.Column.fromBigInt64Array(Zn.PREDICT,r)}}var te=function(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{u(r.next(t))}catch(t){i(t)}}function a(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,a)}u((r=r.apply(t,n||[])).next())})};const ne=100,ee=8e3;var re;L("Softmax",()=>{O("Performance: 50K samples, 100 features",()=>te(void 0,void 0,void 0,function*(){const t=Fn(5e4,ne,!1).columns,n=t.byIndex(ne);t.remove(n.name);const e=new Yn({classesCount:n.categories.length,featuresCount:t.length});yield e.fit(t,n);const r=e.toBytes();new Yn(void 0,r).predict(t)}),{timeout:ee,benchmark:!0}),O("Correctness",()=>te(void 0,void 0,void 0,function*(){const t=Fn(50,2,!0).columns,n=t.byIndex(2);t.remove(n.name);const e=new Yn({classesCount:n.categories.length,featuresCount:t.length});yield e.fit(t,n);const r=e.toBytes(),o=Un(n,new Yn(void 0,r).predict(t));R(o>.9,!0,`Softmax failed, too small accuracy: ${o}; expected: <= 0.9`)}),{timeout:ee})}),L("XGBoost",()=>{O("Performance: 50K samples, 100 features",()=>te(void 0,void 0,void 0,function*(){const t=Fn(5e4,ne,!1).columns,n=t.byIndex(ne);t.remove(n.name);const e=new Jn;yield e.fit(t,n);const r=e.toBytes();new Jn(r).predict(t)}),{timeout:ee,benchmark:!0}),O("Correctness",()=>te(void 0,void 0,void 0,function*(){const t=Fn(50,2,!0).columns,n=t.byIndex(2);t.remove(n.name);const e=new Jn;yield e.fit(t,n);const r=e.toBytes(),o=Un(n,new Jn(r).predict(t));R(o>.9,!0,`XGBoost failed, too small accuracy: ${o}; expected: <= 0.9`)}),{timeout:ee})}),function(t){t.NO_DATAFRAME="No dataframe is opened",t.NO_MISSING_VALUES="No missing values",t.ONE_AVAILABLE_FEATURE="Not enough of feature columns to apply imputation using the KNN method",t.ONE_FEATURE_SELECTED="Imputation cannot be applied to",t.UNSUPPORTED_COLUMN_TYPE="Unsupported column type",t.UNSUPPORTED_IMPUTATION_STRATEGY="Unsupported imputation strategy",t.KNN_CANNOT_BE_APPLIED="KNN imputer cannot be applied: no columns to be used as features",t.KNN_NO_TARGET_COLUMNS="KNN imputer cannot be applied: no columns with missing values",t.KNN_NO_FEATURE_COLUMNS="KNN imputer cannot be applied: no feature columns",t.KNN_NOT_ENOUGH_OF_ROWS="KNN imputer cannot be applied: not enough of rows",t.KNN_IMPOSSIBLE_IMPUTATION="Imputation is impossible, no features can be used",t.INCORRECT_NEIGHBORS="Incorrect number of neighbors",t.KNN_FAILS="KNN IMPUTATION FAILS",t.CORE_ISSUE="Core issue",t.FAILED_TO_IMPUTE="Failed to impute",t.UNSUPPORTED_FILL_VALUE_TYPE="Unsupported fill value type",t.EMPTY_COLUMN="Column contains just null values",t.FAILS_TO_PREDICT_IMPUTATION_FAILS="Failed to predict imputation fails",t.WRONG_PREDICTIONS="wrong evaluation of KNN imputation fails"}(re||(re={}));const oe="copy";var ie,se;!function(t){t.KNN_IMPUTER="k-NN Imputation",t.TABLE="Table",t.IN_PLACE="In-place",t.COLUMNS="Impute",t.FEATURES="Using",t.CANCEL="CANCEL",t.RUN="RUN",t.OK="OK",t.NEIGHBORS="Neighbors",t.DISTANCE="Distance",t.FILL="Fill",t.MARK="Mark",t.SIMPLE_IMPUTER="Simple impute",t.SETTINGS="Settings",t.KEEP_EMPTY="Keep empty"}(ie||(ie={})),function(t){t.TARGET="Columns with missing values that must be filled",t.FEATURES="Columns with features to be used for determining the 'nearest' elements in the k-NN method",t.IN_PLACE="Defines whether to use in-place imputation or add a new column without missing values",t.METRIC="Type of metric between the feature values",t.WEIGHT="Weight",t.NEIGHBORS="Neighbors count used in the KNN method",t.DISTANCE="Type of distance between elements with the specified features",t.METRIC_SETTINGS="Show additional options",t.FILL_FAILED_ITEMS="Impute missing values using a simple approach: mean, median or most frequent",t.MARK_FAILED_ITEMS="Mark missing values cells with a color",t.FILL_VALUE="Fill value",t.IMPUTATION_SETTINGS="Simple imputation settings",t.KEEP_EMPTY="Defines whether to keep empty missing values failed to be imputed OR fill them using simple imputation",t.RUN="Run imputation using the k-NN method"}(se||(se={}));const ae=[t.COLUMN_TYPE.INT,t.COLUMN_TYPE.FLOAT,t.COLUMN_TYPE.STRING,t.COLUMN_TYPE.DATE_TIME,t.COLUMN_TYPE.QNUM];function ue(n){switch(n.type){case t.COLUMN_TYPE.INT:return t.INT_NULL;case t.COLUMN_TYPE.FLOAT:case t.COLUMN_TYPE.QNUM:case t.COLUMN_TYPE.DATE_TIME:return t.FLOAT_NULL;case t.COLUMN_TYPE.STRING:return n.max;default:throw new Error(re.UNSUPPORTED_COLUMN_TYPE)}}var ce,le,fe,he;function me(n){switch(n){case t.COLUMN_TYPE.STRING:case t.COLUMN_TYPE.DATE_TIME:return{defaultWeight:fe.WEIGHT,defaultMetric:ce.ONE_HOT,availableMetrics:[ce.ONE_HOT]};case t.COLUMN_TYPE.INT:case t.COLUMN_TYPE.FLOAT:case t.COLUMN_TYPE.QNUM:return{defaultWeight:fe.WEIGHT,defaultMetric:ce.DIFFERENCE,availableMetrics:[ce.DIFFERENCE,ce.ONE_HOT]};default:throw new Error(re.UNSUPPORTED_COLUMN_TYPE)}}!function(t){t.ONE_HOT="One-hot",t.DIFFERENCE="Difference"}(ce||(ce={})),(he=le||(le={})).EUCLIDEAN="Euclidean",he.MANHATTAN="Manhattan",function(t){t[t.WEIGHT=1]="WEIGHT",t[t.NEIGHBORS=4]="NEIGHBORS",t[t.IN_PLACE=1]="IN_PLACE",t[t.SELECTED=1]="SELECTED",t[t.KEEP_EMPTY=0]="KEEP_EMPTY"}(fe||(fe={}));const de=e=>{O(`${e} dist, 100K rows, 15 cols, 75 missing vals`,()=>{return r=void 0,o=void 0,s=function*(){const r=function(n){const e=Rn.length,r=[];let o=0;const i=new Map;for(let e=0;e<5;++e){const s=new Int32Array(n),a=`int #${e+1}`,u=[];for(let t=0;t<n;++t)s[t]=Math.floor(10*Math.random());for(let e=0;e<5;++e)o=Math.floor(n*Math.random()),s[o]=t.INT_NULL,u.push(o);r.push(t.Column.fromInt32Array(a,s)),i.set(a,u)}for(let e=0;e<5;++e){const s=new Float32Array(n),a=`float #${e+1}`,u=[];for(let t=0;t<n;++t)s[t]=10*Math.random();for(let e=0;e<5;++e)o=Math.floor(n*Math.random()),s[o]=t.FLOAT_NULL,u.push(o);r.push(t.Column.fromFloat32Array(a,s)),i.set(a,u)}for(let s=0;s<5;++s){const a=new Array(n),u=`str #${s+1}`,c=[];for(let t=0;t<n;++t)a[t]=Rn[Math.floor(Math.random()*e)];const l=t.Column.fromStrings(u,a);for(let t=0;t<5;++t)o=Math.floor(n*Math.random()),l.set(o,null),c.push(o);r.push(l),i.set(u,c)}return{df:t.DataFrame.fromColumns(r),misValsIds:i}}(1e5),o=r.df,i=o.columns.names(),s=new Map,a=r.misValsIds;for(const t of o.columns){const n=me(t.type);s.set(t.name,{weight:n.defaultWeight,type:n.defaultMetric})}const u=function(e,r,o,i,s,a,u){if(a<1)throw new Error(re.INCORRECT_NEIGHBORS);if(e.rowCount<2)throw new Error(re.KNN_NOT_ENOUGH_OF_ROWS);if(0===r.length)throw new Error(re.KNN_NO_TARGET_COLUMNS);if(0===o.size)throw new Error(re.KNN_NO_FEATURE_COLUMNS);1===o.size&&r.forEach(t=>{if(o.has(t))throw new Error(`${re.KNN_NO_FEATURE_COLUMNS} can be used for the column '${t}'`)}),r.forEach(t=>{if(!i.has(t))throw new Error(`${re.KNN_FAILS}: ${re.WRONG_PREDICTIONS}`)});const c=e.columns;r.forEach(t=>{if(!ae.includes(c.byName(t).type))throw new Error(re.UNSUPPORTED_COLUMN_TYPE)}),o.forEach((t,n)=>{if(!ae.includes(e.getCol(n).type))throw new Error(re.UNSUPPORTED_COLUMN_TYPE)});const l=new Map;return r.forEach(r=>{const f=c.byName(r),h=ue(f),m=f.length,d=f.getRawData(),p=new Uint16Array(f.categories.length),g=[],y=[],v=[],w=[];o.forEach((t,n)=>{if(n!==f.name){const e=c.byName(n);switch(g.push(e.getRawData()),y.push(ue(e)),t.type){case ce.DIFFERENCE:v.push((n,e)=>t.weight*Math.abs(n-e));break;case ce.ONE_HOT:v.push((n,e)=>t.weight*(n===e?0:1))}}});const E=g.length,A=new Uint32Array(g.length),C=new Float32Array(g.length);let _=0;const N=new Array(a);let x=0,b=0,S=0,T=0,I=0;const M=(t,n)=>{A.forEach((e,r)=>{C[r]=v[e](g[e][t],g[e][n])})},O=s===le.EUCLIDEAN?()=>{let t=0;for(let n=0;n<_;++n)t+=C[n]*C[n];return Math.sqrt(t)}:()=>{let t=0;for(let n=0;n<_;++n)t+=Math.abs(C[n]);return Math.sqrt(t)},R=t=>{if(d[t]===h)return!1;for(let n=0;n<_;++n)if(g[A[n]][t]===y[A[n]])return!1;return!0},L=n=>{if((t=>{_=0;for(let n=0;n<E;++n)g[n][t]!==y[n]&&(A[_]=n,++_)})(n),0===_)throw new Error(`${re.KNN_IMPOSSIBLE_IMPUTATION}: the column "${f.name}", row ${n+1}`);x=0;for(let t=0;t<m;++t)if(R(t)&&t!==n){M(n,t);const e=O();if(x<a)N[x]={index:t,dist:e},++x;else{b=0,S=N[0].dist;for(let t=1;t<x;++t)S<N[t].dist&&(S=N[t].dist,b=t);e<S&&(N[b]={index:t,dist:e})}}if(0===x)throw new Error(`${re.KNN_IMPOSSIBLE_IMPUTATION}: the column "${f.name}", row ${n+1}`);if(f.type===t.COLUMN_TYPE.STRING)return(()=>{p.forEach((t,n,e)=>e[n]=0);let t=0;for(t=0;t<x;++t)++p[d[N[t].index]];let n=p[0],e=0;return p.forEach((t,r)=>{t>n&&(n=t,e=r)}),e})();T=0;for(let t=0;t<x;++t)T+=d[N[t].index];return I=T/x,f.type===t.COLUMN_TYPE.INT?Math.round(I):I};if(u){for(const t of i.get(r))try{d[t]=L(t)}catch(e){w.push(t),e instanceof Error||n.shell.error(re.CORE_ISSUE)}w.length>0&&l.set(r,w),f.set(0,f.get(0))}else{const t=f.clone();let o=1,s=`${r}(${oe})`;for(;e.columns.contains(s);)s=`${r}(${oe} ${o})`,++o;t.name=s;const a=t.getRawData();for(const t of i.get(r))try{a[t]=L(t)}catch(e){w.push(t),e instanceof Error||n.shell.error(re.CORE_ISSUE)}w.length>0&&l.set(s,w),t.set(0,t.get(0)),e.columns.add(t)}}),l}(o,i,s,a,e,5,!0);let c=0;u.forEach((t,n)=>c+=t.length),R(c,0,`Failed to impute ${c} missing values`)},new((i=void 0)||(i=Promise))(function(t,n){function e(t){try{u(s.next(t))}catch(t){n(t)}}function a(t){try{u(s.throw(t))}catch(t){n(t)}}function u(n){var r;n.done?t(n.value):(r=n.value,r instanceof i?r:new i(function(t){t(r)})).then(e,a)}u((s=s.apply(r,o||[])).next())});var r,o,i,s},{timeout:1e4,benchmark:!0})};L("Missing values imputation",()=>{de(le.EUCLIDEAN),de(le.MANHATTAN)});var pe,ge=e(6572);function ye(t){if(t<=0||t>=1)throw new Error(pe.INCORRECT_SIGNIFICANCE_LEVEL)}function ve(t){const n=t.size;return n<=1?0:(t.sumOfSquares-Math.pow(t.sum,2)/n)/(n-1)}function we(t,n,e){ye(e);const r=ve(t),o=ve(n);return 0===r||0===o?r===o:r/o<ge.centralF.inv(1-e,t.size-1,n.size-1)}!function(t){t.NON_EQUAL_FACTORS_VALUES_SIZE="non-equal sizes of factor and values arrays",t.INCORRECT_SIGNIFICANCE_LEVEL="incorrect significance level",t.NON_EQUAL_VARIANCES="non-equal variances",t.NON_NORMAL_DISTRIB="non-normal distribution",t.UNSUPPORTED_COLUMN_TYPE="unsupported feature column type",t.INCORRECT_CATEGORIES_COL_TYPE="incorrect categories column type",t.SINGLE_FACTOR="single category features",t.CATS_EQUAL_SIZE="single value in each category",t.NO_FEATURE_VARIATION="no feature variation",t.NO_FEATURE_VARIATION_WITHIN_GROUPS="no feature variation within groups"}(pe||(pe={}));class Ee{constructor(t,n,e){if(this.nullsCount=0,t.length!==n.length)throw new Error(pe.NON_EQUAL_FACTORS_VALUES_SIZE);if(!(n.stats.stdev>0))throw new Error(pe.NO_FEATURE_VARIATION);this.setStats(t,n,e)}areVarsEqual(t){const n=this.catCount;if(1===n)return!0;const e={sum:this.sums[0],sumOfSquares:this.sumsOfSquares[0],size:this.subSampleSizes[0]};for(let r=1;r<n;++r)if(!we(e,{sum:this.sums[r],sumOfSquares:this.sumsOfSquares[r],size:this.subSampleSizes[r]},t))return!1;return!0}getOneWayAnova(){let t=0,n=0,e=0,r=this.catCount,o=r;for(let i=0;i<r;++i)0!==this.subSampleSizes[i]?(t+=this.sums[i],n+=this.sumsOfSquares[i],e+=Math.pow(this.sums[i],2)/this.subSampleSizes[i]):--o;if(r=o,1===r)throw new Error(pe.SINGLE_FACTOR);const i=this.size-this.nullsCount;if(i===r)throw new Error(pe.CATS_EQUAL_SIZE);const s=n-Math.pow(t,2)/i,a=e-Math.pow(t,2)/i,u=s-a;if(0===u)throw new Error(pe.NO_FEATURE_VARIATION_WITHIN_GROUPS);const c=r-1,l=i-r,f=a/c,h=u/l,m=f/h;return{ssBn:a,ssWn:u,ssTot:s,dfBn:c,dfWn:l,dfTot:i-1,msBn:f,msWn:h,fStat:m,pValue:1-ge.centralF.cdf(m,c,l)}}setStats(n,e,r){const o=e.type,i=e.length,s=ue(e);switch(o){case t.COLUMN_TYPE.INT:case t.COLUMN_TYPE.FLOAT:const o=r;this.catCount=o,this.size=i;const a=e.getRawData(),u=n.getRawData(),c=new Float64Array(o).fill(0),l=new Float64Array(o).fill(0),f=new Int32Array(o).fill(0);let h;if(n.type==t.COLUMN_TYPE.BOOL){let t=0,n=0,e=u[0];const r=8*u.BYTES_PER_ELEMENT-1;for(let o=0;o<i;++o)h=1&e>>n,a[o]!==s?(c[h]+=a[o],l[h]+=Math.pow(a[o],2),++f[h]):++this.nullsCount,++n,n>r&&(n=0,++t,e=u[t])}else{const t=n.stats.missingValueCount>0?ue(n):-1;for(let n=0;n<i;++n)h=u[n],h!==t&&a[n]!==s?(c[h]+=a[n],l[h]+=Math.pow(a[n],2),++f[h]):++this.nullsCount}this.sums=c,this.sumsOfSquares=l,this.subSampleSizes=f;break;default:throw new Error(pe.UNSUPPORTED_COLUMN_TYPE)}}}function Ae(t,n,e,r=!0){ye(e);const o=t.stats.uniqueCount;if(o<2)throw new Error(pe.SINGLE_FACTOR);const i=new Ee(t,n,o);if(r&&!i.areVarsEqual(e))throw new Error(pe.NON_EQUAL_VARIANCES);const s=i.getOneWayAnova();return{anovaTable:s,fCritical:ge.centralF.inv(1-e,s.dfBn,s.dfWn),significance:e}}var Ce=function(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{u(r.next(t))}catch(t){i(t)}}function a(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,a)}u((r=r.apply(t,n||[])).next())})};const _e=.05,Ne=!1,xe=t.Column.fromList(t.COLUMN_TYPE.INT,"features",[9,12,4,8,7,4,6,8,2,10,1,3,4,5,2]),be=t.Column.fromStrings("features",["A","A","A","A","A","B","B","B","B","B","C","C","C","C","C"]);var Se;!function(t){t[t.DF_BN=2]="DF_BN",t[t.DF_TOT=14]="DF_TOT",t[t.DF_WN=12]="DF_WN",t[t.SS_BN=63.333]="SS_BN",t[t.SS_TOT=147.333]="SS_TOT",t[t.SS_WN=84]="SS_WN",t[t.MS_BN=31.666]="MS_BN",t[t.MS_WN=7]="MS_WN",t[t.F_STAT=4.523]="F_STAT",t[t.F_CRIT=3.885]="F_CRIT",t[t.P_VAL=.034]="P_VAL"}(Se||(Se={})),L("ANOVA",()=>{O("Performance: 1M rows demog",()=>Ce(void 0,void 0,void 0,function*(){const t=n.data.demo.demog(1e6),e=t.col("race"),r=t.col("height");new Ee(e,r,e.stats.uniqueCount).areVarsEqual(_e),Ae(e,r,_e,Ne)}),{timeout:4e3,benchmark:!0}),O("Correctness",()=>Ce(void 0,void 0,void 0,function*(){const t=Ae(be,xe,_e,Ne),n=t.anovaTable;R(n.dfBn,Se.DF_BN,"Incorrect degrees of freedom: dfBn"),R(n.dfTot,Se.DF_TOT,"Incorrect degrees of freedom: dfTot"),R(n.dfWn,Se.DF_WN,"Incorrect degrees of freedom: dfWn");const e=(t,n)=>Math.abs(t-n)<.01;R(e(n.ssBn,Se.SS_BN),!0,"Incorrect sum of squares: ssBn"),R(e(n.ssTot,Se.SS_TOT),!0,"Incorrect sum of squares: ssTot"),R(e(n.ssWn,Se.SS_WN),!0,"Incorrect sum of squares: ssWn"),R(e(n.msBn,Se.MS_BN),!0,"Incorrect mean squares: msBn"),R(e(n.msWn,Se.MS_WN),!0,"Incorrect mean squares: msWn"),R(e(n.fStat,Se.F_STAT),!0,"Incorrect F-statistics value"),R(e(n.pValue,Se.P_VAL),!0,"Incorrect p-value"),R(e(t.fCritical,Se.F_CRIT),!0,"Incorrect F-critical")}),{timeout:4e3})});var Te=function(t,n,e,r){return new(e||(e=Promise))(function(o,i){function s(t){try{u(r.next(t))}catch(t){i(t)}}function a(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,a)}u((r=r.apply(t,n||[])).next())})};const Ie=new t.Package;function Me(e,r,o){return Te(this,void 0,void 0,function*(){const m=yield function(e){var r,o,m,d,p,g;return i(this,void 0,void 0,function*(){console.log("--------------------");const y=null===(o=null===(r=n.functions.getCurrentCall())||void 0===r?void 0:r.func)||void 0===o?void 0:o.package,v=(null!==(d=(null!==(m=null==y?void 0:y.packageOwner)&&void 0!==m?m:"").match(new RegExp("[^<]*<([^>]*)>")))&&void 0!==d?d:["",""])[1];yield D(y);const w=[];console.log("Running tests"),console.log(e),null!=e||(e={}),null!==(p=(g=e).testContext)&&void 0!==p||(g.testContext=new I),n.shell.clearLastError();const E=function(){const t=[];return console.log=(...n)=>{t.push(...n),u(...n)},console.info=(...n)=>{t.push(...n),c(...n)},console.warn=(...n)=>{t.push(...n),l(...n)},console.error=(...n)=>{t.push(...n),f(...n)},t}();yield function(e,r){var o,s,a,h,m,d,p;return i(this,void 0,void 0,function*(){try{for(const[n,c]of Object.entries(e)){if(!(null==r?void 0:r.category)||(null===(o=r.exclude)||void 0===o?void 0:o.some(t=>n.startsWith(t))))continue;if((!n.toLowerCase().startsWith(`${null==r?void 0:r.category.toLowerCase().trim()} :`)||r.test)&&n.toLowerCase().trim()!==(null==r?void 0:r.category.toLowerCase().trim()))continue;u(`Started ${n} category`);const e=null===(s=c.tests)||void 0===s?void 0:s.every(t=>{var n;return null===(n=t.options)||void 0===n?void 0:n.skipReason});e||(c.beforeStatus=yield A(c.before,null!==(a=r.category)&&void 0!==a?a:""));let l,f=null!==(h=c.tests)&&void 0!==h?h:[];r.stressTest&&(f=f.filter(t=>{var n;return null===(n=t.options)||void 0===n?void 0:n.stressTest}),f=k(f)),(null!==(d=null===(m=r.tags)||void 0===m?void 0:m.length)&&void 0!==d?d:0)>0&&(f=f.filter(t=>{var n,e;return null===(e=null===(n=t.options)||void 0===n?void 0:n.tags)||void 0===e?void 0:e.some(t=>{var n;return(null!==(n=null==r?void 0:r.tags)&&void 0!==n?n:[]).includes(t)})})),c.beforeStatus?(l=Array.from(f.map(e=>({date:(new Date).toISOString(),category:n,name:e.name,success:!1,result:"before() failed",ms:0,skipped:!1,logs:"",owner:null==y?void 0:y.packageOwner,package:y.name,widgetsDifference:0,flaking:t.Test.isReproducing}))),l.forEach(t=>i(this,void 0,void 0,function*(){return F("package",t)}))):l=yield C(c,r);const g=l.filter(t=>"skipped"!=t.result);e||(c.afterStatus=yield A(c.after,null!==(p=r.category)&&void 0!==p?p:"")),c.afterStatus&&g.push({date:(new Date).toISOString(),category:n,name:"after",success:!1,result:c.afterStatus,ms:0,skipped:!1,logs:"",owner:null==y?void 0:y.packageOwner,package:y.name,widgetsDifference:0,flaking:t.Test.isReproducing}),c.beforeStatus&&g.push({date:(new Date).toISOString(),category:n,name:"before",success:!1,result:c.beforeStatus,ms:0,skipped:!1,logs:"",owner:null==y?void 0:y.packageOwner,package:y.name,widgetsDifference:0,flaking:t.Test.isReproducing}),w.push(...g)}}finally{console.log=u,console.info=c,console.warn=l,console.error=f}if(r.testContext.catchUnhandled&&!t.Test.isInBenchmark){yield H(1e3);const e=yield n.shell.lastError,r={logs:"",date:(new Date).toISOString(),category:"Unhandled exceptions",name:"Exception",result:null!=e?e:"",success:!e,ms:0,skipped:!1,owner:null!=v?v:"",package:y.name,widgetsDifference:0};w.push(Object.assign(Object.assign({},r),{flaking:t.Test.isReproducing&&!e})),r.package=y.name,yield F("package",r)}})}(h,e);for(let t of w)t.result=t.result.toString().replace(/"/g,"'"),null!=t.logs&&(t.logs=t.logs.toString().replace(/"/g,"'"));return w;function A(t,n){return i(this,void 0,void 0,function*(){let e;try{void 0!==t&&(yield G(()=>i(this,void 0,void 0,function*(){yield t()}),1e5,`before ${n}: timeout error`))}catch(t){e=yield U(t)}return e})}function C(e,r){var o,u,c,l,f,h,m,d,p,g,w,A,C,N,x,b,S,T;return i(this,void 0,void 0,function*(){let i=null!==(o=e.tests)&&void 0!==o?o:[];const I=[],M=_();if(e.clear)for(let o=0;o<i.length;o++){i[o].options&&void 0===(null===(u=i[o].options)||void 0===u?void 0:u.benchmark)&&(i[o].options||(i[o].options={}),i[o].options.benchmark=null!==(c=e.benchmarks)&&void 0!==c&&c);let A=i[o];if(r.test&&r.test.toLowerCase()!==A.name.toLowerCase())continue;(null==A?void 0:A.options)&&(A.options.owner=null!==(m=null!==(h=null!==(f=null===(l=i[o].options)||void 0===l?void 0:l.owner)&&void 0!==f?f:null==e?void 0:e.owner)&&void 0!==h?h:v)&&void 0!==m?m:"");let C=yield B(A,null==r?void 0:r.test,E,t.Test.isInBenchmark?null!==(p=null===(d=i[o].options)||void 0===d?void 0:d.benchmarkTimeout)&&void 0!==p?p:a:null!==(w=null===(g=i[o].options)||void 0===g?void 0:g.timeout)&&void 0!==w?w:s,y.name,r.verbose);C&&I.push(Object.assign(Object.assign({},C),{widgetsDifference:_()-M})),n.shell.closeAll(),t.Balloon.closeAll()}else for(let n=0;n<i.length;n++){let o=i[n];if(r.test&&r.test.toLowerCase()!==o.name.toLowerCase())continue;(null==o?void 0:o.options)&&(o.options.owner=null!==(x=null!==(N=null!==(C=null===(A=i[n].options)||void 0===A?void 0:A.owner)&&void 0!==C?C:null==e?void 0:e.owner)&&void 0!==N?N:v)&&void 0!==x?x:"");let s=yield B(o,null==r?void 0:r.test,E,t.Test.isInBenchmark?null!==(S=null===(b=i[n].options)||void 0===b?void 0:b.benchmarkTimeout)&&void 0!==S?S:a:null===(T=i[n].options)||void 0===T?void 0:T.timeout,y.name,r.verbose);s&&I.push(Object.assign(Object.assign({},s),{widgetsDifference:_()-M}))}return I})}function _(){var n;let e=-1;try{e=t.Widget.getAll().length}catch(t){console.warn(null!==(n=t.message)&&void 0!==n?n:t)}return e}})}({category:e,test:r,testContext:o});return t.DataFrame.fromObjects(m)})}function Oe(){return Te(this,void 0,void 0,function*(){yield D(Ie,Ie.getModule("package-test.js"))})}})(),eda_test=r})();
|
|
1
|
+
var eda_test;(()=>{var t,e,n,o,r={5540(t,e,n){"use strict";t=n.hmd(t);var o,r=(o="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(t={}){var e,n,r=void 0!==t?t:{};r.ready=new Promise(function(t,o){e=t,n=o});var i,s=Object.assign({},r),a="object"==typeof window,l="function"==typeof importScripts,u=("object"==typeof process&&"object"==typeof process.versions&&process.versions.node,"");(a||l)&&(l?u=self.location.href:"undefined"!=typeof document&&document.currentScript&&(u=document.currentScript.src),o&&(u=o),u=0!==u.indexOf("blob:")?u.substr(0,u.replace(/[?#].*/,"").lastIndexOf("/")+1):"",l&&(i=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),r.print||console.log.bind(console);var c,f,d=r.printErr||console.warn.bind(console);Object.assign(r,s),s=null,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.quit&&r.quit,r.wasmBinary&&(c=r.wasmBinary),r.noExitRuntime,"object"!=typeof WebAssembly&&T("no native wasm support detected");var h,m,p,g=!1;function v(){var t=f.buffer;r.HEAP8=h=new Int8Array(t),r.HEAP16=new Int16Array(t),r.HEAP32=new Int32Array(t),r.HEAPU8=m=new Uint8Array(t),r.HEAPU16=new Uint16Array(t),r.HEAPU32=p=new Uint32Array(t),r.HEAPF32=new Float32Array(t),r.HEAPF64=new Float64Array(t)}var y=[],A=[],w=[];function C(t){y.unshift(t)}function E(t){w.unshift(t)}var b,x,_=0,N=null,M=null;function T(t){r.onAbort&&r.onAbort(t),d(t="Aborted("+t+")"),g=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw n(e),e}function S(t){return t.startsWith("data:application/octet-stream;base64,")}function O(t){try{if(t==b&&c)return new Uint8Array(c);if(i)return i(t);throw"both async and sync fetching of the wasm failed"}catch(t){T(t)}}function I(t,e,n){return function(t){return c||!a&&!l||"function"!=typeof fetch?Promise.resolve().then(function(){return O(t)}):fetch(t,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(function(){return O(t)})}(t).then(function(t){return WebAssembly.instantiate(t,e)}).then(function(t){return t}).then(n,function(t){d("failed to asynchronously prepare wasm: "+t),T(t)})}function L(t){for(;t.length>0;)t.shift()(r)}function P(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(t){p[this.ptr+4>>2]=t},this.get_type=function(){return p[this.ptr+4>>2]},this.set_destructor=function(t){p[this.ptr+8>>2]=t},this.get_destructor=function(){return p[this.ptr+8>>2]},this.set_caught=function(t){t=t?1:0,h[this.ptr+12|0]=t},this.get_caught=function(){return 0!=h[this.ptr+12|0]},this.set_rethrown=function(t){t=t?1:0,h[this.ptr+13|0]=t},this.get_rethrown=function(){return 0!=h[this.ptr+13|0]},this.init=function(t,e){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(e)},this.set_adjusted_ptr=function(t){p[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return p[this.ptr+16>>2]},this.get_exception_ptr=function(){if(H(this.get_type()))return p[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}function R(t){var e=f.buffer;try{return f.grow(t-e.byteLength+65535>>>16),v(),1}catch(t){}}function F(t){return r["_"+t]}S(b="wasmDbscan.wasm")||(x=b,b=r.locateFile?r.locateFile(x,u):u+x);var D="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function B(t,e,n,o,r){var i={string:t=>{var e=0;return null!=t&&0!==t&&(e=function(t){var e=function(t){for(var e=0,n=0;n<t.length;++n){var o=t.charCodeAt(n);o<=127?e++:o<=2047?e+=2:o>=55296&&o<=57343?(e+=4,++n):e+=3}return e}(t)+1,n=$(e);return function(t,e,n){!function(t,e,n,o){if(!(o>0))return 0;for(var r=n+o-1,i=0;i<t.length;++i){var s=t.charCodeAt(i);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++i)),s<=127){if(n>=r)break;e[n++]=s}else if(s<=2047){if(n+1>=r)break;e[n++]=192|s>>6,e[n++]=128|63&s}else if(s<=65535){if(n+2>=r)break;e[n++]=224|s>>12,e[n++]=128|s>>6&63,e[n++]=128|63&s}else{if(n+3>=r)break;e[n++]=240|s>>18,e[n++]=128|s>>12&63,e[n++]=128|s>>6&63,e[n++]=128|63&s}}e[n]=0}(t,m,e,n)}(t,n,e),n}(t)),e},array:t=>{var e,n,o=$(t.length);return e=t,n=o,h.set(e,n),o}},s=F(t),a=[],l=0;if(o)for(var u=0;u<o.length;u++){var c=i[n[u]];c?(0===l&&(l=V()),a[u]=c(o[u])):a[u]=o[u]}var f=s.apply(null,a);return function(t){return 0!==l&&G(l),function(t){return"string"===e?(n=t)?function(t,e,n){for(var o=e+n,r=e;t[r]&&!(r>=o);)++r;if(r-e>16&&t.buffer&&D)return D.decode(t.subarray(e,r));for(var i="";e<r;){var s=t[e++];if(128&s){var a=63&t[e++];if(192!=(224&s)){var l=63&t[e++];if((s=224==(240&s)?(15&s)<<12|a<<6|l:(7&s)<<18|a<<12|l<<6|63&t[e++])<65536)i+=String.fromCharCode(s);else{var u=s-65536;i+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else i+=String.fromCharCode((31&s)<<6|a)}else i+=String.fromCharCode(s)}return i}(m,n,o):"":"boolean"===e?Boolean(t):t;var n,o}(t)}(f)}var k,U={__cxa_throw:function(t,e,n){throw new P(t).init(e,n),t},abort:function(){T("")},emscripten_memcpy_big:function(t,e,n){m.copyWithin(t,e,e+n)},emscripten_resize_heap:function(t){var e=m.length,n=2147483648;if((t>>>=0)>n)return!1;let o=(t,e)=>t+(e-t%e)%e;for(var r=1;r<=4;r*=2){var i=e*(1+.2/r);if(i=Math.min(i,t+100663296),R(Math.min(n,o(Math.max(t,i),65536))))return!0}return!1}},V=(function(){var t,e,o,i,s={env:U,wasi_snapshot_preview1:U};function a(t,e){var n,o=t.exports;return r.asm=o,f=r.asm.memory,v(),r.asm.__indirect_function_table,n=r.asm.__wasm_call_ctors,A.unshift(n),function(){if(_--,r.monitorRunDependencies&&r.monitorRunDependencies(_),0==_&&(null!==N&&(clearInterval(N),N=null),M)){var t=M;M=null,t()}}(),o}if(_++,r.monitorRunDependencies&&r.monitorRunDependencies(_),r.instantiateWasm)try{return r.instantiateWasm(s,a)}catch(t){d("Module.instantiateWasm callback failed with error: "+t),n(t)}(t=c,e=b,o=s,i=function(t){a(t.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||S(e)||"function"!=typeof fetch?I(e,o,i):fetch(e,{credentials:"same-origin"}).then(function(t){return WebAssembly.instantiateStreaming(t,o).then(i,function(t){return d("wasm streaming compile failed: "+t),d("falling back to ArrayBuffer instantiation"),I(e,o,i)})})).catch(n)}(),r._dbscan=function(){return(r._dbscan=r.asm.dbscan).apply(null,arguments)},r._malloc=function(){return(r._malloc=r.asm.malloc).apply(null,arguments)},r._free=function(){return(r._free=r.asm.free).apply(null,arguments)},function(){return(V=r.asm.stackSave).apply(null,arguments)}),G=function(){return(G=r.asm.stackRestore).apply(null,arguments)},$=function(){return($=r.asm.stackAlloc).apply(null,arguments)},H=function(){return(H=r.asm.__cxa_is_pointer_type).apply(null,arguments)};function q(){function t(){k||(k=!0,r.calledRun=!0,g||(L(A),e(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)E(r.postRun.shift());L(w)}()))}_>0||(function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)C(r.preRun.shift());L(y)}(),_>0||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()))}if(r.ccall=B,r.cwrap=function(t,e,n,o){var r=!n||n.every(t=>"number"===t||"boolean"===t);return"string"!==e&&r&&!o?F(t):function(){return B(t,e,n,arguments)}},M=function t(){k||q(),k||(M=t)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return q(),t.ready});"object"==typeof exports?t.exports=r:"function"==typeof define&&n.amdO?define([],function(){return r}):"object"==typeof exports&&(exports.exportCppDbscanLib=r)},4884(t,e,n){"use strict";n.d(e,{A:()=>a});var o=n(1354),r=n.n(o),i=n(6314),s=n.n(i)()(r());s.push([t.id,".eda-pmpo-tooltip-line {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-left: 6px;\n}\n\n.eda-pmpo-box {\n width: 10px;\n height: 10px;\n}\n\n.eda-pmpo-input-form {\n padding-left: 10px;\n padding-right: 5px;\n}\n\n.eda-pmpo-title {\n font-size: 14.5px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n white-space: nowrap;\n}\n\n.eda-pmpo-centered-text {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n text-align: center;\n}","",{version:3,sources:["webpack://./css/pmpo.css"],names:[],mappings:"AAAA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,YAAY;AACd;;AAEA;EACE,kBAAkB;EAClB,kBAAkB;AACpB;;AAEA;EACE,iBAAiB;EACjB,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,gCAAgC;EAChC,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,YAAY;EACZ,WAAW;EACX,kBAAkB;AACpB",sourcesContent:[".eda-pmpo-tooltip-line {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-left: 6px;\n}\n\n.eda-pmpo-box {\n width: 10px;\n height: 10px;\n}\n\n.eda-pmpo-input-form {\n padding-left: 10px;\n padding-right: 5px;\n}\n\n.eda-pmpo-title {\n font-size: 14.5px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n white-space: nowrap;\n}\n\n.eda-pmpo-centered-text {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n text-align: center;\n}"],sourceRoot:""}]);const a=s},6801(t,e,n){"use strict";n.d(e,{A:()=>a});var o=n(1354),r=n.n(o),i=n(6314),s=n.n(i)()(r());s.push([t.id,".statistics-mpo-header {\n margin-top: 10px;\n padding-bottom: 5px;\n border-bottom: 1px solid var(--grey-2);\n gap: 10px;\n}\n\n.statistics-mpo-header > * {\n font-weight: bold;\n}\n\n.statistics-mpo-header > *:first-child {\n width: 130px;\n}\n\n.statistics-mpo-header > *:nth-child(2) {\n width: 120px;\n min-width: 60px;\n}\n\n.statistics-mpo-header > *:nth-child(3) {\n flex-grow: 1;\n}\n\n.statistics-mpo-property-cell {\n width: 130px;\n max-width: 130px;\n align-self: flex-end;\n margin-bottom: 20px !important;\n}\n\n.ui-form .statistics-mpo-property-cell > div:first-child {\n padding-left: 4px;\n}\n\n.statistics-mpo-property-cell > div:first-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.statistics-mpo-weight-input {\n width: 100px;\n}\n\n.statistics-mpo-weight-cell {\n align-self: flex-end;\n margin-bottom: 20px !important;\n align-items: center;\n gap: 4px;\n}\n\n.statistics-mpo-control-buttons {\n gap: 10px;\n margin-left: 10px;\n color: var(--blue-1);\n visibility: hidden;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.statistics-mpo-row:hover .statistics-mpo-control-buttons,\n.statistics-mpo-cat-row:hover .statistics-mpo-control-buttons {\n visibility: visible;\n}\n\n.statistics-mpo-range-input {\n width: 70px;\n}\n\n.statistics-mpo-row {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: 8px 0;\n min-height: 70px;\n gap: 10px;\n\n flex-wrap: wrap;\n}\n\n.statistics-mpo-row > * {\n flex: 0 0 auto;\n}\n\n\n.statistics-mpo-row .ui-input-choice .ui-input-editor {\n width: 100px !important;\n max-width: none !important;\n}\n\n.ui-form .statistics-mpo-row .ui-input-root {\n margin-bottom: 0 !important;\n padding: 0 !important;\n}\n\n.statistics-mpo-cat-editor {\n width: 280px;\n margin-left: 30px;\n}\n\n.statistics-mpo-cat-row {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-bottom: 2px;\n}\n\n.statistics-mpo-cat-name {\n width: 120px;\n}\n\n.statistics-mpo-cat-col-header {\n font-size: 11px;\n color: var(--grey-3);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.statistics-mpo-desirability-dialog .statistics-mpo-cat-editor {\n width: auto;\n margin-left: 0;\n}\n\n.statistics-mpo-desirability-dialog .statistics-mpo-cat-name {\n flex: 1;\n width: auto;\n}\n\n.statistics-mpo-cat-desirability {\n width: 70px;\n}\n\n.statistics-mpo-weight-toggle {\n cursor: pointer;\n color: var(--grey-3);\n font-size: 12px;\n}\n\n.statistics-mpo-weight-toggle:hover {\n color: var(--grey-5);\n}\n\n.statistics-mpo-weight-toggle-active {\n color: var(--blue-1);\n}\n\n.statistics-mpo-weight-toggle-active:hover {\n color: var(--blue-2);\n}\n\n.statistics-mpo-hidden {\n display: none !important;\n}\n\n.statistics-mpo-empty-state {\n text-align: center;\n padding: 48px 24px;\n color: var(--grey-4);\n border: 1px dashed var(--grey-2);\n border-radius: 8px;\n margin: 16px 12px;\n}\n\n.statistics-mpo-empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n display: block;\n color: var(--blue-1);\n opacity: 0.3;\n cursor: default;\n pointer-events: none;\n}\n\n.statistics-mpo-empty-state h3 {\n color: var(--grey-5);\n}\n\n.statistics-mpo-empty-state p {\n color: var(--grey-3);\n max-width: 360px;\n margin-inline: auto;\n}\n\n.statistics-mpo-dialog-header-row {\n gap: 12px;\n align-items: flex-end;\n margin-bottom: 8px;\n}\n\n.statistics-mpo-dialog-header-row .ui-input-root {\n flex: 0 1 auto;\n}\n\n.statistics-mpo-section-header {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--blue-1);\n letter-spacing: 0.5px;\n border-bottom: 1px solid var(--grey-2);\n padding-bottom: 4px;\n margin: 12px 0 8px;\n}\n\n.statistics-mpo-param-grid.ui-form {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0 8px;\n}\n\n.statistics-mpo-desirability-dialog .statistics-mpo-plot {\n margin: 0 auto;\n}\n\n@media (max-width: 500px) {\n .statistics-mpo-row {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .statistics-mpo-row > * {\n width: 100% !important;\n margin-bottom: 5px;\n }\n\n .statistics-mpo-weight-cell {\n margin-top: 0 !important;\n }\n}\n","",{version:3,sources:["webpack://./node_modules/@datagrok-libraries/statistics/css/styles.css"],names:[],mappings:"AAAA;EACE,gBAAgB;EAChB,mBAAmB;EACnB,sCAAsC;EACtC,SAAS;AACX;;AAEA;EACE,iBAAiB;AACnB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,YAAY;EACZ,eAAe;AACjB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,YAAY;EACZ,gBAAgB;EAChB,oBAAoB;EACpB,8BAA8B;AAChC;;AAEA;EACE,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;AACrB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,oBAAoB;EACpB,8BAA8B;EAC9B,mBAAmB;EACnB,QAAQ;AACV;;AAEA;EACE,SAAS;EACT,iBAAiB;EACjB,oBAAoB;EACpB,kBAAkB;EAClB,mBAAmB;EACnB,cAAc;AAChB;;AAEA;;EAEE,mBAAmB;AACrB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,2BAA2B;EAC3B,cAAc;EACd,gBAAgB;EAChB,SAAS;;EAET,eAAe;AACjB;;AAEA;EACE,cAAc;AAChB;;;AAGA;EACE,uBAAuB;EACvB,0BAA0B;AAC5B;;AAEA;EACE,2BAA2B;EAC3B,qBAAqB;AACvB;;AAEA;EACE,YAAY;EACZ,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,kBAAkB;AACpB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,eAAe;EACf,oBAAoB;EACpB,yBAAyB;EACzB,qBAAqB;AACvB;;AAEA;EACE,WAAW;EACX,cAAc;AAChB;;AAEA;EACE,OAAO;EACP,WAAW;AACb;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,eAAe;EACf,oBAAoB;EACpB,eAAe;AACjB;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,kBAAkB;EAClB,kBAAkB;EAClB,oBAAoB;EACpB,gCAAgC;EAChC,kBAAkB;EAClB,iBAAiB;AACnB;;AAEA;EACE,eAAe;EACf,mBAAmB;EACnB,cAAc;EACd,oBAAoB;EACpB,YAAY;EACZ,eAAe;EACf,oBAAoB;AACtB;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,oBAAoB;EACpB,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA;EACE,SAAS;EACT,qBAAqB;EACrB,kBAAkB;AACpB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,eAAe;EACf,yBAAyB;EACzB,oBAAoB;EACpB,qBAAqB;EACrB,sCAAsC;EACtC,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,8BAA8B;EAC9B,UAAU;AACZ;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE;IACE,sBAAsB;IACtB,uBAAuB;EACzB;;EAEA;IACE,sBAAsB;IACtB,kBAAkB;EACpB;;EAEA;IACE,wBAAwB;EAC1B;AACF",sourcesContent:[".statistics-mpo-header {\n margin-top: 10px;\n padding-bottom: 5px;\n border-bottom: 1px solid var(--grey-2);\n gap: 10px;\n}\n\n.statistics-mpo-header > * {\n font-weight: bold;\n}\n\n.statistics-mpo-header > *:first-child {\n width: 130px;\n}\n\n.statistics-mpo-header > *:nth-child(2) {\n width: 120px;\n min-width: 60px;\n}\n\n.statistics-mpo-header > *:nth-child(3) {\n flex-grow: 1;\n}\n\n.statistics-mpo-property-cell {\n width: 130px;\n max-width: 130px;\n align-self: flex-end;\n margin-bottom: 20px !important;\n}\n\n.ui-form .statistics-mpo-property-cell > div:first-child {\n padding-left: 4px;\n}\n\n.statistics-mpo-property-cell > div:first-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.statistics-mpo-weight-input {\n width: 100px;\n}\n\n.statistics-mpo-weight-cell {\n align-self: flex-end;\n margin-bottom: 20px !important;\n align-items: center;\n gap: 4px;\n}\n\n.statistics-mpo-control-buttons {\n gap: 10px;\n margin-left: 10px;\n color: var(--blue-1);\n visibility: hidden;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.statistics-mpo-row:hover .statistics-mpo-control-buttons,\n.statistics-mpo-cat-row:hover .statistics-mpo-control-buttons {\n visibility: visible;\n}\n\n.statistics-mpo-range-input {\n width: 70px;\n}\n\n.statistics-mpo-row {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: 8px 0;\n min-height: 70px;\n gap: 10px;\n\n flex-wrap: wrap;\n}\n\n.statistics-mpo-row > * {\n flex: 0 0 auto;\n}\n\n\n.statistics-mpo-row .ui-input-choice .ui-input-editor {\n width: 100px !important;\n max-width: none !important;\n}\n\n.ui-form .statistics-mpo-row .ui-input-root {\n margin-bottom: 0 !important;\n padding: 0 !important;\n}\n\n.statistics-mpo-cat-editor {\n width: 280px;\n margin-left: 30px;\n}\n\n.statistics-mpo-cat-row {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-bottom: 2px;\n}\n\n.statistics-mpo-cat-name {\n width: 120px;\n}\n\n.statistics-mpo-cat-col-header {\n font-size: 11px;\n color: var(--grey-3);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.statistics-mpo-desirability-dialog .statistics-mpo-cat-editor {\n width: auto;\n margin-left: 0;\n}\n\n.statistics-mpo-desirability-dialog .statistics-mpo-cat-name {\n flex: 1;\n width: auto;\n}\n\n.statistics-mpo-cat-desirability {\n width: 70px;\n}\n\n.statistics-mpo-weight-toggle {\n cursor: pointer;\n color: var(--grey-3);\n font-size: 12px;\n}\n\n.statistics-mpo-weight-toggle:hover {\n color: var(--grey-5);\n}\n\n.statistics-mpo-weight-toggle-active {\n color: var(--blue-1);\n}\n\n.statistics-mpo-weight-toggle-active:hover {\n color: var(--blue-2);\n}\n\n.statistics-mpo-hidden {\n display: none !important;\n}\n\n.statistics-mpo-empty-state {\n text-align: center;\n padding: 48px 24px;\n color: var(--grey-4);\n border: 1px dashed var(--grey-2);\n border-radius: 8px;\n margin: 16px 12px;\n}\n\n.statistics-mpo-empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n display: block;\n color: var(--blue-1);\n opacity: 0.3;\n cursor: default;\n pointer-events: none;\n}\n\n.statistics-mpo-empty-state h3 {\n color: var(--grey-5);\n}\n\n.statistics-mpo-empty-state p {\n color: var(--grey-3);\n max-width: 360px;\n margin-inline: auto;\n}\n\n.statistics-mpo-dialog-header-row {\n gap: 12px;\n align-items: flex-end;\n margin-bottom: 8px;\n}\n\n.statistics-mpo-dialog-header-row .ui-input-root {\n flex: 0 1 auto;\n}\n\n.statistics-mpo-section-header {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--blue-1);\n letter-spacing: 0.5px;\n border-bottom: 1px solid var(--grey-2);\n padding-bottom: 4px;\n margin: 12px 0 8px;\n}\n\n.statistics-mpo-param-grid.ui-form {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0 8px;\n}\n\n.statistics-mpo-desirability-dialog .statistics-mpo-plot {\n margin: 0 auto;\n}\n\n@media (max-width: 500px) {\n .statistics-mpo-row {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .statistics-mpo-row > * {\n width: 100% !important;\n margin-bottom: 5px;\n }\n\n .statistics-mpo-weight-cell {\n margin-top: 0 !important;\n }\n}\n"],sourceRoot:""}]);const a=s},6314(t){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n="",o=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),o&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),o&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n}).join("")},e.i=function(t,n,o,r,i){"string"==typeof t&&(t=[[null,t,void 0]]);var s={};if(o)for(var a=0;a<this.length;a++){var l=this[a][0];null!=l&&(s[l]=!0)}for(var u=0;u<t.length;u++){var c=[].concat(t[u]);o&&s[c[0]]||(void 0!==i&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=i),n&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=n):c[2]=n),r&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=r):c[4]="".concat(r)),e.push(c))}},e}},1354(t){"use strict";t.exports=function(t){var e=t[1],n=t[3];if(!n)return e;if("function"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(o),i="/*# ".concat(r," */");return[e].concat([i]).join("\n")}return[e].join("\n")}},9982(t,e,n){var o;!function(){var e={};!function(t){"use strict";t.__esModule=!0,t.digestLength=32,t.blockSize=64;var e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(t,n,o,r,i){for(var s,a,l,u,c,f,d,h,m,p,g,v,y;i>=64;){for(s=n[0],a=n[1],l=n[2],u=n[3],c=n[4],f=n[5],d=n[6],h=n[7],p=0;p<16;p++)g=r+4*p,t[p]=(255&o[g])<<24|(255&o[g+1])<<16|(255&o[g+2])<<8|255&o[g+3];for(p=16;p<64;p++)v=((m=t[p-2])>>>17|m<<15)^(m>>>19|m<<13)^m>>>10,y=((m=t[p-15])>>>7|m<<25)^(m>>>18|m<<14)^m>>>3,t[p]=(v+t[p-7]|0)+(y+t[p-16]|0);for(p=0;p<64;p++)v=(((c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7))+(c&f^~c&d)|0)+(h+(e[p]+t[p]|0)|0)|0,y=((s>>>2|s<<30)^(s>>>13|s<<19)^(s>>>22|s<<10))+(s&a^s&l^a&l)|0,h=d,d=f,f=c,c=u+v|0,u=l,l=a,a=s,s=v+y|0;n[0]+=s,n[1]+=a,n[2]+=l,n[3]+=u,n[4]+=c,n[5]+=f,n[6]+=d,n[7]+=h,r+=64,i-=64}return r}var o=function(){function e(){this.digestLength=t.digestLength,this.blockSize=t.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return e.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},e.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},e.prototype.update=function(t,e){if(void 0===e&&(e=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var o=0;if(this.bytesHashed+=e,this.bufferLength>0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[o++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(o=n(this.temp,this.state,t,o,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[o++],e--;return this},e.prototype.finish=function(t){if(!this.finished){var e=this.bytesHashed,o=this.bufferLength,r=e/536870912|0,i=e<<3,s=e%64<56?64:128;this.buffer[o]=128;for(var a=o+1;a<s-8;a++)this.buffer[a]=0;this.buffer[s-8]=r>>>24&255,this.buffer[s-7]=r>>>16&255,this.buffer[s-6]=r>>>8&255,this.buffer[s-5]=r>>>0&255,this.buffer[s-4]=i>>>24&255,this.buffer[s-3]=i>>>16&255,this.buffer[s-2]=i>>>8&255,this.buffer[s-1]=i>>>0&255,n(this.temp,this.state,this.buffer,0,s),this.finished=!0}for(a=0;a<8;a++)t[4*a+0]=this.state[a]>>>24&255,t[4*a+1]=this.state[a]>>>16&255,t[4*a+2]=this.state[a]>>>8&255,t[4*a+3]=this.state[a]>>>0&255;return this},e.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},e.prototype._saveState=function(t){for(var e=0;e<this.state.length;e++)t[e]=this.state[e]},e.prototype._restoreState=function(t,e){for(var n=0;n<this.state.length;n++)this.state[n]=t[n];this.bytesHashed=e,this.finished=!1,this.bufferLength=0},e}();t.Hash=o;var r=function(){function t(t){this.inner=new o,this.outer=new o,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var e=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new o).update(t).finish(e).clean();else for(var n=0;n<t.length;n++)e[n]=t[n];for(n=0;n<e.length;n++)e[n]^=54;for(this.inner.update(e),n=0;n<e.length;n++)e[n]^=106;for(this.outer.update(e),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate),n=0;n<e.length;n++)e[n]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function i(t){var e=(new o).update(t),n=e.digest();return e.clean(),n}function s(t,e){var n=new r(t).update(e),o=n.digest();return n.clean(),o}function a(t,e,n,o){var r=o[0];if(0===r)throw new Error("hkdf: cannot expand more");e.reset(),r>1&&e.update(t),n&&e.update(n),e.update(o),e.finish(t),o[0]++}t.HMAC=r,t.hash=i,t.default=i,t.hmac=s;var l=new Uint8Array(t.digestLength);t.hkdf=function(t,e,n,o){void 0===e&&(e=l),void 0===o&&(o=32);for(var i=new Uint8Array([1]),u=s(e,t),c=new r(u),f=new Uint8Array(c.digestLength),d=f.length,h=new Uint8Array(o),m=0;m<o;m++)d===f.length&&(a(f,c,n,i),d=0),h[m]=f[d++];return c.clean(),f.fill(0),i.fill(0),h},t.pbkdf2=function(t,e,n,o){for(var i=new r(t),s=i.digestLength,a=new Uint8Array(4),l=new Uint8Array(s),u=new Uint8Array(s),c=new Uint8Array(o),f=0;f*s<o;f++){var d=f+1;a[0]=d>>>24&255,a[1]=d>>>16&255,a[2]=d>>>8&255,a[3]=d>>>0&255,i.reset(),i.update(e),i.update(a),i.finish(u);for(var h=0;h<s;h++)l[h]=u[h];for(h=2;h<=n;h++){i.reset(),i.update(u).finish(u);for(var m=0;m<s;m++)l[m]^=u[m]}for(h=0;h<s&&f*s+h<o;h++)c[f*s+h]=l[h]}for(f=0;f<s;f++)l[f]=u[f]=0;for(f=0;f<4;f++)a[f]=0;return i.clean(),c}}(e);var r=e.default;for(var i in e)r[i]=e[i];"object"==typeof t.exports?t.exports=r:void 0===(o=function(){return r}.call(e,n,e,t))||(t.exports=o)}()},944(t,e){"use strict";e.Vb=void 0,e.Vb=function(t,e,n){var o=function(t,e,n){if(0===t.length||0===e.length)return 0;if(n&&!n.caseSensitive&&(t=t.toUpperCase(),e=e.toUpperCase()),t===e)return 1;for(var o=0,r=t.length,i=e.length,s=Math.floor(Math.max(r,i)/2)-1,a=new Array(r),l=new Array(i),u=0;u<r;u++)for(var c=Math.max(0,u-s);c<=Math.min(i,u+s+1);c++)if(!a[u]&&!l[c]&&t[u]===e[c]){++o,a[u]=l[c]=!0;break}if(0===o)return 0;var f=0,d=0;for(u=0;u<r;u++)if(a[u]){for(;!l[d];)d++;t.charAt(u)!==e.charAt(d++)&&f++}return(o/r+o/i+(o-(f/=2))/o)/3}(t,e,n),r=0;if(o>.7){for(var i=Math.min(t.length,e.length),s=0;t[s]===e[s]&&s<4&&s<i;)++r,s++;o+=.1*r*(1-o)}return o}},6572(t){var e;t.exports=(e=function(t,e){var n=Array.prototype.concat,o=Array.prototype.slice,r=Object.prototype.toString;function i(e,n){var o=e>n?e:n;return t.pow(10,17-~~(t.log(o>0?o:-o)*t.LOG10E))}var s=Array.isArray||function(t){return"[object Array]"===r.call(t)};function a(t){return"[object Function]"===r.call(t)}function l(t){return"number"==typeof t&&t-t===0}function u(){return new u._init(arguments)}function c(){return 0}function f(){return 1}function d(t,e){return t===e?1:0}u.fn=u.prototype,u._init=function(t){if(s(t[0]))if(s(t[0][0])){a(t[1])&&(t[0]=u.map(t[0],t[1]));for(var e=0;e<t[0].length;e++)this[e]=t[0][e];this.length=t[0].length}else this[0]=a(t[1])?u.map(t[0],t[1]):t[0],this.length=1;else if(l(t[0]))this[0]=u.seq.apply(null,t),this.length=1;else{if(t[0]instanceof u)return u(t[0].toArray());this[0]=[],this.length=1}return this},u._init.prototype=u.prototype,u._init.constructor=u,u.utils={calcRdx:i,isArray:s,isFunction:a,isNumber:l,toVector:function(t){return n.apply([],t)}},u._random_fn=t.random,u.setRandom=function(t){if("function"!=typeof t)throw new TypeError("fn is not a function");u._random_fn=t},u.extend=function(t){var e,n;if(1===arguments.length){for(n in t)u[n]=t[n];return this}for(e=1;e<arguments.length;e++)for(n in arguments[e])t[n]=arguments[e][n];return t},u.rows=function(t){return t.length||1},u.cols=function(t){return t[0].length||1},u.dimensions=function(t){return{rows:u.rows(t),cols:u.cols(t)}},u.row=function(t,e){return s(e)?e.map(function(e){return u.row(t,e)}):t[e]},u.rowa=function(t,e){return u.row(t,e)},u.col=function(t,e){if(s(e)){var n=u.arange(t.length).map(function(){return new Array(e.length)});return e.forEach(function(e,o){u.arange(t.length).forEach(function(r){n[r][o]=t[r][e]})}),n}for(var o=new Array(t.length),r=0;r<t.length;r++)o[r]=[t[r][e]];return o},u.cola=function(t,e){return u.col(t,e).map(function(t){return t[0]})},u.diag=function(t){for(var e=u.rows(t),n=new Array(e),o=0;o<e;o++)n[o]=[t[o][o]];return n},u.antidiag=function(t){for(var e=u.rows(t)-1,n=new Array(e),o=0;e>=0;e--,o++)n[o]=[t[o][e]];return n},u.transpose=function(t){var e,n,o,r,i,a=[];for(s(t[0])||(t=[t]),n=t.length,o=t[0].length,i=0;i<o;i++){for(e=new Array(n),r=0;r<n;r++)e[r]=t[r][i];a.push(e)}return 1===a.length?a[0]:a},u.map=function(t,e,n){var o,r,i,a,l;for(s(t[0])||(t=[t]),r=t.length,i=t[0].length,a=n?t:new Array(r),o=0;o<r;o++)for(a[o]||(a[o]=new Array(i)),l=0;l<i;l++)a[o][l]=e(t[o][l],o,l);return 1===a.length?a[0]:a},u.cumreduce=function(t,e,n){var o,r,i,a,l;for(s(t[0])||(t=[t]),r=t.length,i=t[0].length,a=n?t:new Array(r),o=0;o<r;o++)for(a[o]||(a[o]=new Array(i)),i>0&&(a[o][0]=t[o][0]),l=1;l<i;l++)a[o][l]=e(a[o][l-1],t[o][l]);return 1===a.length?a[0]:a},u.alter=function(t,e){return u.map(t,e,!0)},u.create=function(t,e,n){var o,r,i=new Array(t);for(a(e)&&(n=e,e=t),o=0;o<t;o++)for(i[o]=new Array(e),r=0;r<e;r++)i[o][r]=n(o,r);return i},u.zeros=function(t,e){return l(e)||(e=t),u.create(t,e,c)},u.ones=function(t,e){return l(e)||(e=t),u.create(t,e,f)},u.rand=function(t,e){return l(e)||(e=t),u.create(t,e,u._random_fn)},u.identity=function(t,e){return l(e)||(e=t),u.create(t,e,d)},u.symmetric=function(t){var e,n,o=t.length;if(t.length!==t[0].length)return!1;for(e=0;e<o;e++)for(n=0;n<o;n++)if(t[n][e]!==t[e][n])return!1;return!0},u.clear=function(t){return u.alter(t,c)},u.seq=function(t,e,n,o){a(o)||(o=!1);var r,s=[],l=i(t,e),u=(e*l-t*l)/((n-1)*l),c=t;for(r=0;c<=e&&r<n;c=(t*l+u*l*++r)/l)s.push(o?o(c,r):c);return s},u.arange=function(t,n,o){var r,i=[];if(o=o||1,n===e&&(n=t,t=0),t===n||0===o)return[];if(t<n&&o<0)return[];if(t>n&&o>0)return[];if(o>0)for(r=t;r<n;r+=o)i.push(r);else for(r=t;r>n;r+=o)i.push(r);return i},u.slice=function(){function t(t,n,o,r){var i,s=[],a=t.length;if(n===e&&o===e&&r===e)return u.copy(t);if(r=r||1,(n=(n=n||0)>=0?n:a+n)===(o=(o=o||t.length)>=0?o:a+o)||0===r)return[];if(n<o&&r<0)return[];if(n>o&&r>0)return[];if(r>0)for(i=n;i<o;i+=r)s.push(t[i]);else for(i=n;i>o;i+=r)s.push(t[i]);return s}return function(e,n){var o,r;return l((n=n||{}).row)?l(n.col)?e[n.row][n.col]:t(u.rowa(e,n.row),(o=n.col||{}).start,o.end,o.step):l(n.col)?t(u.cola(e,n.col),(r=n.row||{}).start,r.end,r.step):(r=n.row||{},o=n.col||{},t(e,r.start,r.end,r.step).map(function(e){return t(e,o.start,o.end,o.step)}))}}(),u.sliceAssign=function(n,o,r){var i,s;if(l(o.row)){if(l(o.col))return n[o.row][o.col]=r;o.col=o.col||{},o.col.start=o.col.start||0,o.col.end=o.col.end||n[0].length,o.col.step=o.col.step||1,i=u.arange(o.col.start,t.min(n.length,o.col.end),o.col.step);var a=o.row;return i.forEach(function(t,e){n[a][t]=r[e]}),n}if(l(o.col)){o.row=o.row||{},o.row.start=o.row.start||0,o.row.end=o.row.end||n.length,o.row.step=o.row.step||1,s=u.arange(o.row.start,t.min(n[0].length,o.row.end),o.row.step);var c=o.col;return s.forEach(function(t,e){n[t][c]=r[e]}),n}return r[0].length===e&&(r=[r]),o.row.start=o.row.start||0,o.row.end=o.row.end||n.length,o.row.step=o.row.step||1,o.col.start=o.col.start||0,o.col.end=o.col.end||n[0].length,o.col.step=o.col.step||1,s=u.arange(o.row.start,t.min(n.length,o.row.end),o.row.step),i=u.arange(o.col.start,t.min(n[0].length,o.col.end),o.col.step),s.forEach(function(t,e){i.forEach(function(o,i){n[t][o]=r[e][i]})}),n},u.diagonal=function(t){var e=u.zeros(t.length,t.length);return t.forEach(function(t,n){e[n][n]=t}),e},u.copy=function(t){return t.map(function(t){return l(t)?t:t.map(function(t){return t})})};var h=u.prototype;return h.length=0,h.push=Array.prototype.push,h.sort=Array.prototype.sort,h.splice=Array.prototype.splice,h.slice=Array.prototype.slice,h.toArray=function(){return this.length>1?o.call(this):o.call(this)[0]},h.map=function(t,e){return u(u.map(this,t,e))},h.cumreduce=function(t,e){return u(u.cumreduce(this,t,e))},h.alter=function(t){return u.alter(this,t),this},function(t){for(var e=0;e<t.length;e++)(function(t){h[t]=function(e){var n,o=this;return e?(setTimeout(function(){e.call(o,h[t].call(o))}),this):(n=u[t](this),s(n)?u(n):n)}})(t[e])}("transpose clear symmetric rows cols dimensions diag antidiag".split(" ")),function(t){for(var e=0;e<t.length;e++)(function(t){h[t]=function(e,n){var o=this;return n?(setTimeout(function(){n.call(o,h[t].call(o,e))}),this):u(u[t](this,e))}})(t[e])}("row col".split(" ")),function(t){for(var e=0;e<t.length;e++)(function(t){h[t]=function(){return u(u[t].apply(null,arguments))}})(t[e])}("create zeros ones rand identity".split(" ")),u}(Math),function(t,e){var n=t.utils.isFunction;function o(t,e){return t-e}function r(t,n,o){return e.max(n,e.min(t,o))}t.sum=function(t){for(var e=0,n=t.length;--n>=0;)e+=t[n];return e},t.sumsqrd=function(t){for(var e=0,n=t.length;--n>=0;)e+=t[n]*t[n];return e},t.sumsqerr=function(e){for(var n,o=t.mean(e),r=0,i=e.length;--i>=0;)r+=(n=e[i]-o)*n;return r},t.sumrow=function(t){for(var e=0,n=t.length;--n>=0;)e+=t[n];return e},t.product=function(t){for(var e=1,n=t.length;--n>=0;)e*=t[n];return e},t.min=function(t){for(var e=t[0],n=0;++n<t.length;)t[n]<e&&(e=t[n]);return e},t.max=function(t){for(var e=t[0],n=0;++n<t.length;)t[n]>e&&(e=t[n]);return e},t.unique=function(t){for(var e={},n=[],o=0;o<t.length;o++)e[t[o]]||(e[t[o]]=!0,n.push(t[o]));return n},t.mean=function(e){return t.sum(e)/e.length},t.meansqerr=function(e){return t.sumsqerr(e)/e.length},t.geomean=function(n){var o=n.map(e.log),r=t.mean(o);return e.exp(r)},t.median=function(t){var e=t.length,n=t.slice().sort(o);return 1&e?n[e/2|0]:(n[e/2-1]+n[e/2])/2},t.cumsum=function(e){return t.cumreduce(e,function(t,e){return t+e})},t.cumprod=function(e){return t.cumreduce(e,function(t,e){return t*e})},t.diff=function(t){var e,n=[],o=t.length;for(e=1;e<o;e++)n.push(t[e]-t[e-1]);return n},t.rank=function(t){var e,n=[],r={};for(e=0;e<t.length;e++)r[l=t[e]]?r[l]++:(r[l]=1,n.push(l));var i=n.sort(o),s={},a=1;for(e=0;e<i.length;e++){var l,u=r[l=i[e]],c=(a+(a+u-1))/2;s[l]=c,a+=u}return t.map(function(t){return s[t]})},t.mode=function(t){var e,n=t.length,r=t.slice().sort(o),i=1,s=0,a=0,l=[];for(e=0;e<n;e++)r[e]===r[e+1]?i++:(i>s?(l=[r[e]],s=i,a=0):i===s&&(l.push(r[e]),a++),i=1);return 0===a?l[0]:l},t.range=function(e){return t.max(e)-t.min(e)},t.variance=function(e,n){return t.sumsqerr(e)/(e.length-(n?1:0))},t.pooledvariance=function(e){return e.reduce(function(e,n){return e+t.sumsqerr(n)},0)/(e.reduce(function(t,e){return t+e.length},0)-e.length)},t.deviation=function(e){for(var n=t.mean(e),o=e.length,r=new Array(o),i=0;i<o;i++)r[i]=e[i]-n;return r},t.stdev=function(n,o){return e.sqrt(t.variance(n,o))},t.pooledstdev=function(n){return e.sqrt(t.pooledvariance(n))},t.meandev=function(n){for(var o=t.mean(n),r=[],i=n.length-1;i>=0;i--)r.push(e.abs(n[i]-o));return t.mean(r)},t.meddev=function(n){for(var o=t.median(n),r=[],i=n.length-1;i>=0;i--)r.push(e.abs(n[i]-o));return t.median(r)},t.coeffvar=function(e){return t.stdev(e)/t.mean(e)},t.quartiles=function(t){var n=t.length,r=t.slice().sort(o);return[r[e.round(n/4)-1],r[e.round(n/2)-1],r[e.round(3*n/4)-1]]},t.quantiles=function(t,n,i,s){var a,l,u,c,f,d=t.slice().sort(o),h=[n.length],m=t.length;for(void 0===i&&(i=3/8),void 0===s&&(s=3/8),a=0;a<n.length;a++)u=m*(l=n[a])+(i+l*(1-i-s)),c=e.floor(r(u,1,m-1)),f=r(u-c,0,1),h[a]=(1-f)*d[c-1]+f*d[c];return h},t.percentile=function(t,e,n){var r=t.slice().sort(o),i=e*(r.length+(n?1:-1))+(n?0:1),s=parseInt(i),a=i-s;return s+1<r.length?r[s-1]+a*(r[s]-r[s-1]):r[s-1]},t.percentileOfScore=function(t,e,n){var o,r,i=0,s=t.length,a=!1;for("strict"===n&&(a=!0),r=0;r<s;r++)o=t[r],(a&&o<e||!a&&o<=e)&&i++;return i/s},t.histogram=function(n,o){o=o||4;var r,i=t.min(n),s=(t.max(n)-i)/o,a=n.length,l=[];for(r=0;r<o;r++)l[r]=0;for(r=0;r<a;r++)l[e.min(e.floor((n[r]-i)/s),o-1)]+=1;return l},t.covariance=function(e,n){var o,r=t.mean(e),i=t.mean(n),s=e.length,a=new Array(s);for(o=0;o<s;o++)a[o]=(e[o]-r)*(n[o]-i);return t.sum(a)/(s-1)},t.corrcoeff=function(e,n){return t.covariance(e,n)/t.stdev(e,1)/t.stdev(n,1)},t.spearmancoeff=function(e,n){return e=t.rank(e),n=t.rank(n),t.corrcoeff(e,n)},t.stanMoment=function(n,o){for(var r=t.mean(n),i=t.stdev(n),s=n.length,a=0,l=0;l<s;l++)a+=e.pow((n[l]-r)/i,o);return a/n.length},t.skewness=function(e){return t.stanMoment(e,3)},t.kurtosis=function(e){return t.stanMoment(e,4)-3};var i=t.prototype;!function(e){for(var o=0;o<e.length;o++)(function(e){i[e]=function(o,r){var s=[],a=0,l=this;if(n(o)&&(r=o,o=!1),r)return setTimeout(function(){r.call(l,i[e].call(l,o))}),this;if(this.length>1){for(l=!0===o?this:this.transpose();a<l.length;a++)s[a]=t[e](l[a]);return s}return t[e](this[0],o)}})(e[o])}("cumsum cumprod".split(" ")),function(e){for(var o=0;o<e.length;o++)(function(e){i[e]=function(o,r){var s=[],a=0,l=this;if(n(o)&&(r=o,o=!1),r)return setTimeout(function(){r.call(l,i[e].call(l,o))}),this;if(this.length>1){for("sumrow"!==e&&(l=!0===o?this:this.transpose());a<l.length;a++)s[a]=t[e](l[a]);return!0===o?t[e](t.utils.toVector(s)):s}return t[e](this[0],o)}})(e[o])}("sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr geomean median diff rank mode range variance deviation stdev meandev meddev coeffvar quartiles histogram skewness kurtosis".split(" ")),function(e){for(var o=0;o<e.length;o++)(function(e){i[e]=function(){var o,r=[],s=0,a=this,l=Array.prototype.slice.call(arguments);if(n(l[l.length-1])){o=l[l.length-1];var u=l.slice(0,l.length-1);return setTimeout(function(){o.call(a,i[e].apply(a,u))}),this}o=void 0;var c=function(n){return t[e].apply(a,[n].concat(l))};if(this.length>1){for(a=a.transpose();s<a.length;s++)r[s]=c(a[s]);return r}return c(this[0])}})(e[o])}("quantiles percentileOfScore".split(" "))}(e,Math),function(t,e){t.gammaln=function(t){var n,o,r,i=0,s=[76.18009172947146,-86.50532032941678,24.01409824083091,-1.231739572450155,.001208650973866179,-5395239384953e-18],a=1.000000000190015;for(r=(o=n=t)+5.5,r-=(n+.5)*e.log(r);i<6;i++)a+=s[i]/++o;return e.log(2.5066282746310007*a/n)-r},t.loggam=function(t){var n,o,r,i,s,a,l,u=[.08333333333333333,-.002777777777777778,.0007936507936507937,-.0005952380952380952,.0008417508417508418,-.001917526917526918,.00641025641025641,-.02955065359477124,.1796443723688307,-1.3924322169059];if(n=t,l=0,1==t||2==t)return 0;for(t<=7&&(n=t+(l=e.floor(7-t))),o=1/(n*n),r=2*e.PI,s=u[9],a=8;a>=0;a--)s*=o,s+=u[a];if(i=s/n+.5*e.log(r)+(n-.5)*e.log(n)-n,t<=7)for(a=1;a<=l;a++)i-=e.log(n-1),n-=1;return i},t.gammafn=function(t){var n,o,r,i,s=[-1.716185138865495,24.76565080557592,-379.80425647094563,629.3311553128184,866.9662027904133,-31451.272968848367,-36144.413418691176,66456.14382024054],a=[-30.8402300119739,315.35062697960416,-1015.1563674902192,-3107.771671572311,22538.11842098015,4755.846277527881,-134659.9598649693,-115132.2596755535],l=!1,u=0,c=0,f=0,d=t;if(t>171.6243769536076)return 1/0;if(d<=0){if(!(i=d%1+36e-17))return 1/0;l=(1&d?-1:1)*e.PI/e.sin(e.PI*i),d=1-d}for(r=d,o=d<1?d++:(d-=u=(0|d)-1)-1,n=0;n<8;++n)f=(f+s[n])*o,c=c*o+a[n];if(i=f/c+1,r<d)i/=r;else if(r>d)for(n=0;n<u;++n)i*=d,d++;return l&&(i=l/i),i},t.gammap=function(e,n){return t.lowRegGamma(e,n)*t.gammafn(e)},t.lowRegGamma=function(n,o){var r,i=t.gammaln(n),s=n,a=1/n,l=a,u=o+1-n,c=1/1e-30,f=1/u,d=f,h=1,m=-~(8.5*e.log(n>=1?n:1/n)+.4*n+17);if(o<0||n<=0)return NaN;if(o<n+1){for(;h<=m;h++)a+=l*=o/++s;return a*e.exp(-o+n*e.log(o)-i)}for(;h<=m;h++)d*=(f=1/(f=(r=-h*(h-n))*f+(u+=2)))*(c=u+r/c);return 1-d*e.exp(-o+n*e.log(o)-i)},t.factorialln=function(e){return e<0?NaN:t.gammaln(e+1)},t.factorial=function(e){return e<0?NaN:t.gammafn(e+1)},t.combination=function(n,o){return n>170||o>170?e.exp(t.combinationln(n,o)):t.factorial(n)/t.factorial(o)/t.factorial(n-o)},t.combinationln=function(e,n){return t.factorialln(e)-t.factorialln(n)-t.factorialln(e-n)},t.permutation=function(e,n){return t.factorial(e)/t.factorial(e-n)},t.betafn=function(n,o){if(!(n<=0||o<=0))return n+o>170?e.exp(t.betaln(n,o)):t.gammafn(n)*t.gammafn(o)/t.gammafn(n+o)},t.betaln=function(e,n){return t.gammaln(e)+t.gammaln(n)-t.gammaln(e+n)},t.betacf=function(t,n,o){var r,i,s,a,l=1e-30,u=1,c=n+o,f=n+1,d=n-1,h=1,m=1-c*t/f;for(e.abs(m)<l&&(m=l),a=m=1/m;u<=100&&(m=1+(i=u*(o-u)*t/((d+(r=2*u))*(n+r)))*m,e.abs(m)<l&&(m=l),h=1+i/h,e.abs(h)<l&&(h=l),a*=(m=1/m)*h,m=1+(i=-(n+u)*(c+u)*t/((n+r)*(f+r)))*m,e.abs(m)<l&&(m=l),h=1+i/h,e.abs(h)<l&&(h=l),a*=s=(m=1/m)*h,!(e.abs(s-1)<3e-7));u++);return a},t.gammapinv=function(n,o){var r,i,s,a,l,u,c=0,f=o-1,d=t.gammaln(o);if(n>=1)return e.max(100,o+100*e.sqrt(o));if(n<=0)return 0;for(o>1?(l=e.log(f),u=e.exp(f*(l-1)-d),a=n<.5?n:1-n,r=(2.30753+.27061*(i=e.sqrt(-2*e.log(a))))/(1+i*(.99229+.04481*i))-i,n<.5&&(r=-r),r=e.max(.001,o*e.pow(1-1/(9*o)-r/(3*e.sqrt(o)),3))):r=n<(i=1-o*(.253+.12*o))?e.pow(n/i,1/o):1-e.log(1-(n-i)/(1-i));c<12;c++){if(r<=0)return 0;if((r-=i=(s=(t.lowRegGamma(o,r)-n)/(i=o>1?u*e.exp(-(r-f)+f*(e.log(r)-l)):e.exp(-r+f*e.log(r)-d)))/(1-.5*e.min(1,s*((o-1)/r-1))))<=0&&(r=.5*(r+i)),e.abs(i)<1e-8*r)break}return r},t.erf=function(t){var n,o,r,i,s=[-1.3026537197817094,.6419697923564902,.019476473204185836,-.00956151478680863,-.000946595344482036,.000366839497852761,42523324806907e-18,-20278578112534e-18,-1624290004647e-18,130365583558e-17,1.5626441722e-8,-8.5238095915e-8,6.529054439e-9,5.059343495e-9,-9.91364156e-10,-2.27365122e-10,96467911e-18,2394038e-18,-6886027e-18,894487e-18,313092e-18,-112708e-18,381e-18,7106e-18,-1523e-18,-94e-18,121e-18,-28e-18],a=s.length-1,l=!1,u=0,c=0;for(t<0&&(t=-t,l=!0),o=4*(n=2/(2+t))-2;a>0;a--)r=u,u=o*u-c+s[a],c=r;return i=n*e.exp(-t*t+.5*(s[0]+o*u)-c),l?i-1:1-i},t.erfc=function(e){return 1-t.erf(e)},t.erfcinv=function(n){var o,r,i,s,a=0;if(n>=2)return-100;if(n<=0)return 100;for(s=n<1?n:2-n,o=-.70711*((2.30753+.27061*(i=e.sqrt(-2*e.log(s/2))))/(1+i*(.99229+.04481*i))-i);a<2;a++)o+=(r=t.erfc(o)-s)/(1.1283791670955126*e.exp(-o*o)-o*r);return n<1?o:-o},t.ibetainv=function(n,o,r){var i,s,a,l,u,c,f,d,h,m,p=o-1,g=r-1,v=0;if(n<=0)return 0;if(n>=1)return 1;for(o>=1&&r>=1?(a=n<.5?n:1-n,c=(2.30753+.27061*(l=e.sqrt(-2*e.log(a))))/(1+l*(.99229+.04481*l))-l,n<.5&&(c=-c),f=(c*c-3)/6,d=2/(1/(2*o-1)+1/(2*r-1)),h=c*e.sqrt(f+d)/d-(1/(2*r-1)-1/(2*o-1))*(f+5/6-2/(3*d)),c=o/(o+r*e.exp(2*h))):(i=e.log(o/(o+r)),s=e.log(r/(o+r)),c=n<(l=e.exp(o*i)/o)/(h=l+(u=e.exp(r*s)/r))?e.pow(o*h*n,1/o):1-e.pow(r*h*(1-n),1/r)),m=-t.gammaln(o)-t.gammaln(r)+t.gammaln(o+r);v<10;v++){if(0===c||1===c)return c;if((c-=l=(u=(t.ibeta(c,o,r)-n)/(l=e.exp(p*e.log(c)+g*e.log(1-c)+m)))/(1-.5*e.min(1,u*(p/c-g/(1-c)))))<=0&&(c=.5*(c+l)),c>=1&&(c=.5*(c+l+1)),e.abs(l)<1e-8*c&&v>0)break}return c},t.ibeta=function(n,o,r){var i=0===n||1===n?0:e.exp(t.gammaln(o+r)-t.gammaln(o)-t.gammaln(r)+o*e.log(n)+r*e.log(1-n));return!(n<0||n>1)&&(n<(o+1)/(o+r+2)?i*t.betacf(n,o,r)/o:1-i*t.betacf(1-n,r,o)/r)},t.randn=function(n,o){var r,i,s,a,l;if(o||(o=n),n)return t.create(n,o,function(){return t.randn()});do{r=t._random_fn(),i=1.7156*(t._random_fn()-.5),l=(s=r-.449871)*s+(a=e.abs(i)+.386595)*(.196*a-.25472*s)}while(l>.27597&&(l>.27846||i*i>-4*e.log(r)*r*r));return i/r},t.randg=function(n,o,r){var i,s,a,l,u,c,f=n;if(r||(r=o),n||(n=1),o)return(c=t.zeros(o,r)).alter(function(){return t.randg(n)}),c;n<1&&(n+=1),i=n-1/3,s=1/e.sqrt(9*i);do{do{l=1+s*(u=t.randn())}while(l<=0);l*=l*l,a=t._random_fn()}while(a>1-.331*e.pow(u,4)&&e.log(a)>.5*u*u+i*(1-l+e.log(l)));if(n==f)return i*l;do{a=t._random_fn()}while(0===a);return e.pow(a,1/f)*i*l},function(e){for(var n=0;n<e.length;n++)(function(e){t.fn[e]=function(){return t(t.map(this,function(n){return t[e](n)}))}})(e[n])}("gammaln gammafn factorial factorialln".split(" ")),function(e){for(var n=0;n<e.length;n++)(function(e){t.fn[e]=function(){return t(t[e].apply(null,arguments))}})(e[n])}("randn".split(" "))}(e,Math),function(t,e){function n(t,n,o,r){for(var i,s=0,a=1,l=1,u=1,c=0,f=0;e.abs((l-f)/l)>r;)f=l,a=u+(i=-(n+c)*(n+o+c)*t/(n+2*c)/(n+2*c+1))*a,l=(s=l+i*s)+(i=(c+=1)*(o-c)*t/(n+2*c-1)/(n+2*c))*l,s/=u=a+i*u,a/=u,l/=u,u=1;return l/n}function o(n,o,r){var i=[.9815606342467192,.9041172563704749,.7699026741943047,.5873179542866175,.3678314989981802,.1252334085114689],s=[.04717533638651183,.10693932599531843,.16007832854334622,.20316742672306592,.2334925365383548,.24914704581340277],a=.5*n;if(a>=8)return 1;var l,u=2*t.normal.cdf(a,0,1,1,0)-1;u=u>=e.exp(-50/r)?e.pow(u,r):0;for(var c=a,f=(8-a)/(l=n>3?2:3),d=c+f,h=0,m=r-1,p=1;p<=l;p++){for(var g=0,v=.5*(d+c),y=.5*(d-c),A=1;A<=12;A++){var w,C=v+y*(6<A?i[(w=12-A+1)-1]:-i[(w=A)-1]),E=C*C;if(E>60)break;var b=2*t.normal.cdf(C,0,1,1,0)*.5-2*t.normal.cdf(C,n,1,1,0)*.5;b>=e.exp(-30/m)&&(g+=b=s[w-1]*e.exp(-.5*E)*e.pow(b,m))}h+=g*=2*y*r/e.sqrt(2*e.PI),c=d,d+=f}return(u+=h)<=e.exp(-30/o)?0:(u=e.pow(u,o))>=1?1:u}!function(e){for(var n=0;n<e.length;n++)(function(e){t[e]=function t(e,n,o){return this instanceof t?(this._a=e,this._b=n,this._c=o,this):new t(e,n,o)},t.fn[e]=function(n,o,r){var i=t[e](n,o,r);return i.data=this,i},t[e].prototype.sample=function(n){var o=this._a,r=this._b,i=this._c;return n?t.alter(n,function(){return t[e].sample(o,r,i)}):t[e].sample(o,r,i)},function(n){for(var o=0;o<n.length;o++)(function(n){t[e].prototype[n]=function(o){var r=this._a,i=this._b,s=this._c;return o||0===o||(o=this.data),"number"!=typeof o?t.fn.map.call(o,function(o){return t[e][n](o,r,i,s)}):t[e][n](o,r,i,s)}})(n[o])}("pdf cdf inv".split(" ")),function(n){for(var o=0;o<n.length;o++)(function(n){t[e].prototype[n]=function(){return t[e][n](this._a,this._b,this._c)}})(n[o])}("mean median mode variance".split(" "))})(e[n])}("beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy laplace lognormal noncentralt normal pareto studentt weibull uniform binomial negbin hypgeom poisson triangular tukey arcsine".split(" ")),t.extend(t.beta,{pdf:function(n,o,r){return n>1||n<0?0:1==o&&1==r?1:o<512&&r<512?e.pow(n,o-1)*e.pow(1-n,r-1)/t.betafn(o,r):e.exp((o-1)*e.log(n)+(r-1)*e.log(1-n)-t.betaln(o,r))},cdf:function(e,n,o){return e>1||e<0?1*(e>1):t.ibeta(e,n,o)},inv:function(e,n,o){return t.ibetainv(e,n,o)},mean:function(t,e){return t/(t+e)},median:function(e,n){return t.ibetainv(.5,e,n)},mode:function(t,e){return(t-1)/(t+e-2)},sample:function(e,n){var o=t.randg(e);return o/(o+t.randg(n))},variance:function(t,n){return t*n/(e.pow(t+n,2)*(t+n+1))}}),t.extend(t.centralF,{pdf:function(n,o,r){var i;return n<0?0:o<=2?0===n&&o<2?1/0:0===n&&2===o?1:1/t.betafn(o/2,r/2)*e.pow(o/r,o/2)*e.pow(n,o/2-1)*e.pow(1+o/r*n,-(o+r)/2):(i=o*n/(r+n*o),o*(r/(r+n*o))/2*t.binomial.pdf((o-2)/2,(o+r-2)/2,i))},cdf:function(e,n,o){return e<0?0:t.ibeta(n*e/(n*e+o),n/2,o/2)},inv:function(e,n,o){return o/(n*(1/t.ibetainv(e,n/2,o/2)-1))},mean:function(t,e){return e>2?e/(e-2):void 0},mode:function(t,e){return t>2?e*(t-2)/(t*(e+2)):void 0},sample:function(e,n){return 2*t.randg(e/2)/e/(2*t.randg(n/2)/n)},variance:function(t,e){if(!(e<=4))return 2*e*e*(t+e-2)/(t*(e-2)*(e-2)*(e-4))}}),t.extend(t.cauchy,{pdf:function(t,n,o){return o<0?0:o/(e.pow(t-n,2)+e.pow(o,2))/e.PI},cdf:function(t,n,o){return e.atan((t-n)/o)/e.PI+.5},inv:function(t,n,o){return n+o*e.tan(e.PI*(t-.5))},median:function(t){return t},mode:function(t){return t},sample:function(n,o){return t.randn()*e.sqrt(1/(2*t.randg(.5)))*o+n}}),t.extend(t.chisquare,{pdf:function(n,o){return n<0?0:0===n&&2===o?.5:e.exp((o/2-1)*e.log(n)-n/2-o/2*e.log(2)-t.gammaln(o/2))},cdf:function(e,n){return e<0?0:t.lowRegGamma(n/2,e/2)},inv:function(e,n){return 2*t.gammapinv(e,.5*n)},mean:function(t){return t},median:function(t){return t*e.pow(1-2/(9*t),3)},mode:function(t){return t-2>0?t-2:0},sample:function(e){return 2*t.randg(e/2)},variance:function(t){return 2*t}}),t.extend(t.exponential,{pdf:function(t,n){return t<0?0:n*e.exp(-n*t)},cdf:function(t,n){return t<0?0:1-e.exp(-n*t)},inv:function(t,n){return-e.log(1-t)/n},mean:function(t){return 1/t},median:function(t){return 1/t*e.log(2)},mode:function(){return 0},sample:function(n){return-1/n*e.log(t._random_fn())},variance:function(t){return e.pow(t,-2)}}),t.extend(t.gamma,{pdf:function(n,o,r){return n<0?0:0===n&&1===o?1/r:e.exp((o-1)*e.log(n)-n/r-t.gammaln(o)-o*e.log(r))},cdf:function(e,n,o){return e<0?0:t.lowRegGamma(n,e/o)},inv:function(e,n,o){return t.gammapinv(e,n)*o},mean:function(t,e){return t*e},mode:function(t,e){if(t>1)return(t-1)*e},sample:function(e,n){return t.randg(e)*n},variance:function(t,e){return t*e*e}}),t.extend(t.invgamma,{pdf:function(n,o,r){return n<=0?0:e.exp(-(o+1)*e.log(n)-r/n-t.gammaln(o)+o*e.log(r))},cdf:function(e,n,o){return e<=0?0:1-t.lowRegGamma(n,o/e)},inv:function(e,n,o){return o/t.gammapinv(1-e,n)},mean:function(t,e){return t>1?e/(t-1):void 0},mode:function(t,e){return e/(t+1)},sample:function(e,n){return n/t.randg(e)},variance:function(t,e){if(!(t<=2))return e*e/((t-1)*(t-1)*(t-2))}}),t.extend(t.kumaraswamy,{pdf:function(t,n,o){return 0===t&&1===n?o:1===t&&1===o?n:e.exp(e.log(n)+e.log(o)+(n-1)*e.log(t)+(o-1)*e.log(1-e.pow(t,n)))},cdf:function(t,n,o){return t<0?0:t>1?1:1-e.pow(1-e.pow(t,n),o)},inv:function(t,n,o){return e.pow(1-e.pow(1-t,1/o),1/n)},mean:function(e,n){return n*t.gammafn(1+1/e)*t.gammafn(n)/t.gammafn(1+1/e+n)},median:function(t,n){return e.pow(1-e.pow(2,-1/n),1/t)},mode:function(t,n){if(t>=1&&n>=1&&1!==t&&1!==n)return e.pow((t-1)/(t*n-1),1/t)},variance:function(){throw new Error("variance not yet implemented")}}),t.extend(t.lognormal,{pdf:function(t,n,o){return t<=0?0:e.exp(-e.log(t)-.5*e.log(2*e.PI)-e.log(o)-e.pow(e.log(t)-n,2)/(2*o*o))},cdf:function(n,o,r){return n<0?0:.5+.5*t.erf((e.log(n)-o)/e.sqrt(2*r*r))},inv:function(n,o,r){return e.exp(-1.4142135623730951*r*t.erfcinv(2*n)+o)},mean:function(t,n){return e.exp(t+n*n/2)},median:function(t){return e.exp(t)},mode:function(t,n){return e.exp(t-n*n)},sample:function(n,o){return e.exp(t.randn()*o+n)},variance:function(t,n){return(e.exp(n*n)-1)*e.exp(2*t+n*n)}}),t.extend(t.noncentralt,{pdf:function(n,o,r){return e.abs(r)<1e-14?t.studentt.pdf(n,o):e.abs(n)<1e-14?e.exp(t.gammaln((o+1)/2)-r*r/2-.5*e.log(e.PI*o)-t.gammaln(o/2)):o/n*(t.noncentralt.cdf(n*e.sqrt(1+2/o),o+2,r)-t.noncentralt.cdf(n,o,r))},cdf:function(n,o,r){var i=1e-14;if(e.abs(r)<i)return t.studentt.cdf(n,o);var s=!1;n<0&&(s=!0,r=-r);for(var a=t.normal.cdf(-r,0,1),l=i+1,u=l,c=n*n/(n*n+o),f=0,d=e.exp(-r*r/2),h=e.exp(-r*r/2-.5*e.log(2)-t.gammaln(1.5))*r;f<200||u>i||l>i;)u=l,f>0&&(d*=r*r/(2*f),h*=r*r/(2*(f+.5))),a+=.5*(l=d*t.beta.cdf(c,f+.5,o/2)+h*t.beta.cdf(c,f+1,o/2)),f++;return s?1-a:a}}),t.extend(t.normal,{pdf:function(t,n,o){return e.exp(-.5*e.log(2*e.PI)-e.log(o)-e.pow(t-n,2)/(2*o*o))},cdf:function(n,o,r){return.5*(1+t.erf((n-o)/e.sqrt(2*r*r)))},inv:function(e,n,o){return-1.4142135623730951*o*t.erfcinv(2*e)+n},mean:function(t){return t},median:function(t){return t},mode:function(t){return t},sample:function(e,n){return t.randn()*n+e},variance:function(t,e){return e*e}}),t.extend(t.pareto,{pdf:function(t,n,o){return t<n?0:o*e.pow(n,o)/e.pow(t,o+1)},cdf:function(t,n,o){return t<n?0:1-e.pow(n/t,o)},inv:function(t,n,o){return n/e.pow(1-t,1/o)},mean:function(t,n){if(!(n<=1))return n*e.pow(t,n)/(n-1)},median:function(t,n){return t*(n*e.SQRT2)},mode:function(t){return t},variance:function(t,n){if(!(n<=2))return t*t*n/(e.pow(n-1,2)*(n-2))}}),t.extend(t.studentt,{pdf:function(n,o){return o=o>1e100?1e100:o,1/(e.sqrt(o)*t.betafn(.5,o/2))*e.pow(1+n*n/o,-(o+1)/2)},cdf:function(n,o){var r=o/2;return t.ibeta((n+e.sqrt(n*n+o))/(2*e.sqrt(n*n+o)),r,r)},inv:function(n,o){var r=t.ibetainv(2*e.min(n,1-n),.5*o,.5);return r=e.sqrt(o*(1-r)/r),n>.5?r:-r},mean:function(t){return t>1?0:void 0},median:function(){return 0},mode:function(){return 0},sample:function(n){return t.randn()*e.sqrt(n/(2*t.randg(n/2)))},variance:function(t){return t>2?t/(t-2):t>1?1/0:void 0}}),t.extend(t.weibull,{pdf:function(t,n,o){return t<0||n<0||o<0?0:o/n*e.pow(t/n,o-1)*e.exp(-e.pow(t/n,o))},cdf:function(t,n,o){return t<0?0:1-e.exp(-e.pow(t/n,o))},inv:function(t,n,o){return n*e.pow(-e.log(1-t),1/o)},mean:function(e,n){return e*t.gammafn(1+1/n)},median:function(t,n){return t*e.pow(e.log(2),1/n)},mode:function(t,n){return n<=1?0:t*e.pow((n-1)/n,1/n)},sample:function(n,o){return n*e.pow(-e.log(t._random_fn()),1/o)},variance:function(n,o){return n*n*t.gammafn(1+2/o)-e.pow(t.weibull.mean(n,o),2)}}),t.extend(t.uniform,{pdf:function(t,e,n){return t<e||t>n?0:1/(n-e)},cdf:function(t,e,n){return t<e?0:t<n?(t-e)/(n-e):1},inv:function(t,e,n){return e+t*(n-e)},mean:function(t,e){return.5*(t+e)},median:function(e,n){return t.mean(e,n)},mode:function(){throw new Error("mode is not yet implemented")},sample:function(e,n){return e/2+n/2+(n/2-e/2)*(2*t._random_fn()-1)},variance:function(t,n){return e.pow(n-t,2)/12}}),t.extend(t.binomial,{pdf:function(n,o,r){return 0===r||1===r?o*r===n?1:0:t.combination(o,n)*e.pow(r,n)*e.pow(1-r,o-n)},cdf:function(o,r,i){var s,a=1e-10;if(o<0)return 0;if(o>=r)return 1;if(i<0||i>1||r<=0)return NaN;var l=i,u=(o=e.floor(o))+1,c=r-o,f=u+c,d=e.exp(t.gammaln(f)-t.gammaln(c)-t.gammaln(u)+u*e.log(l)+c*e.log(1-l));return s=l<(u+1)/(f+2)?d*n(l,u,c,a):1-d*n(1-l,c,u,a),e.round(1/a*(1-s))/(1/a)}}),t.extend(t.negbin,{pdf:function(n,o,r){return n===n>>>0&&(n<0?0:t.combination(n+o-1,o-1)*e.pow(1-r,n)*e.pow(r,o))},cdf:function(e,n,o){var r=0,i=0;if(e<0)return 0;for(;i<=e;i++)r+=t.negbin.pdf(i,n,o);return r}}),t.extend(t.hypgeom,{pdf:function(n,o,r,i){if(n!=n|0)return!1;if(n<0||n<r-(o-i))return 0;if(n>i||n>r)return 0;if(2*r>o)return 2*i>o?t.hypgeom.pdf(o-r-i+n,o,o-r,o-i):t.hypgeom.pdf(i-n,o,o-r,i);if(2*i>o)return t.hypgeom.pdf(r-n,o,r,o-i);if(r<i)return t.hypgeom.pdf(n,o,i,r);for(var s=1,a=0,l=0;l<n;l++){for(;s>1&&a<i;)s*=1-r/(o-a),a++;s*=(i-l)*(r-l)/((l+1)*(o-r-i+l+1))}for(;a<i;a++)s*=1-r/(o-a);return e.min(1,e.max(0,s))},cdf:function(n,o,r,i){if(n<0||n<r-(o-i))return 0;if(n>=i||n>=r)return 1;if(2*r>o)return 2*i>o?t.hypgeom.cdf(o-r-i+n,o,o-r,o-i):1-t.hypgeom.cdf(i-n-1,o,o-r,i);if(2*i>o)return 1-t.hypgeom.cdf(r-n-1,o,r,o-i);if(r<i)return t.hypgeom.cdf(n,o,i,r);for(var s=1,a=1,l=0,u=0;u<n;u++){for(;s>1&&l<i;){var c=1-r/(o-l);a*=c,s*=c,l++}s+=a*=(i-u)*(r-u)/((u+1)*(o-r-i+u+1))}for(;l<i;l++)s*=1-r/(o-l);return e.min(1,e.max(0,s))}}),t.extend(t.poisson,{pdf:function(n,o){return o<0||n%1!=0||n<0?0:e.pow(o,n)*e.exp(-o)/t.factorial(n)},cdf:function(e,n){var o=[],r=0;if(e<0)return 0;for(;r<=e;r++)o.push(t.poisson.pdf(r,n));return t.sum(o)},mean:function(t){return t},variance:function(t){return t},sampleSmall:function(n){var o=1,r=0,i=e.exp(-n);do{r++,o*=t._random_fn()}while(o>i);return r-1},sampleLarge:function(n){var o,r,i,s,a,l,u,c,f,d,h=n;for(s=e.sqrt(h),a=e.log(h),l=.02483*(u=.931+2.53*s)-.059,c=1.1239+1.1328/(u-3.4),f=.9277-3.6224/(u-2);;){if(r=e.random()-.5,i=e.random(),d=.5-e.abs(r),o=e.floor((2*l/d+u)*r+h+.43),d>=.07&&i<=f)return o;if(!(o<0||d<.013&&i>d)&&e.log(i)+e.log(c)-e.log(l/(d*d)+u)<=o*a-h-t.loggam(o+1))return o}},sample:function(t){return t<10?this.sampleSmall(t):this.sampleLarge(t)}}),t.extend(t.triangular,{pdf:function(t,e,n,o){return n<=e||o<e||o>n?NaN:t<e||t>n?0:t<o?2*(t-e)/((n-e)*(o-e)):t===o?2/(n-e):2*(n-t)/((n-e)*(n-o))},cdf:function(t,n,o,r){return o<=n||r<n||r>o?NaN:t<=n?0:t>=o?1:t<=r?e.pow(t-n,2)/((o-n)*(r-n)):1-e.pow(o-t,2)/((o-n)*(o-r))},inv:function(t,n,o,r){return o<=n||r<n||r>o?NaN:t<=(r-n)/(o-n)?n+(o-n)*e.sqrt(t*((r-n)/(o-n))):n+(o-n)*(1-e.sqrt((1-t)*(1-(r-n)/(o-n))))},mean:function(t,e,n){return(t+e+n)/3},median:function(t,n,o){return o<=(t+n)/2?n-e.sqrt((n-t)*(n-o))/e.sqrt(2):o>(t+n)/2?t+e.sqrt((n-t)*(o-t))/e.sqrt(2):void 0},mode:function(t,e,n){return n},sample:function(n,o,r){var i=t._random_fn();return i<(r-n)/(o-n)?n+e.sqrt(i*(o-n)*(r-n)):o-e.sqrt((1-i)*(o-n)*(o-r))},variance:function(t,e,n){return(t*t+e*e+n*n-t*e-t*n-e*n)/18}}),t.extend(t.arcsine,{pdf:function(t,n,o){return o<=n?NaN:t<=n||t>=o?0:2/e.PI*e.pow(e.pow(o-n,2)-e.pow(2*t-n-o,2),-.5)},cdf:function(t,n,o){return t<n?0:t<o?2/e.PI*e.asin(e.sqrt((t-n)/(o-n))):1},inv:function(t,n,o){return n+(.5-.5*e.cos(e.PI*t))*(o-n)},mean:function(t,e){return e<=t?NaN:(t+e)/2},median:function(t,e){return e<=t?NaN:(t+e)/2},mode:function(){throw new Error("mode is not yet implemented")},sample:function(n,o){return(n+o)/2+(o-n)/2*e.sin(2*e.PI*t.uniform.sample(0,1))},variance:function(t,n){return n<=t?NaN:e.pow(n-t,2)/8}}),t.extend(t.laplace,{pdf:function(t,n,o){return o<=0?0:e.exp(-e.abs(t-n)/o)/(2*o)},cdf:function(t,n,o){return o<=0?0:t<n?.5*e.exp((t-n)/o):1-.5*e.exp(-(t-n)/o)},mean:function(t){return t},median:function(t){return t},mode:function(t){return t},variance:function(t,e){return 2*e*e},sample:function(n,o){var r,i=t._random_fn()-.5;return n-o*((r=i)/e.abs(r))*e.log(1-2*e.abs(i))}}),t.extend(t.tukey,{cdf:function(n,r,i){var s=r,a=[.9894009349916499,.9445750230732326,.8656312023878318,.755404408355003,.6178762444026438,.45801677765722737,.2816035507792589,.09501250983763744],l=[.027152459411754096,.062253523938647894,.09515851168249279,.12462897125553388,.14959598881657674,.16915651939500254,.18260341504492358,.1894506104550685];if(n<=0)return 0;if(i<2||s<2)return NaN;if(!Number.isFinite(n))return 1;if(i>25e3)return o(n,1,s);var u,c=.5*i,f=c*e.log(i)-i*e.log(2)-t.gammaln(c),d=c-1,h=.25*i;u=i<=100?1:i<=800?.5:i<=5e3?.25:.125,f+=e.log(u);for(var m=0,p=1;p<=50;p++){for(var g=0,v=(2*p-1)*u,y=1;y<=16;y++){var A,w;8<y?(A=y-8-1,w=f+d*e.log(v+a[A]*u)-(a[A]*u+v)*h):(A=y-1,w=f+d*e.log(v-a[A]*u)+(a[A]*u-v)*h),w>=-30&&(g+=o(8<y?n*e.sqrt(.5*(a[A]*u+v)):n*e.sqrt(.5*(-a[A]*u+v)),1,s)*l[A]*e.exp(w))}if(p*u>=1&&g<=1e-14)break;m+=g}if(g>1e-14)throw new Error("tukey.cdf failed to converge");return m>1&&(m=1),m},inv:function(n,o,r){if(r<2||o<2)return NaN;if(n<0||n>1)return NaN;if(0===n)return 0;if(1===n)return 1/0;var i,s=function(t,n,o){var r=.5-.5*t,i=e.sqrt(e.log(1/(r*r))),s=i+((((-453642210148e-16*i-.204231210125)*i-.342242088547)*i-1)*i+.322232421088)/((((.0038560700634*i+.10353775285)*i+.531103462366)*i+.588581570495)*i+.099348462606);o<120&&(s+=(s*s*s+s)/o/4);var a=.8832-.2368*s;return o<120&&(a+=-1.214/o+1.208*s/o),s*(a*e.log(n-1)+1.4142)}(n,o,r),a=t.tukey.cdf(s,o,r)-n;i=a>0?e.max(0,s-1):s+1;for(var l,u=t.tukey.cdf(i,o,r)-n,c=1;c<50;c++)if(l=i-u*(i-s)/(u-a),a=u,s=i,l<0&&(l=0,u=-n),u=t.tukey.cdf(l,o,r)-n,i=l,e.abs(i-s)<1e-4)return l;throw new Error("tukey.inv failed to converge")}})}(e,Math),function(t,e){var n,o,r=Array.prototype.push,i=t.utils.isArray;function s(e){return i(e)||e instanceof t}t.extend({add:function(e,n){return s(n)?(s(n[0])||(n=[n]),t.map(e,function(t,e,o){return t+n[e][o]})):t.map(e,function(t){return t+n})},subtract:function(e,n){return s(n)?(s(n[0])||(n=[n]),t.map(e,function(t,e,o){return t-n[e][o]||0})):t.map(e,function(t){return t-n})},divide:function(e,n){return s(n)?(s(n[0])||(n=[n]),t.multiply(e,t.inv(n))):t.map(e,function(t){return t/n})},multiply:function(e,n){var o,r,i,a,l,u,c,f;if(void 0===e.length&&void 0===n.length)return e*n;if(l=e.length,u=e[0].length,c=t.zeros(l,i=s(n)?n[0].length:u),f=0,s(n)){for(;f<i;f++)for(o=0;o<l;o++){for(a=0,r=0;r<u;r++)a+=e[o][r]*n[r][f];c[o][f]=a}return 1===l&&1===f?c[0][0]:c}return t.map(e,function(t){return t*n})},outer:function(e,n){return t.multiply(e.map(function(t){return[t]}),[n])},dot:function(e,n){s(e[0])||(e=[e]),s(n[0])||(n=[n]);for(var o,r,i=1===e[0].length&&1!==e.length?t.transpose(e):e,a=1===n[0].length&&1!==n.length?t.transpose(n):n,l=[],u=0,c=i.length,f=i[0].length;u<c;u++){for(l[u]=[],o=0,r=0;r<f;r++)o+=i[u][r]*a[u][r];l[u]=o}return 1===l.length?l[0]:l},pow:function(n,o){return t.map(n,function(t){return e.pow(t,o)})},exp:function(n){return t.map(n,function(t){return e.exp(t)})},log:function(n){return t.map(n,function(t){return e.log(t)})},abs:function(n){return t.map(n,function(t){return e.abs(t)})},norm:function(t,n){var o=0,r=0;for(isNaN(n)&&(n=2),s(t[0])&&(t=t[0]);r<t.length;r++)o+=e.pow(e.abs(t[r]),n);return e.pow(o,1/n)},angle:function(n,o){return e.acos(t.dot(n,o)/(t.norm(n)*t.norm(o)))},aug:function(t,e){var n,o=[];for(n=0;n<t.length;n++)o.push(t[n].slice());for(n=0;n<o.length;n++)r.apply(o[n],e[n]);return o},inv:function(e){for(var n,o=e.length,r=e[0].length,i=t.identity(o,r),s=t.gauss_jordan(e,i),a=[],l=0;l<o;l++)for(a[l]=[],n=r;n<s[0].length;n++)a[l][n-r]=s[l][n];return a},det:function t(e){if(2===e.length)return e[0][0]*e[1][1]-e[0][1]*e[1][0];for(var n=0,o=0;o<e.length;o++){for(var r=[],i=1;i<e.length;i++){r[i-1]=[];for(var s=0;s<e.length;s++)s<o?r[i-1][s]=e[i][s]:s>o&&(r[i-1][s-1]=e[i][s])}var a=o%2?-1:1;n+=t(r)*e[0][o]*a}return n},gauss_elimination:function(n,o){var r,i,s,a,l=0,u=0,c=n.length,f=n[0].length,d=1,h=0,m=[];for(r=(n=t.aug(n,o))[0].length,l=0;l<c;l++){for(i=n[l][l],u=l,a=l+1;a<f;a++)i<e.abs(n[a][l])&&(i=n[a][l],u=a);if(u!=l)for(a=0;a<r;a++)s=n[l][a],n[l][a]=n[u][a],n[u][a]=s;for(u=l+1;u<c;u++)for(d=n[u][l]/n[l][l],a=l;a<r;a++)n[u][a]=n[u][a]-d*n[l][a]}for(l=c-1;l>=0;l--){for(h=0,u=l+1;u<=c-1;u++)h+=m[u]*n[l][u];m[l]=(n[l][r-1]-h)/n[l][l]}return m},gauss_jordan:function(n,o){var r,i,s,a=t.aug(n,o),l=a.length,u=a[0].length,c=0;for(i=0;i<l;i++){var f=i;for(s=i+1;s<l;s++)e.abs(a[s][i])>e.abs(a[f][i])&&(f=s);var d=a[i];for(a[i]=a[f],a[f]=d,s=i+1;s<l;s++)for(c=a[s][i]/a[i][i],r=i;r<u;r++)a[s][r]-=a[i][r]*c}for(i=l-1;i>=0;i--){for(c=a[i][i],s=0;s<i;s++)for(r=u-1;r>i-1;r--)a[s][r]-=a[i][r]*a[s][i]/c;for(a[i][i]/=c,r=l;r<u;r++)a[i][r]/=c}return a},triaUpSolve:function(e,n){var o,r=e[0].length,i=t.zeros(1,r)[0],s=!1;return null!=n[0].length&&(n=n.map(function(t){return t[0]}),s=!0),t.arange(r-1,-1,-1).forEach(function(s){o=t.arange(s+1,r).map(function(t){return i[t]*e[s][t]}),i[s]=(n[s]-t.sum(o))/e[s][s]}),s?i.map(function(t){return[t]}):i},triaLowSolve:function(e,n){var o,r=e[0].length,i=t.zeros(1,r)[0],s=!1;return null!=n[0].length&&(n=n.map(function(t){return t[0]}),s=!0),t.arange(r).forEach(function(r){o=t.arange(r).map(function(t){return e[r][t]*i[t]}),i[r]=(n[r]-t.sum(o))/e[r][r]}),s?i.map(function(t){return[t]}):i},lu:function(e){var n,o=e.length,r=t.identity(o),i=t.zeros(e.length,e[0].length);return t.arange(o).forEach(function(t){i[0][t]=e[0][t]}),t.arange(1,o).forEach(function(s){t.arange(s).forEach(function(o){n=t.arange(o).map(function(t){return r[s][t]*i[t][o]}),r[s][o]=(e[s][o]-t.sum(n))/i[o][o]}),t.arange(s,o).forEach(function(o){n=t.arange(s).map(function(t){return r[s][t]*i[t][o]}),i[s][o]=e[n.length][o]-t.sum(n)})}),[r,i]},cholesky:function(n){var o,r=n.length,i=t.zeros(n.length,n[0].length);return t.arange(r).forEach(function(s){o=t.arange(s).map(function(t){return e.pow(i[s][t],2)}),i[s][s]=e.sqrt(n[s][s]-t.sum(o)),t.arange(s+1,r).forEach(function(e){o=t.arange(s).map(function(t){return i[s][t]*i[e][t]}),i[e][s]=(n[s][e]-t.sum(o))/i[s][s]})}),i},gauss_jacobi:function(n,o,r,i){for(var s,a,l,u,c=0,f=0,d=n.length,h=[],m=[],p=[];c<d;c++)for(h[c]=[],m[c]=[],p[c]=[],f=0;f<d;f++)c>f?(h[c][f]=n[c][f],m[c][f]=p[c][f]=0):c<f?(m[c][f]=n[c][f],h[c][f]=p[c][f]=0):(p[c][f]=n[c][f],h[c][f]=m[c][f]=0);for(l=t.multiply(t.multiply(t.inv(p),t.add(h,m)),-1),a=t.multiply(t.inv(p),o),s=r,u=t.add(t.multiply(l,r),a),c=2;e.abs(t.norm(t.subtract(u,s)))>i;)s=u,u=t.add(t.multiply(l,s),a),c++;return u},gauss_seidel:function(n,o,r,i){for(var s,a,l,u,c,f=0,d=n.length,h=[],m=[],p=[];f<d;f++)for(h[f]=[],m[f]=[],p[f]=[],s=0;s<d;s++)f>s?(h[f][s]=n[f][s],m[f][s]=p[f][s]=0):f<s?(m[f][s]=n[f][s],h[f][s]=p[f][s]=0):(p[f][s]=n[f][s],h[f][s]=m[f][s]=0);for(u=t.multiply(t.multiply(t.inv(t.add(p,h)),m),-1),l=t.multiply(t.inv(t.add(p,h)),o),a=r,c=t.add(t.multiply(u,r),l),f=2;e.abs(t.norm(t.subtract(c,a)))>i;)a=c,c=t.add(t.multiply(u,a),l),f+=1;return c},SOR:function(n,o,r,i,s){for(var a,l,u,c,f,d=0,h=n.length,m=[],p=[],g=[];d<h;d++)for(m[d]=[],p[d]=[],g[d]=[],a=0;a<h;a++)d>a?(m[d][a]=n[d][a],p[d][a]=g[d][a]=0):d<a?(p[d][a]=n[d][a],m[d][a]=g[d][a]=0):(g[d][a]=n[d][a],m[d][a]=p[d][a]=0);for(c=t.multiply(t.inv(t.add(g,t.multiply(m,s))),t.subtract(t.multiply(g,1-s),t.multiply(p,s))),u=t.multiply(t.multiply(t.inv(t.add(g,t.multiply(m,s))),o),s),l=r,f=t.add(t.multiply(c,r),u),d=2;e.abs(t.norm(t.subtract(f,l)))>i;)l=f,f=t.add(t.multiply(c,l),u),d++;return f},householder:function(n){for(var o,r,i,s,a=n.length,l=n[0].length,u=0,c=[],f=[];u<a-1;u++){for(o=0,s=u+1;s<l;s++)o+=n[s][u]*n[s][u];for(o=(n[u+1][u]>0?-1:1)*e.sqrt(o),r=e.sqrt((o*o-n[u+1][u]*o)/2),(c=t.zeros(a,1))[u+1][0]=(n[u+1][u]-o)/(2*r),i=u+2;i<a;i++)c[i][0]=n[i][u]/(2*r);f=t.subtract(t.identity(a,l),t.multiply(t.multiply(c,t.transpose(c)),2)),n=t.multiply(f,t.multiply(n,f))}return n},QR:(n=t.sum,o=t.arange,function(r){var i,s,a,l=r.length,u=r[0].length,c=t.zeros(u,u);for(r=t.copy(r),s=0;s<u;s++){for(c[s][s]=e.sqrt(n(o(l).map(function(t){return r[t][s]*r[t][s]}))),i=0;i<l;i++)r[i][s]=r[i][s]/c[s][s];for(a=s+1;a<u;a++)for(c[s][a]=n(o(l).map(function(t){return r[t][s]*r[t][a]})),i=0;i<l;i++)r[i][a]=r[i][a]-r[i][s]*c[s][a]}return[r,c]}),lstsq:function(e,n){var o=!1;void 0===n[0].length&&(n=n.map(function(t){return[t]}),o=!0);var r=t.QR(e),i=r[0],s=r[1],a=e[0].length,l=t.slice(i,{col:{end:a}}),u=function(e){var n=(e=t.copy(e)).length,o=t.identity(n);return t.arange(n-1,-1,-1).forEach(function(n){t.sliceAssign(o,{row:n},t.divide(t.slice(o,{row:n}),e[n][n])),t.sliceAssign(e,{row:n},t.divide(t.slice(e,{row:n}),e[n][n])),t.arange(n).forEach(function(r){var i=t.multiply(e[r][n],-1),s=t.slice(e,{row:r}),a=t.multiply(t.slice(e,{row:n}),i);t.sliceAssign(e,{row:r},t.add(s,a));var l=t.slice(o,{row:r}),u=t.multiply(t.slice(o,{row:n}),i);t.sliceAssign(o,{row:r},t.add(l,u))})}),o}(t.slice(s,{row:{end:a}})),c=t.transpose(l);void 0===c[0].length&&(c=[c]);var f=t.multiply(t.multiply(u,c),n);return void 0===f.length&&(f=[[f]]),o?f.map(function(t){return t[0]}):f},jacobi:function(n){for(var o,r,i,s,a,l,u,c=1,f=n.length,d=t.identity(f,f),h=[];1===c;){for(a=n[0][1],i=0,s=1,o=0;o<f;o++)for(r=0;r<f;r++)o!=r&&a<e.abs(n[o][r])&&(a=e.abs(n[o][r]),i=o,s=r);for(l=n[i][i]===n[s][s]?n[i][s]>0?e.PI/4:-e.PI/4:e.atan(2*n[i][s]/(n[i][i]-n[s][s]))/2,(u=t.identity(f,f))[i][i]=e.cos(l),u[i][s]=-e.sin(l),u[s][i]=e.sin(l),u[s][s]=e.cos(l),d=t.multiply(d,u),n=t.multiply(t.multiply(t.inv(u),n),u),c=0,o=1;o<f;o++)for(r=1;r<f;r++)o!=r&&e.abs(n[o][r])>.001&&(c=1)}for(o=0;o<f;o++)h.push(n[o][o]);return[d,h]},rungekutta:function(t,e,n,o,r,i){var s,a,l;if(2===i)for(;o<=n;)r+=((s=e*t(o,r))+(a=e*t(o+e,r+s)))/2,o+=e;if(4===i)for(;o<=n;)r+=((s=e*t(o,r))+2*(a=e*t(o+e/2,r+s/2))+2*(l=e*t(o+e/2,r+a/2))+e*t(o+e,r+l))/6,o+=e;return r},romberg:function(t,n,o,r){for(var i,s,a,l,u,c=0,f=(o-n)/2,d=[],h=[],m=[];c<r/2;){for(u=t(n),a=n,l=0;a<=o;a+=f,l++)d[l]=a;for(i=d.length,a=1;a<i-1;a++)u+=(a%2!=0?4:2)*t(d[a]);u=f/3*(u+t(o)),m[c]=u,f/=2,c++}for(s=m.length,i=1;1!==s;){for(a=0;a<s-1;a++)h[a]=(e.pow(4,i)*m[a+1]-m[a])/(e.pow(4,i)-1);s=h.length,m=h,h=[],i++}return m},richardson:function(t,n,o,r){function i(t,e){for(var n,o=0,r=t.length;o<r;o++)t[o]===e&&(n=o);return n}for(var s,a,l,u,c,f=e.abs(o-t[i(t,o)+1]),d=0,h=[],m=[];r>=f;)s=i(t,o+r),a=i(t,o),h[d]=(n[s]-2*n[a]+n[2*a-s])/(r*r),r/=2,d++;for(u=h.length,l=1;1!=u;){for(c=0;c<u-1;c++)m[c]=(e.pow(4,l)*h[c+1]-h[c])/(e.pow(4,l)-1);u=m.length,h=m,m=[],l++}return h},simpson:function(t,e,n,o){for(var r,i=(n-e)/o,s=t(e),a=[],l=e,u=0,c=1;l<=n;l+=i,u++)a[u]=l;for(r=a.length;c<r-1;c++)s+=(c%2!=0?4:2)*t(a[c]);return i/3*(s+t(n))},hermite:function(t,e,n,o){for(var r,i=t.length,s=0,a=0,l=[],u=[],c=[],f=[];a<i;a++){for(l[a]=1,r=0;r<i;r++)a!=r&&(l[a]*=(o-t[r])/(t[a]-t[r]));for(u[a]=0,r=0;r<i;r++)a!=r&&(u[a]+=1/(t[a]-t[r]));c[a]=(1-2*(o-t[a])*u[a])*(l[a]*l[a]),f[a]=(o-t[a])*(l[a]*l[a]),s+=c[a]*e[a]+f[a]*n[a]}return s},lagrange:function(t,e,n){for(var o,r,i=0,s=0,a=t.length;s<a;s++){for(r=e[s],o=0;o<a;o++)s!=o&&(r*=(n-t[o])/(t[s]-t[o]));i+=r}return i},cubic_spline:function(e,n,o){for(var r,i,s=e.length,a=0,l=[],u=[],c=[],f=[],d=[],h=[];a<s-1;a++)f[a]=e[a+1]-e[a];for(c[0]=0,a=1;a<s-1;a++)c[a]=3/f[a]*(n[a+1]-n[a])-3/f[a-1]*(n[a]-n[a-1]);for(a=1;a<s-1;a++)l[a]=[],u[a]=[],l[a][a-1]=f[a-1],l[a][a]=2*(f[a-1]+f[a]),l[a][a+1]=f[a],u[a][0]=c[a];for(i=t.multiply(t.inv(l),u),r=0;r<s-1;r++)d[r]=(n[r+1]-n[r])/f[r]-f[r]*(i[r+1][0]+2*i[r][0])/3,h[r]=(i[r+1][0]-i[r][0])/(3*f[r]);for(r=0;r<s&&!(e[r]>o);r++);return n[r-=1]+(o-e[r])*d[r]+t.sq(o-e[r])*i[r]+(o-e[r])*t.sq(o-e[r])*h[r]},gauss_quadrature:function(){throw new Error("gauss_quadrature not yet implemented")},PCA:function(e){var n,o,r,i,s,a=e.length,l=e[0].length,u=0,c=[],f=[],d=[],h=[],m=[],p=[],g=[];for(u=0;u<a;u++)c[u]=t.sum(e[u])/l;for(u=0;u<l;u++)for(m[u]=[],n=0;n<a;n++)m[u][n]=e[n][u]-c[n];for(m=t.transpose(m),u=0;u<a;u++)for(p[u]=[],n=0;n<a;n++)p[u][n]=t.dot([m[u]],[m[n]])/(l-1);for(s=(r=t.jacobi(p))[0],f=r[1],g=t.transpose(s),u=0;u<f.length;u++)for(n=u;n<f.length;n++)f[u]<f[n]&&(o=f[u],f[u]=f[n],f[n]=o,d=g[u],g[u]=g[n],g[n]=d);for(i=t.transpose(m),u=0;u<a;u++)for(h[u]=[],n=0;n<i.length;n++)h[u][n]=t.dot([g[u]],[i[n]]);return[e,f,g,h]}}),function(e){for(var n=0;n<e.length;n++)(function(e){t.fn[e]=function(n,o){var r=this;return o?(setTimeout(function(){o.call(r,t.fn[e].call(r,n))},15),this):"number"==typeof t[e](this,n)?t[e](this,n):t(t[e](this,n))}})(e[n])}("add divide multiply subtract dot pow exp log abs norm angle".split(" "))}(e,Math),function(t,e){var n=[].slice,o=t.utils.isNumber,r=t.utils.isArray;function i(t,n,o,r){if(t>1||o>1||t<=0||o<=0)throw new Error("Proportions should be greater than 0 and less than 1");var i=(t*n+o*r)/(n+r);return(t-o)/e.sqrt(i*(1-i)*(1/n+1/r))}t.extend({zscore:function(){var e=n.call(arguments);return o(e[1])?(e[0]-e[1])/e[2]:(e[0]-t.mean(e[1]))/t.stdev(e[1],e[2])},ztest:function(){var o,i=n.call(arguments);return r(i[1])?(o=t.zscore(i[0],i[1],i[3]),1===i[2]?t.normal.cdf(-e.abs(o),0,1):2*t.normal.cdf(-e.abs(o),0,1)):i.length>2?(o=t.zscore(i[0],i[1],i[2]),1===i[3]?t.normal.cdf(-e.abs(o),0,1):2*t.normal.cdf(-e.abs(o),0,1)):(o=i[0],1===i[1]?t.normal.cdf(-e.abs(o),0,1):2*t.normal.cdf(-e.abs(o),0,1))}}),t.extend(t.fn,{zscore:function(t,e){return(t-this.mean())/this.stdev(e)},ztest:function(n,o,r){var i=e.abs(this.zscore(n,r));return 1===o?t.normal.cdf(-i,0,1):2*t.normal.cdf(-i,0,1)}}),t.extend({tscore:function(){var o=n.call(arguments);return 4===o.length?(o[0]-o[1])/(o[2]/e.sqrt(o[3])):(o[0]-t.mean(o[1]))/(t.stdev(o[1],!0)/e.sqrt(o[1].length))},ttest:function(){var r,i=n.call(arguments);return 5===i.length?(r=e.abs(t.tscore(i[0],i[1],i[2],i[3])),1===i[4]?t.studentt.cdf(-r,i[3]-1):2*t.studentt.cdf(-r,i[3]-1)):o(i[1])?(r=e.abs(i[0]),1==i[2]?t.studentt.cdf(-r,i[1]-1):2*t.studentt.cdf(-r,i[1]-1)):(r=e.abs(t.tscore(i[0],i[1])),1==i[2]?t.studentt.cdf(-r,i[1].length-1):2*t.studentt.cdf(-r,i[1].length-1))}}),t.extend(t.fn,{tscore:function(t){return(t-this.mean())/(this.stdev(!0)/e.sqrt(this.cols()))},ttest:function(n,o){return 1===o?1-t.studentt.cdf(e.abs(this.tscore(n)),this.cols()-1):2*t.studentt.cdf(-e.abs(this.tscore(n)),this.cols()-1)}}),t.extend({anovafscore:function(){var o,r,i,s,a,l,u,c,f=n.call(arguments);if(1===f.length){for(a=new Array(f[0].length),u=0;u<f[0].length;u++)a[u]=f[0][u];f=a}for(r=new Array,u=0;u<f.length;u++)r=r.concat(f[u]);for(i=t.mean(r),o=0,u=0;u<f.length;u++)o+=f[u].length*e.pow(t.mean(f[u])-i,2);for(o/=f.length-1,l=0,u=0;u<f.length;u++)for(s=t.mean(f[u]),c=0;c<f[u].length;c++)l+=e.pow(f[u][c]-s,2);return o/(l/(r.length-f.length))},anovaftest:function(){var e,r,i,s,a=n.call(arguments);if(o(a[0]))return 1-t.centralF.cdf(a[0],a[1],a[2]);var l=t.anovafscore(a);for(e=a.length-1,i=0,s=0;s<a.length;s++)i+=a[s].length;return r=i-e-1,1-t.centralF.cdf(l,e,r)},ftest:function(e,n,o){return 1-t.centralF.cdf(e,n,o)}}),t.extend(t.fn,{anovafscore:function(){return t.anovafscore(this.toArray())},anovaftes:function(){var e,n=0;for(e=0;e<this.length;e++)n+=this[e].length;return t.ftest(this.anovafscore(),this.length-1,n-this.length)}}),t.extend({qscore:function(){var r,i,s,a,l,u=n.call(arguments);return o(u[0])?(r=u[0],i=u[1],s=u[2],a=u[3],l=u[4]):(r=t.mean(u[0]),i=t.mean(u[1]),s=u[0].length,a=u[1].length,l=u[2]),e.abs(r-i)/(l*e.sqrt((1/s+1/a)/2))},qtest:function(){var e,o=n.call(arguments);3===o.length?(e=o[0],o=o.slice(1)):7===o.length?(e=t.qscore(o[0],o[1],o[2],o[3],o[4]),o=o.slice(5)):(e=t.qscore(o[0],o[1],o[2]),o=o.slice(3));var r=o[0],i=o[1];return 1-t.tukey.cdf(e,i,r-i)},tukeyhsd:function(e){for(var n=t.pooledstdev(e),o=e.map(function(e){return t.mean(e)}),r=e.reduce(function(t,e){return t+e.length},0),i=[],s=0;s<e.length;++s)for(var a=s+1;a<e.length;++a){var l=t.qtest(o[s],o[a],e[s].length,e[a].length,n,r,e.length);i.push([[s,a],l])}return i}}),t.extend({normalci:function(){var o,r=n.call(arguments),i=new Array(2);return o=4===r.length?e.abs(t.normal.inv(r[1]/2,0,1)*r[2]/e.sqrt(r[3])):e.abs(t.normal.inv(r[1]/2,0,1)*t.stdev(r[2])/e.sqrt(r[2].length)),i[0]=r[0]-o,i[1]=r[0]+o,i},tci:function(){var o,r=n.call(arguments),i=new Array(2);return o=4===r.length?e.abs(t.studentt.inv(r[1]/2,r[3]-1)*r[2]/e.sqrt(r[3])):e.abs(t.studentt.inv(r[1]/2,r[2].length-1)*t.stdev(r[2],!0)/e.sqrt(r[2].length)),i[0]=r[0]-o,i[1]=r[0]+o,i},significant:function(t,e){return t<e}}),t.extend(t.fn,{normalci:function(e,n){return t.normalci(e,n,this.toArray())},tci:function(e,n){return t.tci(e,n,this.toArray())}}),t.extend(t.fn,{oneSidedDifferenceOfProportions:function(e,n,o,r){var s=i(e,n,o,r);return t.ztest(s,1)},twoSidedDifferenceOfProportions:function(e,n,o,r){var s=i(e,n,o,r);return t.ztest(s,2)}})}(e,Math),e.models=function(){function t(t,n){var o=t.length,r=n[0].length-1,i=o-r-1,s=e.lstsq(n,t),a=e.multiply(n,s.map(function(t){return[t]})).map(function(t){return t[0]}),l=e.subtract(t,a),u=e.mean(t),c=e.sum(a.map(function(t){return Math.pow(t-u,2)})),f=e.sum(t.map(function(t,e){return Math.pow(t-a[e],2)})),d=c+f;return{exog:n,endog:t,nobs:o,df_model:r,df_resid:i,coef:s,predict:a,resid:l,ybar:u,SST:d,SSE:c,SSR:f,R2:c/d}}function n(n){var o,r,i=(o=n.exog,r=o[0].length,e.arange(r).map(function(n){var i=e.arange(r).filter(function(t){return t!==n});return t(e.col(o,n).map(function(t){return t[0]}),e.col(o,i))})),s=Math.sqrt(n.SSR/n.df_resid),a=i.map(function(t){var e=t.SST,n=t.R2;return s/Math.sqrt(e*(1-n))}),l=n.coef.map(function(t,e){return(t-0)/a[e]}),u=l.map(function(t){var o=e.studentt.cdf(t,n.df_resid);return 2*(o>.5?1-o:o)}),c=e.studentt.inv(.975,n.df_resid),f=n.coef.map(function(t,e){var n=c*a[e];return[t-n,t+n]});return{se:a,t:l,p:u,sigmaHat:s,interval95:f}}return{ols:function(o,r){var i=t(o,r),s=n(i),a=function(t){var n,o,r,i=t.R2/t.df_model/((1-t.R2)/t.df_resid);return{F_statistic:i,pvalue:1-(n=i,o=t.df_model,r=t.df_resid,e.beta.cdf(n/(r/o+n),o/2,r/2))}}(i),l=1-(1-i.R2)*((i.nobs-1)/i.df_resid);return i.t=s,i.f=a,i.adjust_R2=l,i}}}(),e.extend({buildxmatrix:function(){for(var t=new Array(arguments.length),n=0;n<arguments.length;n++){t[n]=[1].concat(arguments[n])}return e(t)},builddxmatrix:function(){for(var t=new Array(arguments[0].length),n=0;n<arguments[0].length;n++){t[n]=[1].concat(arguments[0][n])}return e(t)},buildjxmatrix:function(t){for(var n=new Array(t.length),o=0;o<t.length;o++)n[o]=t[o];return e.builddxmatrix(n)},buildymatrix:function(t){return e(t).transpose()},buildjymatrix:function(t){return t.transpose()},matrixmult:function(t,n){var o,r,i,s,a;if(t.cols()==n.rows()){if(n.rows()>1){for(s=[],o=0;o<t.rows();o++)for(s[o]=[],r=0;r<n.cols();r++){for(a=0,i=0;i<t.cols();i++)a+=t.toArray()[o][i]*n.toArray()[i][r];s[o][r]=a}return e(s)}for(s=[],o=0;o<t.rows();o++)for(s[o]=[],r=0;r<n.cols();r++){for(a=0,i=0;i<t.cols();i++)a+=t.toArray()[o][i]*n.toArray()[r];s[o][r]=a}return e(s)}},regress:function(t,n){var o=e.xtranspxinv(t),r=t.transpose(),i=e.matrixmult(e(o),r);return e.matrixmult(i,n)},regresst:function(t,n,o){var r=e.regress(t,n),i={anova:{}},s=e.jMatYBar(t,r);i.yBar=s;var a=n.mean();i.anova.residuals=e.residuals(n,s),i.anova.ssr=e.ssr(s,a),i.anova.msr=i.anova.ssr/(t[0].length-1),i.anova.sse=e.sse(n,s),i.anova.mse=i.anova.sse/(n.length-(t[0].length-1)-1),i.anova.sst=e.sst(n,a),i.anova.mst=i.anova.sst/(n.length-1),i.anova.r2=1-i.anova.sse/i.anova.sst,i.anova.r2<0&&(i.anova.r2=0),i.anova.fratio=i.anova.msr/i.anova.mse,i.anova.pvalue=e.anovaftest(i.anova.fratio,t[0].length-1,n.length-(t[0].length-1)-1),i.anova.rmse=Math.sqrt(i.anova.mse),i.anova.r2adj=1-i.anova.mse/i.anova.mst,i.anova.r2adj<0&&(i.anova.r2adj=0),i.stats=new Array(t[0].length);for(var l,u,c,f=e.xtranspxinv(t),d=0;d<r.length;d++)l=Math.sqrt(i.anova.mse*Math.abs(f[d][d])),u=Math.abs(r[d]/l),c=e.ttest(u,n.length-t[0].length-1,o),i.stats[d]=[r[d],l,u,c];return i.regress=r,i},xtranspx:function(t){return e.matrixmult(t.transpose(),t)},xtranspxinv:function(t){var n=e.matrixmult(t.transpose(),t);return e.inv(n)},jMatYBar:function(t,n){var o=e.matrixmult(t,n);return new e(o)},residuals:function(t,n){return e.matrixsubtract(t,n)},ssr:function(t,e){for(var n=0,o=0;o<t.length;o++)n+=Math.pow(t[o]-e,2);return n},sse:function(t,e){for(var n=0,o=0;o<t.length;o++)n+=Math.pow(t[o]-e[o],2);return n},sst:function(t,e){for(var n=0,o=0;o<t.length;o++)n+=Math.pow(t[o]-e,2);return n},matrixsubtract:function(t,n){for(var o=new Array(t.length),r=0;r<t.length;r++){o[r]=new Array(t[r].length);for(var i=0;i<t[r].length;i++)o[r][i]=t[r][i]-n[r][i]}return e(o)}}),e.jStat=e,e)},5072(t){"use strict";var e=[];function n(t){for(var n=-1,o=0;o<e.length;o++)if(e[o].identifier===t){n=o;break}return n}function o(t,o){for(var i={},s=[],a=0;a<t.length;a++){var l=t[a],u=o.base?l[0]+o.base:l[0],c=i[u]||0,f="".concat(u," ").concat(c);i[u]=c+1;var d=n(f),h={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==d)e[d].references++,e[d].updater(h);else{var m=r(h,o);o.byIndex=a,e.splice(a,0,{identifier:f,updater:m,references:1})}s.push(f)}return s}function r(t,e){var n=e.domAPI(e);return n.update(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap&&e.supports===t.supports&&e.layer===t.layer)return;n.update(t=e)}else n.remove()}}t.exports=function(t,r){var i=o(t=t||[],r=r||{});return function(t){t=t||[];for(var s=0;s<i.length;s++){var a=n(i[s]);e[a].references--}for(var l=o(t,r),u=0;u<i.length;u++){var c=n(i[u]);0===e[c].references&&(e[c].updater(),e.splice(c,1))}i=l}}},7659(t){"use strict";var e={};t.exports=function(t,n){var o=function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}(t);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},540(t){"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},5056(t,e,n){"use strict";t.exports=function(t){var e=n.nc;e&&t.setAttribute("nonce",e)}},7825(t){"use strict";t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(n){!function(t,e,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,r&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var i=n.sourceMap;i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleTagTransform(o,t,e.options)}(e,t,n)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},1113(t){"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}}},i={};function s(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return r[t].call(n.exports,n,n.exports,s),n.loaded=!0,n.exports}s.m=r,s.amdO={},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,s.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var r=Object.create(null);s.r(r);var i={};t=t||[null,e({}),e([]),e(e)];for(var a=2&o&&n;("object"==typeof a||"function"==typeof a)&&!~t.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach(t=>i[t]=()=>n[t]);return i.default=()=>n,s.d(r,i),r},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce((e,n)=>(s.f[n](t,e),e),[])),s.u=t=>t+".js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.hmd=t=>((t=Object.create(t)).children||(t.children=[]),Object.defineProperty(t,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+t.id)}}),t),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n={},o="eda:",s.l=(t,e,r,i)=>{if(n[t])n[t].push(e);else{var a,l;if(void 0!==r)for(var u=document.getElementsByTagName("script"),c=0;c<u.length;c++){var f=u[c];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==o+r){a=f;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",s.nc&&a.setAttribute("nonce",s.nc),a.setAttribute("data-webpack",o+r),a.src=t),n[t]=[e];var d=(e,o)=>{a.onerror=a.onload=null,clearTimeout(h);var r=n[t];if(delete n[t],a.parentNode&&a.parentNode.removeChild(a),r&&r.forEach(t=>t(o)),e)return e(o)},h=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),l&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;s.g.importScripts&&(t=s.g.location+"");var e=s.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var o=n.length-1;o>-1&&(!t||!/^http(s?):/.test(t));)t=n[o--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={255:0};s.f.j=(e,n)=>{var o=s.o(t,e)?t[e]:void 0;if(0!==o)if(o)n.push(o[2]);else{var r=new Promise((n,r)=>o=t[e]=[n,r]);n.push(o[2]=r);var i=s.p+s.u(e),a=new Error;s.l(i,n=>{if(s.o(t,e)&&(0!==(o=t[e])&&(t[e]=void 0),o)){var r=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;a.message="Loading chunk "+e+" failed.\n("+r+": "+i+")",a.name="ChunkLoadError",a.type=r,a.request=i,o[1](a)}},"chunk-"+e,e)}};var e=(e,n)=>{var o,r,[i,a,l]=n,u=0;if(i.some(e=>0!==t[e])){for(o in a)s.o(a,o)&&(s.m[o]=a[o]);l&&l(s)}for(e&&e(n);u<i.length;u++)r=i[u],s.o(t,r)&&t[r]&&t[r][0](),t[r]=0},n=self.webpackChunkeda=self.webpackChunkeda||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),s.nc=void 0;var a={};(()=>{"use strict";s.r(a),s.d(a,{_package:()=>Br,initAutoTests:()=>Ur,test:()=>kr,tests:()=>f});const t=DG;s(9982);const e=DG.DataFrame.fromCsv('countries,fasta,smiles,molregno,LON,Zip Code,Street Address Line 1,ImageUrl,user_id,error_message,xray,flag,magnitude,CS-id,pdb_id,accel_a,time_offset,chart,fit,Questions,empty_number,empty_string\nBelgium,MSNFHNEHVMQFYRNNLKTKGVFGRQ,CC(C(=O)OCCCc1cccnc1)c2cccc(c2)C(=O)c3ccccc3,1480014,36.276729583740234,995042300,14016 ROUTE 31W,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,1,1,1QBS,1,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[2.497360340644872, 1.7058694986686864, 5.278052678195135, 0.16000320889028383],""points"":[{""x"":0.10000000149011612,""y"":2.374499797821045},{""x"":0.6000000238418579,""y"":2.6242473125457764},{""x"":1.100000023841858,""y"":2.367267608642578},{""x"":1.600000023841858,""y"":2.6723148822784424},{""x"":2.0999999046325684,""y"":2.6537344455718994},{""x"":2.5999999046325684,""y"":2.3651671409606934},{""x"":3.0999999046325684,""y"":2.5654284954071045},{""x"":3.5999999046325684,""y"":2.4160959720611572},{""x"":4.099999904632568,""y"":2.286726713180542},{""x"":4.599999904632568,""y"":2.5100042819976807},{""x"":5.099999904632568,""y"":1.6676985025405884},{""x"":5.599999904632568,""y"":0.680136501789093},{""x"":6.099999904632568,""y"":0.3391543924808502},{""x"":6.599999904632568,""y"":0.09038983285427094},{""x"":7.099999904632568,""y"":0.19802775979042053}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[7.525235855508179, 1.3186911876809984, 5.335672608564294, 0.7860743343958098],""points"":[{""x"":0.10000000149011612,""y"":7.988070487976074},{""x"":0.6000000238418579,""y"":7.018453121185303},{""x"":1.100000023841858,""y"":8.115279197692871},{""x"":1.600000023841858,""y"":7.486658096313477},{""x"":2.0999999046325684,""y"":7.396438121795654},{""x"":2.5999999046325684,""y"":7.477052211761475},{""x"":3.0999999046325684,""y"":6.913095474243164},{""x"":3.5999999046325684,""y"":8.01385498046875},{""x"":4.099999904632568,""y"":6.985900402069092},{""x"":4.599999904632568,""y"":6.970335960388184},{""x"":5.099999904632568,""y"":5.448817253112793},{""x"":5.599999904632568,""y"":2.5534818172454834},{""x"":6.099999904632568,""y"":1.893947958946228},{""x"":6.599999904632568,""y"":0.6340042352676392},{""x"":7.099999904632568,""y"":0.8403874039649963}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,100,abc\nBurundi,MDYKETLLMPKTDFPMRGGLPNKEPQIQEKW,COc1ccc2cc(ccc2c1)C(C)C(=O)Oc3ccc(C)cc3OC,1480015,36.276729583740234,995073444,80 STATE HIGHWAY 310,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,2,2,1ZP8,2,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[4.431460753103398, 2.1691498799246745, 5.266445597102774, 0.7825762827017926],""points"":[{""x"":0.10000000149011612,""y"":4.751083850860596},{""x"":0.6000000238418579,""y"":4.203000068664551},{""x"":1.100000023841858,""y"":4.415858745574951},{""x"":1.600000023841858,""y"":4.68414306640625},{""x"":2.0999999046325684,""y"":4.198400974273682},{""x"":2.5999999046325684,""y"":4.179222106933594},{""x"":3.0999999046325684,""y"":4.638473987579346},{""x"":3.5999999046325684,""y"":4.708553314208984},{""x"":4.099999904632568,""y"":4.291589260101318},{""x"":4.599999904632568,""y"":4.038082599639893},{""x"":5.099999904632568,""y"":3.4349939823150635},{""x"":5.599999904632568,""y"":1.2194708585739136},{""x"":6.099999904632568,""y"":1.1920831203460693},{""x"":6.599999904632568,""y"":0.5352635979652405},{""x"":7.099999904632568,""y"":0.3346920311450958}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[2.339458017970126, -1.0734184310171178, 4.746332950550934, 0.2482416857595658],""points"":[{""x"":0.10000000149011612,""y"":0.2139337658882141},{""x"":0.6000000238418579,""y"":0.4269562065601349},{""x"":1.100000023841858,""y"":0.2441573292016983},{""x"":1.600000023841858,""y"":0.146635964512825},{""x"":2.0999999046325684,""y"":0.08818462491035461},{""x"":2.5999999046325684,""y"":0.2560656666755676},{""x"":3.0999999046325684,""y"":0.42434045672416687},{""x"":3.5999999046325684,""y"":0.37111231684684753},{""x"":4.099999904632568,""y"":0.5581737160682678},{""x"":4.599999904632568,""y"":1.183590054512024},{""x"":5.099999904632568,""y"":1.5629843473434448},{""x"":5.599999904632568,""y"":2.3211288452148438},{""x"":6.099999904632568,""y"":2.229961633682251},{""x"":6.599999904632568,""y"":2.2560226917266846},{""x"":7.099999904632568,""y"":2.2142398357391357}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nCameroon,MIEVFLFGIVLGLIPITLAGLFVTAYLQYRRGDQLDL,COc1ccc2cc(ccc2c1)C(C)C(=O)OCCCc3cccnc3,1480016,36.26095962524414,995153596,30-56 WHITESTONE EXPY,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,3,3,2BDJ,3,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[4.6760652578642325, 0.9046956320756703, 5.651408971856738, 0.07738846012184185],""points"":[{""x"":0.10000000149011612,""y"":4.32425594329834},{""x"":0.6000000238418579,""y"":4.668442249298096},{""x"":1.100000023841858,""y"":4.379785060882568},{""x"":1.600000023841858,""y"":5.0345139503479},{""x"":2.0999999046325684,""y"":4.878653526306152},{""x"":2.5999999046325684,""y"":4.3451313972473145},{""x"":3.0999999046325684,""y"":4.336992263793945},{""x"":3.5999999046325684,""y"":5.037430286407471},{""x"":4.099999904632568,""y"":5.0092692375183105},{""x"":4.599999904632568,""y"":4.151902675628662},{""x"":5.099999904632568,""y"":3.4066951274871826},{""x"":5.599999904632568,""y"":2.3732759952545166},{""x"":6.099999904632568,""y"":1.673728108406067},{""x"":6.599999904632568,""y"":0.48574790358543396},{""x"":7.099999904632568,""y"":0.2783052325248718}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[2.938395863010111, -1.4658480661392117, 5.462702751996584, 0.3473139023615039],""points"":[{""x"":0.10000000149011612,""y"":0.4941710829734802},{""x"":0.6000000238418579,""y"":0.15323974192142487},{""x"":1.100000023841858,""y"":0.46373432874679565},{""x"":1.600000023841858,""y"":0.3370431363582611},{""x"":2.0999999046325684,""y"":0.5179030299186707},{""x"":2.5999999046325684,""y"":0.27899765968322754},{""x"":3.0999999046325684,""y"":0.22075064480304718},{""x"":3.5999999046325684,""y"":0.5789918899536133},{""x"":4.099999904632568,""y"":0.21169911324977875},{""x"":4.599999904632568,""y"":0.27857646346092224},{""x"":5.099999904632568,""y"":1.0906332731246948},{""x"":5.599999904632568,""y"":1.8520300388336182},{""x"":6.099999904632568,""y"":2.7177059650421143},{""x"":6.599999904632568,""y"":2.8680918216705322},{""x"":7.099999904632568,""y"":3.2413077354431152}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nCanada,MMELVLKTIIGPIVVGVVLRIVDKWLNKDK,CC(C(=O)NCCS)c1cccc(c1)C(=O)c2ccccc2,1480017,36.26095962524414,99515,30-56 WHITESTONE EXPY,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,4,4,1IAN,4,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[0.8597390975430008, 1.0957625732481946, 5.260537067987958, 0.07974187998177736],""points"":[{""x"":0.10000000149011612,""y"":0.8190152645111084},{""x"":0.6000000238418579,""y"":0.8421689867973328},{""x"":1.100000023841858,""y"":0.8740922212600708},{""x"":1.600000023841858,""y"":0.8924275040626526},{""x"":2.0999999046325684,""y"":0.8249067664146423},{""x"":2.5999999046325684,""y"":0.9327669143676758},{""x"":3.0999999046325684,""y"":0.8522974252700806},{""x"":3.5999999046325684,""y"":0.8174492716789246},{""x"":4.099999904632568,""y"":0.8394647240638733},{""x"":4.599999904632568,""y"":0.7139387726783752},{""x"":5.099999904632568,""y"":0.5561167597770691},{""x"":5.599999904632568,""y"":0.3276226818561554},{""x"":6.099999904632568,""y"":0.12479474395513535},{""x"":6.599999904632568,""y"":0.13006797432899475},{""x"":7.099999904632568,""y"":0.059702079743146896}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[5.760930219582546, 1.6591793293833013, 4.667155929720851, 0.7858109544121652],""points"":[{""x"":0.10000000149011612,""y"":6.156993389129639},{""x"":0.6000000238418579,""y"":5.236701965332031},{""x"":1.100000023841858,""y"":6.010560512542725},{""x"":1.600000023841858,""y"":5.495512962341309},{""x"":2.0999999046325684,""y"":6.087770462036133},{""x"":2.5999999046325684,""y"":5.79986572265625},{""x"":3.0999999046325684,""y"":5.597546577453613},{""x"":3.5999999046325684,""y"":5.520902156829834},{""x"":4.099999904632568,""y"":5.360654354095459},{""x"":4.599999904632568,""y"":3.5539746284484863},{""x"":5.099999904632568,""y"":1.577236294746399},{""x"":5.599999904632568,""y"":1.0001264810562134},{""x"":6.099999904632568,""y"":0.9305797815322876},{""x"":6.599999904632568,""y"":0.6033638715744019},{""x"":7.099999904632568,""y"":0.4203685522079468}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nColombia,MDRTDEVSNHTHDKPTLTWFEEIFEEYHSPFHN,FC(F)(F)c1ccc(OC2CCNCC2)cc1,1480029,36.3309440612793,995152050,1 COURT HOUSE SQUARE,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,5,5,4UJ1,5,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[6.4995088314153655, 2.4270351004539914, 5.178659535348579, 0.625653346241577],""points"":[{""x"":0.10000000149011612,""y"":6.496231555938721},{""x"":0.6000000238418579,""y"":6.42543363571167},{""x"":1.100000023841858,""y"":7.040063858032227},{""x"":1.600000023841858,""y"":6.1115403175354},{""x"":2.0999999046325684,""y"":6.680728435516357},{""x"":2.5999999046325684,""y"":6.406774520874023},{""x"":3.0999999046325684,""y"":6.611269474029541},{""x"":3.5999999046325684,""y"":5.889094352722168},{""x"":4.099999904632568,""y"":6.75344705581665},{""x"":4.599999904632568,""y"":6.361435890197754},{""x"":5.099999904632568,""y"":4.1666975021362305},{""x"":5.599999904632568,""y"":1.172118902206421},{""x"":6.099999904632568,""y"":0.801048994064331},{""x"":6.599999904632568,""y"":0.4640021026134491},{""x"":7.099999904632568,""y"":0.0010357667924836278}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[1.4734381347446401, 1.1649805188074196, 4.82958608866421, 0.09500545496710007],""points"":[{""x"":0.10000000149011612,""y"":1.5279096364974976},{""x"":0.6000000238418579,""y"":1.3559974431991577},{""x"":1.100000023841858,""y"":1.5246378183364868},{""x"":1.600000023841858,""y"":1.5567657947540283},{""x"":2.0999999046325684,""y"":1.4114240407943726},{""x"":2.5999999046325684,""y"":1.4045010805130005},{""x"":3.0999999046325684,""y"":1.4769829511642456},{""x"":3.5999999046325684,""y"":1.4875500202178955},{""x"":4.099999904632568,""y"":1.2991987466812134},{""x"":4.599999904632568,""y"":0.922961413860321},{""x"":5.099999904632568,""y"":0.6520044803619385},{""x"":5.599999904632568,""y"":0.15350978076457977},{""x"":6.099999904632568,""y"":0.1078903079032898},{""x"":6.599999904632568,""y"":0.17276449501514435},{""x"":7.099999904632568,""y"":0.14066608250141144}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nCosta Rica,MKSTKEEIQTIKTLLKDSRTAKYHKRLQIVL,CC(C)Cc1ccc(cc1)C(C)C(=O)N2CCCC2C(=O)OCCCc3ccccc3,1480018,36.3309440612793,995084218,4041 SOUTHWESTERN BLVD,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,6,6,2BPW,6,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[2.4833641843311227, -1.8945978742090062, 4.671127708092568, 0.24159861311815153],""points"":[{""x"":0.10000000149011612,""y"":0.0969524160027504},{""x"":0.6000000238418579,""y"":0.028483040630817413},{""x"":1.100000023841858,""y"":0.22087176144123077},{""x"":1.600000023841858,""y"":0.0068915546871721745},{""x"":2.0999999046325684,""y"":0.4305879771709442},{""x"":2.5999999046325684,""y"":0.44774115085601807},{""x"":3.0999999046325684,""y"":0.45346319675445557},{""x"":3.5999999046325684,""y"":0.2370593100786209},{""x"":4.099999904632568,""y"":0.4657953977584839},{""x"":4.599999904632568,""y"":1.155200719833374},{""x"":5.099999904632568,""y"":2.2294070720672607},{""x"":5.599999904632568,""y"":2.4311530590057373},{""x"":6.099999904632568,""y"":2.33846116065979},{""x"":6.599999904632568,""y"":2.608201026916504},{""x"":7.099999904632568,""y"":2.8136143684387207}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[5.224573521642033, 1.4454033924198528, 5.6014197746076535, 0.2823216054197577],""points"":[{""x"":0.10000000149011612,""y"":4.95027494430542},{""x"":0.6000000238418579,""y"":5.1754679679870605},{""x"":1.100000023841858,""y"":5.276752948760986},{""x"":1.600000023841858,""y"":5.589294910430908},{""x"":2.0999999046325684,""y"":5.616994857788086},{""x"":2.5999999046325684,""y"":5.120813846588135},{""x"":3.0999999046325684,""y"":5.340766906738281},{""x"":3.5999999046325684,""y"":4.876471042633057},{""x"":4.099999904632568,""y"":4.94999361038208},{""x"":4.599999904632568,""y"":5.162564754486084},{""x"":5.099999904632568,""y"":4.399557590484619},{""x"":5.599999904632568,""y"":2.7977969646453857},{""x"":6.099999904632568,""y"":1.0229872465133667},{""x"":6.599999904632568,""y"":0.48275601863861084},{""x"":7.099999904632568,""y"":0.10408931970596313}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nCuba,MHAILRYFIRRLFYHIFYKIYSLISKKHQSLPSDVRQF,COc1ccc2c(c1)c(CC(=O)N3CCCC3C(=O)Oc4ccc(C)cc4OC)c(C)n2C(=O)c5ccc(Cl)cc5,1480019,36.33115768432617,995081928,1227 US HIGHWAY 11,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,7,7,1QBS,7,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[3.320838679713925, -1.2421619987316728, 4.831325425225256, 0.3236011098403072],""points"":[{""x"":0.10000000149011612,""y"":0.3727470338344574},{""x"":0.6000000238418579,""y"":0.12365014106035233},{""x"":1.100000023841858,""y"":0.48422467708587646},{""x"":1.600000023841858,""y"":0.2264465093612671},{""x"":2.0999999046325684,""y"":0.16821794211864471},{""x"":2.5999999046325684,""y"":0.3879014551639557},{""x"":3.0999999046325684,""y"":0.5470244884490967},{""x"":3.5999999046325684,""y"":0.3419053554534912},{""x"":4.099999904632568,""y"":0.7655120491981506},{""x"":4.599999904632568,""y"":1.2346516847610474},{""x"":5.099999904632568,""y"":2.453336715698242},{""x"":5.599999904632568,""y"":2.9565491676330566},{""x"":6.099999904632568,""y"":3.335299491882324},{""x"":6.599999904632568,""y"":3.240290880203247},{""x"":7.099999904632568,""y"":3.1107218265533447}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[3.6401853521511094, 1.26211588875013, 5.399028074402744, 0.5089580830068091],""points"":[{""x"":0.10000000149011612,""y"":3.8585598468780518},{""x"":0.6000000238418579,""y"":3.6077206134796143},{""x"":1.100000023841858,""y"":3.855252265930176},{""x"":1.600000023841858,""y"":3.619039297103882},{""x"":2.0999999046325684,""y"":3.839388370513916},{""x"":2.5999999046325684,""y"":3.335283041000366},{""x"":3.0999999046325684,""y"":3.571141481399536},{""x"":3.5999999046325684,""y"":3.4155046939849854},{""x"":4.099999904632568,""y"":3.7316646575927734},{""x"":4.599999904632568,""y"":3.0680155754089355},{""x"":5.099999904632568,""y"":2.891066551208496},{""x"":5.599999904632568,""y"":1.6022753715515137},{""x"":6.099999904632568,""y"":0.7652576565742493},{""x"":6.599999904632568,""y"":0.6875326037406921},{""x"":7.099999904632568,""y"":0.5828871726989746}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nItaly,MSNFHNEHVMQFYRNNLKTKGVFGRQ,CC(C)Cc1ccc(cc1)C(C)C(=O)N2CCCC2C(=O)OCCO[N+](=O)[O-],1480020,36.33115768432617,99502,"168-46 91ST AVE., 2ND FLR",https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,8,8,1ZP8,8,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[2.293592105923809, 1.3781586549141835, 5.1025898038676605, 0.03493851245291291],""points"":[{""x"":0.10000000149011612,""y"":2.1287283897399902},{""x"":0.6000000238418579,""y"":2.267972230911255},{""x"":1.100000023841858,""y"":2.398442506790161},{""x"":1.600000023841858,""y"":2.5130622386932373},{""x"":2.0999999046325684,""y"":2.3255116939544678},{""x"":2.5999999046325684,""y"":2.127340793609619},{""x"":3.0999999046325684,""y"":2.47259783744812},{""x"":3.5999999046325684,""y"":2.131181478500366},{""x"":4.099999904632568,""y"":2.090421438217163},{""x"":4.599999904632568,""y"":2.02299165725708},{""x"":5.099999904632568,""y"":1.1105059385299683},{""x"":5.599999904632568,""y"":0.4494485855102539},{""x"":6.099999904632568,""y"":0.1375635862350464},{""x"":6.599999904632568,""y"":0.036351121962070465},{""x"":7.099999904632568,""y"":0.1619771122932434}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[5.953125499439879, 1.2528620255306528, 5.187637440149802, 0.3110348753260886],""points"":[{""x"":0.10000000149011612,""y"":5.6585283279418945},{""x"":0.6000000238418579,""y"":5.911152362823486},{""x"":1.100000023841858,""y"":5.924920082092285},{""x"":1.600000023841858,""y"":5.8469438552856445},{""x"":2.0999999046325684,""y"":5.929472923278809},{""x"":2.5999999046325684,""y"":6.190037727355957},{""x"":3.0999999046325684,""y"":6.236179828643799},{""x"":3.5999999046325684,""y"":6.141019344329834},{""x"":4.099999904632568,""y"":5.295210838317871},{""x"":4.599999904632568,""y"":5.265801906585693},{""x"":5.099999904632568,""y"":3.3722851276397705},{""x"":5.599999904632568,""y"":1.8299226760864258},{""x"":6.099999904632568,""y"":0.32690900564193726},{""x"":6.599999904632568,""y"":0.6274543404579163},{""x"":7.099999904632568,""y"":0.8441857099533081}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nRwanda,MPNSEPASLLELFNSIATQGELVRSLKAGNASK,CC(C)Cc1ccc(cc1)C(C)C(=O)N2CCCC2C(=O)OCCO,1480021,36.33137130737305,995037247,"168-46 91ST AVE., 2ND FLR",https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,9,9,2BDJ,9,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[3.8209972202654474, 1.3779216716448506, 5.299882228439686, 0.06040645519069608],""points"":[{""x"":0.10000000149011612,""y"":3.7821109294891357},{""x"":0.6000000238418579,""y"":3.542433023452759},{""x"":1.100000023841858,""y"":3.7008674144744873},{""x"":1.600000023841858,""y"":3.717301607131958},{""x"":2.0999999046325684,""y"":4.024452209472656},{""x"":2.5999999046325684,""y"":4.013899326324463},{""x"":3.0999999046325684,""y"":3.945094347000122},{""x"":3.5999999046325684,""y"":3.866621971130371},{""x"":4.099999904632568,""y"":3.7461626529693604},{""x"":4.599999904632568,""y"":3.3454740047454834},{""x"":5.099999904632568,""y"":2.61944317817688},{""x"":5.599999904632568,""y"":0.999405026435852},{""x"":6.099999904632568,""y"":0.46259793639183044},{""x"":6.599999904632568,""y"":0.054134611040353775},{""x"":7.099999904632568,""y"":0.05711187422275543}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[5.6318079657726035, 1.8495493770000595, 5.391793312471116, 0.17060707587348442],""points"":[{""x"":0.10000000149011612,""y"":5.458079814910889},{""x"":0.6000000238418579,""y"":5.554427146911621},{""x"":1.100000023841858,""y"":5.799983024597168},{""x"":1.600000023841858,""y"":5.364140033721924},{""x"":2.0999999046325684,""y"":5.864485740661621},{""x"":2.5999999046325684,""y"":5.4509806632995605},{""x"":3.0999999046325684,""y"":5.702574729919434},{""x"":3.5999999046325684,""y"":5.7314534187316895},{""x"":4.099999904632568,""y"":5.5123443603515625},{""x"":4.599999904632568,""y"":5.724395751953125},{""x"":5.099999904632568,""y"":4.354506969451904},{""x"":5.599999904632568,""y"":1.7307666540145874},{""x"":6.099999904632568,""y"":0.6305936574935913},{""x"":6.599999904632568,""y"":0.035183437168598175},{""x"":7.099999904632568,""y"":0.7575169205665588}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\nSwitzerland,IRVVGRYLIEVWKAAGMDMDKVLFLWSSDEI,CN1CCC(CC1)Oc2ccc(cc2)C(F)(F)F,1480028,36.33137130737305,99504,92-11 179TH PLACE,https://datagrok.ai/img/slides/access-db-connect.png,id,ErrorMessage,"COMPND \nATOM \nEND",flag,9,10,1IAN,10,1.23,<chart></chart>,"{""series"":[{""name"":""Run:2023-08-08"",""fitFunction"":""sigmoid"",""fitLineColor"":""#1f77b4"",""pointColor"":""#1f77b4"",""showPoints"":""points"",""parameters"":[1.1190255865097471, 2.3163895161544437, 5.4968866182279195, 0.2035204047289052],""points"":[{""x"":0.10000000149011612,""y"":1.1057683229446411},{""x"":0.6000000238418579,""y"":1.1019697189331055},{""x"":1.100000023841858,""y"":1.0818607807159424},{""x"":1.600000023841858,""y"":1.062997817993164},{""x"":2.0999999046325684,""y"":1.046447515487671},{""x"":2.5999999046325684,""y"":1.1217249631881714},{""x"":3.0999999046325684,""y"":1.2166996002197266},{""x"":3.5999999046325684,""y"":1.215477705001831},{""x"":4.099999904632568,""y"":1.0581893920898438},{""x"":4.599999904632568,""y"":1.1747995615005493},{""x"":5.099999904632568,""y"":1.0181127786636353},{""x"":5.599999904632568,""y"":0.5344523191452026},{""x"":6.099999904632568,""y"":0.2569526433944702},{""x"":6.599999904632568,""y"":0.1912207305431366},{""x"":7.099999904632568,""y"":0.15060538053512573}]},{""name"":""Run:2023-08-08"",""fitLineColor"":""#ffbb78"",""pointColor"":""#ffbb78"",""showPoints"":""points"",""parameters"":[3.1038581025805785, 2.0032224204185245, 5.087602825989163, 0.13277988512492753],""points"":[{""x"":0.10000000149011612,""y"":3.0498509407043457},{""x"":0.6000000238418579,""y"":2.805217742919922},{""x"":1.100000023841858,""y"":3.3415253162384033},{""x"":1.600000023841858,""y"":3.0549843311309814},{""x"":2.0999999046325684,""y"":3.250074863433838},{""x"":2.5999999046325684,""y"":3.0432586669921875},{""x"":3.0999999046325684,""y"":3.265852451324463},{""x"":3.5999999046325684,""y"":2.9475724697113037},{""x"":4.099999904632568,""y"":3.1929898262023926},{""x"":4.599999904632568,""y"":2.7460060119628906},{""x"":5.099999904632568,""y"":1.6175861358642578},{""x"":5.599999904632568,""y"":0.3006608486175537},{""x"":6.099999904632568,""y"":0.3444803059101105},{""x"":6.599999904632568,""y"":0.015537971630692482},{""x"":7.099999904632568,""y"":0.5527358055114746}]}],""chartOptions"":{""xAxisName"":""Conc."",""yAxisName"":""Activity"",""title"":""Dose-Response curves""}}",text,,\n,,,,,,,,,,,,,,,,,,,,,');e.columns.add(DG.Column.fromList(DG.TYPE.BYTE_ARRAY,"BinaryImage",Array.from(new Uint8Array(11))));var n=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const o=3e4,r=108e5,i=console.log.bind(console),l=console.info.bind(console),u=console.warn.bind(console),c=console.error.bind(console),f={},d="Auto Tests",h="Demo",m="Detectors",p="Core",g={};let v;var y;!function(t){t.notNull=function(t,e){if(null==t)throw new Error(`${null==e?"Value":e} not defined`)}}(y||(y={}));class A{constructor(t,e,n){this.catchUnhandled=!0,this.report=!1,this.returnOnFail=!1,void 0!==t&&(this.catchUnhandled=t),void 0!==e&&(this.report=e),void 0!==n&&(this.returnOnFail=n)}}class w{constructor(t,e,r,i){var s;this.category=t,this.name=e,null!=i||(i={}),null!==(s=i.timeout)&&void 0!==s||(i.timeout=o),this.options=i,this.test=()=>n(this,void 0,void 0,function*(){return new Promise((t,e)=>n(this,void 0,void 0,function*(){var n;let o="";try{DG.Test.isInDebug;let t=yield r();try{o=null!==(n=null==t?void 0:t.toString())&&void 0!==n?n:""}catch(t){o="Can't convert test's result to string",console.error(`Can't convert test's result to string in the ${this.category}:${this.name} test`)}}catch(t){e(t)}t(o)}))})}}function C(t,e,n){null==f[v]&&(f[v]={}),null==f[v].tests&&(f[v].tests=[]),f[v].tests.push(new w(v,t,e,n))}function E(t,e=!0,n){if(n=n?`${n}, `:"",t!==e)throw new Error(`${n}Expected "${e}", got "${t}"`)}function b(t,e,n){var o;v=t,e(),f[v]&&(f[v].clear=null===(o=null==n?void 0:n.clear)||void 0===o||o,f[v].timeout=null==n?void 0:n.timeout,f[v].benchmarks=null==n?void 0:n.benchmarks,f[v].stressTests=null==n?void 0:n.stressTests,f[v].owner=null==n?void 0:n.owner)}function x(t,e){return t.replace(new RegExp(e.name,"gi"),e.nqName)}function _(t,i){var s,a,l,u,c,v,y,A,C,b;return n(this,void 0,void 0,function*(){const _=t.id;if(g[_])return;const N=i?i.tests:f;if("DevTools"===t.name||i&&"DevTools"===i._package.name)for(const t of window.dartTests){const e=t.name.split(/\s*\|\s*!/g);let n=null!==(s=e.pop())&&void 0!==s?s:t.name,r=e.length?p+": "+e.join(": "):p,i=n.split(" | ");n=i[i.length-1],i.unshift(r),i.pop(),r=i.join(": "),void 0===N[r]&&(N[r]={tests:[],clear:!0}),N[r].tests.push(new w(r,n,t.test,{isAggregated:!1,timeout:null!==(l=null===(a=t.options)||void 0===a?void 0:a.timeout)&&void 0!==l?l:o,skipReason:null===(u=t.options)||void 0===u?void 0:u.skipReason,owner:null===(c=t.options)||void 0===c?void 0:c.owner,benchmark:null!==(y=null===(v=t.options)||void 0===v?void 0:v.benchmark)&&void 0!==y&&y}))}const M=[],T=[],O=[],I=yield grok.dapi.functions.filter(`package.id = "${_}"`).list(),L=new RegExp(/skip:\s*([^,\s]+)|wait:\s*(\d+)|cat:\s*([^,\s]+)|timeout:\s*(\d+)/g);for(const i of I){const s=i.options.test,a=i.options.demoPath;if(s&&Array.isArray(s)&&s.length)for(let t=0;t<s.length;t++){const e=s[t].matchAll(L),a={};Array.from(e).forEach(t=>{t[0].startsWith("skip")?a.skip=t[1]:t[0].startsWith("wait")?a.wait=parseInt(t[2]):t[0].startsWith("cat")?a.cat=t[3]:t[0].startsWith("timeout")&&(a.timeout=parseInt(t[4]))});const l=new w(null!==(A=a.cat)&&void 0!==A?A:d,1===s.length?i.name:`${i.name} ${t+1}`,()=>n(this,void 0,void 0,function*(){const e=yield grok.functions.eval(x(s[t],i));if(a.wait&&(yield S(a.wait)),"boolean"==typeof e&&!e)throw`Failed: ${s[t]}, expected true, got ${e}`}),{skipReason:a.skip,timeout:DG.Test.isInBenchmark?null!==(C=a.benchmarkTimeout)&&void 0!==C?C:r:null!==(b=a.timeout)&&void 0!==b?b:o});if(a.cat){const t=a.cat;void 0===N[t]&&(N[t]={tests:[],clear:!0}),N[t].tests||(N[t].tests=[]),N[t].tests.push(l)}else M.push(l)}if(a){const t=i.options.demoWait?parseInt(i.options.demoWait):void 0,e=new w(h,i.friendlyName,()=>n(this,void 0,void 0,function*(){yield S(300),grok.shell.clearLastError(),yield i.apply(),yield S(t||2e3);const e=yield grok.shell.lastError;if(e)throw new Error(e)}),{skipReason:i.options.demoSkip});T.push(e)}if(i.hasTag("semTypeDetector")){let o=e;i.options.testData&&(o=yield grok.data.files.openTable(`System:AppData/${t.nqName}/${i.options.testData}`));const r=new w(m,i.friendlyName,()=>n(this,void 0,void 0,function*(){const e=[];console.log(`System:AppData/${t.nqName}/${i.options.testData}`);for(const t of o.clone().columns){const n=yield i.apply([t]);e.push(n||t.semType)}const n=e.filter(t=>t);E(n.length,1),i.options.testDataColumnName&&E(n[0],i.options.testDataColumnName)}),{skipReason:i.options.skipTest});O.push(r)}}g[_]=!0,M.length>0&&(N[d]={tests:M,clear:!0}),T.length>0&&(N[h]={tests:T,clear:!0}),O.length>0&&(N[m]={tests:O,clear:!1})})}function N(t){return n(this,void 0,void 0,function*(){return`${t.toString()}\n${t.stack?yield DG.Logger.translateStackTrace(t.stack):""}`})}function M(t,e,r,s,a,l){var u,f,d,h,m,p,g,v,y,A,w,C,E,b;return n(this,void 0,void 0,function*(){let n;r.length=0;const x=null!=e&&t.name.toLowerCase()!==e.toLowerCase();let _=(null===(u=t.options)||void 0===u?void 0:u.skipReason)||x,M=x?"skipped":null===(f=t.options)||void 0===f?void 0:f.skipReason;if(DG.Test.isInBenchmark&&!(null===(d=t.options)||void 0===d?void 0:d.benchmark))return void i(`Package testing: Skipped {{${t.category}}} {{${t.name}}} doesnt available in benchmark mode`);_&&!DG.Test.isInBenchmark&&i(`Package testing: Skipped {{${t.category}}} {{${t.name}}}`),_||i(`Package testing: Started {{${t.category}}} {{${t.name}}}`);const T=Date.now(),S=new Date(T).toISOString();try{if(_)n={name:t.name,owner:null!==(m=null===(h=t.options)||void 0===h?void 0:h.owner)&&void 0!==m?m:"",category:t.category,logs:"",date:S,success:!0,result:M,ms:0,skipped:!0,package:null!=a?a:"",flaking:DG.Test.isReproducing};else{let e=null!=s?s:o;DG.Test.isProfiling&&console.profile(`${t.category}: ${t.name}`),n={name:t.name,owner:null!==(g=null===(p=t.options)||void 0===p?void 0:p.owner)&&void 0!==g?g:"",category:t.category,logs:"",date:S,success:!0,result:null!==(v=(yield O(t.test,e)).toString())&&void 0!==v?v:"OK",ms:0,skipped:!1,package:null!=a?a:"",flaking:DG.Test.isReproducing},DG.Test.isProfiling&&(console.profileEnd(`${t.category}: ${t.name}`),grok.shell.info(`Profiling of ${t.category}: ${t.name} finished \n Please ensure that you have opened DevTools (F12) / Performance panel before test starts.`))}}catch(e){c(e),n={name:t.name,owner:null!==(A=null===(y=t.options)||void 0===y?void 0:y.owner)&&void 0!==A?A:"",category:t.category,logs:"",date:S,success:!1,result:yield N(e),ms:0,skipped:!1,package:null!=a?a:"",flaking:!1}}if((null===(w=t.options)||void 0===w?void 0:w.isAggregated)&&n.result.constructor===DG.DataFrame){const t=n.result.col("success");if(t&&(n.success=t.stats.sum===t.length),!l){const t=n.result;t.columns.remove("stack"),t.rows.removeWhere(t=>t.get("success")),n.result=t}n.result=n.result.toCsv()}if(n.logs=r.join("\n"),n.ms=Date.now()-T,_||i(`Package testing: Finished {{${t.category}}} {{${t.name}}} with {{${n.success?"success":"error"}}} for ${n.ms} ms`),n.success||i(`Package testing: Result for {{${t.category}}} {{${t.name}}}: ${n.result}`),n.category=t.category,n.name=t.name,n.owner=null!==(E=null===(C=t.options)||void 0===C?void 0:C.owner)&&void 0!==E?E:"",!x){let e={success:n.success,result:n.result,ms:n.ms,date:n.date,skipped:n.skipped,category:t.category,name:t.name,logs:n.logs,owner:n.owner,flaking:DG.Test.isReproducing&&n.success,package:n.package};if(n.result.constructor==Object){const t=Object.keys(n.result).reduce((t,e)=>Object.assign(Object.assign({},t),{["result."+e]:n.result[e]}),{});e=Object.assign(Object.assign({},e),t)}e.result instanceof DG.DataFrame&&(e.result=JSON.stringify(null===(b=e.result)||void 0===b?void 0:b.toJson())||""),yield grok.shell.reportTest("package",e)}return n})}function T(t){const e=t.slice();return e.sort(()=>Math.random()-.5),e}function S(t){return n(this,void 0,void 0,function*(){yield new Promise(e=>setTimeout(e,t))})}function O(t,e,o="EXECUTION TIMEOUT"){return n(this,void 0,void 0,function*(){let n=null;const r=new Promise((t,r)=>{n=setTimeout(()=>{r(o)},e)});try{return yield Promise.race([t(),r])}finally{n&&clearTimeout(n)}})}DG.DataFrame.fromColumns([DG.Column.fromStrings("col",["val1","val2","val3"])]);const I=grok;var L,P,R,F,D,B,k,U;!function(t){t.UMAP="UMAP",t.T_SNE="t-SNE"}(L||(L={})),function(t){t.Levenshtein="Levenshtein",t.JaroWinkler="Jaro-Winkler",t.Manhattan="Manhattan String",t.Onehot="One-Hot"}(P||(P={})),function(t){t.Euclidean="Euclidean",t.Manhattan="Manhattan",t.Cosine="Vector Cosine"}(R||(R={})),function(t){t.Tanimoto="Tanimoto",t.Dice="Dice",t.Asymmetric="Asymmetric",t.BraunBlanquet="Braun-Blanquet",t.Cosine="Cosine",t.Kulczynski="Kulczynski",t.McConnaughey="Mc-Connaughey",t.RogotGoldberg="Rogot-Goldberg",t.Russel="Russel",t.Sokal="Sokal",t.Hamming="Hamming",t.Euclidean="Euclidean BitArray"}(F||(F={})),function(t){t.TanimotoIntArray="TanimotoIntArray"}(D||(D={})),function(t){t.Vector="Vector",t.String="String",t.BitArray="BitArray",t.MacroMolecule="MacroMolecule",t.Number="Number",t.IntArray="IntArray",t.NumberArray="NumberArray"}(B||(B={})),function(t){t.Difference="Difference"}(k||(k={})),function(t){t.CommonItems="Common Items"}(U||(U={}));const V=new Uint32Array(65536),G=(t,e)=>{if(t.length<e.length){const n=e;e=t,t=n}return 0===e.length?t.length:t.length<=32?((t,e)=>{const n=t.length,o=e.length,r=1<<n-1;let i=-1,s=0,a=n,l=n;for(;l--;)V[t.charCodeAt(l)]|=1<<l;for(l=0;l<o;l++){let t=V[e.charCodeAt(l)];const n=t|s;t|=(t&i)+i^i,s|=~(t|i),i&=t,s&r&&a++,i&r&&a--,s=s<<1|1,i=i<<1|~(n|s),s&=n}for(l=n;l--;)V[t.charCodeAt(l)]=0;return a})(t,e):((t,e)=>{const n=e.length,o=t.length,r=[],i=[],s=Math.ceil(n/32),a=Math.ceil(o/32);for(let t=0;t<s;t++)i[t]=-1,r[t]=0;let l=0;for(;l<a-1;l++){let s=0,a=-1;const u=32*l,c=Math.min(32,o)+u;for(let e=u;e<c;e++)V[t.charCodeAt(e)]|=1<<e;for(let t=0;t<n;t++){const n=V[e.charCodeAt(t)],o=i[t/32|0]>>>t&1,l=r[t/32|0]>>>t&1,u=n|s,c=((n|l)&a)+a^a|n|l;let f=s|~(c|a),d=a&c;f>>>31^o&&(i[t/32|0]^=1<<t),d>>>31^l&&(r[t/32|0]^=1<<t),f=f<<1|o,d=d<<1|l,a=d|~(u|f),s=f&u}for(let e=u;e<c;e++)V[t.charCodeAt(e)]=0}let u=0,c=-1;const f=32*l,d=Math.min(32,o-f)+f;for(let e=f;e<d;e++)V[t.charCodeAt(e)]|=1<<e;let h=o;for(let t=0;t<n;t++){const n=V[e.charCodeAt(t)],s=i[t/32|0]>>>t&1,a=r[t/32|0]>>>t&1,l=n|u,f=((n|a)&c)+c^c|n|a;let d=u|~(f|c),m=c&f;h+=d>>>o-1&1,h-=m>>>o-1&1,d>>>31^s&&(i[t/32|0]^=1<<t),m>>>31^a&&(r[t/32|0]^=1<<t),d=d<<1|s,m=m<<1|a,c=m|~(l|d),u=d&l}for(let e=f;e<d;e++)V[t.charCodeAt(e)]=0;return h})(t,e)};var $=s(944);class H{constructor(t,e=!1){if(this._length=0,this._version=0,this._updateLevel=0,this._selectedCount=0,this._selectedCountVersion=-1,this._selectedIndexesVersion=-1,this._versionedName="",this._versionedNameVersion=-1,this.SHRINK_THRESHOLD=256,"number"==typeof t){const n=t,o=H._createBuffer(n);if(e)for(let t=0;t<o.length;t++)o[t]=-1;this._data=o,this._length=n}else{if(!(t instanceof Uint32Array))throw new Error("Invalid constructor");this._data=t,this._length=e}}getRawData(){return this._data}assureGoez(t,e){if(t<0)throw new Error(`${e} should be greater than zero`)}assureInRange(t,e,n,o){if(t<e||t>n)throw new Error(`Argument ${o} (${t}) out of range (${e}, ${n})`)}copy(t,e,n){for(let o=0;o<n;o++)e[o]=t[o]}copyFrom(t){if(this._length!=t._length)throw new Error(`Lengths differ (${this._length} != ${t._length})`);this.copy(t._data,this._data,this.lengthInInts),this._version++}get length(){return this._length}get buffer(){return this._data}set buffer(t){this._data=t,this._version++}get version(){return this._version}set version(t){this._version=t}incrementVersion(t=!0){this._version++}get lengthInInts(){return Math.floor((this._length+31)/32)}get versionedName(){return this._version==this._versionedNameVersion?this._versionedName:""}set versionedName(t){this._versionedName=t,this._versionedNameVersion=this._version}get self(){return this}setLength(t){if(t<0)throw new Error("should be >= 0");if(t==this._length)return;const e=Math.floor((t+31)/32);if(e>this._data.length||e+this.SHRINK_THRESHOLD<this._data.length){const t=new Uint32Array(e);this.copy(this._data,t,e>this._data.length?this._data.length:e),this._data=t}t>this._length&&(this._length%32>0&&(this._data[this.lengthInInts-1]&=(1<<(this._length%32&31))-1),this._data.fill(0,this.lengthInInts,e)),this._length=t,this._version++}static fromAnd(t,e){if(t._length!=e._length)throw new Error(`Lengths differ (${t._length} != ${e._length})`);const n=new H(t._length);n._length=t._length,n._data=H._createBuffer(n._length),n._version=0;const o=t.lengthInInts;for(let r=0;r<o;r++)n._data[r]=t._data[r]&e._data[r];return n}static _createBuffer(t){return new Uint32Array(Math.floor((t+31)/32))}static fromValues(t){const e=new H(t.length);e._version=0;for(let n=0;n<e._length;n++)t[n]&&(e._data[Math.floor(n/32)]|=1<<(n%32&31));return e}static fromSeq(t,e){const n=new H(t);for(let o=0;o<t;++o)n.setBit(o,e(o));return n._version=0,n}static fromString(t){return H.fromSeq(t.length,e=>"1"==t.charAt(e))}static fromUint32Array(t,e){const n=new H(t);return n._data=e,n}static fromBytes(t){const e=t.length,n=new H(8*e);n._data=new Uint32Array(Math.floor((e+3)/4)),n._length=8*e;let o=0,r=0;for(;e-r>=4;)n._data[o++]=255&t[r]|(255&t[r+1])<<8|(255&t[r+2])<<16|(255&t[r+3])<<24,r+=4;return e-r==3&&(n._data[o]=(255&t[r+2])<<16),e-r==2&&(n._data[o]|=(255&t[r+1])<<8),e-r==1&&(n._data[o]|=255&t[r]),n._version=0,n}toString(){return`${this._length} bits, ${this.countBits(!0)} set`}equals(t){if(this==t)return!0;if(null==t)return!1;if(this._length!=t._length)return!1;if(0==this._length)return!0;for(let e=0;e<this._data.length-1;e++)if(this._data[e]!=t._data[e])return!1;for(let e=8*(this._data.length-1);e<this._length;e++)if(this.getBit(e)!=t.getBit(e))return!1;return!0}clone(){const t=new H(0,!1);return t._data=Uint32Array.from(this._data),t._length=this._length,t._version=this._version,t}init(t,e){this.setAll(!1,!1);for(let e=0;e<this._length;e++)t(e)&&(this._data[Math.floor(e/32)]|=1<<(e%32&31));return this.incrementVersion(e),this}invert(t=!0){for(let t=0;t<this._data.length;t++)this._data[t]^=-1;this.incrementVersion(t)}setAll(t,e=!1){const n=t?-1:0,o=this.lengthInInts;for(let t=0;t<o;t++)this._data[t]=n;this.incrementVersion(e)}setIndexes(t,e=!0,n=!0,o=!0){n&&this.setAll(!e,!1);for(const n of t)this.setFast(n,e);this.incrementVersion(o)}everyIndex(t,e=!0){for(const n of t)if(this.getBit(n)!=e)return!1;return!0}anyIndex(t,e=!0){for(const n of t)if(this.getBit(n)==e)return!0;return!1}setWhere(t,e=!0,n=!0,o=!0,r=!0){if(n&&r&&this.setAll(!e,!1),r)for(let n=0;n<this._length;n++)t(n)&&this.setFast(n,e);else for(let n=0;n<this._length;n++)this.setFast(n,t(n)?e:!e);this.incrementVersion(o)}getRange(t,e){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length,"to");const n=[];for(let o=t;o<e;++o)n.push(this.getBit(o));return H.fromValues(n)}getRangeAsList(t,e){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length,"to");const n=[];for(let o=t;o<e;++o)n.push(this.getBit(o));return n}setRange(t,e,n,o=!0){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length-1,"to");const r=Math.min(t,e),i=Math.max(t,e);if(n)for(let t=r;t<=i;t++)this.setTrue(t);else for(let t=r;t<=i;t++)this.setFalse(t);return this.incrementVersion(o),this}setRandom(t,e,n=!0){if(t<0||t>this._length)throw new Error("n must be >= 0 && <= Count");t>this._length/2&&this.setRandom(this._length-t,!e),this.setAll(!e);for(let n=0;n<t;){const t=Math.floor(Math.random()*this._length);this.getBit(t)!=e&&(this.setFast(t,e),n++)}this.incrementVersion(n)}and(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,n=this.lengthInInts;e<n;e++)this._data[e]&=t._data[e];return this.incrementVersion(e),this}andNot(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");const n=this.lengthInInts;for(let e=0;e<n;e++)this._data[e]&=~t._data[e];return this.incrementVersion(e),this}notAnd(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,n=this.lengthInInts;e<n;e++)this._data[e]=~this._data[e]&t._data[e];return this.incrementVersion(e),this}not(t=!0){for(let t=0,e=this.lengthInInts;t<e;t++)this._data[t]=~this._data[t];return this.incrementVersion(t),this}or(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,n=this.lengthInInts;e<n;e++)this._data[e]|=t._data[e];return this.incrementVersion(e),this}xor(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,n=this.lengthInInts;e<n;e++)this._data[e]^=t._data[e];return this.incrementVersion(e),this}insertAt(t,e,n=!1){if(this.assureInRange(t,0,this._length,"pos"),0==e)return;const o=this._length;this.setLength(this._length+e);for(let n=o-1;n>=t;n--)this.setBit(n+e,this.getBit(n));for(let o=t;o<t+e;o++)this.setBit(o,n)}removeAt(t,e=1){if(e<0)throw new Error("n cannot be negative");if(this.assureInRange(t,0,this._length-e,"pos"),this.contains(!0))for(let n=t;n<this._length-e;n++)this.setBit(n,this.getBit(n+e));this.setLength(this._length-e)}removeByMask(t,e=!0){if(this._length!=t.length)throw new Error("length != mask.length");if(t==this)this.setLength(t.countBits(!e)),this.setAll(!e);else{let n=0;for(let o=-1;-1!=(o=t.findNext(o,!e));)this.setFast(n++,this.getBit(o));this._length=n,this._version++}return this}getBit(t){return!!(this._data[Math.floor(t/32)]&1<<(31&t))}setBit(t,e,n=!0){this.setFast(t,e),this._version++}setFast(t,e){e?this._data[Math.floor(t/32)]|=1<<(31&t):this._data[Math.floor(t/32)]&=~(1<<(31&t))}setTrue(t){this._data[Math.floor(t/32)]|=1<<(31&t)}setFalse(t){this._data[Math.floor(t/32)]&=~(1<<(31&t))}trueCount(){return this.countBits(!0)}falseCount(){return this.countBits(!1)}countBits(t){if(0==this._length)return 0;if(this._selectedCountVersion!=this._version){this._selectedCount=0;const t=this.lengthInInts;let e=0;for(;e<t-1;e++)for(let t=this._data[e];0!=t;t>>>=8)this._selectedCount+=H._onBitCount[255&t];let n=this._data[e];const o=31&this._length;for(0!=o&&(n&=~(4294967295<<o));0!=n;n>>>=8)this._selectedCount+=H._onBitCount[255&n];this._selectedCountVersion=this._version}return t?this._selectedCount:this._length-this._selectedCount}countWhere(t){let e=0;if(this.trueCount()==this._length)for(let n=0;n<this._length;n++)e+=t(n)?1:0;else for(let n=-1;-1!=(n=this.findNext(n,!0));)e+=t(n)?1:0;return e}andWithCountBits(t,e){if(0==this._length)return 0;let n=0;const o=this.lengthInInts;let r=0;for(;r<o-1;r++)for(let e=this._data[r]&t._data[r];0!=e;e>>>=8)n+=H._onBitCount[255&e];let i=this._data[r]&t._data[r];const s=31&this._length;for(0!=s&&(i&=~(4294967295<<s));0!=i;i>>>=8)n+=H._onBitCount[255&i];return e?n:this._length-n}clear(){this.setLength(0)}contains(t){return this.findNext(-1,t)>=0}get allTrue(){return this.countBits(!0)==this._length}get allFalse(){return this.countBits(!1)==this._length}get anyTrue(){return this.countBits(!0)>0}get anyFalse(){return this.countBits(!1)>0}findNext(t,e=!0){if(this.assureInRange(t,-1,this._length,"index"),t>=this._length-1)return-1;let n=31&(t=t<0?0:t+1);const o=this.lengthInInts;for(let r=Math.floor(t/32);r<o;r++){let o=e?this._data[r]:~this._data[r];if(0!=n)o&=4294967295<<n&4294967295,n=0;else if(!e&&-4294967296==o)continue;for(let e=0;0!=o;e+=8,o>>>=8){const n=H._firstOnBit[255&o];if(n>=0)return(t=n+32*r+e)>=this._length?-1:t}}return-1}findPrev(t,e=!0){if(0==t)return-1;this.assureInRange(t,-1,this._length,"index");let n=1+(t=t<0?this._length-1:t-1)&31;for(let o=Math.floor(t/32);o>=0;o--){let t=e?this._data[o]:~this._data[o];0!=n&&(t&=~(4294967295<<n),n=0);for(let e=24;0!=t;e-=8,t<<=8){const n=H._lastOnBit[t>>>24];if(n>=0)return n+32*o+e}}return-1}}function q(t={}){const e=function(){if(!t||!t.scoringMatrix||!t.alphabetIndexes)return(t,e)=>t===e?0:1;if(t.scoringMatrix.length!==Object.keys(t.alphabetIndexes).length)throw new Error("Scoring matrix and alphabet indexes should have the same length");const e=t.alphabetIndexes,n=t.scoringMatrix,o=Math.min(...Object.keys(e).map(t=>t.charCodeAt(0)))+1,r=new Float32Array((n.length+o)*(n.length+o));return Object.entries(e).forEach(([t,o])=>{const i=n[o];Object.entries(e).forEach(([e,o])=>{r[t.charCodeAt(0)*n.length+e.charCodeAt(0)]=i[o]})}),(t,e)=>1-r[t.charCodeAt(0)*n.length+e.charCodeAt(0)]}(),n=t?.threshold??0;return(t,o)=>{let r=0;const i=t.length,s=o.length,a=Math.ceil(Math.max(i,s)*(1-n));i!==s&&(r=Math.abs(i-s));let l=0;for(let n=0;n<Math.min(i,s);n++)if(t[n]!==o[n]&&(l+=e(t[n],o[n]),l>a))return 1;return l+=r,l/=Math.max(i,s),l}}H._onBitCount=Int8Array.from([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8]),H._firstOnBit=Int8Array.from([-1,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]),H._lastOnBit=Int8Array.from([-1,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]);const Y={gapOpen:1,gapExtend:.6,scoringMatrix:[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],alphabetIndexes:{A:0,R:1,N:2,D:3,C:4,Q:5,E:6,G:7,H:8,I:9,L:10,K:11,M:12,F:13,P:14,S:15,T:16,W:17,Y:18,V:19,B:20,Z:21,X:22,"*":23}};var W;!function(t){t.HAMMING="Hamming",t.LEVENSHTEIN="Levenshtein",t.NEEDLEMANN_WUNSCH="Needlemann-Wunsch",t.MONOMER_CHEMICAL_DISTANCE="Monomer chemical distance"}(W||(W={}));const j={[W.HAMMING]:q,[W.LEVENSHTEIN]:function(){return(t,e)=>G(t,e)/Math.max(t.length,e.length)},[W.NEEDLEMANN_WUNSCH]:function(t){const e=new Uint16Array(65536),{gapOpen:n,gapExtend:o,scoringMatrix:r,alphabetIndexes:i}={...Y,...t};Object.entries(i).forEach(([t,n])=>e[t.charCodeAt(0)]=n);const s=[new Float32Array(1e4),new Float32Array(1e4)];return(t,i)=>{const a=new Array(t.length+1).fill(!1),l=new Array(t.length+1).fill(!1);let u=0,c=1;for(let e=1;e<t.length+1;e++)s[0][e]=-o-(e-1)*o,s[1][e]=0;s[0][0]=0;for(let f=1;f<i.length+1;f++){s[c][0]=-o-(f-1)*o;for(let d=1;d<t.length+1;d++){const h=s[u][d-1]+r[e[t.charCodeAt(d-1)]][e[i.charCodeAt(f-1)]],m=s[u][d]-(a[d]||1===f||f===i.length?o:n),p=s[c][d-1]-(l[d-1]||1===d||d===t.length?o:n);s[c][d]=Math.max(h,p,m),s[c][d]===h?(a[d]=!1,l[d]=!1):s[c][d]===p?(a[d]=!1,l[d]=!0):(a[d]=!0,l[d]=!1)}u=c,c=(c+1)%2}const f=Math.min(t.length,i.length);return(f-s[u][t.length])/f}},[W.MONOMER_CHEMICAL_DISTANCE]:q};function X(t,e){const n=t.trueCount()+e.trueCount();if(0==n)return 1;const o=t.andWithCountBits(e,!0);return o/(n-o)}function K(t){return t<=0?3402823e32:1/t-1}F.Tanimoto,F.Dice,F.Asymmetric,F.BraunBlanquet,F.Cosine,F.Kulczynski,F.McConnaughey,F.RogotGoldberg,F.Russel,F.Sokal,F.Hamming,F.Euclidean,F.Tanimoto,F.Dice,F.Asymmetric,F.BraunBlanquet,F.Cosine,F.Kulczynski,F.McConnaughey,F.RogotGoldberg,F.Russel,F.Sokal,F.Hamming,F.Euclidean,F.Tanimoto,F.Dice,F.Cosine,F.Tanimoto,F.Asymmetric,F.Cosine,F.Sokal,W.HAMMING,W.LEVENSHTEIN,W.MONOMER_CHEMICAL_DISTANCE,W.NEEDLEMANN_WUNSCH;const z={[R.Euclidean]:function(t,e){let n=0;for(let o=0;o<t.length;o++)n+=Math.pow(t[o]-e[o],2);return Math.sqrt(n)},[R.Manhattan]:function(t,e){let n=0;for(let o=0;o<t.length;o++)n+=Math.abs(t[o]-e[o]);return n},[R.Cosine]:function(t,e){let n=0,o=0,r=0;for(let i=0;i<t.length;i++)n+=t[i]*e[i],o+=t[i]*t[i],r+=e[i]*e[i];return(1-n/(Math.sqrt(o)*Math.sqrt(r)))/2}},Q={[P.Levenshtein]:G,[P.JaroWinkler]:$.Vb,[P.Manhattan]:function(t,e){if(t.length!==e.length)return 1;{let n=0;for(let o=1;o<t.length;o++)n+=t[o]==e[o]?0:1;return n/t.length}},[P.Onehot]:function(t,e){return t===e?0:1}},Z={[F.Tanimoto]:function(t,e){return 1-X(t,e)},[F.Dice]:function(t,e){return 1-function(t,e){const n=t.trueCount()+e.trueCount();return 0==n?0:2*t.andWithCountBits(e,!0)/n}(t,e)},[F.Asymmetric]:function(t,e){return 1-function(t,e){const n=Math.min(t.trueCount(),e.trueCount());return 0==n?0:t.andWithCountBits(e,!0)/n}(t,e)},[F.BraunBlanquet]:function(t,e){return K(function(t,e){const n=Math.max(t.trueCount(),e.trueCount());return 0==n?0:t.andWithCountBits(e,!0)/n}(t,e))},[F.Cosine]:function(t,e){return 1-function(t,e){const n=t.trueCount()*e.trueCount();return 0==n?0:t.andWithCountBits(e,!0)/Math.sqrt(n)}(t,e)},[F.Kulczynski]:function(t,e){return K(function(t,e){const n=t.trueCount()+e.trueCount(),o=t.trueCount()*e.trueCount();return 0==o?0:t.andWithCountBits(e,!0)*n/(2*o)}(t,e))},[F.McConnaughey]:function(t,e){return K(function(t,e){const n=t.trueCount()+e.trueCount(),o=t.trueCount()*e.trueCount();return 0==o?0:(t.andWithCountBits(e,!0)*n-o)/o}(t,e))},[F.RogotGoldberg]:function(t,e){return K(function(t,e){const n=t.andWithCountBits(e,!0),o=t.countBits(!0)+e.countBits(!0),r=t.length,i=r-o+n;return n==r||i==r?1:n/o+i/(2*r-o)}(t,e))},[F.Russel]:function(t,e){return K(function(t,e){return 0==t.length?0:t.andWithCountBits(e,!0)/t.length}(t,e))},[F.Sokal]:function(t,e){return 1-function(t,e){const n=t.trueCount()+e.trueCount(),o=t.andWithCountBits(e,!0);return o/(2*n-3*o)}(t,e)},[F.Hamming]:function(t,e){return t.trueCount()+e.trueCount()-2*t.andWithCountBits(e,!0)},[F.Euclidean]:function(t,e){return Math.sqrt(t.trueCount()+e.trueCount()-2*t.andWithCountBits(e,!0))}},J={[D.TanimotoIntArray]:function(t,e){return K(X(new H(t,32*t.length),new H(e,32*e.length)))}},tt={[k.Difference]:function(t){if(t&&null!=t.range&&t.range>0){const e=t.range;return(t,n)=>Math.abs(t-n)/e}return(t,e)=>Math.abs(t-e)}},et={[U.CommonItems]:function(t){const e=function(t){const e=t?.mostCommon??new Set;return(t,n)=>{const o=t.length,r=n.length;let i=0,s=0,a=0;for(;s<o&&a<r;)t[s]===n[a]?(e?.has(t[s])||++i,++s,++a):t[s]<n[a]?++s:++a;return i}}(t);return(t,n)=>0===n.length||0===t.length?1e4:Math.min(t.length,n.length)/(e(t,n)+1e-4)}},nt={[B.Vector]:{[R.Euclidean]:z[R.Euclidean],[R.Manhattan]:z[R.Manhattan],[R.Cosine]:z[R.Cosine]},[B.String]:{[P.Levenshtein]:Q[P.Levenshtein],[P.JaroWinkler]:Q[P.JaroWinkler],[P.Manhattan]:Q[P.Manhattan],[P.Onehot]:Q[P.Onehot]},[B.BitArray]:{[F.Tanimoto]:Z[F.Tanimoto],[F.Dice]:Z[F.Dice],[F.Asymmetric]:Z[F.Asymmetric],[F.BraunBlanquet]:Z[F.BraunBlanquet],[F.Cosine]:Z[F.Cosine],[F.Kulczynski]:Z[F.Kulczynski],[F.McConnaughey]:Z[F.McConnaughey],[F.RogotGoldberg]:Z[F.RogotGoldberg],[F.Russel]:Z[F.Russel],[F.Sokal]:Z[F.Sokal]},[B.MacroMolecule]:{[W.HAMMING]:j[W.HAMMING],[W.LEVENSHTEIN]:j[W.LEVENSHTEIN],[W.NEEDLEMANN_WUNSCH]:j[W.NEEDLEMANN_WUNSCH],[W.MONOMER_CHEMICAL_DISTANCE]:j[W.MONOMER_CHEMICAL_DISTANCE]},[B.Number]:{[k.Difference]:tt[k.Difference]},[B.IntArray]:{[D.TanimotoIntArray]:J[D.TanimotoIntArray]},[B.NumberArray]:{[U.CommonItems]:et[U.CommonItems]}};Object.keys(nt).reduce((t,e)=>{for(const n of Object.keys(nt[e]))t[n]=e;return t},{});const ot=ui,rt="bypassLargeDataWarning";var it,st,at,lt,ut;s(5540),function(t){t.EUCLIDEAN="EUCLIDEAN",t.MANHATTAN="MANHATTAN"}(it||(it={})),it.EUCLIDEAN,it.MANHATTAN,function(t){t.HAMMING="Hamming",t.EUCLIDEAN="Euclidean",t.VECTOR_COSINE="Vector Cosine",t.MANHATTAN="Manhattan",t.TANIMOTO="Tanimoto",t.LEVENSTEIN="Levenshtein",t.NEEDLEMAN_WUNSCH="Needlemann-Wunsch",t.MONOMER_CHEMICAL_DISTANCE="Monomer chemical distance",t.SOKAL="Sokal",t.COSINE="Cosine",t.ASYMMETRIC="Asymmetric",t.Difference="Difference",t.OneHot="One-Hot"}(st||(st={})),st.HAMMING,st.EUCLIDEAN,st.MANHATTAN,st.VECTOR_COSINE,st.TANIMOTO,st.LEVENSTEIN,st.NEEDLEMAN_WUNSCH,st.MONOMER_CHEMICAL_DISTANCE,st.SOKAL,st.COSINE,st.ASYMMETRIC,st.Difference,st.OneHot,st.HAMMING,st.EUCLIDEAN,st.MANHATTAN,st.TANIMOTO,st.SOKAL,st.COSINE,st.ASYMMETRIC,st.LEVENSTEIN,st.NEEDLEMAN_WUNSCH,st.MONOMER_CHEMICAL_DISTANCE,st.Difference,st.OneHot,st.VECTOR_COSINE,new Set([st.HAMMING,st.LEVENSTEIN,st.NEEDLEMAN_WUNSCH,st.MONOMER_CHEMICAL_DISTANCE,st.OneHot]),new Set([st.HAMMING,st.EUCLIDEAN,st.MANHATTAN,st.MONOMER_CHEMICAL_DISTANCE,st.LEVENSTEIN,st.NEEDLEMAN_WUNSCH,st.TANIMOTO,st.COSINE,st.VECTOR_COSINE,st.SOKAL,st.ASYMMETRIC,st.OneHot,st.Difference]),new Set([st.EUCLIDEAN,st.MANHATTAN,st.OneHot,st.Difference,st.VECTOR_COSINE]),new Set([st.EUCLIDEAN,st.MANHATTAN,st.Difference,st.VECTOR_COSINE]),new Set([st.EUCLIDEAN,st.MANHATTAN,st.Difference]),new Set([st.TANIMOTO,st.COSINE,st.SOKAL,st.ASYMMETRIC]),function(t){t.ADD="ADD",t.SUB="SUB",t.MULT="MULT"}(at||(at={})),function(t){t.SQUARE="SQUARE",t.INVERSE="INVERSE",t.TRANSPOSE="TRANSPOSE",t.NORM="NORM",t.COLUMN_NORM="COLUMN_NORM"}(lt||(lt={})),function(t){t.SCALARMULT="SCALARMULT",t.SCALARADD="SCALARADD",t.SCALARPOW="SCALARPOW"}(ut||(ut={})),Object.prototype.toString;const ct="dimensionality-reducer-terminate-event";var ft;!function(t){t.EUCLIDEAN="EUCLIDEAN",t.MANHATTAN="MANHATTAN"}(ft||(ft={}));const dt=t=>null==t;function ht(t,e){return`${e} (${t.length>4?`${t.length} columns`:t.map(t=>t.name).join(", ")})`}async function mt(e,n,o,r,i,a,l,u=!0,c=!1,f={preprocessingFuncArgs:[]},d={},h=null,m={},p){const g={showXAxis:!1,showYAxis:!1,showXSelector:!1,showYSelector:!1};if(n.length!==r.length||n.length!==a.length||n.length!==i.length||n.length!==f.preprocessingFuncArgs.length)throw new Error("columns, metrics and preprocessing functions, weights and function argumentsmust have the same length");const v=u?d.tableView??I.shell.tableView(e.name)??I.shell.addTableView(e):null,y=async()=>{const y=t.TaskBarProgressIndicator.create(`Initializing ${d.scatterPlotName??"dimensionality reduction"} ...`);let A;try{const w=function(t){const e=["Embed_X","Embed_Y"],n=t.columns.names().filter(t=>t.includes(e[0])).length+1;return e.map(t=>`${t}_${n}`)}(e);function C(r,i,s){let a=null,l=null;e.columns.names().includes(w[0])?(a=e.columns.byName(w[0]),l=e.columns.byName(w[1])):(a=e.columns.add(t.Column.float(w[0],e.rowCount)),l=e.columns.add(t.Column.float(w[1],e.rowCount)),u&&!A&&(A=v.scatterPlot({...g,x:w[0],y:w[1],title:d.scatterPlotName??ht(n,o)}))),d["show-scatterplot-progress"]&&(A?.root&&ot.setUpdateIndicator(A.root,!1),a.init(t=>s[0]?s[0][t]:void 0),l.init(t=>s[1]?s[1][t]:void 0));const c=r/i*100;y.update(c,`Running ${d.scatterPlotName??"dimensionality reduction"}... ${c.toFixed(0)}%`)}async function E(){e.columns.add(t.Column.float(w[0],e.rowCount)),e.columns.add(t.Column.float(w[1],e.rowCount));let c=null;u&&(A=v.scatterPlot({...g,x:w[0],y:w[1],title:d.scatterPlotName??ht(n,o)}),ot.setUpdateIndicator(A.root,!0));const h=I.events.onViewerClosed.subscribe(t=>{const e=t.args.viewer;e?.getOptions()?.look?.title&&A?.getOptions()?.look?.title&&e?.getOptions()?.look?.title===A?.getOptions()?.look?.title&&(I.events.fireCustomEvent(ct,{}),h.unsubscribe(),c?.(),y.close())}),m=new Promise(async(t,u)=>{try{c=t;const u=[];let h=r,m=i,g=l;if(p&&n.every(t=>t.isNumerical)){const t=n.map(t=>t.toList()),o=new Array(e.rowCount).fill(0).map((t,e)=>new Float32Array(n.length));for(let r=0;r<n.length;++r)for(let n=0;n<e.rowCount;++n)o[n][r]=t[r][n];f.distanceFnArgs=[{}],u.push({entries:o,options:{}}),h=[p],m=[1],g="MANHATTAN"}else for(let t=0;t<a.length;++t){const e=a[t];if(f.distanceFnArgs||(f.distanceFnArgs=[]),e){const o=e.inputs[0].name,i=e.inputs[1].name,{entries:s,options:a}=await e.apply({[o]:n[t],[i]:r[t],...f.preprocessingFuncArgs[t]??{}});u.push({entries:s,options:a}),f.distanceFnArgs.push(a)}else{const e=n[t].toList(),o={};u.push({entries:e,options:o}),f.distanceFnArgs.push(o)}}t(await async function(t,e,n,o,r,i,a){let l=await async function(t,e,n,o,r,i,a){if(!i.distanceFnArgs)throw new Error("options.distanceFnArgs must be defined");if(t.length!==e.length||t.length!==i.distanceFnArgs.length||t.length!==o.length)throw new Error("data, metrics and options and weights must have the same length");return new Promise(function(l,u){const c=new Worker(new URL(s.p+s.u(234),s.b));c.postMessage({columnsData:t,distanceMetrics:e,method:n,options:i,weights:o,aggregationMethod:r});const f=I.events.onCustomEvent(ct).subscribe(()=>{try{c?.terminate()}finally{f.unsubscribe()}});c.onmessage=({data:{error:t,embedding:e,epochNum:n,epochsLength:o}})=>{dt(n)||dt(o)?(f.unsubscribe(),t?u(t):l(e),setTimeout(()=>c.terminate(),100)):a&&a(n,o,e)}})}(t,n,e,o,r,i,a);return l=l.map(t=>function(t){const e=t.length;let n=0,o=0;for(let r=0;r<e;++r)n+=t[r],o+=Math.pow(t[r],2);const r=n/e,i=1/Math.sqrt(o/e-Math.pow(r,2));for(let n=0;n<e;++n)t[n]=(t[n]-r)*i;return t}(t)),l}(u.map(t=>t.entries),o,h,m,l,f,d[rt]?void 0:C))}catch(t){u(t)}}),E=await m;return y.close(),h.unsubscribe(),E}const b=await E();if(c&&b){const x=t.TaskBarProgressIndicator.create("Clustering embeddings ...");try{const _=await function(t,e,n,o){return r=this,i=void 0,l=function*(){return new Promise(function(r,i){const a=new Worker(new URL(s.p+s.u(682),s.b));a.postMessage({embedX:t,embedY:e,minPts:o,epsilon:n}),a.onmessage=({data:{error:t,clusters:e}})=>{a.terminate(),t?i(t):r(e)}})},new((a=void 0)||(a=Promise))(function(t,e){function n(t){try{s(l.next(t))}catch(t){e(t)}}function o(t){try{s(l.throw(t))}catch(t){e(t)}}function s(e){var r;e.done?t(e.value):(r=e.value,r instanceof a?r:new a(function(t){t(r)})).then(n,o)}s((l=l.apply(r,i||[])).next())});var r,i,a,l}(b[0],b[1],f.dbScanEpsilon??.01,f.dbScanMinPts??4),N=e.columns.getUnusedName("Cluster (DBSCAN)");e.columns.addNewString(N).init(t=>_[t].toString()),A&&(A.props.colorColumnName=N)}catch(M){I.shell.error("Clustering embeddings failed"),console.error(M)}finally{x.close()}}if(b){const T=e.columns.byName(w[0]),S=e.columns.byName(w[1]);if(T.init(t=>b[0][t]),S.init(t=>b[1][t]),h)try{const O=h.inputs[0].name,L=h.inputs[1].name;await h.prepare({[O]:T,[L]:S,...m}).call(!0)}catch(P){I.shell.error("Post-processing failed"),console.error(P)}if(A)return ot.setUpdateIndicator(A.root,!1),A.helpUrl="/help/compute/sequence-space",A}}catch(R){I.shell.error("Dimensionality reduction failed"),console.error(R),y.close(),A&&ot.setUpdateIndicator(A.root,!1)}};return new Promise(async(t,n)=>{try{if(d.fastRowCount&&e.rowCount>d.fastRowCount&&!d[rt])ot.dialog().add(ot.divText("Analysis might take several minutes. Do you want to continue?")).onOK(async()=>{try{const e=await y();t(e)}catch(t){n(t)}}).onCancel(()=>t(void 0)).show();else{const e=await y();t(e)}}catch(t){n(t)}})}var pt=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const gt={SUBJ:"subj",STUDY:"study",SITE:"site",AGE:"age",SEX:"sex",RACE:"race",DISEASE:"disease",WEIGHT:"weight",HEIGHT:"height"};function vt(t,e,n){return pt(this,void 0,void 0,function*(){const o=I.data.demo.demog(100);I.shell.addTableView(o),E(!!(yield mt(o,t.map(t=>o.col(t)),e,n,t.map(()=>1),t.map(()=>{}),"EUCLIDEAN",!0,!0,{preprocessingFuncArgs:t.map(()=>({}))})),!0,"No scatterplot returned");const r=o.columns.names().filter(t=>t.toLowerCase().startsWith("embed"));E(r.length,2,"Wrong number of embeddings added"),E(!!o.columns.names().find(t=>t.toLowerCase().startsWith("cluster")),!0,"No cluster column added");for(const t of r){const e=o.col(t);E(new Array(e.length).fill(null).every((t,n)=>!e.isNone(n)&&!isNaN(e.get(n))),!0,"Embedding column has null-ish values")}yield new Promise(t=>setTimeout(t,500))})}b("Dimensionality reduction: UMAP",()=>{C("Numeric column",()=>pt(void 0,void 0,void 0,function*(){yield vt([gt.AGE],L.UMAP,[k.Difference])}),{timeout:3e4}),C("String column",()=>pt(void 0,void 0,void 0,function*(){yield vt([gt.SEX],L.UMAP,[P.Onehot])}),{timeout:3e4}),C("Numeric and string columns",()=>pt(void 0,void 0,void 0,function*(){yield vt([gt.SEX,gt.AGE],L.UMAP,[P.Onehot,k.Difference])})),C("All demog columns",()=>pt(void 0,void 0,void 0,function*(){const e=I.data.demo.demog(10).columns.toList().filter(t=>Object.values(gt).includes(t.name)),n=e.map(e=>e.type===t.COLUMN_TYPE.STRING?P.Onehot:k.Difference),o=e.map(t=>t.name);yield vt(o,L.UMAP,n)}))}),b("Dimensionality reduction: T-SNE",()=>{C("Numeric column",()=>pt(void 0,void 0,void 0,function*(){yield vt([gt.AGE],L.T_SNE,[k.Difference])}),{timeout:3e4}),C("String column",()=>pt(void 0,void 0,void 0,function*(){yield vt([gt.SEX],L.T_SNE,[P.Onehot])}),{timeout:3e4}),C("Numeric and string columns",()=>pt(void 0,void 0,void 0,function*(){yield vt([gt.SEX,gt.AGE],L.T_SNE,[P.Onehot,k.Difference])})),C("All demog columns",()=>pt(void 0,void 0,void 0,function*(){const e=I.data.demo.demog(10).columns.toList().filter(t=>Object.values(gt).includes(t.name)),n=e.map(e=>e.type===t.COLUMN_TYPE.STRING?P.Onehot:k.Difference),o=e.map(t=>t.name);yield vt(o,L.T_SNE,n)}))});const yt={i32:"HEAP32",f32:"HEAPF32"},At={i32:Int32Array,f32:Float32Array},wt={i32:2,f32:2},Ct={i32:DG.Column.fromInt32Array,f32:DG.Column.fromFloat32Array};class Et{constructor(t){this.data=t}complementArrOfParams(t){t.push(this.data)}complementArrOfTypes(t){t.push("number")}allocateMemoryForBuffer(t){}isMemoryForBufferAllocated(){return!0}putDataToBuffer(t){}getDataFromBuffer(t){}freeBuffer(t){}}class bt extends Et{constructor(t,e,n=!1){super(t),this.type=e,this.toUpdate=n,this.buf=0,this.numOfRows=t.length}complementArrOfParams(t){t.push(this.buf),t.push(this.numOfRows)}complementArrOfTypes(t){t.push("number"),t.push("number")}allocateMemoryForBuffer(t){this.buf=t._malloc(this.numOfRows*At[this.type].BYTES_PER_ELEMENT)}isMemoryForBufferAllocated(){return 0!=this.buf}putDataToBuffer(t){if(this.isMemoryForBufferAllocated()){const e=this.type,n=wt[e],o=t[yt[e]];let r=null;const i=this.data;r="int"==i.type&&"i32"==e||"double"==i.type&&"f32"==e?i.getRawData():new At[e](i.getRawData()),r&&o.set(r,this.buf>>n)}}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const e=this.type,n=t[yt[e]],o=this.buf,r=At[e].BYTES_PER_ELEMENT,i=this.data.getRawData();for(let t=0;t<this.numOfRows;t++)i[t]=n[o/r+t]}}freeBuffer(t){this.isMemoryForBufferAllocated()&&(t._free(this.buf),this.buf=0)}}class xt extends bt{constructor(t,e){super([],t,!0),this.numOfRows=e}putDataToBuffer(t){}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const e=this.type,n=t[yt[e]],o=this.buf,r=Ct[e],i=new At[e](this.numOfRows);for(let t=0;t<i.length;t++)i[t]=n[o/i.BYTES_PER_ELEMENT+t];this.data=r("name",i)}}}class _t extends Et{constructor(t,e,n=!1){super(t),this.type=e,this.toUpdate=n,this.buf=0,this.numOfColumns=t.length,this.numOfRows=t[0].length}complementArrOfParams(t){t.push(this.buf),t.push(this.numOfRows),t.push(this.numOfColumns)}complementArrOfTypes(t){t.push("number"),t.push("number"),t.push("number")}allocateMemoryForBuffer(t){this.buf=t._malloc(this.numOfRows*this.numOfColumns*At[this.type].BYTES_PER_ELEMENT)}isMemoryForBufferAllocated(){return 0!=this.buf}putDataToBuffer(t){if(this.isMemoryForBufferAllocated()){const e=this.type,n=wt[e],o=t[yt[e]],r=At[e].BYTES_PER_ELEMENT;for(let t=0;t<this.numOfColumns;t++){let i=null;const s=this.data[t];i="int"==s.type&&"i32"==e||"double"==s.type&&"f32"==e?s.getRawData():new At[e](s.getRawData()),null!=i&&o.set(i,this.buf+t*this.numOfRows*r>>n)}}}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const e=this.type,n=t[yt[e]],o=this.numOfRows,r=this.numOfColumns,i=new At[e](n.buffer,this.buf,o*r);for(let t=0;t<r;t++){const e=this.data[t].getRawData();for(let n=0;n<o;n++)e[n]=i[n+t*o]}}}freeBuffer(t){this.isMemoryForBufferAllocated()&&(t._free(this.buf),this.buf=0)}}class Nt extends _t{constructor(t,e,n){super([[]],t,!0),this.data=[],this.numOfColumns=n,this.numOfRows=e}putDataToBuffer(t){}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const e=this.type,n=t[yt[e]],o=this.numOfRows,r=this.numOfColumns,i=At[e].BYTES_PER_ELEMENT,s=Ct[e],a=this.buf;for(let t=0;t<r;t++){const r=new At[e](o);for(let e=0;e<o;e++)r[e]=n[a/i+e+t*o];this.data.push(s((t+1).toString(),r))}}}}const Mt={intColumn:t=>new bt(t,"i32"),newIntColumn:t=>new xt("i32",t),intColumns:t=>new _t(t.toList(),"i32"),newIntColumns:(t,e)=>new Nt("i32",t,e),floatColumn:t=>new bt(t,"f32"),newFloatColumn:t=>new xt("f32",t),floatColumns:t=>new _t(t.toList(),"f32"),newFloatColumns:(t,e)=>new Nt("f32",t,e),int:t=>new Et(t),num:t=>new Et(t)},Tt={tableFromColumns:t=>DG.DataFrame.fromColumns(t.data),num:t=>t,int:t=>t,double:t=>t,column:t=>t.data};function St(t,e,n){const o=t[e],r=o.arguments,i=[];let s=0;for(const t in r){const e=r[t];if("_callResult"!=t){switch(e.type){case"floatColumns":case"int":case"num":case"floatColumn":case"intColumn":case"intColumns":e.data=Mt[e.type](n[s]),s++;break;case"newFloatColumns":case"newIntColumns":const t=r[e.numOfRows.ref].data[e.numOfRows.value],o=r[e.numOfColumns.ref].data[e.numOfColumns.value];e.data=Mt[e.type](t,o);break;case"newFloatColumn":case"newIntColumn":const i=r[e.numOfRows.ref].data[e.numOfRows.value];e.data=Mt[e.type](i)}i.push(r[t].data)}}const a=function(t,e,n,o){let r;for(const e of o)e.allocateMemoryForBuffer(t);let i=!0;for(const t of o)i&=t.isMemoryForBufferAllocated();if(i){const n=[],i=[];for(const e of o)e.complementArrOfParams(n),e.complementArrOfTypes(i),e.putDataToBuffer(t);const s="number";r=t.ccall(e,s,i,n);for(const e of o)e.getDataFromBuffer(t)}for(const e of o)e.freeBuffer(t);if(null!=r)return r}(t,e,0,i);r._callResult=Mt.num(a);const l=o.output;if("objects"!=l.type)return Tt[l.type](r[l.source].data);const u=[];for(const t of l.source)u.push(r[t].data.data);return u}const Ot="num",It="floatColumn",Lt="intColumn",Pt="floatColumns",Rt="newFloatColumns",Ft="intColumns",Dt="newIntColumns",Bt="newFloatColumn",kt="newIntColumn",Ut="numOfRows",Vt="numOfColumns",Gt="ref",$t="value",Ht="int",qt="double",Yt={intColumn:Int32Array,floatColumn:Float32Array,floatColumns:Float32Array,newFloatColumns:Float32Array,intColumns:Int32Array,newIntColumns:Int32Array,newFloatColumn:Float32Array,newIntColumn:Int32Array};function Wt(t,e){let n,o=[],r=0;for(const i in t){const s=t[i],a=s.type;if("_callResult"!==i){switch(a){case Ot:case Ht:case qt:s.data=e[r],r++;break;case Lt:case It:let o;const i=e[r],l=i.length;o=i.type===Ht&&a===Lt||i.type===qt&&a===It?i.getRawData().slice(0,l):new Yt[a](i.getRawData().slice(0,l)),s.data={array:o,numOfRows:l},r++;break;case kt:case Bt:let u=0;n=s[Ut][Gt],u=t[n].type===Ot?t[n].data:t[n].data[s[Ut][$t]],s.data={numOfRows:u},r++;break;case Ft:case Pt:let c=[];const f=e[r].byIndex(0).length;for(const t of e[r].toList())t.type===Ht&&a===Lt||t.type===qt&&a===It?c.push(t.getRawData().slice(0,f)):c.push(new Yt[a](t.getRawData().slice(0,f)));s.data={arrays:c,numOfRows:f,numOfColumns:c.length},r++;break;case Dt:case Rt:let d=0,h=0;n=s[Ut][Gt],d=t[n].type===Ot?t[n].data:t[n].data[s[Ut][$t]],n=s[Vt][Gt],h=t[n].type===Ot?t[n].data:t[n].data[s[Vt][$t]],s.data={numOfRows:d,numOfColumns:h},r++;break;default:return}o.push(s)}}return o}function jt(t,e){t.arguments._callResult=e.callResult,function(t,e){const n={newFloatColumns:DG.Column.fromFloat32Array,newIntColumns:DG.Column.fromInt32Array,newFloatColumn:DG.Column.fromFloat32Array,newIntColumn:DG.Column.fromInt32Array};let o=0;for(const r in t){const i=t[r];switch(i.type){case Ot:case Ht:case qt:case Lt:case It:case Pt:case Ft:break;case Bt:case kt:let t;null==i.name?t=(0).toString():a=i.name,i.column=n[i.type](t,e[o].array);break;case Dt:case Rt:let r=[],s=e[o].arrays.length,a=[];if(null==i.names)for(let t=1;t<=s;t++)a.push(t.toString());else a=i.names;for(let t=0;t<s;t++)r.push(n[i.type](a[t],e[o].arrays[t]));i.columns=r}o++}}(t.arguments,e.args);let n=function(t){let e=t.output;const n={newFloatColumns:"columns",newIntColumns:"columns",newFloatColumn:"column",newIntColumn:"column"};switch(e.type){case Ot:case Ht:case qt:return t.arguments[e.source];case"column":return t.arguments[e.source].column;case"tableFromColumns":return DG.DataFrame.fromColumns(t.arguments[e.source].columns);case"objects":let o=[];for(let r of e.source){let e=t.arguments[r];o.push(e[n[e.type]])}return o}}(t);return function(t){for(const e in t){const n=t[e];switch(n.type){case Ot:case Ht:case qt:case Lt:case It:case Ft:case Pt:break;case kt:case Bt:n.column=null;break;case Dt:case Rt:n.columns=null}}}(t.arguments),n}async function Xt(t,e,n){return new Promise((t,o)=>{const r=new Worker(new URL(s.p+s.u(128),s.b));r.postMessage(Wt(EDA.principalComponentAnalysisNipals.arguments,[e,n])),r.onmessage=function(e){r.terminate(),t(jt(EDA.principalComponentAnalysisNipals,e.data))}})}const Kt=1e-6;function zt(e){if(e.type!=t.COLUMN_TYPE.FLOAT&&e.type!=t.COLUMN_TYPE.INT)throw new Error("unsupported column type: "+e.type)}function Qt(t){if(t.stats.missingValueCount>0)throw new Error(`The column '${t.name}' has missing values.`)}function Zt(t,e){if(function(t,e){if(e<1)throw new Error("components must be positive.");if(e>t.length)throw new Error("components must not be greater than features count.");for(const e of t)zt(e),Qt(e)}(t,e),t.length*t.byIndex(0).length>1e8)throw new Error("dataframe is too big.")}function Jt(t,e,n){return e?n?function(t){const e=t.rowCount;for(const n of t.columns)if(n.isNumerical){const t=n.stats.stdev,o=n.stats.avg,r=n.getRawData();if(t>0)for(let n=0;n<e;++n)r[n]=(r[n]-o)/t;else for(let t=0;t<e;++t)r[t]-=o}return t}(t):function(t){const e=t.rowCount;for(const n of t.columns)if(n.isNumerical){const t=n.stats.avg;if(Math.abs(t)>Kt){const o=n.getRawData();for(let n=0;n<e;++n)o[n]-=t}}return t}(t):n?function(t){const e=t.rowCount;for(const n of t.columns)if(n.isNumerical){const t=n.stats.stdev;if(Math.abs(t-1)>Kt&&t>0){const o=n.getRawData();for(let n=0;n<e;++n)o[n]/=t}}return t}(t):t}var te,ee,ne,oe,re,ie,se,ae;function le(e,n,o,r,i){return a=this,l=void 0,c=function*(){Zt(n,o);const a=e.rowCount,l=function(e){const n=[];for(const t of e)t.stats.stdev>0&&t.stats.missingValueCount<1&&n.push(t);return t.DataFrame.fromColumns(n)}(n),u=l.columns.length;if(0===u){const e=[];for(let n=0;n<o;++n)e.push(t.Column.fromFloat32Array(`${n+1}`,new Float32Array(a).fill(0)));return t.DataFrame.fromColumns(e)}const c=u<o?o-u:0,f=Math.min(o,u);let d;if(u>900)d=yield Xt(0,n,f);else{const t=yield async function(t,e,n){return new Promise((t,o)=>{const r=new Worker(new URL(s.p+s.u(860),s.b));r.postMessage(Wt(EDA.principalComponentAnalysis.arguments,[e,n,1,0])),r.onmessage=function(e){r.terminate(),0===e.data.callResult?t(jt(EDA.principalComponentAnalysis,e.data)):t(-1)}})}(0,n,f);d=-1!==t?Jt(t,r,i):yield Xt(0,n,f)}if(void 0===d)throw new Error("Failed to compute PCA");d=Jt(d,r,i);const h=d.columns,m=h.length;for(let e=0;e<c;++e)h.add(t.Column.fromFloat32Array(`${m+e+1}`,new Float32Array(a).fill(0)));return d},new((u=void 0)||(u=Promise))(function(t,e){function n(t){try{r(c.next(t))}catch(t){e(t)}}function o(t){try{r(c.throw(t))}catch(t){e(t)}}function r(e){var r;e.done?t(e.value):(r=e.value,r instanceof u?r:new u(function(t){t(r)})).then(n,o)}r((c=c.apply(a,l||[])).next())});var a,l,u,c}!function(t){t[t.COMPUTE_COMPONENTS=0]="COMPUTE_COMPONENTS",t[t.PERFORM_MVA=1]="PERFORM_MVA",t[t.DEMO=2]="DEMO"}(te||(te={})),function(t){t.NO_DF="No dataframe is opened",t.NO_COLS="No numeric columns without missing values",t.ONE_COL="No columns to be used as features (just one numeric columns without missing values)",t.EMPTY_DF="Dataframe is empty",t.PREDICT="Predictors must not contain a response variable",t.ENOUGH="Not enough of features",t.COMP_LIN_PLS="Components count must be less than the number of features",t.COMP_QUA_PLS="Too large components count for the quadratic PLS regression",t.COMP_ROWS="Components count must not exceed the number of rows",t.COMPONENTS="Components count must be at least 1",t.INV_INP="Invalid inputs",t.NULL_COMPS="Components count is not specified"}(ee||(ee={})),function(t){t.PREDICT="Predict",t.USING="Using",t.COMPONENTS="Components",t.PLS="PLS",t.MVA="Multivariate Analysis (PLS)",t.RUN="RUN",t.NAMES="Names",t.MODEL="Observed vs. Predicted",t.FEATURE="Feature",t.REGR_COEFS="Regression Coefficients",t.XLOADING="x.loading.p",t.LOADINGS="Loadings",t.XSCORE="x.score.t",t.YSCORE="y.score.u",t.SCORES="Scores",t.EXPL_VAR="Explained Variance",t.EXPLORE="Explore",t.FEATURES="Feature names",t.BROWSE="Browse",t.ANALYSIS="Features Analysis",t.QUADRATIC="Quadratic"}(ne||(ne={})),function(t){t.PREDICT="Column with the response variable",t.FEATURES="Predictors (features)",t.COMPONENTS="Number of PLS components",t.PLS="Compute PLS components",t.MVA="Perform multivariate analysis",t.NAMES="Names of data samples",t.QUADRATIC="Specifies whether to include squared terms as additional predictors in the PLS model"}(oe||(oe={})),function(t){t.PLS="/help/explore/multivariate-analysis#pls-components",t.MVA="/help/explore/multivariate-analysis",t.MODEL="/help/explore/multivariate-analysis#observed-vs-predicted",t.COEFFS="/help/explore/multivariate-analysis#regression-coefficients",t.LOADINGS="/help/explore/multivariate-analysis#loadings",t.EXPL_VARS="/help/explore/multivariate-analysis#explained-variance",t.SCORES="/help/explore/multivariate-analysis#scores"}(re||(re={})),function(t){t[t.DEFAULT=3]="DEFAULT",t[t.MIN=1]="MIN"}(ie||(ie={})),function(t){t.PREFIX="PLS",t.SUFFIX="(predicted)",t.COMP="component",t.COMPS="components"}(se||(se={})),function(t){t[t.PREDICTION=0]="PREDICTION",t[t.REGR_COEFFS=1]="REGR_COEFFS",t[t.T_SCORES=2]="T_SCORES",t[t.U_SCORES=3]="U_SCORES",t[t.X_LOADINGS=4]="X_LOADINGS",t[t.Y_LOADINGS=5]="Y_LOADINGS"}(ae||(ae={}));const ue=[.49,.79,.99];var ce;!function(t){t.AXIS="#838383",t.CIRCLE="#0000FF",t.INVALID="#EB6767",t.VALID_TEXT="#4d5261",t.VALID_LINE="#dbdcdf"}(ce||(ce={})),[{caption:ne.MODEL,text:"Closer to the line means better price prediction."},{caption:ne.SCORES,text:"The latent factor values for each sample reflect the similarities and dissimilarities among observations."},{caption:ne.LOADINGS,text:"The impact of each feature on the latent factors: higher loading means stronger influence."},{caption:ne.REGR_COEFS,text:"Parameters of the obtained model: features make different contribution to the prediction."},{caption:ne.EXPL_VAR,text:"How well the latent components fit source data: closer to one means better fit."}].map(t=>`# ${t.caption}\n\n${t.text}`).join("\n\n"),re.MVA;function fe(t){return e=this,n=void 0,r=function*(){Zt(t.features,t.components),zt(t.predict),Qt(t.predict);const e=yield async function(t,e,n,o){return new Promise((t,r)=>{const i=new Worker(new URL(s.p+s.u(412),s.b));i.postMessage(Wt(EDA.partialLeastSquareRegression.arguments,[e,n,o])),i.onmessage=function(e){i.terminate(),t(jt(EDA.partialLeastSquareRegression,e.data))}})}(t.table,t.features,t.predict,t.components);return{prediction:e[ae.PREDICTION],regressionCoefficients:e[ae.REGR_COEFFS],tScores:e[ae.T_SCORES],uScores:e[ae.U_SCORES],xLoadings:e[ae.X_LOADINGS],yLoadings:e[ae.Y_LOADINGS]}},new((o=void 0)||(o=Promise))(function(t,i){function s(t){try{l(r.next(t))}catch(t){i(t)}}function a(t){try{l(r.throw(t))}catch(t){i(t)}}function l(e){var n;e.done?t(e.value):(n=e.value,n instanceof o?n:new o(function(t){t(n)})).then(s,a)}l((r=r.apply(e,n||[])).next())});var e,n,o,r}Math.min,Math.max;var de=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};function he(e,n){return de(this,void 0,void 0,function*(){const o=e.length,r=n.length,i=n.stats.avg,s=n.stats.stdev,a=new Float32Array(o+1).fill(0);if(a[o]=i,0===s||1===r)return a;try{const r=[],l=[],u=new Float32Array(o),c=new Float32Array(o);let f=0,d=0;for(const t of e){const e=t.stats;e.stdev>0&&(r.push(f),l.push(t),u[d]=e.avg,c[d]=e.stdev,++d),++f}if(0===d)return a;const h=function(t,e,n,o,r,i,s){return St(EDA,"fitLinearRegressionParamsWithDataNormalizing",[t,e,n,o,r,i,s])}(t.DataFrame.fromColumns(l).columns,t.Column.fromFloat32Array("xAvgs",u,d),t.Column.fromFloat32Array("xStdevs",c,d),n,i,s,d+1).getRawData();for(let t=0;t<d;++t)a[r[t]]=h[t];a[o]=h[d]}catch(r){const i=yield function(e,n,o){return de(this,void 0,void 0,function*(){return(yield fe({table:t.DataFrame.fromColumns([n]),features:e,predict:n,components:o,names:void 0,isQuadratic:!1})).regressionCoefficients.getRawData()})}(e,n,pe(e.length,n.length));let s=0;for(let t=0;t<o;++t)a[t]=i[t],s+=i[t]*e.byIndex(t).stats.avg;a[o]-=s}return a})}function me(e,n){const o=e.length;if(o!==n.length-1)throw new Error("Incorrect parameters count");const r=e.byIndex(0),i=r.length,s=new Float32Array(i);let a=r.getRawData();const l=n[o];let u=n[0];for(let t=0;t<i;++t)s[t]=l+u*a[t];for(let t=1;t<o;++t){a=e.byIndex(t).getRawData(),u=n[t];for(let t=0;t<i;++t)s[t]+=u*a[t]}return t.Column.fromFloat32Array(e.getUnusedName("prediction"),s,i)}const pe=(t,e)=>e<=t?Math.min(10,e):Math.min(10,t);var ge;!function(t){t[t.MAX_SAMLPES=1e5]="MAX_SAMLPES",t[t.MAX_FEATURES=1e3]="MAX_FEATURES"}(ge||(ge={}));class ve{static isApplicable(t,e){for(const e of t)if(!e.matches("numerical"))return!1;return!!e.matches("numerical")}static isInteractive(t,e){return t.length<=ge.MAX_FEATURES&&e.length<=ge.MAX_SAMLPES}constructor(e){if(this.specn=null,e)try{const n=new Uint32Array(e.buffer,0,2),o=n[0],r=n[1],i=new Uint8Array(e.buffer,8,o),s=t.DataFrame.fromByteArray(i),a=s.rowCount,l=s.columns,u=l.length,c=new Uint8Array(e.buffer,8+o,r),f=t.DataFrame.fromByteArray(c);if(u<3)throw new Error("incorrect columns count");const d=l.byName(ne.FEATURES).toList(),h=new Float32Array(a);h.set(l.byName(ne.REGR_COEFS).getRawData());const m=u-2,p=new Array(m);for(let t=0;t<m;++t)p[t]=new Float32Array(a),p[t].set(l.byIndex(t+2).getRawData());this.specn={params:h,loadings:p,names:d,dim:a-1,components:u-2,scores:f}}catch(t){throw new Error(`Failed to load model: ${t instanceof Error?t.message:"the platform issue"}`)}}fit(e,n,o){return r=this,i=void 0,a=function*(){const r=yield fe({table:t.DataFrame.fromColumns([n]),features:e,predict:n,components:o,names:void 0,isQuadratic:!1}),i=e.names();i.push("_");const s=this.getRegrCoeffs(e,n,r.regressionCoefficients),a=this.getLoadings(o,r.xLoadings);this.specn={names:i,params:s,loadings:a,components:o,dim:e.length,scores:this.getScoresDf(r)},this.computeExplVars(n.length,o,r.yLoadings)},new((s=void 0)||(s=Promise))(function(t,e){function n(t){try{l(a.next(t))}catch(t){e(t)}}function o(t){try{l(a.throw(t))}catch(t){e(t)}}function l(e){var r;e.done?t(e.value):(r=e.value,r instanceof s?r:new s(function(t){t(r)})).then(n,o)}l((a=a.apply(r,i||[])).next())});var r,i,s,a}getLoadings(t,e){const n=Array(t),o=e[0].length+1;for(let r=0;r<t;++r)n[r]=new Float32Array(o),n[r].set(e[r].getRawData());return n}getRegrCoeffs(t,e,n){const o=t.length,r=new Float32Array(o+1),i=n.getRawData();let s=0;for(let e=0;e<o;++e)r[e]=i[e],s+=i[e]*t.byIndex(e).stats.avg;return r[o]=e.stats.avg-s,r}computeExplVars(t,e,n){if(null===this.specn)throw new Error("Failed to compute explained variances");const o=n.getRawData(),r=this.specn.loadings[0].length-1;let i=Math.pow(o[0],2)/t;this.specn.loadings[0][r]=i;for(let n=1;n<e;++n)i+=Math.pow(o[n],2)/t,this.specn.loadings[n][r]=i}toBytes(){if(null===this.specn)throw new Error("Failed to pack untrained model");const e=t.DataFrame.fromColumns([t.Column.fromStrings(ne.FEATURES,this.specn.names),t.Column.fromFloat32Array(ne.REGR_COEFS,this.specn.params)]);this.specn.loadings.forEach((n,o)=>e.columns.add(t.Column.fromFloat32Array(`${ne.XLOADING}${o+1}`,n)));const n=e.toByteArray(),o=n.length,r=this.specn.scores.toByteArray(),i=r.length,s=o+i+8,a=new Uint8Array(64*(Math.ceil(s/64)+1)),l=new Uint32Array(a.buffer,0,2);return l[0]=o,l[1]=i,a.set(n,8),a.set(r,8+o),a}predict(t){if(null===this.specn)throw new Error("Predicting failed: model is not trained");return me(t,this.specn.params)}loadingsParamsViewers(){if(null===this.specn)throw new Error("Failed to create loadings and parameters viewers: untrained model");const e=[],n=this.specn.dim,o=t.DataFrame.fromColumns([t.Column.fromStrings(ne.FEATURES,this.specn.names.slice(0,-1)),t.Column.fromFloat32Array(ne.REGR_COEFS,this.specn.params,n)]),r=o.columns,i=r.length,s=this.specn.components;return this.specn.loadings.forEach((e,r)=>o.columns.add(t.Column.fromFloat32Array(`${ne.XLOADING}${r+1}`,e,n))),e.push(t.Viewer.scatterPlot(o,{title:ne.LOADINGS,xColumnName:r.byIndex(i).name,yColumnName:r.byIndex(i+(s>1?1:0)).name,markerType:t.MARKER_TYPE.CIRCLE,labelFormColumnNames:[ne.FEATURES],help:re.LOADINGS})),e.push(t.Viewer.barChart(o,{title:ne.REGR_COEFS,splitColumnName:ne.FEATURES,valueColumnName:ne.REGR_COEFS,valueAggrType:t.AGG.AVG,help:re.COEFFS,showValueSelector:!1,showStackSelector:!1})),e}explVarsViewer(){if(null===this.specn)throw new Error("Failed to create exaplained variances viewer: untrained model");const e=this.specn.components,n=this.specn.dim,o=new Array(e),r=new Float32Array(e);o[0]=`${se.COMP} 1`,r[0]=this.specn.loadings[0][n];for(let t=1;t<e;++t)o[t]=`${se.COMPS} ${t+1}`,r[t]=this.specn.loadings[t][n];return t.Viewer.barChart(t.DataFrame.fromColumns([t.Column.fromStrings(se.COMPS,o),t.Column.fromFloat32Array(ne.EXPL_VAR,r)]),{title:ne.EXPL_VAR,splitColumnName:se.COMPS,valueColumnName:ne.EXPL_VAR,valueAggrType:t.AGG.AVG,help:re.EXPL_VARS,showCategorySelector:!1,showStackSelector:!1,showValueSelector:!1})}viewers(){if(null===this.specn)throw new Error("Failed to create viewers: untrained model");const t=this.loadingsParamsViewers();return t.push(this.explVarsViewer(),this.getScoresScatter()),t}getScoresDf(e){const n=e.tScores,o=e.uScores;return n.forEach((t,e)=>t.name=`${ne.XSCORE}${e+1}`),o.forEach((t,e)=>t.name=`${ne.YSCORE}${e+1}`),t.DataFrame.fromColumns(n.concat(o))}getScoresScatter(){if(null===this.specn)throw new Error("Failed to create scores scatter: untrained model");const e=this.specn.scores.columns.names(),n=t.Viewer.scatterPlot(this.specn.scores,{title:ne.SCORES,xColumnName:e[0],yColumnName:e[1],markerType:t.MARKER_TYPE.CIRCLE,help:re.SCORES,showViewerFormulaLines:!0});return n.meta.formulaLines.addAll(function(t){const e=[],n=(t,n)=>{e.push({type:"line",formula:t,width:1,visible:!0,title:" ",min:-n,max:n,color:ce.CIRCLE})};return t.forEach(o=>{const r="${"+o+"}";e.push({type:"line",formula:`${r} = 0`,width:1,visible:!0,title:" ",color:ce.AXIS}),t.forEach(t=>{const e="${"+t+"}";ue.forEach(t=>{n(e+` = sqrt(${t*t} - ${r} * ${r})`,t),n(e+` = -sqrt(${t*t} - ${r} * ${r})`,t)})})}),e}(e)),n}}const ye=["Alpha","Beta","Gamma","Delta"];function Ae(t,e){if(t.length!==e.length)throw new Error(`Non-equal elements count: ${t.length} vs. ${e.length}`)}function we(e,n,o){const r=I.data.demo.randomWalk(e,n),i=r.columns,s=new Float32Array(n),a=new Array(n);for(let t=0;t<n;++t)a[t]=i.byIndex(t).getRawData();for(let r=0;r<o;++r){const o=new Float32Array(e);for(let t=0;t<n;++t)s[t]=Math.random();for(let t=0;t<e;++t)for(let e=0;e<n;++e)o[t]+=s[e]*a[e][t];i.add(t.Column.fromFloat32Array(`y${r}`,o))}return r}function Ce(t,e){Ae(t,e);let n=0;const o=t.length,r=t.getRawData(),i=e.getRawData();for(let t=0;t<o;++t)n=Math.max(n,Math.abs(r[t]-i[t]));return n}function Ee(e,n,o){const r=new Array(e),i=new Array(n);for(let t=0;t<n;++t){const n=new Float32Array(e);for(let t=0;t<e;++t)n[t]=Math.random();i[t]=n}const s=t.DataFrame.fromColumns(i.map((e,n)=>t.Column.fromFloat32Array(`#${n}`,e)));for(let t=0;t<e;++t)r[t]=i.slice(0,2).map(e=>e[t]>.5?"A":"B").join("");if(s.columns.add(t.Column.fromStrings("Labels",r)),o)for(let t=0;t<n;++t)for(let n=0;n<e;++n)i[t][n]+=1*(i[t][n]>0?1:-1);return s}function be(t,e){Ae(t,e);let n=0;const o=t.length;if(o<1)return 1;for(let r=0;r<o;++r)t.get(r)===e.get(r)&&++n;return n/o}var xe=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const _e=100,Ne=9e3,Me=.1;b("Principal component analysis",()=>{C("Performance: 100K rows, 100 cols, 3 components",()=>xe(void 0,void 0,void 0,function*(){const t=I.data.demo.randomWalk(1e5,_e);yield le(t,t.columns,3,!1,!1)}),{timeout:Ne,benchmark:!0}),C("Performance: 1K rows, 5K cols, 3 components",()=>xe(void 0,void 0,void 0,function*(){const t=I.data.demo.randomWalk(1e3,5e3);yield le(t,t.columns,3,!1,!1)}),{timeout:Ne,benchmark:!0}),C("Correctness",()=>xe(void 0,void 0,void 0,function*(){const t=we(100,3,5);E(function(t){let e=0;const n=t.length,o=t.getRawData();for(let t=0;t<n;++t)e=Math.max(e,Math.abs(o[t]));return e}((yield le(t,t.columns,4,!1,!1)).columns.byIndex(3))<Me,!0,"Incorrect PCA computations")}),{timeout:Ne})}),b("Partial least squares regression",()=>{C("Performance: 100K rows, 100 cols, 3 components",()=>xe(void 0,void 0,void 0,function*(){const t=I.data.demo.randomWalk(1e5,_e),e=t.columns;yield fe({table:t,features:e,predict:e.byIndex(99),components:3,names:void 0,isQuadratic:!1})}),{timeout:Ne,benchmark:!0}),C("Correctness",()=>xe(void 0,void 0,void 0,function*(){const t=we(100,3,5),e=t.columns,n=e.byIndex(7),o=Ce(n,(yield fe({table:t,features:e,predict:n,components:3,isQuadratic:!1,names:void 0})).prediction);E(o<Me,!0,`Incorrect PLS computations, error is too big: ${o}; expected: < 0.1`)}),{timeout:Ne}),C("Predictive modeling: 100K samples, 100 features, 3 components",()=>xe(void 0,void 0,void 0,function*(){const t=we(1e5,3,98).columns,e=t.byIndex(_e);t.remove(e.name);const n=new ve;yield n.fit(t,e,3);const o=n.toBytes(),r=Ce(e,new ve(o).predict(t));E(r<Me,!0,`Incorrect PLS (ML) computations, error is too big: ${r}; expected: < 0.1`)}),{timeout:Ne,benchmark:!0})}),b("Linear regression",()=>{C("Performance: 100K samples, 100 features",()=>xe(void 0,void 0,void 0,function*(){const t=we(1e5,_e,1).columns,e=t.byIndex(_e),n=yield he(t,e),o=new Uint8Array(n.buffer);me(t,new Float32Array(o.buffer))}),{timeout:Ne,benchmark:!0}),C("Correctness",()=>xe(void 0,void 0,void 0,function*(){const t=we(100,2,1).columns,e=t.byIndex(2),n=yield he(t,e),o=new Uint8Array(n.buffer),r=me(t,new Float32Array(o.buffer)),i=Ce(r,r);E(i<Me,!0,`Incorrect linear regression computations, error is too big: ${i}; expected: < 0.1`)}),{timeout:Ne})});var Te=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const Se="Avg-s",Oe="Stddev-s";var Ie;!function(t){t[t.MAX_SAMLPES=5e4]="MAX_SAMLPES",t[t.MAX_FEATURES=100]="MAX_FEATURES"}(Ie||(Ie={}));class Le{static isApplicable(e,n){for(const t of e)if(!t.matches("numerical"))return!1;return n.type===t.COLUMN_TYPE.STRING}static isInteractive(t,e){return t.length<=Ie.MAX_FEATURES&&e.length<=Ie.MAX_SAMLPES}constructor(e,n){if(this.params=void 0,this.classesCount=1,this.featuresCount=1,void 0!==e){const t=e.featuresCount,n=e.classesCount;if(t<1)throw new Error("Incorrect features count");if(n<1)throw new Error("Incorrect classes count");const o=t+1;this.avgs=new Float32Array(o),this.stdevs=new Float32Array(o),this.categories=new Array(o),this.featuresCount=t,this.classesCount=n}else{if(void 0===n)throw new Error("Softmax classifier not initialized");try{const e=new Uint32Array(n.buffer,0,1)[0],o=new Uint8Array(n.buffer,4,e),r=t.DataFrame.fromByteArray(o),i=r.columns,s=i.length;if(s<3)throw new Error("incorrect columns count");this.classesCount=s-2,this.featuresCount=r.rowCount-1;const a=this.classesCount;this.params=new Array(a),this.categories=new Array(r.rowCount);for(let e=0;e<a;++e){const n=i.byIndex(e);if(this.categories[e]=n.name,n.type!==t.COLUMN_TYPE.FLOAT)throw new Error(`Incorrect input column type. Expected: float, passed: ${n.type}`);this.params[e]=n.getRawData()}const l=i.byName(Se);if(l.type!==t.COLUMN_TYPE.FLOAT)throw new Error("incorrect average values column type");this.avgs=l.getRawData();const u=i.byName(Oe);if(u.type!==t.COLUMN_TYPE.FLOAT)throw new Error("incorrect standard deviations column type");this.stdevs=u.getRawData()}catch(t){throw new Error(`Failed to load model: ${t instanceof Error?t.message:"the platform issue"}`)}}}toBytes(){if(void 0===this.params)throw new Error("Non-trained model");const e=this.classesCount,n=new Array(e+2);for(let o=0;o<e;++o)n[o]=t.Column.fromFloat32Array(this.categories[o],this.params[o]);n[e]=t.Column.fromFloat32Array(Se,this.avgs),n[e+1]=t.Column.fromFloat32Array(Oe,this.stdevs);const o=t.DataFrame.fromColumns(n).toByteArray(),r=o.length,i=new Uint8Array(r+4);return new Uint32Array(i.buffer,0,1)[0]=r,i.set(o,4),i}fit(e,n){return Te(this,arguments,void 0,function*(e,n,o=1,r=100,i=.1,s=.001){if(e.length!==this.featuresCount)throw new Error("Training failes - incorrect features count");if(o<=0||r<1||i<=0||s<=0)throw new Error("Training failes - incorrect fitting hyperparameters");this.extractStats(e);const a=n.length,l=n.categories.length,u=n.categories;for(let t=0;t<l;++t)this.categories[t]=u[t];try{const u=function(t,e,n,o,r,i,s,a,l,u,c){return St(EDA,"fitSoftmax",[t,e,n,o,r,i,s,a,l,u,c])}(e,t.Column.fromFloat32Array("avgs",this.avgs,this.featuresCount),t.Column.fromFloat32Array("stdevs",this.stdevs,this.featuresCount),t.Column.fromInt32Array("targets",n.getRawData(),a),l,r,o,i,s,this.featuresCount+1,l).columns;this.params=new Array(l);for(let t=0;t<l;++t)this.params[t]=u.byIndex(t).getRawData()}catch(t){try{this.params=yield this.fitSoftmaxParams(e,n,r,o,i,s)}catch(t){throw new Error("Training failes")}}if(void 0===this.params)throw new Error("Training failes")})}extractStats(e){let n=0;for(const o of e){if(o.type!==t.COLUMN_TYPE.INT&&o.type!==t.COLUMN_TYPE.FLOAT)throw new Error("Training failes - incorrect features type");this.avgs[n]=o.stats.avg,this.stdevs[n]=o.stats.stdev,++n}}normalized(e){const n=e.byIndex(0).length,o=new Array(n);for(let t=0;t<n;++t)o[t]=new Float32Array(this.featuresCount);let r=0;for(const i of e){if(i.type!==t.COLUMN_TYPE.INT&&i.type!==t.COLUMN_TYPE.FLOAT)throw new Error("Training failes - incorrect features type");const e=i.getRawData(),s=this.avgs[r],a=this.stdevs[r];if(a>0)for(let t=0;t<n;++t)o[t][r]=(e[t]-s)/a;else for(let t=0;t<n;++t)o[t][r]=0;++r}return o}transposed(e){const n=e.byIndex(0).length,o=this.featuresCount,r=new Array(o);for(let t=0;t<o;++t)r[t]=new Float32Array(n);let i=0;for(const o of e){if(o.type!==t.COLUMN_TYPE.INT&&o.type!==t.COLUMN_TYPE.FLOAT)throw new Error("Training failes - incorrect features type");const e=o.getRawData(),s=this.avgs[i],a=this.stdevs[i];if(a>0)for(let t=0;t<n;++t)r[i][t]=(e[t]-s)/a;else for(let t=0;t<n;++t)r[i][t]=0;++i}return r}preprocessedTargets(e){if(e.type!==t.COLUMN_TYPE.STRING)throw new Error("Training failes - incorrect target type");const n=this.classesCount,o=e.length,r=e.getRawData(),i=new Array(o),s=new Uint32Array(n).fill(0);for(let t=0;t<o;++t)i[t]=new Uint8Array(n).fill(0);for(let t=0;t<o;++t)i[t][r[t]]=1,++s[r[t]];return{oneHot:i,weights:s}}predict(e){if(void 0===this.params)throw new Error("Non-trained model");if(e.length!==this.featuresCount)throw new Error("Predcition fails: incorrect features count");const n=this.normalized(e),o=n.length,r=this.featuresCount,i=this.classesCount;let s,a;const l=new Float32Array(i);let u,c,f;const d=new Array(o);for(let t=0;t<o;++t){s=n[t],u=0;for(let t=0;t<i;++t){a=this.params[t],u=a[r];for(let t=0;t<r;++t)u+=a[t]*s[t];l[t]=Math.exp(u)}c=l[0],f=0;for(let t=1;t<i;++t)c<l[t]&&(c=l[t],f=t);d[t]=this.categories[f]}return t.Column.fromStrings("predicted",d)}fitSoftmaxParams(t,e,n,o,r,i){return Te(this,void 0,void 0,function*(){const a=this.preprocessedTargets(e);return new Promise((l,u)=>{const c=new Worker(new URL(s.p+s.u(501),s.b));c.postMessage({features:this.normalized(t),transposed:this.transposed(t),oneHot:a.oneHot,classesWeights:a.weights,targetRaw:e.getRawData(),iterations:n,rate:o,penalty:r,tolerance:i}),c.onmessage=function(t){c.terminate(),l(t.data.params),console.log(`Loss: ${t.data.loss}`)}})})}}var Pe,Re,Fe;!function(t){t[t.ITERATIONS=20]="ITERATIONS",t[t.ETA=.3]="ETA",t[t.MAX_DEPTH=6]="MAX_DEPTH",t[t.LAMBDA=1]="LAMBDA",t[t.ALPHA=0]="ALPHA"}(Pe||(Pe={})),function(t){t[t.SAMLPES_HIGH=1e5]="SAMLPES_HIGH",t[t.SAMLPES_MID=5e4]="SAMLPES_MID",t[t.SAMPLES_LOW=1e4]="SAMPLES_LOW",t[t.FEATURES_HIGH=10]="FEATURES_HIGH",t[t.FEATURES_MID=20]="FEATURES_MID",t[t.FEATURES_LOW=100]="FEATURES_LOW"}(Re||(Re={})),function(t){t[t.MODEL=1e7]="MODEL",t[t.UTILS=1]="UTILS",t[t.PACK=128]="PACK",t[t.SIZE=4]="SIZE"}(Fe||(Fe={}));const De=t.FLOAT_NULL;var Be;!function(t){t.PREDICT="Prediction",t.TYPE="Type",t.PARAMS="Params count",t.CATS="Categories",t.CATS_SIZE="Categories size"}(Be||(Be={}));class ke{static isApplicable(t,e){for(const e of t)if(!e.matches("numerical"))return!1;return!(!e.matches("numerical")&&!e.matches("string"))}static isInteractive(t,e){const n=t.length,o=e.length;return o<=Re.SAMPLES_LOW?n<=Re.FEATURES_LOW:o<=Re.SAMLPES_MID?n<=Re.FEATURES_MID:o<=Re.SAMLPES_HIGH&&n<=Re.FEATURES_HIGH}constructor(e){var n;if(this.modelParams=void 0,this.targetType=void 0,this.targetCategories=void 0,e)try{let o=0;const r=new Uint32Array(e.buffer,o,1)[0];o+=Fe.SIZE;const i=t.DataFrame.fromByteArray(new Uint8Array(e.buffer,o,r));o+=r,this.targetType=i.get(Be.TYPE,0);const s=i.get(Be.PARAMS,0),a=i.get(Be.CATS_SIZE,0);if(a>0){const r=t.DataFrame.fromByteArray(new Uint8Array(e.buffer,o,a));this.targetCategories=null===(n=r.col(Be.CATS))||void 0===n?void 0:n.toList()}o+=a,o=4*Math.ceil(o/4),this.modelParams=new Int32Array(e.buffer,o,s)}catch(t){throw new Error(`Failed to load model: ${t instanceof Error?t.message:"the platform issue"}`)}}fit(e,n){return o=this,r=arguments,a=function*(e,n,o=Pe.ITERATIONS,r=Pe.ETA,i=Pe.MAX_DEPTH,a=Pe.LAMBDA,l=Pe.ALPHA){this.targetType=n.type,this.targetType===t.COLUMN_TYPE.STRING&&(this.targetCategories=n.categories),this.modelParams=yield async function(t,e,n,o,r,i,a,l,u,c){return new Promise((f,d)=>{const h=e.length,m=t.length,p=new Float32Array(h*m);let g,v;for(let e=0;e<m;++e){v=t.byIndex(e).getRawData(),g=e*h;for(let t=0;t<h;++t)p[t+g]=v[t]}const y=new Worker(new URL(s.p+s.u(990),s.b));y.postMessage({features:p,target:e.getRawData(),samplesCount:h,featuresCount:m,modelReserve:u,utilsLength:c,iterations:o,eta:r,maxDepth:i,lambda:a,alpha:l,missingValue:n}),y.onmessage=function(t){y.terminate(),f(t.data.params)}})}(e,n,De,o,r,i,a,l,Fe.MODEL,Fe.UTILS)},new((i=void 0)||(i=Promise))(function(t,e){function n(t){try{l(a.next(t))}catch(t){e(t)}}function s(t){try{l(a.throw(t))}catch(t){e(t)}}function l(e){var o;e.done?t(e.value):(o=e.value,o instanceof i?o:new i(function(t){t(o)})).then(n,s)}l((a=a.apply(o,r||[])).next())});var o,r,i,a}predict(e){if(void 0===this.modelParams)throw new Error("Failed to apply non-trained model");const n=function(t,e,n){const o=t.byIndex(0).length,r=t.length,i=n.length;let s=XGBoostModule.HEAPF32;const a=XGBoostModule.HEAP32,l=XGBoostModule._malloc(o*r*4),u=XGBoostModule._malloc(4*o),c=XGBoostModule._malloc(4*i);for(let e=0;e<r;++e){const n=t.byIndex(e).getRawData();for(let t=0;t<o;++t)s[l/4+t+e*o]=n[t]}for(let t=0;t<i;++t)a[c/4+t]=n[t];XGBoostModule._predict(l,o,r,e,c,i,u,o),s=XGBoostModule.HEAPF32;const f=new Float32Array(o);for(let t=0;t<o;++t)f[t]=s[u/4+t];return XGBoostModule._free(l),XGBoostModule._free(u),XGBoostModule._free(c),f}(e,De,this.modelParams);switch(this.targetType){case t.COLUMN_TYPE.STRING:return this.stringColPrediction(n);case t.COLUMN_TYPE.INT:return this.intColPrediction(n);case t.COLUMN_TYPE.BIG_INT:return this.bigIntColPrediction(n);default:return t.Column.fromFloat32Array(Be.PREDICT,n)}}toBytes(){if(void 0===this.modelParams||void 0===this.targetType)throw new Error("Failed to pack non-trained model");const e=void 0!==this.targetCategories?t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.STRING,Be.CATS,this.targetCategories)]).toByteArray():void 0,n=void 0!==e?e.length:0,o=this.modelParams.length*this.modelParams.BYTES_PER_ELEMENT,r=t.DataFrame.fromColumns([t.Column.fromStrings(Be.TYPE,[this.targetType]),t.Column.fromInt32Array(Be.PARAMS,new Int32Array([this.modelParams.length])),t.Column.fromInt32Array(Be.CATS_SIZE,new Int32Array([n]))]).toByteArray(),i=r.length,s=64*Math.ceil((Fe.SIZE+i+n+o+Fe.PACK)/64),a=new Uint8Array(s);let l=0;return new Uint32Array(a.buffer,l,1)[0]=i,l+=Fe.SIZE,a.set(r,l),l+=i,n>0&&a.set(e,l),l+=n,l=4*Math.ceil(l/4),a.set(new Uint8Array(this.modelParams.buffer),l),a}stringColPrediction(e){const n=e.length;if(void 0===this.targetCategories)throw new Error("Predicting fails: undefined categories");const o=new Array(n),r=this.targetCategories.length-1,i=t=>Math.max(0,Math.min(t,r));for(let t=0;t<n;++t)o[t]=this.targetCategories[i(Math.round(e[t]))];return t.Column.fromList(t.COLUMN_TYPE.STRING,Be.PREDICT,o)}intColPrediction(e){const n=e.length,o=new Int32Array(n);for(let t=0;t<n;++t)o[t]=Math.round(e[t]);return t.Column.fromInt32Array(Be.PREDICT,o,n)}bigIntColPrediction(e){const n=e.length,o=new BigInt64Array(n);for(let t=0;t<n;++t)o[t]=BigInt(Math.round(e[t]));return t.Column.fromBigInt64Array(Be.PREDICT,o)}}var Ue=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const Ve=100,Ge=8e3;var $e;b("Softmax",()=>{C("Performance: 50K samples, 100 features",()=>Ue(void 0,void 0,void 0,function*(){const t=Ee(5e4,Ve,!1).columns,e=t.byIndex(Ve);t.remove(e.name);const n=new Le({classesCount:e.categories.length,featuresCount:t.length});yield n.fit(t,e);const o=n.toBytes();new Le(void 0,o).predict(t)}),{timeout:Ge,benchmark:!0}),C("Correctness",()=>Ue(void 0,void 0,void 0,function*(){const t=Ee(50,2,!0).columns,e=t.byIndex(2);t.remove(e.name);const n=new Le({classesCount:e.categories.length,featuresCount:t.length});yield n.fit(t,e);const o=n.toBytes(),r=be(e,new Le(void 0,o).predict(t));E(r>.9,!0,`Softmax failed, too small accuracy: ${r}; expected: <= 0.9`)}),{timeout:Ge})}),b("XGBoost",()=>{C("Performance: 50K samples, 100 features",()=>Ue(void 0,void 0,void 0,function*(){const t=Ee(5e4,Ve,!1).columns,e=t.byIndex(Ve);t.remove(e.name);const n=new ke;yield n.fit(t,e);const o=n.toBytes();new ke(o).predict(t)}),{timeout:Ge,benchmark:!0}),C("Correctness",()=>Ue(void 0,void 0,void 0,function*(){const t=Ee(50,2,!0).columns,e=t.byIndex(2);t.remove(e.name);const n=new ke;yield n.fit(t,e);const o=n.toBytes(),r=be(e,new ke(o).predict(t));E(r>.9,!0,`XGBoost failed, too small accuracy: ${r}; expected: <= 0.9`)}),{timeout:Ge})}),function(t){t.NO_DATAFRAME="No dataframe is opened",t.NO_MISSING_VALUES="No missing values",t.ONE_AVAILABLE_FEATURE="Not enough of feature columns to apply imputation using the KNN method",t.ONE_FEATURE_SELECTED="Imputation cannot be applied to",t.UNSUPPORTED_COLUMN_TYPE="Unsupported column type",t.UNSUPPORTED_IMPUTATION_STRATEGY="Unsupported imputation strategy",t.KNN_CANNOT_BE_APPLIED="KNN imputer cannot be applied: no columns to be used as features",t.KNN_NO_TARGET_COLUMNS="KNN imputer cannot be applied: no columns with missing values",t.KNN_NO_FEATURE_COLUMNS="KNN imputer cannot be applied: no feature columns",t.KNN_NOT_ENOUGH_OF_ROWS="KNN imputer cannot be applied: not enough of rows",t.KNN_IMPOSSIBLE_IMPUTATION="Imputation is impossible, no features can be used",t.INCORRECT_NEIGHBORS="Incorrect number of neighbors",t.KNN_FAILS="KNN IMPUTATION FAILS",t.CORE_ISSUE="Core issue",t.FAILED_TO_IMPUTE="Failed to impute",t.UNSUPPORTED_FILL_VALUE_TYPE="Unsupported fill value type",t.EMPTY_COLUMN="Column contains just null values",t.FAILS_TO_PREDICT_IMPUTATION_FAILS="Failed to predict imputation fails",t.WRONG_PREDICTIONS="wrong evaluation of KNN imputation fails"}($e||($e={}));const He="copy";var qe,Ye;!function(t){t.KNN_IMPUTER="k-NN Imputation",t.TABLE="Table",t.IN_PLACE="In-place",t.COLUMNS="Impute",t.FEATURES="Using",t.CANCEL="CANCEL",t.RUN="RUN",t.OK="OK",t.NEIGHBORS="Neighbors",t.DISTANCE="Distance",t.FILL="Fill",t.MARK="Mark",t.SIMPLE_IMPUTER="Simple impute",t.SETTINGS="Settings",t.KEEP_EMPTY="Keep empty"}(qe||(qe={})),function(t){t.TARGET="Columns with missing values that must be filled",t.FEATURES="Columns with features to be used for determining the 'nearest' elements in the k-NN method",t.IN_PLACE="Defines whether to use in-place imputation or add a new column without missing values",t.METRIC="Type of metric between the feature values",t.WEIGHT="Weight",t.NEIGHBORS="Neighbors count used in the KNN method",t.DISTANCE="Type of distance between elements with the specified features",t.METRIC_SETTINGS="Show additional options",t.FILL_FAILED_ITEMS="Impute missing values using a simple approach: mean, median or most frequent",t.MARK_FAILED_ITEMS="Mark missing values cells with a color",t.FILL_VALUE="Fill value",t.IMPUTATION_SETTINGS="Simple imputation settings",t.KEEP_EMPTY="Defines whether to keep empty missing values failed to be imputed OR fill them using simple imputation",t.RUN="Run imputation using the k-NN method"}(Ye||(Ye={}));const We=[t.COLUMN_TYPE.INT,t.COLUMN_TYPE.FLOAT,t.COLUMN_TYPE.STRING,t.COLUMN_TYPE.DATE_TIME,t.COLUMN_TYPE.QNUM];function je(e){switch(e.type){case t.COLUMN_TYPE.INT:return t.INT_NULL;case t.COLUMN_TYPE.FLOAT:case t.COLUMN_TYPE.QNUM:case t.COLUMN_TYPE.DATE_TIME:return t.FLOAT_NULL;case t.COLUMN_TYPE.STRING:return e.max;default:throw new Error($e.UNSUPPORTED_COLUMN_TYPE)}}var Xe,Ke,ze;function Qe(e){switch(e){case t.COLUMN_TYPE.STRING:case t.COLUMN_TYPE.DATE_TIME:return{defaultWeight:ze.WEIGHT,defaultMetric:Xe.ONE_HOT,availableMetrics:[Xe.ONE_HOT]};case t.COLUMN_TYPE.INT:case t.COLUMN_TYPE.FLOAT:case t.COLUMN_TYPE.QNUM:return{defaultWeight:ze.WEIGHT,defaultMetric:Xe.DIFFERENCE,availableMetrics:[Xe.DIFFERENCE,Xe.ONE_HOT]};default:throw new Error($e.UNSUPPORTED_COLUMN_TYPE)}}!function(t){t.ONE_HOT="One-hot",t.DIFFERENCE="Difference"}(Xe||(Xe={})),function(t){t.EUCLIDEAN="Euclidean",t.MANHATTAN="Manhattan"}(Ke||(Ke={})),function(t){t[t.WEIGHT=1]="WEIGHT",t[t.NEIGHBORS=4]="NEIGHBORS",t[t.IN_PLACE=1]="IN_PLACE",t[t.SELECTED=1]="SELECTED",t[t.KEEP_EMPTY=0]="KEEP_EMPTY"}(ze||(ze={}));const Ze=e=>{C(`${e} dist, 100K rows, 15 cols, 75 missing vals`,()=>{return n=void 0,o=void 0,i=function*(){const n=function(e){const n=ye.length,o=[];let r=0;const i=new Map;for(let n=0;n<5;++n){const s=new Int32Array(e),a=`int #${n+1}`,l=[];for(let t=0;t<e;++t)s[t]=Math.floor(10*Math.random());for(let n=0;n<5;++n)r=Math.floor(e*Math.random()),s[r]=t.INT_NULL,l.push(r);o.push(t.Column.fromInt32Array(a,s)),i.set(a,l)}for(let n=0;n<5;++n){const s=new Float32Array(e),a=`float #${n+1}`,l=[];for(let t=0;t<e;++t)s[t]=10*Math.random();for(let n=0;n<5;++n)r=Math.floor(e*Math.random()),s[r]=t.FLOAT_NULL,l.push(r);o.push(t.Column.fromFloat32Array(a,s)),i.set(a,l)}for(let s=0;s<5;++s){const a=new Array(e),l=`str #${s+1}`,u=[];for(let t=0;t<e;++t)a[t]=ye[Math.floor(Math.random()*n)];const c=t.Column.fromStrings(l,a);for(let t=0;t<5;++t)r=Math.floor(e*Math.random()),c.set(r,null),u.push(r);o.push(c),i.set(l,u)}return{df:t.DataFrame.fromColumns(o),misValsIds:i}}(1e5),o=n.df,r=o.columns.names(),i=new Map,s=n.misValsIds;for(const t of o.columns){const e=Qe(t.type);i.set(t.name,{weight:e.defaultWeight,type:e.defaultMetric})}const a=function(e,n,o,r,i,s,a){if(s<1)throw new Error($e.INCORRECT_NEIGHBORS);if(e.rowCount<2)throw new Error($e.KNN_NOT_ENOUGH_OF_ROWS);if(0===n.length)throw new Error($e.KNN_NO_TARGET_COLUMNS);if(0===o.size)throw new Error($e.KNN_NO_FEATURE_COLUMNS);1===o.size&&n.forEach(t=>{if(o.has(t))throw new Error(`${$e.KNN_NO_FEATURE_COLUMNS} can be used for the column '${t}'`)}),n.forEach(t=>{if(!r.has(t))throw new Error(`${$e.KNN_FAILS}: ${$e.WRONG_PREDICTIONS}`)});const l=e.columns;n.forEach(t=>{if(!We.includes(l.byName(t).type))throw new Error($e.UNSUPPORTED_COLUMN_TYPE)}),o.forEach((t,n)=>{if(!We.includes(e.getCol(n).type))throw new Error($e.UNSUPPORTED_COLUMN_TYPE)});const u=new Map;return n.forEach(n=>{const c=l.byName(n),f=je(c),d=c.length,h=c.getRawData(),m=new Uint16Array(c.categories.length),p=[],g=[],v=[],y=[];o.forEach((t,e)=>{if(e!==c.name){const n=l.byName(e);switch(p.push(n.getRawData()),g.push(je(n)),t.type){case Xe.DIFFERENCE:v.push((e,n)=>t.weight*Math.abs(e-n));break;case Xe.ONE_HOT:v.push((e,n)=>t.weight*(e===n?0:1))}}});const A=p.length,w=new Uint32Array(p.length),C=new Float32Array(p.length);let E=0;const b=new Array(s);let x=0,_=0,N=0,M=0,T=0;const S=(t,e)=>{w.forEach((n,o)=>{C[o]=v[n](p[n][t],p[n][e])})},O=i===Ke.EUCLIDEAN?()=>{let t=0;for(let e=0;e<E;++e)t+=C[e]*C[e];return Math.sqrt(t)}:()=>{let t=0;for(let e=0;e<E;++e)t+=Math.abs(C[e]);return Math.sqrt(t)},L=t=>{if(h[t]===f)return!1;for(let e=0;e<E;++e)if(p[w[e]][t]===g[w[e]])return!1;return!0},P=e=>{if((t=>{E=0;for(let e=0;e<A;++e)p[e][t]!==g[e]&&(w[E]=e,++E)})(e),0===E)throw new Error(`${$e.KNN_IMPOSSIBLE_IMPUTATION}: the column "${c.name}", row ${e+1}`);x=0;for(let t=0;t<d;++t)if(L(t)&&t!==e){S(e,t);const n=O();if(x<s)b[x]={index:t,dist:n},++x;else{_=0,N=b[0].dist;for(let t=1;t<x;++t)N<b[t].dist&&(N=b[t].dist,_=t);n<N&&(b[_]={index:t,dist:n})}}if(0===x)throw new Error(`${$e.KNN_IMPOSSIBLE_IMPUTATION}: the column "${c.name}", row ${e+1}`);if(c.type===t.COLUMN_TYPE.STRING)return(()=>{m.forEach((t,e,n)=>n[e]=0);let t=0;for(t=0;t<x;++t)++m[h[b[t].index]];let e=m[0],n=0;return m.forEach((t,o)=>{t>e&&(e=t,n=o)}),n})();M=0;for(let t=0;t<x;++t)M+=h[b[t].index];return T=M/x,c.type===t.COLUMN_TYPE.INT?Math.round(T):T};if(a){for(const t of r.get(n))try{h[t]=P(t)}catch(e){y.push(t),e instanceof Error||I.shell.error($e.CORE_ISSUE)}y.length>0&&u.set(n,y),c.set(0,c.get(0))}else{const t=c.clone();let o=1,i=`${n}(${He})`;for(;e.columns.contains(i);)i=`${n}(${He} ${o})`,++o;t.name=i;const s=t.getRawData();for(const t of r.get(n))try{s[t]=P(t)}catch(e){y.push(t),e instanceof Error||I.shell.error($e.CORE_ISSUE)}y.length>0&&u.set(i,y),t.set(0,t.get(0)),e.columns.add(t)}}),u}(o,r,i,s,e,5,!0);let l=0;a.forEach((t,e)=>l+=t.length),E(l,0,`Failed to impute ${l} missing values`)},new((r=void 0)||(r=Promise))(function(t,e){function s(t){try{l(i.next(t))}catch(t){e(t)}}function a(t){try{l(i.throw(t))}catch(t){e(t)}}function l(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r(function(t){t(n)})).then(s,a)}l((i=i.apply(n,o||[])).next())});var n,o,r,i},{timeout:1e4,benchmark:!0})};b("Missing values imputation",()=>{Ze(Ke.EUCLIDEAN),Ze(Ke.MANHATTAN)});var Je,tn=s(6572);function en(t){if(t<=0||t>=1)throw new Error(Je.INCORRECT_SIGNIFICANCE_LEVEL)}function nn(t){const e=t.size;return e<=1?0:(t.sumOfSquares-Math.pow(t.sum,2)/e)/(e-1)}function on(t,e,n){en(n);const o=nn(t),r=nn(e);return 0===o||0===r?o===r:o/r<tn.centralF.inv(1-n,t.size-1,e.size-1)}!function(t){t.NON_EQUAL_FACTORS_VALUES_SIZE="non-equal sizes of factor and values arrays",t.INCORRECT_SIGNIFICANCE_LEVEL="incorrect significance level",t.NON_EQUAL_VARIANCES="non-equal variances",t.NON_NORMAL_DISTRIB="non-normal distribution",t.UNSUPPORTED_COLUMN_TYPE="unsupported feature column type",t.INCORRECT_CATEGORIES_COL_TYPE="incorrect categories column type",t.SINGLE_FACTOR="single category features",t.CATS_EQUAL_SIZE="single value in each category",t.NO_FEATURE_VARIATION="no feature variation",t.NO_FEATURE_VARIATION_WITHIN_GROUPS="no feature variation within groups"}(Je||(Je={}));class rn{constructor(t,e,n){if(this.nullsCount=0,t.length!==e.length)throw new Error(Je.NON_EQUAL_FACTORS_VALUES_SIZE);if(!(e.stats.stdev>0))throw new Error(Je.NO_FEATURE_VARIATION);this.setStats(t,e,n)}areVarsEqual(t){const e=this.catCount;if(1===e)return!0;const n={sum:this.sums[0],sumOfSquares:this.sumsOfSquares[0],size:this.subSampleSizes[0]};for(let o=1;o<e;++o)if(!on(n,{sum:this.sums[o],sumOfSquares:this.sumsOfSquares[o],size:this.subSampleSizes[o]},t))return!1;return!0}getOneWayAnova(){let t=0,e=0,n=0,o=this.catCount,r=o;for(let i=0;i<o;++i)0!==this.subSampleSizes[i]?(t+=this.sums[i],e+=this.sumsOfSquares[i],n+=Math.pow(this.sums[i],2)/this.subSampleSizes[i]):--r;if(o=r,1===o)throw new Error(Je.SINGLE_FACTOR);const i=this.size-this.nullsCount;if(i===o)throw new Error(Je.CATS_EQUAL_SIZE);const s=e-Math.pow(t,2)/i,a=n-Math.pow(t,2)/i,l=s-a;if(0===l)throw new Error(Je.NO_FEATURE_VARIATION_WITHIN_GROUPS);const u=o-1,c=i-o,f=a/u,d=l/c,h=f/d;return{ssBn:a,ssWn:l,ssTot:s,dfBn:u,dfWn:c,dfTot:i-1,msBn:f,msWn:d,fStat:h,pValue:1-tn.centralF.cdf(h,u,c)}}setStats(e,n,o){const r=n.type,i=n.length,s=je(n);switch(r){case t.COLUMN_TYPE.INT:case t.COLUMN_TYPE.FLOAT:const r=o;this.catCount=r,this.size=i;const a=n.getRawData(),l=e.getRawData(),u=new Float64Array(r).fill(0),c=new Float64Array(r).fill(0),f=new Int32Array(r).fill(0);let d;if(e.type==t.COLUMN_TYPE.BOOL){let t=0,e=0,n=l[0];const o=8*l.BYTES_PER_ELEMENT-1;for(let r=0;r<i;++r)d=1&n>>e,a[r]!==s?(u[d]+=a[r],c[d]+=Math.pow(a[r],2),++f[d]):++this.nullsCount,++e,e>o&&(e=0,++t,n=l[t])}else{const t=e.stats.missingValueCount>0?je(e):-1;for(let e=0;e<i;++e)d=l[e],d!==t&&a[e]!==s?(u[d]+=a[e],c[d]+=Math.pow(a[e],2),++f[d]):++this.nullsCount}this.sums=u,this.sumsOfSquares=c,this.subSampleSizes=f;break;default:throw new Error(Je.UNSUPPORTED_COLUMN_TYPE)}}}function sn(t,e,n,o=!0){en(n);const r=t.stats.uniqueCount;if(r<2)throw new Error(Je.SINGLE_FACTOR);const i=new rn(t,e,r);if(o&&!i.areVarsEqual(n))throw new Error(Je.NON_EQUAL_VARIANCES);const s=i.getOneWayAnova();return{anovaTable:s,fCritical:tn.centralF.inv(1-n,s.dfBn,s.dfWn),significance:n}}var an=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const ln=.05,un=!1,cn=t.Column.fromList(t.COLUMN_TYPE.INT,"features",[9,12,4,8,7,4,6,8,2,10,1,3,4,5,2]),fn=t.Column.fromStrings("features",["A","A","A","A","A","B","B","B","B","B","C","C","C","C","C"]);var dn;!function(t){t[t.DF_BN=2]="DF_BN",t[t.DF_TOT=14]="DF_TOT",t[t.DF_WN=12]="DF_WN",t[t.SS_BN=63.333]="SS_BN",t[t.SS_TOT=147.333]="SS_TOT",t[t.SS_WN=84]="SS_WN",t[t.MS_BN=31.666]="MS_BN",t[t.MS_WN=7]="MS_WN",t[t.F_STAT=4.523]="F_STAT",t[t.F_CRIT=3.885]="F_CRIT",t[t.P_VAL=.034]="P_VAL"}(dn||(dn={})),b("ANOVA",()=>{C("Performance: 1M rows demog",()=>an(void 0,void 0,void 0,function*(){const t=I.data.demo.demog(1e6),e=t.col("race"),n=t.col("height");new rn(e,n,e.stats.uniqueCount).areVarsEqual(ln),sn(e,n,ln,un)}),{timeout:4e3,benchmark:!0}),C("Correctness",()=>an(void 0,void 0,void 0,function*(){const t=sn(fn,cn,ln,un),e=t.anovaTable;E(e.dfBn,dn.DF_BN,"Incorrect degrees of freedom: dfBn"),E(e.dfTot,dn.DF_TOT,"Incorrect degrees of freedom: dfTot"),E(e.dfWn,dn.DF_WN,"Incorrect degrees of freedom: dfWn");const n=(t,e)=>Math.abs(t-e)<.01;E(n(e.ssBn,dn.SS_BN),!0,"Incorrect sum of squares: ssBn"),E(n(e.ssTot,dn.SS_TOT),!0,"Incorrect sum of squares: ssTot"),E(n(e.ssWn,dn.SS_WN),!0,"Incorrect sum of squares: ssWn"),E(n(e.msBn,dn.MS_BN),!0,"Incorrect mean squares: msBn"),E(n(e.msWn,dn.MS_WN),!0,"Incorrect mean squares: msWn"),E(n(e.fStat,dn.F_STAT),!0,"Incorrect F-statistics value"),E(n(e.pValue,dn.P_VAL),!0,"Incorrect p-value"),E(n(t.fCritical,dn.F_CRIT),!0,"Incorrect F-critical")}),{timeout:4e3})});const hn=rxjs;function mn(t){return"numerical"===t.functionType}function pn(t=1,e=0,n=1){return{functionType:"numerical",weight:t,mode:"freeform",min:e,max:n,line:[]}}function gn(t=1,e){return{functionType:"categorical",weight:t,categories:null!=e?e:[{name:"Category 1",desirability:1}]}}function vn(t){return t.functionType?t:t.categories?{...t,functionType:"categorical"}:{...t,functionType:"numerical"}}const yn=["Average","Sum","Product","Geomean","Min","Max"],An="Average";class wn{constructor(t,e=!1,n=!1){this.onChanged=new hn.Subject,this.supportsModeDialog=!0,this.desirabilityInputs=[],this.form=null,this.columnCategories=null,this._prop=t,this.design=e,this.showControls=n,this.root=ot.divV([],"statistics-mpo-cat-editor"),this.buildForm()}buildForm(){var t;const e=null!==(t=this._prop.categories)&&void 0!==t?t:[];this.form&&(ot.empty(this.root),this.form=null,this.desirabilityInputs=[]),this.design?this.buildDesignForm(e):this.buildViewForm(e)}createDesirabilityInput(t,e){var n;const o=ot.input.float(t,{value:null!==(n=e.desirability)&&void 0!==n?n:.5,min:0,max:1,format:"#0.000",onValueChanged:t=>{e.desirability=t,this.onChanged.next(this._prop)}});return this.desirabilityInputs.push(o),o}buildViewForm(t){for(const e of t)this.createDesirabilityInput(e.name,e);this.form=ot.form(this.desirabilityInputs),this.root.append(this.form)}buildDesignForm(t){const e=ot.divH([ot.divText("Name","statistics-mpo-cat-col-header statistics-mpo-cat-name"),ot.divText("Score","statistics-mpo-cat-col-header statistics-mpo-cat-desirability"),...this.showControls?[ot.div([],{style:{width:"40px"}})]:[]],"statistics-mpo-cat-row statistics-mpo-cat-header-row"),n=t.map((t,e)=>this.buildCategoryRow(t,e));this.form=ot.divV([e,...n]),this.root.append(this.form)}buildCategoryRow(t,e){const n=this.columnCategories?ot.input.choice("",{items:this.columnCategories,nullable:!0,value:t.name||null,onValueChanged:e=>{t.name=null!=e?e:"",this.onChanged.next(this._prop)}}):ot.input.string("",{value:t.name,onValueChanged:e=>{t.name=e,this.onChanged.next(this._prop)}});n.root.classList.add("statistics-mpo-cat-name");const o=this.createDesirabilityInput("",t);o.root.classList.add("statistics-mpo-cat-desirability");const r=[n.root,o.root];if(this.showControls){const t=ot.icons.add(()=>{const t={name:this.columnCategories?"":`Category ${this._prop.categories.length+1}`,desirability:1};this._prop.categories.splice(e+1,0,t),this.buildForm(),this.onChanged.next(this._prop)}),n=ot.icons.delete(()=>{this._prop.categories.splice(e,1),this.buildForm(),this.onChanged.next(this._prop)});r.push(ot.divH([t,n],"statistics-mpo-control-buttons"))}return ot.divH(r,"statistics-mpo-cat-row")}redrawAll(t=!0){this.buildForm(),t&&this.onChanged.next(this._prop)}setChoices(t){this.columnCategories=t,this.buildForm()}setColumn(t){var e,n;if(!t)return;this.columnCategories=t.isCategorical?[...t.categories]:null;const o=new Map(null!==(n=null===(e=this._prop.categories)||void 0===e?void 0:e.map(t=>[t.name,t.desirability]))&&void 0!==n?n:[]);this._prop.categories=t.categories.map(t=>{var e;return{name:t,desirability:null!==(e=o.get(t))&&void 0!==e?e:1}}),this.buildForm()}}let Cn;const En=10,bn=10,xn=20,_n=30,Nn={line:t.Color.toHtml(t.Color.filteredRows),handle:t.Color.toHtml(t.Color.selectedRows),barFill:t.Color.toHtml(t.Color.histogramBar),barStroke:t.Color.toHtml(t.Color.lightGray)};class Mn{constructor(t,e,n,o){this.minX=t,this.maxX=e,this.width=n,this.height=o,this.plotWidth=n-_n-bn,this.plotHeight=o-En-xn,this.scaleX=this.maxX-this.minX===0?1:this.plotWidth/(this.maxX-this.minX),this.scaleY=this.plotHeight}toCanvasCoords(t){return{x:_n+(t[0]-this.minX)*this.scaleX,y:En+this.plotHeight-t[1]*this.scaleY}}toDataCoords(t,e){let n=this.minX+(t-_n)/this.scaleX,o=(En+this.plotHeight-e)/this.scaleY;return n=Math.max(this.minX,Math.min(this.maxX,n)),o=Math.max(0,Math.min(1,o)),{x:n,y:o}}}class Tn{constructor(t,e,n){this.root=ot.div(),this.onChanged=new hn.Subject,this.supportsModeDialog=!0,this.ignoreNextClick=!1,this.dragScaleX=0,this.dragScaleY=0,this._prop=t,this._width=e,this._height=n,this.ensureDefaultLine(),this.root.style.width=`${e}px`,this.root.style.height=`${n}px`,this.root.style.position="relative",requestAnimationFrame(()=>this.initKonva(e,n))}ensureDefaultLine(){var t,e;if(this._prop.line.length>0)return;const n=null!==(t=this._prop.min)&&void 0!==t?t:0,o=null!==(e=this._prop.max)&&void 0!==e?e:1;this._prop.line=[[n,.5],[o,.5]]}updateDragScales(){const t=this._width-_n-bn,e=this._height-En-xn;this.dragScaleX=(this.getMaxX()-this.getMinX())/t,this.dragScaleY=1/e}isInPlotArea(t,e,n){return t.x>=_n&&t.x<=e-bn&&t.y>=En&&t.y<=n-xn}async initKonva(t,e){var n;if(!this.root.parentElement)return void console.warn("Konva container not attached to DOM yet.");const o=await async function(){return Cn||(Cn=(await s.e(397).then(s.t.bind(s,5778,23))).default),Cn}();this.barsLayer=new o.Layer,this.stage=new o.Stage({container:this.root,width:t,height:e}),this.stage.add(this.barsLayer),this.layer=new o.Layer,this.stage.add(this.layer);const r=this.getMinX(),i=this.getMaxX();this.drawAxes(r,i,t,e),this.konvaLine=new o.Line({points:[],stroke:Nn.line,strokeWidth:2,lineCap:"round",lineJoin:"round"}),this.layer.add(this.konvaLine),this.pointsGroup=new o.Group,this.layer.add(this.pointsGroup),this.redrawFn=(n=!0)=>{const r=this.getMinX(),i=this.getMaxX();"freeform"===this._prop.mode&&this._prop.freeformLine&&(this._prop.line=this._prop.freeformLine),"freeform"!==this._prop.mode&&(this._prop.freeformLine||(this._prop.freeformLine=[...this._prop.line]),this._prop.line=this.computeLine()),this.pointsGroup.destroyChildren();const s=[],a=new Mn(r,i,t,e),l=[...this._prop.line.keys()].sort((t,e)=>this._prop.line[t][0]-this._prop.line[e][0]);l.map(t=>this._prop.line[t]).forEach((t,n)=>{const u=a.toCanvasCoords([t[0],t[1]]);if(s.push(u.x,u.y),"freeform"!==this._prop.mode)return;const c=new o.Circle({x:u.x,y:u.y,radius:3,fill:"white",stroke:Nn.line,strokeWidth:1,draggable:!0,hitStrokeWidth:5});c.setAttr("_dataIndex",l[n]),c.on("dragmove",t=>{const n=t.target,o=n.position(),s=n.getAttr("_dataIndex"),u=l.indexOf(s),c=u>0?this._prop.line[l[u-1]][0]:r,f=u<l.length-1?this._prop.line[l[u+1]][0]:i,d=i-r===0?0:.001*(i-r),h=a.toCanvasCoords([c+(u>0?d:0),0]).x,m=a.toCanvasCoords([f-(u<l.length-1?d:0),0]).x;o.x=Math.max(h,Math.min(m,o.x));const p=e-xn;o.y=Math.max(10,Math.min(p,o.y)),n.position(o);const g=a.toDataCoords(o.x,o.y);this._prop.line[s][0]=g.x,this._prop.line[s][1]=g.y;const v=this._prop.line.map((t,e)=>{if(e===s)return[o.x,o.y];{const e=a.toCanvasCoords([t[0],t[1]]);return[e.x,e.y]}}).flat();this.konvaLine.points(v),this.layer.batchDraw()}),c.on("dragend",()=>{var t;this._prop.line.sort((t,e)=>t[0]-e[0]),null===(t=this.redrawFn)||void 0===t||t.call(this)}),c.on("contextmenu",t=>{var e;if(t.evt.preventDefault(),this._prop.line.length<=2)return void I.shell.warning("Cannot remove points, minimum of 2 required.");this.ignoreNextClick=!0;const n=t.target.getAttr("_dataIndex");n>=0&&(null==this._prop.min&&(this._prop.min=this.getMinX()),null==this._prop.max&&(this._prop.max=this.getMaxX()),this._prop.line.splice(n,1),null===(e=this.redrawFn)||void 0===e||e.call(this))}),c.on("mouseenter",t=>{this.stage.container().style.cursor="pointer";const e=t.target.position(),n=a.toDataCoords(e.x,e.y),o=`X: ${n.x.toFixed(2)}, Y: ${n.y.toFixed(2)}<br><br>Drag to move, double-click to edit, right-click to delete`;ot.tooltip.show(o,t.evt.clientX,t.evt.clientY)}),c.on("mouseleave",()=>{this.stage.container().style.cursor="default",ot.tooltip.hide()}),c.on("dblclick dbltap",t=>{this.ignoreNextClick=!0,ot.tooltip.hide();const e=t.target.getAttr("_dataIndex");this.showPointEditor(e,t.evt.clientX,t.evt.clientY)}),this.pointsGroup.add(c)}),this.konvaLine.points(s),this.layer.batchDraw(),this.addSpecialHandle(t,e),n&&this.onChanged.next(this._prop.line)},this.stage.on("click tap",t=>{var e,n;if(this.ignoreNextClick)return void(this.ignoreNextClick=!1);if(t.target instanceof o.Circle||0!==t.evt.button)return;const r=null===(e=this.stage)||void 0===e?void 0:e.getPointerPosition();if(!r)return;const i=this.getMinX(),s=this.getMaxX();if(!this.isInPlotArea(r,this.stage.width(),this.stage.height()))return;const a=new Mn(i,s,this.stage.width(),this.stage.height()).toDataCoords(r.x,r.y);this._prop.line.push([a.x,a.y]),this._prop.line.sort((t,e)=>t[0]-e[0]),null===(n=this.redrawFn)||void 0===n||n.call(this)}),this.stage.on("mousemove",n=>{if(!this.stage)return;const o=this.stage.getPointerPosition();o&&"freeform"!==this._prop.mode&&(this.isInPlotArea(o,t,e)?this.stage.container().style.cursor="grab":this.stage.container().style.cursor="default")}),this.stage.on("mouseout",()=>ot.tooltip.hide()),this.enableCurveDrag(t,e),this.updateDragScales(),this.pendingBarValues&&(this.drawBars(this.pendingBarValues),this.pendingBarValues=void 0),null===(n=this.redrawFn)||void 0===n||n.call(this,!1)}get line(){return this._prop.line}computeLine(){var t,e,n,o,r,i,s,a;if("freeform"===this._prop.mode)return this._prop.line;const l=this.getMinX(),u=this.getMaxX(),c=[];for(let f=0;f<=60;f++){const d=l+f/60*(u-l);let h=0;if("gaussian"===this._prop.mode){null!==(t=(r=this._prop).mean)&&void 0!==t||(r.mean=(l+u)/2),null!==(e=(i=this._prop).sigma)&&void 0!==e||(i.sigma=(u-l)/6);const n=(d-this._prop.mean)/this._prop.sigma;h=Math.exp(-.5*n*n)}if("sigmoid"===this._prop.mode){null!==(n=(s=this._prop).x0)&&void 0!==n||(s.x0=(l+u)/2),null!==(o=(a=this._prop).k)&&void 0!==o||(a.k=10);const t=this._prop.x0,e=this._prop.k;h=1/(1+Math.exp(-e*(d-t)))}c.push([d,h])}return c}drawAxes(t,e,n,o){const r=getComputedStyle(document.documentElement).getPropertyValue("--grey-2").trim()||"#DBDCDF";this.layer.add(new Cn.Line({points:[_n,o-xn,n-bn,o-xn],stroke:r,strokeWidth:1}),new Cn.Line({points:[_n,En,_n,o-xn],stroke:r,strokeWidth:1}),new Cn.Text({x:_n,y:o-xn+3,text:t.toFixed(1),fontSize:9,fill:"grey"}),new Cn.Text({x:n-bn-15,y:o-xn+3,text:e.toFixed(1),fontSize:9,fill:"grey"}))}getMinX(){var t,e;return null!==(e=null!==(t=this._prop.min)&&void 0!==t?t:Math.min(...this._prop.line.map(t=>t[0])))&&void 0!==e?e:0}getMaxX(){var t,e;return null!==(e=null!==(t=this._prop.max)&&void 0!==t?t:Math.max(...this._prop.line.map(t=>t[0])))&&void 0!==e?e:1}getDefaultMean(){return(this.getMinX()+this.getMaxX())/2}getDefaultSigma(){return Math.max(.01,(this.getMaxX()-this.getMinX())/6)}getDefaultX0(){return(this.getMinX()+this.getMaxX())/2}getDefaultK(){return 10}redrawAll(t=!0){if(!this.stage||!this.layer||!this.redrawFn)return;const e=this.stage.width(),n=this.stage.height(),o=this.getMinX(),r=this.getMaxX();this.layer.destroyChildren(),this.drawAxes(o,r,e,n),this.layer.add(this.konvaLine,this.pointsGroup),this.redrawFn(t),this.barValues&&this.drawBars()}drawBars(t){var e;if(t&&(this.barValues=t),!this.barsLayer)return void(this.pendingBarValues=t);if(this.barsLayer.destroyChildren(),!this.barValues||0===this.barValues.length)return;const n=this.barsLayer.getStage();if(!n)return void(this.pendingBarValues=t);const o=n.width(),r=n.height(),i=this.getMinX(),s=this.getMaxX();if(s===i)return;const a=o-_n-bn,l=r-En-xn,u=Math.max(1e-9,(s-i)/20),c=new Array(20).fill(0);(null!==(e=this.barValues)&&void 0!==e?e:[]).forEach(t=>{const e=Math.min(Math.floor((t-i)/u),19);c[e]++});const f=Math.max(...c)||1;c.forEach((t,e)=>{const n=_n+e*u/(s-i)*a,o=u/(s-i)*a-1,r=t/f*l,c=new Cn.Rect({x:n,y:En+l-r,width:o,height:r,fill:Nn.barFill,opacity:.25,stroke:Nn.barStroke,strokeWidth:.5});this.barsLayer.add(c)}),this.barsLayer.batchDraw()}enableCurveDrag(t,e){if(!this.stage)return;let n=!1,o=null,r=0,i=0,s=0,a=0;this.stage.on("mousedown touchstart",l=>{var u,c,f,d;if("freeform"===this._prop.mode)return;if(!l.evt)return;const h=this.stage.getPointerPosition();h&&this.isInPlotArea(h,t,e)&&(n=!0,o=h,r=null!==(u=this._prop.mean)&&void 0!==u?u:(this.getMinX()+this.getMaxX())/2,i=null!==(c=this._prop.sigma)&&void 0!==c?c:(this.getMaxX()-this.getMinX())/6,s=null!==(f=this._prop.x0)&&void 0!==f?f:(this.getMinX()+this.getMaxX())/2,a=null!==(d=this._prop.k)&&void 0!==d?d:10,this.stage.container().style.cursor="grabbing")}),this.stage.on("mousemove touchmove",t=>{var e,l;if(!n||!o)return;const u=this.stage.getPointerPosition();if(!u)return;const c=u.x-o.x,f=u.y-o.y;"gaussian"===this._prop.mode&&(this._prop.mean=r+c*this.dragScaleX,this._prop.sigma=Math.max(.01,i+-f*this.dragScaleY*(this.getMaxX()-this.getMinX()))),"sigmoid"===this._prop.mode&&(this._prop.x0=s+c*this.dragScaleX,this._prop.k=Math.max(.1,a+-f*this.dragScaleY*50)),this._prop.line=this.computeLine(),null===(e=this.redrawFn)||void 0===e||e.call(this),null===(l=this.onParamsChanged)||void 0===l||l.call(this,this._prop)}),this.stage.on("mouseup touchend",()=>{n=!1,o=null,this.stage.container().style.cursor="default"})}addSpecialHandle(t,e){var n,o;if("freeform"===this._prop.mode)return;const r=this.getMinX(),i=this.getMaxX(),s=new Mn(r,i,t,e);let a=(r+i)/2,l=.5;"gaussian"===this._prop.mode?(a=null!==(n=this._prop.mean)&&void 0!==n?n:(r+i)/2,l=1):"sigmoid"===this._prop.mode&&(a=null!==(o=this._prop.x0)&&void 0!==o?o:(r+i)/2,l=.5);const u=s.toCanvasCoords([a,l]);this.specialHandle?(this.specialHandle.getLayer()||this.layer.add(this.specialHandle),this.specialHandle.position(u)):(this.specialHandle=new Cn.Circle({x:u.x,y:u.y,radius:7,fill:Nn.handle,draggable:!0,hitStrokeWidth:15}),this.specialHandle.on("dragmove",t=>{var e,n;const o=t.target.position(),r=s.toDataCoords(o.x,o.y);var i;"gaussian"===this._prop.mode?(this._prop.mean=r.x,this._prop.sigma=Math.max(.01,Math.abs(r.y-1))):"sigmoid"===this._prop.mode&&(this._prop.x0=r.x,this._prop.k=(i=30*Math.abs(r.y-.5),Math.max(.1,Math.min(30,i)))),this._prop.line=this.computeLine(),null===(e=this.redrawFn)||void 0===e||e.call(this),null===(n=this.onParamsChanged)||void 0===n||n.call(this,this._prop)}),this.layer.add(this.specialHandle)),this.layer.batchDraw()}showPointEditor(t,e,n){const o=this._prop.line[t],r=ot.input.float("X",{value:o[0],min:this.getMinX(),max:this.getMaxX(),format:"#0.00",step:.01}),i=ot.input.float("Y",{value:o[1],min:0,max:1,format:"#0.00",step:.01}),s=()=>{u.removeEventListener("keydown",l),f.remove()},a=()=>{const e=r.value,n=i.value;null==e||null==n||isNaN(e)||isNaN(n)||(this._prop.line[t]=[e,n],this.redrawAll())},l=t=>{"Enter"===t.key&&(a(),s()),"Escape"===t.key&&s()},u=ot.inputs([r,i]);u.style.overflow="hidden",u.addEventListener("keydown",l);const c=this.root.getBoundingClientRect(),f=ot.showPopup(u,this.root,{dx:e-c.left,dy:n-c.bottom,smart:!1})}setRange(t,e){const n=this.getMinX(),o=this.getMaxX()-n,r=e-t;if(0!==o&&0!==r){const e=r/o,i=o=>t+(o-n)*e;null!=this._prop.mean&&(this._prop.mean=i(this._prop.mean)),null!=this._prop.sigma&&(this._prop.sigma*=e),null!=this._prop.x0&&(this._prop.x0=i(this._prop.x0)),null!=this._prop.k&&(this._prop.k/=e);for(const t of this._prop.line)t[0]=i(t[0]);if(this._prop.freeformLine)for(const t of this._prop.freeformLine)t[0]=i(t[0])}this._prop.min=t,this._prop.max=e,this.updateDragScales(),this.redrawAll(!1)}setColumn(t){if(!t)return;const e=t.toList();this.drawBars(e)}}class Sn{static create(t,e=300,n=80,o=!1){return mn(t)?new Tn(t,e,n):new wn(t,o,!1)}}const On=["freeform","gaussian","sigmoid"],In=["numerical","categorical"];function Ln(t){return ot.divText(t,"statistics-mpo-section-header")}class Pn{constructor(t,e,n,o,r){this.propertyName=t,this.prop=e,this.onUpdate=n,this.onTypeChanged=o,this.mappedCol=r}static strategyToLabel(t){switch(t){case"default":return"Use default score";case"skip":return"Skip property";default:return"Exclude row"}}buildDefaultScoreInput(t){const e=t.missingValues,n=ot.input.float("Default score",{value:"default"===(null==e?void 0:e.strategy)?e.score:0,min:0,max:1,format:"#0.000",onValueChanged:e=>{t.missingValues={strategy:"default",score:e},this.onUpdate({missingValues:t.missingValues})}});n.root.style.display="default"===(null==e?void 0:e.strategy)?"":"none";const o=ot.input.choice("If missing",{items:["Exclude row","Use default score","Skip property"],value:Pn.strategyToLabel(null==e?void 0:e.strategy),onValueChanged:e=>{var o;const r="Use default score"===e;t.missingValues="Skip property"===e?{strategy:"skip"}:r?{strategy:"default",score:null!==(o=n.value)&&void 0!==o?o:0}:{strategy:"exclude"},n.root.style.display=r?"":"none",this.onUpdate({missingValues:t.missingValues})}});return o.setTooltip("How to handle missing values:<br>• <b>Exclude row</b> — assign an MPO score of 0 to the row<br>• <b>Use default score</b> — use a fixed fallback desirability value<br>• <b>Skip property</b> — calculate the score from the remaining properties"),n.setTooltip("Desirability score (0–1) to use as fallback."),ot.form([o,n])}show(){const t=structuredClone(this.prop),e=ot.dialog({title:this.propertyName});e.root.classList.add("statistics-mpo-desirability-dialog");const n=ot.divV([]),o={[t.functionType]:structuredClone(t)},r=[];let i;const s=ot.input.choice("Type",{items:[...In],value:this.prop.functionType,onValueChanged:e=>{var n;if(e!==this.prop.functionType){if(o[this.prop.functionType]=structuredClone(this.prop),o[e])this.prop=structuredClone(o[e]);else if("categorical"===e){const e=(null===(n=this.mappedCol)||void 0===n?void 0:n.isCategorical)?this.mappedCol.categories.map(t=>({name:t,desirability:1})):void 0;this.prop=gn(t.weight,e)}else this.prop=pn(t.weight);c()}}}),a=()=>{var t,e,o;const s=this.prop;null!==(t=s.mode)&&void 0!==t||(s.mode="freeform");const a=new Tn(s,355,103);(null===(e=this.mappedCol)||void 0===e?void 0:e.isNumerical)&&a.setColumn(this.mappedCol);const l=ot.input.choice("Mode",{items:On,value:s.mode,onValueChanged:t=>{s.mode=t,this.onUpdate({mode:s.mode}),d(),a.redrawAll(!1)}}),u=[{key:"min",label:"Min",fallback:()=>a.getMinX()},{key:"max",label:"Max",fallback:()=>a.getMaxX()},{key:"mean",label:"Mean",fallback:()=>a.getDefaultMean()},{key:"sigma",label:"Sigma",fallback:()=>a.getDefaultSigma(),transform:t=>Math.max(.01,t)},{key:"x0",label:"x0",fallback:()=>a.getDefaultX0()},{key:"k",label:"k",fallback:()=>a.getDefaultK(),transform:t=>Math.max(.1,t)}],c=new Map;for(const t of u)c.set(t.key,ot.input.float(t.label,{value:null!==(o=s[t.key])&&void 0!==o?o:t.fallback(),format:"#0.000",onValueChanged:e=>{const n=t.transform?t.transform(null!=e?e:t.fallback()):null!=e?e:t.fallback();s[t.key]=n,this.onUpdate({[t.key]:n}),a.redrawAll(!1)}}));c.get("min").setTooltip("Minimum property value"),c.get("max").setTooltip("Maximum property value");const f=ot.form([c.get("min"),c.get("max"),c.get("mean"),c.get("sigma"),c.get("x0"),c.get("k")]);f.classList.add("statistics-mpo-param-grid");const d=()=>{c.get("mean").root.classList.toggle("statistics-mpo-hidden","gaussian"!==s.mode),c.get("sigma").root.classList.toggle("statistics-mpo-hidden","gaussian"!==s.mode),c.get("x0").root.classList.toggle("statistics-mpo-hidden","sigmoid"!==s.mode),c.get("k").root.classList.toggle("statistics-mpo-hidden","sigmoid"!==s.mode)};d(),a.onParamsChanged=t=>{Object.assign(s,t),(()=>{var t;for(const e of u)c.get(e.key).value=null!==(t=s[e.key])&&void 0!==t?t:e.fallback()})(),this.onUpdate(t)},r.push(a.onChanged.subscribe(t=>{s.line=t,"freeform"===s.mode&&this.onUpdate({line:t})})),i=l.root,a.root.classList.add("statistics-mpo-plot"),n.append(a.root,Ln("PARAMETERS"),f)},l=()=>{var t;const e=this.prop,o=new wn(e,!0,!0);(null===(t=this.mappedCol)||void 0===t?void 0:t.isCategorical)&&o.setChoices([...this.mappedCol.categories]),r.push(o.onChanged.subscribe(()=>this.onUpdate(this.prop))),n.append(Ln("CATEGORIES"),o.root)},u=()=>{for(const t of r)t.unsubscribe();r.length=0},c=()=>{u(),ot.empty(n),i=void 0,mn(this.prop)?a():l();const t=[];this.mappedCol||t.push(s.root),i&&t.push(i),t.length>0&&n.prepend(ot.divH(t,"statistics-mpo-dialog-header-row")),n.append(Ln("MISSING VALUES"),this.buildDefaultScoreInput(this.prop))};c(),e.add(n),e.onOK(()=>{var n;u(),this.prop.functionType!==t.functionType?null===(n=this.onTypeChanged)||void 0===n||n.call(this,this.prop):this.onUpdate(this.prop),e.close()}),e.onCancel(()=>{u(),this.prop=t,this.onUpdate(t),e.close()}),e.show()}}var Rn=s(5072),Fn=s.n(Rn),Dn=s(7825),Bn=s.n(Dn),kn=s(7659),Un=s.n(kn),Vn=s(5056),Gn=s.n(Vn),$n=s(540),Hn=s.n($n),qn=s(1113),Yn=s.n(qn),Wn=s(6801),jn={};jn.styleTagTransform=Yn(),jn.setAttributes=Gn(),jn.insert=Un().bind(null,"head"),jn.domAPI=Bn(),jn.insertStyleElement=Hn(),Fn()(Wn.A,jn),Wn.A&&Wn.A.locals&&Wn.A.locals;class Xn{constructor(t,e=!1,n=!1){this.root=ot.div([]),this.onChanged=new hn.Subject,this.design=!1,this.preview=!1,this.rows={},this.rowIds={},this.rowSubs=new Map,this.propertyOrder=[],this.columnMapping={},this.dataFrame=t,this.design=e,this.preview=n,this.aggregationInput=ot.input.choice("Aggregation",{items:yn,value:An,nullable:!1,onValueChanged:t=>{this.profile&&(this.profile.aggregation=t),this.emitChange()}}),this.aggregationInput.setTooltip("Score aggregation method")}newRowId(){return crypto.randomUUID()}setProfile(t){var e,n;if(t)for(const n of Object.keys(t.properties)){const o=vn(t.properties[n]);mn(o)&&(null!==(e=o.mode)&&void 0!==e||(o.mode="freeform")),t.properties[n]=o}for(const t of this.rowSubs.values())t.unsubscribe();this.rowSubs.clear(),this.profile=t,this.aggregationInput.value=null!==(n=null==t?void 0:t.aggregation)&&void 0!==n?n:An,this.columnMapping={},this.rows={},this.rowIds={},this.propertyOrder=t?Object.keys(t.properties):[];for(const t of this.propertyOrder)this.rowIds[t]=this.newRowId();this.render()}getProfile(){return this.profile}setDesignMode(t){this.design!==t&&(this.design=t,this.rows={},this.render())}setPreviewMode(t){this.preview!==t&&(this.preview=t,this.rows={},this.render())}render(){if(ot.empty(this.root),!this.profile)return this.renderEmpty("No profile specified.");const t=this.propertyOrder.map(t=>{const e=this.rowIds[t];return this.rows[e]||(this.rows[e]=this.buildRow(t,e,this.profile.properties[t])),this.rows[e]});if(!t.length)return this.preview||this.root.append(this.buildHeader()),this.design?this.renderDesignEmpty():this.renderEmpty("No properties defined.");this.preview||this.root.append(this.buildHeader()),this.root.append(ot.divV(t))}renderEmpty(t){this.root.append(ot.divText(t))}renderDesignEmpty(){const t=ot.iconFA("chart-line"),e=ot.h3("No properties yet"),n=ot.p("Select a dataset to auto-populate properties from its numerical columns, or add them manually."),o=ot.link("+ Add Property",()=>this.addProperty()),r=ot.divV([t,e,n,o],"statistics-mpo-empty-state");this.root.append(r)}addProperty(){if(!this.profile)return;const t=`NewProperty${Object.keys(this.profile.properties).length+1}`,e=this.newRowId();this.profile.properties[t]=pn(),this.rowIds[t]=e,this.propertyOrder.push(t),this.rows={},this.render(),this.emitChange()}buildHeader(){return ot.divH([ot.divText("Property","statistics-mpo-header-property"),ot.divText("Weight","statistics-mpo-header-weight"),ot.divText("Desirability","statistics-mpo-header-desirability")],"statistics-mpo-header")}buildRow(t,e,n){var o;const r=ot.divH([],"statistics-mpo-row");r.dataset.rowId=e;const i=this.resolveColumn(t);if(i){const e=this.correctPropertyType(n,i);e&&(n=e,this.profile.properties[t]=n)}const s=Sn.create(n,300,80,this.design);null===(o=this.rowSubs.get(e))||void 0===o||o.unsubscribe(),this.rowSubs.set(e,s.onChanged.subscribe(()=>this.emitChange()));const a=this.buildPropertyCell(e,t),l=this.buildWeightCell(e,n),u=this.buildColumnSelector(e,t,s),c=this.design?this.buildModeGear(e,n,s):null,f=this.design?this.buildRowControls(e):null;return r.append(ot.divV([a,u].filter(Boolean),"statistics-mpo-property-cell"),l,ot.divH([s.root,c].filter(Boolean))),f&&r.append(f),r}buildPropertyCell(t,e){if(this.dataFrame){const t=ot.divText(e);return ot.tooltip.bind(t,()=>e),t}let n=e;const o=ot.input.string("",{value:e,onValueChanged:t=>{t&&t!==n&&(this.renameProperty(n,t),n=t)}});return ot.tooltip.bind(o.input,()=>n),o.root}buildWeightCell(t,e){var n;const o=this.getPropertyNameByRowId(t),r=[],i=ot.input.float("",{value:e.weight,min:0,max:1,format:"#0.000",onValueChanged:t=>{o&&this.mutateProperty(o,e=>e.weight=Math.max(0,Math.min(1,null!=t?t:0)))}});if(i.root.classList.add("statistics-mpo-weight-input"),r.push(i.root),this.dataFrame){const t=this.getNumericalColumnNames();let s=!!e.weightColumn&&t.includes(e.weightColumn);const a=ot.input.choice("",{items:t,nullable:!0,value:null!==(n=e.weightColumn)&&void 0!==n?n:"",onValueChanged:t=>{o&&this.mutateProperty(o,e=>e.weightColumn=t||void 0)}}),l=()=>{i.root.classList.toggle("statistics-mpo-hidden",s),a.root.classList.toggle("statistics-mpo-hidden",!s),u.classList.toggle("statistics-mpo-weight-toggle-active",s)},u=ot.iconFA("columns",()=>{s=!s,l(),!s&&o?this.mutateProperty(o,t=>{delete t.weightColumn}):s&&o&&a.value&&this.mutateProperty(o,t=>t.weightColumn=a.value||void 0)});u.classList.add("statistics-mpo-weight-toggle"),ot.tooltip.bind(u,()=>s?"Switch to manual weight":"Use weight from column"),l(),r.push(a.root,u)}return ot.divH(r,"statistics-mpo-weight-cell")}buildColumnSelector(t,e,n){var o,r;if(!this.dataFrame)return null;const i=this.getEligibleColumnNames(),s=null!==(o=this.columnMapping[e])&&void 0!==o?o:null;if(s){const t=this.dataFrame.col(s);null===(r=n.setColumn)||void 0===r||r.call(n,t)}const a=ot.input.choice("",{items:i,nullable:!0,value:null!=s?s:"",onValueChanged:o=>{var r;this.columnMapping[e]=null!=o?o:null;const i=o?this.dataFrame.col(o):null;i&&this.switchPropertyType(e,t,i)||(null===(r=n.setColumn)||void 0===r||r.call(n,i),this.emitChange())}});return a.root}getEligibleColumnNames(){return this.dataFrame?Array.from(this.dataFrame.columns).filter(t=>!t.isCategorical||t.categories.length<=20).map(t=>t.name):[]}getNumericalColumnNames(){return this.dataFrame?Array.from(this.dataFrame.columns.numerical).map(t=>t.name):[]}resolveColumn(t){var e,n,o;if(!this.dataFrame)return null;const r=this.getEligibleColumnNames(),i=null!==(n=null!==(e=this.columnMapping[t])&&void 0!==e?e:r.find(e=>e.toLowerCase()===t.toLowerCase()))&&void 0!==n?n:null;return i&&(this.columnMapping[t]=i),i&&null!==(o=this.dataFrame.col(i))&&void 0!==o?o:null}correctPropertyType(t,e){if(mn(t)&&e.isCategorical){const n=e.categories.map(t=>({name:t,desirability:1}));return gn(t.weight,n)}return!mn(t)&&e.isNumerical?pn(t.weight,e.min,e.max):null}switchPropertyType(t,e,n){if(!this.profile)return!1;const o=this.correctPropertyType(this.profile.properties[t],n);return!!o&&(this.profile.properties[t]=o,this.rebuildRow(t,e),!0)}rebuildRow(t,e){const n=this.rows[e],o=this.buildRow(t,e,this.profile.properties[t]);this.rows[e]=o,(null==n?void 0:n.parentNode)&&n.replaceWith(o),this.emitChange()}buildModeGear(t,e,n){const o=ot.icons.settings(()=>{var o,r;const i=this.getPropertyNameByRowId(t);if(!i)return;const s=this.columnMapping[i],a=s&&null!==(r=null===(o=this.dataFrame)||void 0===o?void 0:o.col(s))&&void 0!==r?r:null;this.openModeDialog(i,t,e,n,a)});return o.classList.add("statistics-mpo-gear"),o}buildRowControls(t){const e=ot.icons.add(()=>this.insertRowAfterRow(t)),n=ot.icons.delete(()=>this.deleteRow(t));return ot.divH([e,n],"statistics-mpo-control-buttons")}openModeDialog(t,e,n,o,r=null){new Pn(t,n,e=>{var n;const r=null===(n=this.profile)||void 0===n?void 0:n.properties[t];r&&Object.assign(r,e),o.redrawAll()},n=>{this.profile&&(this.profile.properties[t]=n,this.rebuildRow(t,e))},r).show()}getPropertyNameByRowId(t){var e;return null===(e=Object.entries(this.rowIds).find(([,e])=>e===t))||void 0===e?void 0:e[0]}renameProperty(t,e){var n;if(!this.profile||this.profile.properties[e])return;const o=this.rowIds[t];this.profile.properties[e]=this.profile.properties[t],delete this.profile.properties[t],this.columnMapping[e]=null!==(n=this.columnMapping[t])&&void 0!==n?n:null,delete this.columnMapping[t];const r=this.propertyOrder.indexOf(t);r>=0&&(this.propertyOrder[r]=e),delete this.rowIds[t],this.rowIds[e]=o,this.emitChange()}deleteRow(t){var e;const n=this.getPropertyNameByRowId(t);if(!n||!this.profile)return;delete this.profile.properties[n],delete this.columnMapping[n],delete this.rowIds[n],null===(e=this.rowSubs.get(t))||void 0===e||e.unsubscribe(),this.rowSubs.delete(t);const o=this.propertyOrder.indexOf(n);o>=0&&this.propertyOrder.splice(o,1);const r=this.rows[t];delete this.rows[t],0===this.propertyOrder.length?this.render():null==r||r.remove(),this.emitChange()}insertRowAfterRow(t){var e;if(!this.profile)return;const n=this.getPropertyNameByRowId(t);if(!n)return;const o=`NewProperty${Object.keys(this.profile.properties).length+1}`,r=this.newRowId();this.profile.properties[o]=pn(),this.rowIds[o]=r;const i=this.propertyOrder.indexOf(n);this.propertyOrder.splice(i+1,0,o);const s=this.buildRow(o,r,this.profile.properties[o]);this.rows[r]=s,null===(e=this.rows[t])||void 0===e||e.after(s),this.emitChange()}mutateProperty(t,e){var n;const o=null===(n=this.profile)||void 0===n?void 0:n.properties[t];o&&(e(o),this.emitChange())}emitChange(){this.onChanged.next(),I.events.fireCustomEvent("grok-mpo-score-changed",{})}}var Kn=s(4884),zn={};zn.styleTagTransform=Yn(),zn.setAttributes=Gn(),zn.insert=Un().bind(null,"head"),zn.domAPI=Bn(),zn.insertStyleElement=Hn(),Fn()(Kn.A,zn),Kn.A&&Kn.A.locals&&Kn.A.locals;const Qn="pMPO is not applicable",Zn="Failed to compute pMPO parameters",Jn="desired",to="non-desired",eo="Mean",no="p-value",oo=new Map([["desAvg",`${eo}(${Jn})`],["desStd",`Std(${Jn})`],["nonDesAvg",`${eo}(${to})`],["nonDesStd",`Std(${to})`],["tstat","t-statistics"],["pValue",no]]),ro="Descriptor",io=ro+" Statistics",so="Selected",ao="Weight",lo="pMPO score",uo="Desirability Curve",co=.001,fo=.001,ho=.53,mo=.01,po=.05,go=.01,vo="0.000";var yo;!function(t){t.SELECTED="rgb(26, 146, 26)",t.SKIPPED="rgb(208, 57, 67)"}(yo||(yo={}));const Ao="System:AppData/Chem/mpo",wo=[0,.25,.5,1,1.5,2,2.5,3,4,5],Co=wo.slice(1).map(t=>-t).reverse().concat(wo),Eo=wo.concat([.12,.37,.63,.75,.88,1.25,1.75,2.25,2.75]).sort(),bo=Eo.slice(1).map(t=>-t).reverse().concat(Eo),xo="TPR (Sensitivity)",_o="FPR (1 - Specificity)",No=101,Mo=new Float32Array(Array.from({length:No},(t,e)=>e/100)),To="System:AppData/Eda/drugs-props-train.csv",So="System:AppData/Eda/drugs-props-train-scores.csv",Oo=new Map([["tolerance",.001],["maxIter",25],["nonZeroParam",1e-4],["initialScale",.02],["scaleReflaction",1],["scaleExpansion",2],["scaleContraction",-.5]]),Io=new Float32Array([.5,go]),Lo=new Float32Array([1,1]);var Po;!function(t){t.GREATER=">",t.LESS="<",t.GREATER_OR_EQUAL="≥",t.LESS_OR_EQUAL="≤",t.DEFAULT="≤"}(Po||(Po={}));const Ro=[Po.GREATER,Po.LESS,Po.GREATER_OR_EQUAL,Po.LESS_OR_EQUAL],Fo=["perfect","good","true","t","g","active","a","yes","y"];function Do(t,e){const n=t.groupBy([e.name]).getGroups();let o,r;for(const t in n)t.toLowerCase().includes("true")?o=n[t]:r=n[t];return{desired:o,nonDesired:r}}function Bo(t,e){const n=t.length,o=e.length;if(n<2||o<2)throw new Error(`Failed to compute the "${t.name}" descriptor statistics: \n both samples must have at least two observations.`);const r=t.stats.avg,i=e.stats.avg,s=t.stats.variance,a=e.stats.variance,l=t.stats.stdev,u=e.stats.stdev,c=Math.sqrt(s/n+a/o);if(0===c)throw new Error(`Failed to compute the "${t.name}" descriptor statistics: \n zero variance.`);const f=(r-i)/c,d=Math.pow(s/n+a/o,2)/(s*s/(n*n*(n-1))+a*a/(o*o*(o-1))),h=2*(1-tn.studentt.cdf(Math.abs(f),d));return{desAvg:r,desStd:l,desLen:n,nonDesAvg:i,nonDesStd:u,nonSesLen:o,min:Math.min(t.stats.min,e.stats.min),max:Math.max(t.stats.max,e.stats.max),tstat:f,pValue:h}}function ko(e,n,o){if(e.length!==n.length)throw new Error("Failed to compute confusion matrix: columns have different lengths.");if(e.type!==t.COLUMN_TYPE.BOOL)throw new Error("Failed to compute confusion matrix: desirability column must be boolean.");if(!n.isNumerical)throw new Error("Failed to compute confusion matrix: prediction column must be numerical.");let r=0,i=0,s=0,a=0;const l=e.getRawData(),u=n.getRawData();let c=0,f=0,d=l[0];for(let t=0;t<n.length;++t)1==(d>>>f&1)?u[t]>=o?++r:++a:u[t]>=o?++s:++i,++f,f>=32&&(f=0,++c,d=l[c]);return{TP:r,TN:i,FP:s,FN:a}}function Uo(t,e){if(t.length!==e.length)throw new Error("Failed to compute AUC: TPR and FPR arrays have different lengths.");let n=0;for(let o=1;o<t.length;++o)n+=Math.abs(e[o]-e[o-1])*((t[o]+t[o-1])/2);return n}function Vo(t,e){const n=new Float32Array(No),o=new Float32Array(No);let r=-1,i=-1,s=Mo[0];for(let a=0;a<No;++a){const l=ko(t,e,Mo[a]);n[a]=l.TP+l.FN>0?l.TP/(l.TP+l.FN):0,o[a]=l.FP+l.TN>0?l.FP/(l.FP+l.TN):0,i=n[a]-o[a],i>r&&(r=i,s=Mo[a])}return{auc:Uo(n,o),threshold:s,tpr:n,fpr:o}}var Go,$o,Ho,qo,Yo;!function(t){t.MIN="minimize",t.MAX="maximize"}(Go||(Go={})),function(t){t.OPTIMAL="optimal",t.NON_OPT="non-optimal"}($o||($o={})),function(t){t[t.FORM=.15]="FORM",t[t.VIEWER=.5]="VIEWER"}(Ho||(Ho={})),function(t){t.OPT="Pareto optimality",t.SIZE="Pareto size"}(qo||(qo={})),function(t){t[t.OPTIMAL=8]="OPTIMAL",t[t.NON_OPT=4]="NON_OPT"}(Yo||(Yo={}));const Wo=[t.Color.darkGreen,t.Color.yellow,t.Color.darkRed];function jo(t){return t===Go.MIN?[...Wo]:[...Wo].reverse()}function Xo(e,n=!0){const o=ot.label("Color scale:");o.style.paddingRight="7px";const r=[o],i=ot.label(n?"min":"worst"),s=ot.label(". . ."),a=ot.label(n?"max":"best"),l=jo(e),u=[i,s,a].map((e,n)=>(1!==n&&(e.style.fontWeight="bold",e.style.color=t.Color.toRgb(l[n])),e.style.marginRight="5px",e));return r.push(...u),ot.divH(r)}var Ko=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};function zo(e){const n=e.size,o=new Map;oo.forEach((t,e)=>{o.set(e,new Float64Array(n))});const r=[...e.keys()],i=[t.Column.fromStrings(ro,r),t.Column.fromInt32Array(uo,new Int32Array(n)),t.Column.fromFloat32Array(ao,new Float32Array(n).fill(t.FLOAT_NULL))];r.forEach((t,n)=>{const r=e.get(t);null!=r&&oo.forEach((t,e)=>{const i=r[e];o.get(e)[n]=i})}),oo.forEach((e,n)=>{i.push(t.Column.fromFloat64Array(e,o.get(n)))});const s=t.DataFrame.fromColumns(i);return s.name=io,s}function Qo(t,e){const n=[],o=t.col(ro);if(null==o)throw new Error(`No column "${ro} in the table with descriptors statistics.`);const r=o.toList(),i=t.col(no);if(null==i)throw new Error(`No column "${no} in the table with descriptors statistics.`);const s=i.getRawData();for(let o=0;o<t.rowCount;++o)s[o]<e&&n.push(r[o]);return n}function Zo(t,e,n,o){const r=ot.div();r.classList.add("eda-pmpo-tooltip-line");const i=ot.div();i.classList.add("eda-pmpo-box"),i.style.backgroundColor=yo.SELECTED;const s=ot.span([]);s.textContent=`- ${n}`,r.appendChild(i),r.appendChild(s);const a=ot.div();a.classList.add("eda-pmpo-tooltip-line");const l=ot.div();l.classList.add("eda-pmpo-box"),l.style.backgroundColor=yo.SKIPPED;const u=ot.span([]);return u.textContent=`- ${o}`,a.appendChild(l),a.appendChild(u),ot.divV([ot.h2(t),ot.divText(e),r,a])}function Jo(t,e){const n=[];for(let o=0;o<e.length;++o)for(let r=o+1;r<e.length;++r)n.push([e[o],e[r],Math.pow(t.byName(e[o]).stats.corr(t.byName(e[r])),2)]);return n}function tr(t,e,n,o,r){const i=r.sort((t,e)=>e[2]-t[2]),s=new Set(e);return i.filter(t=>t[2]>o).forEach(t=>{const[e,o,r]=t,i=n.get(e).pValue,a=n.get(o).pValue,l=n.get(e).tstat,u=n.get(o).tstat;i>a?s.delete(e):i<a||Math.abs(l)>Math.abs(u)?s.delete(o):s.delete(e)}),[...s]}function er(t,e,n,o){const r=new Map;let i=0;return n.forEach(n=>{const s=t.rowCount,a=e.rowCount,l=t.col(n);if(null==l)throw new Error(Zn+`: no column "${n}" in the desired table.`);const u=e.col(n);if(null==u)throw new Error(Zn+`: no column "${n}" in the non-desired table.`);const c=l.stats.avg,f=l.stats.stdev*Math.sqrt((s-1)/s),d=u.stats.avg,h=u.stats.stdev*Math.sqrt((a-1)/a),m=(g=f,y=h,(p=c)<(v=d)?{cutoff:(v-p)/(g+y)*g+p,cutoffDesired:Math.max(p,v-y),cutoffNotDesired:Math.max(p+g,v)}:{cutoff:(p-v)/(g+y)*y+v,cutoffDesired:Math.min(v+y,p),cutoffNotDesired:Math.max(v,p-g)});var p,g,v,y;const A=Math.exp(-Math.pow(m.cutoff-c,2)/(2*Math.pow(f,2))),w=function(t,e,n,o){const r=1/(2*Math.pow(e,2))-1/(2*Math.pow(o,2)),i=n/Math.pow(o,2)-t/Math.pow(e,2),s=Math.pow(t,2)/(2*Math.pow(e,2))-Math.pow(n,2)/(2*Math.pow(o,2))-Math.log(o/e);if(Math.abs(r)<1e-12)return Math.abs(i)<1e-12?[]:[-s/i];const a=i*i-4*r*s;if(a<0)return[];const l=Math.sqrt(a);return[(-i+l)/(2*r),(-i-l)/(2*r)]}(c,f,d,h),C=Math.pow(A,-1)-1,E=Math.pow(o,-1)-1,b=Math.pow(10,Math.log10(E/C)/(-1*(d-m.cutoff)));let x=null;if(w.length>0){for(const t of w){const e=Math.min(c,d),n=Math.max(c,d);if(e-1e-8<=t&&t<=n+1e-8){x=t;break}}null==x&&(x=w[0])}else x=m.cutoff;const _=m.cutoffNotDesired,N=function(t,e,n,o,r=.05){let i;if(e<=0)i=n===t?1:0;else{const o=1/(e*Math.sqrt(2*Math.PI)),r=-.5*Math.pow((n-t)/e,2);i=o*Math.exp(r)}i=Math.max(i,1e-12);const s=Math.max(1/i-1,1e-12),a=1/r-1,l=o-n;let u;if(Math.abs(l)<1e-12)u=1;else{const t=a/s;if(t<=0)u=1;else try{u=Math.exp(-Math.log(t)/l)}catch(t){u=1}}return{pX0:i,b:s,c:u}}(c,f,x,_,o),M=Math.abs(c-d)/(f+h);i+=M,r.set(n,{desAvg:c,desStd:f,nonDesAvg:d,nonDesStd:h,min:Math.min(l.stats.min,u.stats.min),max:Math.max(l.stats.max,u.stats.max),cutoff:m.cutoff,cutoffDesired:m.cutoffDesired,cutoffNotDesired:m.cutoffNotDesired,pX0:N.pX0,b:C,c:b,zScore:M,weight:M,intersections:w,x0:x,xBound:_,inflection:A})}),r.forEach(t=>{t.weight=t.zScore/i}),r}function nr(t,e,n,o,r){return{type:"MPO Desirability Profile",name:n,description:o,properties:or(t,e,r)}}function or(t,e,n){const o={};return t.forEach((t,r)=>{const i=sr(t,n);o[r]={weight:t.weight,line:ir(t,e,n),min:Math.min(...i),max:Math.max(...i)}}),o}function rr(t,e,n){return function(t,e,n){return Math.exp(-Math.pow(t-e,2)/(2*Math.pow(n,2)))}(t,e.desAvg,e.desStd)*(n?function(t,e,n,o){return o>0?1/(1+n*Math.pow(o,-(t-e))):1/(1+n)}(t,e.cutoff,e.b,e.c):1)}function ir(t,e,n){return sr(t,n).map(n=>[n,rr(n,t,e)])}function sr(t,e){const n=function(t,e,n){return n?Co.map(n=>t+n*e):bo.map(n=>t+n*e)}(t.desAvg,t.desStd,e);if(e){const e=Math.min(t.min,t.desAvg-3*t.desStd),o=Math.max(t.max,t.desAvg+3*t.desStd);return n.filter(t=>e<=t&&t<=o).sort()}return n}class ar extends Error{constructor(t){super(t),this.name="PmpoError"}}function lr(t,e,n){const o=t.stats.min,r=t.stats.max;switch(n){case Po.LESS:return r>=e&&o<e;case Po.LESS_OR_EQUAL:return r>e&&o<=e;case Po.GREATER:return o<=e&&r>e;default:return o<e&&r>=e}}function ur(t){const e=t.filter(t=>Fo.includes(t));return e.length>0?e:[t[0]]}function cr(t,e,n,o){for(let r=0;r<e;r++){let i=0;for(let t=0;t<e+1;t++)t!=n&&(i+=o[t][r]);t[r]=i/e}}function fr(t,e,n,o,r,i,s,a){for(let l=0;l<i;l++)e[l]=t[l],e[l]+=r*(t[l]-o[n][l]),e[l]<s[l]?e[l]=s[l]:e[l]>a[l]&&(e[l]=a[l])}function dr(t,e,n,o,r,i){return s=this,a=void 0,u=function*(){const s=o.get("tolerance"),a=o.get("maxIter"),l=o.get("scaleReflaction"),u=o.get("scaleExpansion"),c=o.get("scaleContraction"),f=n.length+1,d=n.length,[h,m]=function(t,e,n,o,r){const i=n.length+1,s=n.length,a=e.get("nonZeroParam"),l=e.get("initialScale"),u=new Array(i),c=new Array(i);for(let e=0;e<i;e++){u[e]=new Float32Array(s);for(let t=0;t<s;t++)u[e][t]=n[t],0!=e&&e-1===t&&(0==n[t]?u[e][t]=a:u[e][t]+=l*n[e-1],u[e][t]<o[t]?u[e][t]=o[t]:u[e][t]>r[t]&&(u[e][t]=r[t]));c[e]=t(u[e])}return[u,c]}(e,o,n,r,i),p=new Array(f);for(let t=0;t<f;t++)p[t]=t;const g=p.length-1;let v=0,y=0,A=0,w=0;const C=new Float32Array(d),E=new Float32Array(d),b=new Float32Array(d),x=new Float32Array(d),_=new Array(a);if(f>1){let n=0;for(;p.sort((t,e)=>m[t]-m[e]),n=Math.min(100,Math.floor(100*v/a)),t.update(n,`Optimizing pMPO... (${n}%)`),yield new Promise(t=>setTimeout(t,1)),!(t.canceled||v>a);){if(0==v&&(y=m[0],A=2*m[p[0]]),_[v]=y,++v,y=m[p[0]],A-y>s)w=0;else if(++w,w>2*f)break;A=y,cr(C,d,p[g],h),fr(C,E,p[g],h,l,d,r,i);const t=e(E);if(t<m[p[g]]){fr(C,b,p[g],h,u,d,r,i);const n=e(b);if(n<t){m[p[g]]=n;for(let t=0;t<d;t++)h[p[g]][t]=b[t];continue}m[p[g]]=t;for(let t=0;t<d;t++)h[p[g]][t]=E[t];continue}fr(C,x,p[g],h,c,d,r,i);const n=e(x);if(!(n<m[p[g]]))break;m[p[g]]=n;for(let t=0;t<d;t++)h[p[g]][t]=x[t]}for(let t=v;t<a;t++)_[t]=m[p[0]]}return{optimalPoint:h[p[0]],iterations:v}},new((l=void 0)||(l=Promise))(function(t,e){function n(t){try{r(u.next(t))}catch(t){e(t)}}function o(t){try{r(u.throw(t))}catch(t){e(t)}}function r(e){var r;e.done?t(e.value):(r=e.value,r instanceof l?r:new l(function(t){t(r)})).then(n,o)}r((u=u.apply(s,a||[])).next())});var s,a,l,u}var hr=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};class mr{static isApplicable(t,e,n,o,r,i=!1){const s=e.length,a=t=>{i&&I.shell.warning(Qn+t)};if(n<fo)return a(`: too small p-value threshold - ${n}, minimum - 0.001`),!1;if(o<mo)return a(`: too small R² threshold - ${o}, minimum - 0.01`),!1;if(r<go)return a(`: too small q-cutoff - ${r}, minimum - 0.01`),!1;if(s<10)return a(`: not enough of samples - ${s}, minimum - 10`),!1;if(0===e.stats.stdev)return a(`: "${e.name}" has a single category.`),!1;let l=0;for(const e of t){if(!e.isNumerical)return a(`: "${e.name}" is not numerical.`),!1;if(e.stats.missingValueCount===e.length)return a(`: "${e.name}" contains only missing values.`),!1;e.stats.stdev>0&&++l}return!(l<1&&(a(": not enough of non-constant descriptors."),1))}static isTableValid(e,n=!0){if(e.rowCount<2)return n&&I.shell.warning(Qn+`. Not enough of samples: ${e.rowCount}, minimum: 2.`),!1;let o=0;for(const n of e.columns)(n.isNumerical||n.type===t.TYPE.BOOL)&&n.stats.stdev>0&&++o;return!(o<2&&(n&&I.shell.warning(Qn+": not enough of non-constant columns."),1))}static fit(e,n,o,r,i,s,a=!0){if(a&&!mr.isApplicable(n,o,r,i,s))throw new Error("Failed to train pMPO model: the method is not applicable to the inputs");const l=n.names(),{desired:u,nonDesired:c}=Do(e,o),f=new Map;l.forEach(t=>{f.set(t,Bo(u.col(t),c.col(t)))});const d=zo(f);!function(t,e){const n=t.col(no);if(null==n)return;const o={};o[`<${e}`]=yo.SELECTED,o[`>=${e}`]=yo.SKIPPED,n.meta.colors.setConditional(o)}(d,r);const h=Qo(d,r);if(h.length<1)throw new ar("Cannot train pMPO model: all descriptors have high p-values (not significant).");const m=Jo(n,h),p=tr(0,h,f,i,m);return function(e,n){if(n.length<1)throw new Error("Empty list of selected descriptors.");const o=e.rowCount,r=new Array(o),i=e.col(ro);if(null==i)throw new Error(`No column "${ro} in the table with descriptors statistics.`);const s=i.toList();let a=!0;const l={};for(let t=0;t<o;++t)a=n.includes(s[t]),r[t]=a,l[s[t]]=a?yo.SELECTED:yo.SKIPPED;i.colors.setCategorical(l),e.columns.add(t.Column.fromList(t.COLUMN_TYPE.BOOL,so,r))}(d,p),function(e,n,o,r){const i=new Map;n.forEach(e=>{i.set(e,new Float32Array(n.length).fill(t.FLOAT_NULL))});const s=e.col(ro).toList();o.forEach(t=>{const[e,n,o]=t;i.get(e)[s.indexOf(n)]=o,i.get(n)[s.indexOf(e)]=o,i.get(e)[s.indexOf(e)]=1,i.get(n)[s.indexOf(n)]=1}),r.forEach(n=>{e.columns.add(t.Column.fromFloat32Array(n,i.get(n)))})}(d,l,m,p),function(t,e,n){e.forEach(e=>{const o=t.col(e);if(null==o)return;const r={};r[`>=${n}`]=yo.SKIPPED,r[`<${n}`]=yo.SELECTED,o.meta.colors.setConditional(r)})}(d,l,i),{params:er(u,c,p,s),descrStatsTable:d,selectedByPvalue:h,selectedByCorr:p}}static predict(e,n,o,r){const i=e.rowCount,s=new Float64Array(i).fill(0),a=[];return n.forEach((t,n)=>{const r=e.col(n),l=t.b,u=t.c,c=t.cutoff;let f=t.weight;const d=t.desAvg,h=t.desStd,m=1/(2*Math.pow(h,2));if(null==r)throw new Error(`Failed to apply pMPO: inconsistent data, no column "${n}" in the table "${e.name}"`);r.stats.missingValueCount>0&&a.push(r);const p=r.getRawData();if(o)if(u>0)for(let t=0;t<i;++t)s[t]+=f*Math.exp(-Math.pow(p[t]-d,2)*m)/(1+l*Math.pow(u,-(p[t]-c)));else{f/=1+l;for(let t=0;t<i;++t)s[t]+=f*Math.exp(-Math.pow(p[t]-d,2)*m)}else for(let t=0;t<i;++t)s[t]+=f*Math.exp(-Math.pow(p[t]-d,2)*m)}),t.Column.fromFloat64Array(r,s)}constructor(e,n){var o;this.params=null,this.desirabilityProfile=null,this.initTable=t.DataFrame.create(),this.statGrid=t.Viewer.grid(this.initTable,{showTitle:!0,title:io}),this.predictionName=lo,this.boolPredictionName="",this.desirabilityProfileRoots=new Map,this.tresholdedColumn=null,this.threshColTooltip=null,this.rocCurve=t.Viewer.scatterPlot(this.initTable,{showTitle:!0,showSizeSelector:!1,showColorSelector:!1}),this.confusionMatrix=t.Viewer.fromType("Confusion matrix",this.initTable,{xColumnName:"control",yColumnName:"control",showTitle:!0,title:"Confusion Matrix",descriptionPosition:"Bottom",description:"Confusion matrix for the predicted vs actual desirability labels.",descriptionVisibilityMode:"Always"}),this.table=e,this.view=null!=n?n:null!==(o=I.shell.tableView(e.name))&&void 0!==o?o:I.shell.addTableView(e),this.desirabilityColumns=this.getDesirabilityColumns(),this.numericCols=this.getValidNumericCols(),this.predictionName=e.columns.getUnusedName(lo),this.missingValsIndeces=function(t){const e=new Map;for(const n of t){if(!We.includes(n.type))throw new Error($e.UNSUPPORTED_COLUMN_TYPE);if(0===n.stats.missingValueCount)continue;const t=[],o=je(n);n.getRawData().forEach((e,n)=>{e===o&&t.push(n)}),e.set(n.name,t)}return e}(this.numericCols)}setRibbons(){const t=this.view.getRibbonPanels();t.length<1||this.view.setRibbonPanels(t.slice(1))}updateStatisticsGrid(t,e,n,o){const r=this.statGrid;r.dataFrame=t,r.setOptions({showTitle:!0,title:t.name}),r.sort([so],[!1]),r.col(no).format="scientific",r.col(ro).isTextColorCoded=!0,r.col(no).isTextColorCoded=!0,e.forEach(t=>{const e=r.col(t);null!=e&&(e.isTextColorCoded=!0,e.format="0.000")}),r.onCellTooltip((t,i,s)=>{if(t.isColHeader){const n=t.tableColumn;if(null==n)return!1;const o=n.name;switch(o){case ro:return ot.tooltip.show(Zo(ro,"Use of descriptors in model construction:","selected","excluded"),i,s),!0;case uo:return ot.tooltip.show(ot.divV([ot.h2(uo),ot.divText("Desirability profile charts for each descriptor. Only profiles for selected descriptors are shown.")]),i,s),!0;case ao:return ot.tooltip.show(ot.divV([ot.h2(ao),ot.divText("Weights of selected descriptors.")]),i,s),!0;case no:return ot.tooltip.show(Zo(no,"Filtering descriptors by p-value:","selected","excluded"),i,s),!0;default:return!!e.includes(o)&&(ot.tooltip.show(Zo(o,`Correlation of ${o} with other descriptors, measured by R²:`,"weakly correlated","highly correlated"),i,s),!0)}}else if(t.isTableCell){const a=t.tableColumn;if(null==a)return!1;const l=a.name,u=t.value;if(l===ro)return o.includes(u)?ot.tooltip.show("Selected for model construction.",i,s):n.includes(u)?ot.tooltip.show("Excluded due to a high correlation with other descriptors.",i,s):ot.tooltip.show("Excluded due to a high p-value.",i,s),!0;{const o=r.cell(ro,t.gridRow).value;if(l===ao)return!this.desirabilityProfileRoots.has(o)&&(n.includes(o)?ot.tooltip.show(`No weight: <b>${o}</b> is excluded due to a high correlation with other descriptors.`,i,s):ot.tooltip.show(`No weight: <b>${o}</b> is excluded due to a high p-value.`,i,s),!0);if(e.includes(l)&&!n.includes(o))return ot.tooltip.show(`<b>${o}</b> is excluded due to a high p-value; so correlation with <b>${l}</b> is not needed.`,i,s),!0}return!1}});const i=r.col(uo);r.setOptions({rowHeight:75}),i.width=305,i.cellType="html",r.onCellPrepare(t=>{if(null==t.tableColumn)return;if(null==t.tableColumn)return;if(!t.isTableCell)return;if(t.tableColumn.name!==uo)return;const e=r.cell(ro,t.gridRow).value,o=this.desirabilityProfileRoots.get(e);if(null!=o)t.element=o;else{const o=n.includes(e),r=o?"highly correlated with other descriptors":"statistically insignificant",i=o?`No chart shown: <b>${e}</b> is excluded due to a high correlation with other descriptors.`:`No chart shown: <b>${e}</b> is excluded due to a high p-value.`,s=ot.divText(r);s.style.color=yo.SKIPPED,s.classList.add("eda-pmpo-centered-text"),ot.tooltip.bind(s,i),t.element=s}})}updateGrid(){const t=this.view.grid,e=this.predictionName;t.sort([this.predictionName],[!1]);const n=t.col(e);n.format="0.0000",n.isTextColorCoded=!0,t.onCellTooltip((t,n,o)=>{var r;if(t.isColHeader&&t.tableColumn)return t.tableColumn.name===e?(ot.tooltip.show(ot.divV([ot.h2(lo),ot.divText("Scores computed using the trained probabilistic multi-parameter optimization (pMPO) model."),Xo(Go.MAX,!1)]),n,o),!0):null!=this.tresholdedColumn&&t.tableColumn.name===this.tresholdedColumn.name&&(ot.tooltip.show(ot.markdown(null!==(r=this.threshColTooltip)&&void 0!==r?r:""),n,o),!0)})}updateDesirabilityProfileData(t,e){if(null==this.params)return;this.desirabilityProfileRoots.forEach(t=>t.remove()),this.desirabilityProfileRoots.clear();const n=nr(this.params,e,"","",!0);this.desirabilityProfile=nr(this.params,e,"","",!1);const o=t.col(ro).toList(),r=t.col(ao).getRawData(),i=n.properties,s=Object.keys(i);for(const t of s)r[o.indexOf(t)]=i[t].weight;const a=new Xn;a.setProfile(n);const l=a.root.querySelector("div.d4-flex-col.ui-div");null!=l&&l.querySelectorAll("div.d4-flex-row.ui-div.statistics-mpo-row").forEach((t,e)=>{const n=t.children;if(n.length<2)return;const o=n[2];o.style.width="100%",this.desirabilityProfileRoots.set(s[e],o)})}updateRocCurve(e,n){const o=Vo(e,n),r=t.DataFrame.fromColumns([t.Column.fromFloat32Array("Threshold",Mo),t.Column.fromFloat32Array(_o,o.fpr),t.Column.fromFloat32Array(xo,o.tpr)]);return r.meta.formulaLines.addLine({title:"Non-informative baseline",formula:`\${${xo}} = \${${_o}}`,width:1,style:"dashed",min:0,max:1}),this.rocCurve.dataFrame=r,this.rocCurve.setOptions({xColumnName:_o,yColumnName:xo,linesOrderColumnName:_o,linesWidth:5,markerType:"dot",title:`ROC Curve (AUC = ${o.auc.toFixed(3)})`}),o.threshold}updateConfusionMatrix(t,e,n){this.confusionMatrix.dataFrame=t,this.confusionMatrix.setOptions({xColumnName:e,yColumnName:this.boolPredictionName,description:`Threshold: ${n.toFixed(3)} (optimized via Youden's J)`,title:e+" Confusion Matrix"})}getIndecesOfMissingValues(t){const e=[];return t.forEach(t=>{const n=this.missingValsIndeces.get(t);null!=n&&e.push(...n)}),e}setNulls(e,n){const o=e.getRawData();n.forEach(e=>o[e]=t.FLOAT_NULL)}fitAndUpdateViewers(e,n,o,r,i,s,a){const l=mr.fit(e,n,o,r,i,s);this.params=l.params;const u=l.descrStatsTable,c=l.selectedByPvalue,f=l.selectedByCorr,d=n.names(),h=mr.predict(e,this.params,a,this.predictionName),m=this.getIndecesOfMissingValues(f);this.setNulls(h,m),h.colors.setLinear(jo(Go.MAX),{min:h.stats.min,max:h.stats.max}),e.columns.remove(this.predictionName),e.columns.add(h),this.updateGrid(),this.updateDesirabilityProfileData(u,a),this.updateStatisticsGrid(u,d,c,f);const p=this.updateRocCurve(o,h),g=o.name;e.columns.remove(this.boolPredictionName),this.boolPredictionName=e.columns.getUnusedName(g+"(predicted)");const v=function(e,n,o){if(!e.isNumerical)throw new Error("Failed to compute confusion matrix: prediction column must be numerical.");const r=e.length,i=new Array(r),s=e.getRawData();for(let t=0;t<r;++t)i[t]=s[t]>=n;return t.Column.fromList(t.COLUMN_TYPE.BOOL,o,i)}(h,p,this.boolPredictionName);e.columns.add(v),this.updateConfusionMatrix(e,g,p),this.view.dataFrame.selection.setAll(!1,!0)}runTrainingApp(){const e=this.view.dockManager;e.dock(this.getInputForm(!0).form,t.DOCK_TYPE.LEFT,null,void 0,.1);const n=e.findNode(this.view.grid.root);if(null==n)throw new Error("Failed to train pMPO: missing a grid in the table view.");const o=e.dock(this.statGrid,t.DOCK_TYPE.DOWN,n,void 0,.5),r=e.dock(this.rocCurve,t.DOCK_TYPE.RIGHT,o,void 0,.3);e.dock(this.confusionMatrix,t.DOCK_TYPE.RIGHT,r,void 0,.2),this.setRibbons()}getPmpoAppItems(){return{statsGrid:this.statGrid,rocCurve:this.rocCurve,confusionMatrix:this.confusionMatrix,controls:this.getInputForm(!1),profile:this.desirabilityProfile}}getInputForm(e){const n=ot.form([]);n.append(ot.h2("Training data"));const o=function(e){for(const n of e)if(n.type===t.COLUMN_TYPE.BOOL&&n.stats.stdev>0)return n;for(const t of e)if(t.isNumerical&&t.stats.stdev>0)return t;return e[0]}(this.desirabilityColumns),r=()=>{if(null!=this.tresholdedColumn&&(this.table.columns.remove(this.tresholdedColumn.name),this.tresholdedColumn=null),l.value.type===t.COLUMN_TYPE.BOOL)return l.value;const e=l.value.type===t.COLUMN_TYPE.STRING?function(e,n){const o=new Array(e.length),r=e.getRawData(),i=e.categories;for(let t=0;t<e.length;++t)o[t]=n.includes(i[r[t]]);const s=i.filter(t=>!n.includes(t)),a=`✅ ${n.join(", ")}`,l=`❌ ${s.join(", ")}`;return{column:t.Column.fromList(t.COLUMN_TYPE.BOOL,"",o),tooltip:`Desirability based on the selected categories:\n\n **${a}**\n\n **${l}**`}}(l.value,h.value):function(e,n,o){const r=new Array(e.length),i=e.getRawData(),s=function(t){switch(t){case Po.LESS:return(t,e)=>t<e;case Po.LESS_OR_EQUAL:return(t,e)=>t<=e;case Po.GREATER:return(t,e)=>t>e;case Po.GREATER_OR_EQUAL:return(t,e)=>t>=e;default:throw new Error(`Unsupported sign: ${t}`)}}(o);for(let t=0;t<e.length;++t)r[t]=s(i[t],n);return{column:t.Column.fromList(t.COLUMN_TYPE.BOOL,"",r),tooltip:`Desirability based on the condition:\n\n **${e.name} ${o} ${n}**`}}(l.value,f.value,c.value);return this.tresholdedColumn=e.column,this.threshColTooltip=e.tooltip,this.tresholdedColumn.name=this.table.columns.getUnusedName("Desirability"),this.table.columns.add(this.tresholdedColumn),this.tresholdedColumn},i=()=>{if(w())try{this.fitAndUpdateViewers(this.table,t.DataFrame.fromColumns(s.value).columns,r(),b.value,x.value,_.value,g.value)}catch(t){if(t instanceof ar)I.shell.warning(t.message),ot.tooltip.bind(l.input,t.message),ot.tooltip.bind(s.input,t.message);else{const e=t instanceof Error?t.message:Zn+": the platform issue.";I.shell.error(e),ot.tooltip.bind(l.input,e),ot.tooltip.bind(s.input,e)}l.input.classList.add("d4-invalid"),s.input.classList.add("d4-invalid")}},s=ot.input.columns("Descriptors",{table:this.table,nullable:!1,available:this.numericCols.map(t=>t.name),checked:this.numericCols.filter(t=>t.name!==o.name&&t.stats.stdev>0&&t.stats.missingValueCount<t.length).map(t=>t.name),tooltipText:"Descriptor columns used for model construction.",onValueChanged:t=>{null!=t&&(y=!1,C())}});n.append(s.root),s.addValidator(()=>{if(null==s.value||s.value.length<1)return"Select at least one descriptor column.";if(null!=l.value&&s.value.includes(l.value))return"Desirability column cannot be used as a descriptor.";const t=s.value.filter(t=>0===t.stats.stdev).map(t=>t.name);if(t.length>0)return`Descriptor columns with zero variance: ${t.join(", ")}`;const e=s.value.filter(t=>t.stats.missingValueCount===t.length).map(t=>t.name);return e.length>0?`Descriptor columns with only missing values: ${e.join(", ")}`:null});const a=e=>{if(e.type===t.COLUMN_TYPE.BOOL)d.hidden=!0;else{d.hidden=!1;const n=e.type===t.COLUMN_TYPE.STRING;f.root.hidden=n,c.root.hidden=n}},l=ot.input.column("Desirability",{nullable:!1,value:o,table:this.table,filter:t=>this.desirabilityColumns.includes(t),tooltipText:"Desirability column.",onValueChanged:t=>{null!=t&&(m(),a(t),u=!0,f.value=Math.round(100*t.stats.avg)/100,u=!1,y=!1,C())}});n.append(l.root),l.addValidator(()=>{if(null==l.value)return"Select a desirability column.";if(null!=s.value&&s.value.includes(l.value))return"Desirability column cannot be used as a descriptor.";if(l.value.type===t.COLUMN_TYPE.BOOL){if(0===l.value.stats.stdev)return"All desirability values are the same - scoring is not feasible."}else if(l.value.type===t.COLUMN_TYPE.STRING){if(l.value.categories.length<2)return"String desirability column must have at least 2 categories."}else{if(0===l.value.stats.stdev)return l.value.stats.missingValueCount<l.value.length?"All desirability values are the same - scoring is not feasible.":"Empty column cannot be used as desirability column.";if(null==f.value)return"Specify non-null desirability threshold.";if(!lr(l.value,f.value,c.value))return`All compounds are either desired or non-desired for ${l.value.name} ${c.value} ${f.value}. Adjust the threshold or condition.`}return null});let u=!1;const c=ot.input.choice("Condition",{value:Po.DEFAULT,items:Ro,nullable:!1,tooltipText:"How to compare numeric Desirability column values against the threshold.",onValueChanged:t=>{y=!1,C()}}),f=ot.input.float("Threshold",{value:Math.round(100*o.stats.avg)/100,nullable:!1,tooltipText:"Boundary value that separates desired from non-desired compounds.",format:"0.00",onValueChanged:t=>{if(null!=t){if(u)return;y=!1,C()}}});f.addValidator(()=>null==l.value||l.value.type===t.COLUMN_TYPE.BOOL||l.value.type===t.COLUMN_TYPE.STRING?null:null==f.value?"Specify non-null desirability threshold.":lr(l.value,f.value,c.value)?null:"Adjust the threshold to get both desired and non-desired groups.");const d=ot.divV([c.root,f.root]);n.append(d);let h=null;const m=()=>{var e;null!=h&&(h.root.remove(),h=null),(null===(e=l.value)||void 0===e?void 0:e.type)===t.COLUMN_TYPE.STRING&&(h=ot.input.multiChoice("Preferred",{value:ur(l.value.categories),items:l.value.categories,nullable:!1,tooltipText:"Select which categories should be treated as desirable.",onValueChanged:t=>{if(null!=t){if(u)return;y=!1,C()}}}),h.addValidator(()=>null==h.value||0===h.value.length?"Select at least one preferable category.":null!=l.value&&h.value.length===l.value.categories.length?"At least one category must be non-preferable.":null),d.append(h.root))};a(l.value);const p=ot.h2("Settings");n.append(p),ot.tooltip.bind(p,"Settings of the pMPO model.");const g=ot.input.bool("σ correction",{value:!0,tooltipText:"Use the sigmoidal correction to the weighted Gaussian scores.",onValueChanged:t=>{y=!1,C()}});n.append(g.root);const v=this.table.rowCount<=1e4;let y=!1;const A=()=>hr(this,void 0,void 0,function*(){if(yield new Promise(t=>setTimeout(t,50)),w())if(y)i();else{const e=yield this.getOptimalSettings(t.DataFrame.fromColumns(s.value).columns,r(),g.value);"success"===e.state?(b.value=Math.max(e.pValTresh,fo),x.value=Math.max(e.r2Tresh,mo),_.value=Math.max(e.qCutoff,go),y=!0,i()):I.shell.warning(e.msg)}}),w=()=>{const t=[s.validate(),l.validate(),f.validate(),b.validate(),x.validate(),_.validate()];return null!=h&&t.push(h.validate()),t.every(t=>t)},C=()=>{E.value?A():i()},E=ot.input.bool("Auto-tuning",{value:!1,tooltipText:"Automatically select optimal p-value, R², and q-cutoff by maximizing AUC.",onValueChanged:t=>hr(this,void 0,void 0,function*(){N(!t),y||(t?yield A():i())})});n.append(E.root);const b=ot.input.float("p-value",{nullable:!1,min:fo,max:1,step:.001,value:co,format:vo,tooltipText:"P-value threshold. Descriptors with p-values above this threshold are excluded.",onValueChanged:t=>{E.value||(y=!1,null!=t&&t>=fo&&t<=1&&i())}});n.append(b.root),b.addValidator(()=>null==b.value?"P-value is required.":b.value<fo||b.value>1?"P-value must be between 0.001 and 1.":null);const x=ot.input.float("R²",{format:vo,nullable:!1,min:mo,value:ho,max:1,step:.01,tooltipText:"Squared correlation threshold. Descriptors with squared correlation above this threshold are considered highly correlated. Among them, the descriptor with the lower p-value is retained.",onValueChanged:t=>{E.value||(y=!1,null!=t&&t>=mo&&t<=1&&i())}});n.append(x.root),x.addValidator(()=>null==x.value?"R² is required.":x.value<mo||x.value>1?"R² must be between 0.01 and 1.":null);const _=ot.input.float("q-cutoff",{format:vo,nullable:!1,min:go,value:po,max:1,step:.01,tooltipText:"Q-cutoff for the pMPO model computation.",onValueChanged:t=>{E.value||(y=!1,null!=t&&t>=go&&t<=1&&i())}});n.append(_.root),_.addValidator(()=>null==_.value?"Q-cutoff is required.":_.value<go||_.value>1?"Q-cutoff must be between 0.01 and 1.":null);const N=t=>{b.enabled=t,x.enabled=t,_.enabled=t};setTimeout(()=>{i(),v?E.value=!0:i()},10);const M=ot.button("Save",()=>hr(this,void 0,void 0,function*(){null!=this.params?function(t,e,n){Ko(this,void 0,void 0,function*(){const o=ot.input.string("Name",{value:e,nullable:!1}),r=ot.input.textArea("Description",{value:" ",nullable:!0}),i=ot.input.bool("Desirability Profile",{value:!0,tooltipText:"Save the model as an MPO Desirability Profile. If disabled, the model is saved in the pMPO format."}),s=ot.dialog({title:"Save model"}).add(o).add(r).add(i).addButton("Save",()=>Ko(this,void 0,void 0,function*(){try{const e=yield I.dapi.files.list(Ao),s=new Set(e.map(t=>t.name)),a=function(t,e){return function(t,e,n){const o=n(t);if(!e.has(o))return o;let r=2;for(;e.has(n(t,r));)r++;return n(t,r)}(t.trim().replace(/[\s/\\]+/g,"-").replace(/^-|-$/g,"")||"profile",e,(t,e)=>e?`${t}-${e}.json`:`${t}.json`)}(o.value,s),l=`${Ao}/${a}`,u=JSON.stringify(i.value?nr(t,n,o.value,r.value,!1):{type:"Probabilistic MPO Model",name:o.value,description:r.value,properties:Object.fromEntries(t)},null,2);yield I.dapi.files.writeAsText(l,u),I.events.fireCustomEvent("chem-mpo-profile-changed",{}),I.shell.info(`Saved to ${l}`)}catch(t){I.shell.error(`Failed to save: ${t instanceof Error?t.message:"the platform issue"}.`)}s.close()})).show();s.getButton("Save").disabled=!o.validate(),o.onInput.subscribe(()=>s.getButton("Save").disabled=!o.validate())})}(this.params,this.table.name,g.value):I.shell.warning("Failed to save pMPO model: null parameters.")}),"Save model as platform file.");e&&n.append(M);const T=ot.div([n]);return T.classList.add("eda-pmpo-input-form"),{form:T,saveBtn:M}}static validateInputs(e){var n;const o=new Map,{descriptors:r,desirability:i,threshold:s,sign:a,desirableCategories:l,pValue:u,r2:c,qCutoff:f}=e;if(null==u||null==c||null==f)return{valid:!1,errors:o};if(u<=0||u>1||c<0||c>1||f<=0||f>1)return{valid:!1,errors:o};if(null==r||null==i)return{valid:!1,errors:o};if(r.length<1)return o.set("descriptors","Select at least one descriptor column."),{valid:!1,errors:o};if(r.includes(i)){const t="Desirability column cannot be used as a descriptor.";return o.set("descriptors",t),o.set("desirability",t),{valid:!1,errors:o}}const d=r.filter(t=>0===t.stats.stdev).map(t=>t.name);d.length>0&&o.set("descriptors",()=>ot.markdown(`Descriptor columns with zero variance cannot be used: **${d.join(", ")}**`));const h=r.filter(t=>t.stats.missingValueCount===t.length).map(t=>t.name);if(h.length>0&&o.set("descriptors",()=>ot.markdown(`Descriptor columns with only missing values cannot be used: **${h.join(", ")}**`)),i.type===t.COLUMN_TYPE.BOOL)0===i.stats.stdev&&o.set("desirability","All desirability values are the same - scoring is not feasible.");else if(i.type===t.COLUMN_TYPE.STRING){const t=i.categories.length,e=null!==(n=null==l?void 0:l.length)&&void 0!==n?n:0;t<2?o.set("desirability","String desirability column must have at least 2 categories."):0===e?o.set("desirability","Select at least one preferable category."):e===t&&o.set("desirability","At least one category must be non-preferable.")}else 0===i.stats.stdev?o.set("desirability",i.stats.missingValueCount<i.length?"All desirability values are the same - scoring is not feasible.":"Empty column cannot be used as desirability column."):null==s?o.set("desirability","Specify non-null desirability threshold."):lr(i,s,a)||(o.set("desirability",()=>ot.markdown(`All compounds are either desired or non-desired for\n <div align="center">\n **${i.name} ${a} ${s}.**\n </div>\n Adjust the threshold or condition to get both groups.`)),o.set("threshold","Adjust the threshold to get both desired and non-desired groups."));return{valid:!o.size,errors:o}}getDesirabilityColumns(){const e=[];for(const n of this.table.columns)(n.type===t.COLUMN_TYPE.BOOL||n.isNumerical||n.type===t.COLUMN_TYPE.STRING)&&e.push(n);return e}getValidNumericCols(){const t=[];for(const e of this.table.columns)e.isNumerical&&t.push(e);return t}getOptimalSettings(e,n,o){return hr(this,void 0,void 0,function*(){const r=t.TaskBarProgressIndicator.create("Optimizing... ",{cancelable:!0});try{const t=e.names(),{desired:i,nonDesired:s}=Do(this.table,n),a=new Map;t.forEach(t=>{a.set(t,Bo(i.col(t),s.col(t)))});const l=Qo(zo(a),co);if(l.length<1)return r.close(),{pValTresh:0,r2Tresh:0,qCutoff:0,state:"failed",msg:"No descriptors passed the p-value threshold filter."};const u=Jo(e,l),c=t=>{const e=tr(0,l,a,t[0],u),r=er(i,s,e,t[1]),c=mr.predict(this.table,r,o,this.predictionName);return 1-Vo(n,c).auc},f=yield dr(r,c,new Float32Array([ho,po]),Oo,Io,Lo),d=!r.canceled;return r.close(),d?{pValTresh:co,r2Tresh:f.optimalPoint[0],qCutoff:f.optimalPoint[1],state:"success",msg:"Optimization completed successfully."}:{pValTresh:0,r2Tresh:0,qCutoff:0,state:"canceled",msg:"Auto-tuning was canceled by the user."}}catch(t){return r.close(),{pValTresh:0,r2Tresh:0,qCutoff:0,state:"failed",msg:t instanceof Error?t.message:"Optimization failed due to an unexpected error."}}})}}function pr(e){return n=this,o=arguments,i=function*(e,n=!0){const o=yield I.dapi.files.readCsv(To),r=new gr(o,"Drug","CNS","Smiles").getGenerated(e);if(!n){r.columns.add(t.Column.fromList(t.COLUMN_TYPE.BOOL,"Const bool",new Array(e).fill(!0))),r.columns.add(t.Column.fromInt32Array("Const int",new Int32Array(e).fill(1)));const n=r.columns.toList().find(t=>t.isNumerical);if(n){const e=n.clone();e.name=`${n.name} (missing)`;for(let n=0;n<Math.min(5,e.length);++n)e.set(n,t.FLOAT_NULL);r.columns.add(e)}r.columns.add(t.Column.fromFloat32Array("Nulls",new Float32Array(e).fill(t.FLOAT_NULL)));const o=function(e,n){const o=e.toList(),r=new Array(n),i=new Array(n);for(let t=0;t<n;++t)r[t]=o[t]?"active":"non-active",i[t]=o[t]?Math.random()<.5?"perfect":"good":Math.random()<.5?"bad":"worst";return[t.Column.fromList(t.COLUMN_TYPE.STRING,"CNS (strings)",r),t.Column.fromList(t.COLUMN_TYPE.STRING,"CNS (4 categories)",i),t.Column.fromList(t.COLUMN_TYPE.STRING,"Single category",new Array(n).fill("Unknown"))]}(r.col("CNS"),e);for(const t of o)r.columns.add(t)}return r},new((r=void 0)||(r=Promise))(function(t,e){function s(t){try{l(i.next(t))}catch(t){e(t)}}function a(t){try{l(i.throw(t))}catch(t){e(t)}}function l(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r(function(t){t(n)})).then(s,a)}l((i=i.apply(n,o||[])).next())});var n,o,r,i}class gr{constructor(t,e,n,o){this.sourceDf=t,this.drugName=e,this.desirabilityColName=n,this.smilesColName=o;const r=t.columns.toList().filter(t=>t.isNumerical).map(t=>t.name),{desired:i,nonDesired:s}=Do(t,t.col(n));this.descriptorStats=new Map,r.forEach(t=>{this.descriptorStats.set(t,Bo(i.col(t),s.col(t)))}),this.desiredProbability=i.rowCount/t.rowCount}getGenerated(e){if(e<=1)throw new Error("Failed to generate pMPO data: sample count must be greater than 1.");let n;if(e<=this.sourceDf.rowCount){const o=t.BitSet.create(this.sourceDf.rowCount);for(let t=0;t<e;++t)o.set(t,!0);n=this.sourceDf.clone(o)}else n=this.getClonedSourceDfWithFloatNumericCols().append(this.getSyntheticTable(e-this.sourceDf.rowCount));for(const e of n.columns)if(e.type===t.COLUMN_TYPE.BOOL&&0===e.stats.stdev){let t=e.get(0);e.set(0,!t),t=e.get(1),e.set(1,!t)}return n}getSyntheticTable(e){const n=new Array(e);for(let t=0;t<e;++t)n[t]=Math.random()<this.desiredProbability;const o=[this.getDrugColumn(e),this.getSmilesColumn(e),t.Column.fromList(t.COLUMN_TYPE.BOOL,this.desirabilityColName,n)];return this.descriptorStats.forEach((r,i)=>{const s=new Float32Array(e);for(let t=0;t<e;++t)n[t]?s[t]=tn.normal.sample(r.desAvg,r.desStd):s[t]=tn.normal.sample(r.nonDesAvg,r.nonDesStd);o.push(t.Column.fromFloat32Array(i,s))}),t.DataFrame.fromColumns(o)}getDrugColumn(e){return t.Column.fromList(t.COLUMN_TYPE.STRING,this.drugName,Array.from({length:e},(t,e)=>`Synthetic drug ${e+1}`))}getSmilesColumn(e){return t.Column.fromList(t.COLUMN_TYPE.STRING,this.smilesColName,Array.from({length:e},()=>"C"))}getClonedSourceDfWithFloatNumericCols(){const e=[];this.sourceDf.columns.toList().forEach(n=>{n.isNumerical?e.push(n.clone().convertTo(t.COLUMN_TYPE.FLOAT)):e.push(n.clone())});const n=t.DataFrame.fromColumns(e);return n.name=this.sourceDf.name,n}}var vr=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const yr="CNS",Ar=["TPSA","TPSA_S","HBA","HBD","MW","nAtoms","cLogD_ACD_v15","mapKa","cLogP_Biobyte","mbpKa","cLogP_ACD_v15","ALogP98"],wr="Score",Cr="Drug",Er="Sigmoidal",br=[Er,"Gaussian"];function xr(e=20){const n=Math.floor(e/2),o=[],r=new Float64Array(e),i=new Float64Array(e),s=new Float64Array(e);for(let t=0;t<e;t++){o.push(t<n);const e=t<n?t:t-n,a=e/Math.max(n-1,1);r[t]=t<n?9+2*a:1+2*a,i[t]=t<n?18+4*a:3+4*a,s[t]=5+.1*e}return t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.BOOL,"des",o),t.Column.fromFloat64Array("d1",r),t.Column.fromFloat64Array("d2",i),t.Column.fromFloat64Array("d3",s)])}function _r(e,n){return t.DataFrame.fromColumns(e.columns.byNames(n)).columns}function Nr(){const t=xr();return{descriptors:t.columns.byNames(["d1","d2"]),desirability:t.col("des"),threshold:null,sign:Po.DEFAULT,desirableCategories:null,pValue:co,r2:ho,qCutoff:po}}function Mr(t,e,n,o){if(0===n)return[];const r=t.length;if(e.length!==r)throw new Error("Sense array length must match number of dimensions");const i=new Uint32Array(n);for(let t=0;t<n;t++)i[t]=t;i.sort((n,o)=>e[0]===Go.MIN?t[0][n]-t[0][o]:t[0][o]-t[0][n]);const s=Array(n).fill(!0),a=[];null==o||o.forEach(t=>s[t]=!1);for(const n of i){if(!s[n])continue;let o=!1;for(const i of a){let s=!0,a=!1;for(let o=0;o<r;o++){const r=t[o][i],l=t[o][n];e[o]===Go.MIN?(r>l&&(s=!1),r<l&&(a=!0)):(r<l&&(s=!1),r>l&&(a=!0))}if(s&&a){o=!0;break}}o?s[n]=!1:a.push(n)}return s}b("Probabilistic MPO: Computation",()=>{br.forEach(e=>{const n=e==Er;C("Correctness: "+e,()=>vr(void 0,void 0,void 0,function*(){let o=null,r=null,i=null,s=[],a=null,l=null,u=null,c=null;try{if(o=yield I.dapi.files.readCsv(To),r=yield I.dapi.files.readCsv(So),i=o.col(yr),s=o.columns.byNames(Ar),null==i)throw new Error;const f=mr.fit(o,t.DataFrame.fromColumns(s).columns,i,co,ho,po),d=mr.predict(o,f.params,n,wr);a=o.col(Cr),l=r.col(Cr),u=r.col(e),c=function(t,e,n,o){let r=0;const i=t.toList(),s=n.toList(),a=e.getRawData(),l=o.getRawData();return i.forEach((t,e)=>{const n=s.indexOf(t);if(n<0)throw new Error(`Failed to compare pMPO scores: the "${t}" drug is missing in the reference data.`);r=Math.max(r,Math.abs(a[e]-l[n]))}),r}(a,d,l,u)}catch(t){I.shell.error(t.message)}E(null!==o,!0,"Failed to load the source data: "+To),E(null!==r,!0,"Failed to load the scores data: "+So),E(null!==i,!0,"Inconsistent source data: no column "+yr),E(s.length,Ar.length,"Inconsistent source data: no enough of columns"),E(null!==a,!0,"Inconsistent source data: no column "+Cr),E(null!==l,!0,"Inconsistent reference data: no column "+Cr),E(null!==u,!0,"Inconsistent reference data: no column "+wr),E(null!==c,!0,"Failed to compare pMPO scores with the reference data"),E(c<1e-6,!0,"Max absolute deviation of pMPO scores exceeds the threshold (0.000001)")}),{timeout:1e4})}),C("Performance: 100K drugs, "+Ar.length+" descriptors",()=>vr(void 0,void 0,void 0,function*(){let e=null,n=null,o=[];try{if(e=yield pr(1e5),n=e.col(yr),o=e.columns.byNames(Ar),null==n)throw new Error;const r=mr.fit(e,t.DataFrame.fromColumns(o).columns,n,co,ho,po);mr.predict(e,r.params,!0,wr)}catch(t){I.shell.error(t.message)}E(null!==e,!0,"Failed to load the source data: "+To),E(null!==n,!0,"Inconsistent source data: no column "+yr),E(o.length,Ar.length,"Inconsistent source data: no enough of columns")}),{timeout:1e4})}),b("Probabilistic MPO: API",()=>{C("isApplicable: rejects p-value below minimum",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=t.col("des"),n=_r(t,["d1","d2"]);E(mr.isApplicable(n,e,1e-4,ho,po),!1)})),C("isApplicable: rejects R² below minimum",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=t.col("des"),n=_r(t,["d1","d2"]);E(mr.isApplicable(n,e,co,.001,po),!1)})),C("isApplicable: rejects q-cutoff below minimum",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=t.col("des"),n=_r(t,["d1","d2"]);E(mr.isApplicable(n,e,co,ho,.001),!1)})),C("isApplicable: rejects too few samples",()=>vr(void 0,void 0,void 0,function*(){const t=xr(8),e=t.col("des"),n=_r(t,["d1","d2"]);E(mr.isApplicable(n,e,co,ho,po),!1)})),C("isApplicable: rejects single-category desirability",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.BOOL,"des",new Array(20).fill(!0)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=e.col("des"),o=_r(e,["d1","d2"]);E(mr.isApplicable(o,n,co,ho,po),!1)})),C("isApplicable: rejects non-numerical descriptor",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.BOOL,"des",Array.from({length:20},(t,e)=>e<10)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromStrings("strCol",Array.from({length:20},(t,e)=>"a"+e))]),n=e.col("des"),o=_r(e,["d1","strCol"]);E(mr.isApplicable(o,n,co,ho,po),!1)})),C("isApplicable: rejects all-constant descriptors",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.BOOL,"des",Array.from({length:20},(t,e)=>e<10)),t.Column.fromFloat64Array("c1",new Float64Array(20).fill(5)),t.Column.fromFloat64Array("c2",new Float64Array(20).fill(3))]),n=e.col("des"),o=_r(e,["c1","c2"]);E(mr.isApplicable(o,n,co,ho,po),!1)})),C("isApplicable: accepts valid data at minimum sample count",()=>vr(void 0,void 0,void 0,function*(){const t=xr(10),e=t.col("des"),n=_r(t,["d1","d2"]);E(mr.isApplicable(n,e,co,ho,po),!0)})),C("isTableValid: rejects table with 1 row",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromFloat64Array("a",new Float64Array([1])),t.Column.fromFloat64Array("b",new Float64Array([2]))]);E(mr.isTableValid(e,!1),!1)})),C("isTableValid: rejects all-constant numeric columns",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromFloat64Array("a",new Float64Array(10).fill(5)),t.Column.fromFloat64Array("b",new Float64Array(10).fill(3))]);E(mr.isTableValid(e,!1),!1)})),C("isTableValid: rejects single non-constant numeric column",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromFloat64Array("a",Float64Array.from({length:10},(t,e)=>e)),t.Column.fromFloat64Array("b",new Float64Array(10).fill(3))]);E(mr.isTableValid(e,!1),!1)})),C("isTableValid: accepts two non-constant numeric columns",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromFloat64Array("a",Float64Array.from({length:10},(t,e)=>e)),t.Column.fromFloat64Array("b",Float64Array.from({length:10},(t,e)=>2*e))]);E(mr.isTableValid(e,!1),!0)})),C("fit: returns non-empty params",()=>vr(void 0,void 0,void 0,function*(){const t=xr();E(mr.fit(t,_r(t,["d1","d2"]),t.col("des"),co,ho,po).params.size>0,!0,"Expected non-empty params")})),C("fit: weights sum to 1",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=mr.fit(t,_r(t,["d1","d2"]),t.col("des"),co,ho,po);let n=0;e.params.forEach(t=>n+=t.weight),E(Math.abs(n-1)<1e-10,!0,`Weights sum ${n} should equal 1.0`)})),C("fit: selectedByCorr is subset of selectedByPvalue",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=mr.fit(t,_r(t,["d1","d2","d3"]),t.col("des"),co,ho,po);E(e.selectedByCorr.every(t=>e.selectedByPvalue.includes(t)),!0,"selectedByCorr must be a subset of selectedByPvalue")})),C("fit: statistics table row count matches descriptor count",()=>vr(void 0,void 0,void 0,function*(){const t=["d1","d2","d3"],e=xr();E(mr.fit(e,_r(e,t),e.col("des"),co,ho,po).descrStatsTable.rowCount,t.length)})),C("fit: throws on non-applicable data",()=>vr(void 0,void 0,void 0,function*(){const t=xr(8);let e=!1;try{mr.fit(t,_r(t,["d1","d2"]),t.col("des"),co,ho,po)}catch(t){e=!0}E(e,!0,"Expected fit to throw on non-applicable data")})),C("fit: throws when no descriptors pass p-value filter",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.BOOL,"des",Array.from({length:20},(t,e)=>e<10)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e%10+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*(e%10+1)))]);let n=!1;try{mr.fit(e,_r(e,["d1","d2"]),e.col("des"),co,ho,po)}catch(t){n=!0}E(n,!0,"Expected fit to throw when no descriptors pass p-value filter")})),C("predict: returns column with correct length",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=mr.fit(t,_r(t,["d1","d2"]),t.col("des"),co,ho,po);E(mr.predict(t,e.params,!0,wr).length,t.rowCount)})),C("predict: scores are non-negative",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=mr.fit(t,_r(t,["d1","d2"]),t.col("des"),co,ho,po),n=mr.predict(t,e.params,!0,wr).getRawData();let o=!0;for(let t=0;t<n.length;t++)if(n[t]<0){o=!1;break}E(o,!0,"All scores should be non-negative")})),C("predict: scores do not exceed 1",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=mr.fit(t,_r(t,["d1","d2"]),t.col("des"),co,ho,po),n=mr.predict(t,e.params,!0,wr).getRawData();let o=0;for(let t=0;t<n.length;t++)o=Math.max(o,n[t]);E(o<=1+1e-10,!0,`Max score ${o} should not exceed 1.0`)})),C("predict: sigmoid and Gaussian modes produce different scores",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=mr.fit(t,_r(t,["d1","d2"]),t.col("des"),co,ho,po),n=mr.predict(t,e.params,!0,"sig").getRawData(),o=mr.predict(t,e.params,!1,"gau").getRawData();let r=!1;for(let e=0;e<t.rowCount;e++)if(Math.abs(n[e]-o[e])>1e-12){r=!0;break}E(r,!0,"Sigmoid and Gaussian modes should produce different scores")})),C("predict: throws for missing column",()=>vr(void 0,void 0,void 0,function*(){const e=xr(),n=mr.fit(e,_r(e,["d1","d2"]),e.col("des"),co,ho,po),o=t.DataFrame.fromColumns([t.Column.fromFloat64Array("other",Float64Array.from({length:5},(t,e)=>e))]);let r=!1;try{mr.predict(o,n.params,!0,wr)}catch(t){r=!0}E(r,!0,"Expected predict to throw for missing column")})),C("validateInputs: rejects null p-value",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.pValue=null;const e=mr.validateInputs(t);E(e.valid,!1),E(e.errors.size,0,"No input-specific errors for null settings")})),C("validateInputs: rejects null R²",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.r2=null,E(mr.validateInputs(t).valid,!1)})),C("validateInputs: rejects null q-cutoff",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.qCutoff=null,E(mr.validateInputs(t).valid,!1)})),C("validateInputs: rejects p-value out of range",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.pValue=0,E(mr.validateInputs(t).valid,!1),t.pValue=1.5,E(mr.validateInputs(t).valid,!1)})),C("validateInputs: rejects R² out of range",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.r2=-.1,E(mr.validateInputs(t).valid,!1),t.r2=1.5,E(mr.validateInputs(t).valid,!1)})),C("validateInputs: rejects q-cutoff out of range",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.qCutoff=0,E(mr.validateInputs(t).valid,!1),t.qCutoff=1.5,E(mr.validateInputs(t).valid,!1)})),C("validateInputs: rejects null descriptors",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.descriptors=null,E(mr.validateInputs(t).valid,!1)})),C("validateInputs: rejects null desirability",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.desirability=null,E(mr.validateInputs(t).valid,!1)})),C("validateInputs: rejects empty descriptors",()=>vr(void 0,void 0,void 0,function*(){const t=Nr();t.descriptors=[];const e=mr.validateInputs(t);E(e.valid,!1),E(e.errors.has("descriptors"),!0)})),C("validateInputs: rejects desirability among descriptors",()=>vr(void 0,void 0,void 0,function*(){const t=xr(),e=t.col("des"),n=mr.validateInputs({descriptors:[t.col("d1"),e],desirability:e,threshold:null,sign:Po.DEFAULT,desirableCategories:null,pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("descriptors"),!0),E(n.errors.has("desirability"),!0)})),C("validateInputs: rejects zero-variance descriptors",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.BOOL,"des",Array.from({length:20},(t,e)=>e<10)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("constCol",new Float64Array(20).fill(5))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("constCol")],desirability:e.col("des"),threshold:null,sign:Po.DEFAULT,desirableCategories:null,pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("descriptors"),!0)})),C("validateInputs: accepts valid boolean desirability",()=>vr(void 0,void 0,void 0,function*(){const t=Nr(),e=mr.validateInputs(t);E(e.valid,!0),E(e.errors.size,0)})),C("validateInputs: rejects all-true boolean desirability",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromList(t.COLUMN_TYPE.BOOL,"des",new Array(20).fill(!0)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:null,sign:Po.DEFAULT,desirableCategories:null,pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("desirability"),!0)})),C("validateInputs: rejects string desirability with single category",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromStrings("des",new Array(20).fill("active")),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:null,sign:Po.DEFAULT,desirableCategories:["active"],pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("desirability"),!0)})),C("validateInputs: rejects no selected categories",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromStrings("des",Array.from({length:20},(t,e)=>e<10?"active":"inactive")),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:null,sign:Po.DEFAULT,desirableCategories:[],pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("desirability"),!0)})),C("validateInputs: rejects all categories selected",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromStrings("des",Array.from({length:20},(t,e)=>e<10?"active":"inactive")),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:null,sign:Po.DEFAULT,desirableCategories:["active","inactive"],pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("desirability"),!0)})),C("validateInputs: accepts valid string desirability",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromStrings("des",Array.from({length:20},(t,e)=>e<10?"active":"inactive")),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e<10?e+10:e)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>e<10?3*e:e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:null,sign:Po.DEFAULT,desirableCategories:["active"],pValue:co,r2:ho,qCutoff:po});E(n.valid,!0),E(n.errors.size,0)})),C("validateInputs: rejects constant numeric desirability",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromFloat64Array("des",new Float64Array(20).fill(5)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:5,sign:Po.DEFAULT,desirableCategories:null,pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("desirability"),!0)})),C("validateInputs: rejects null threshold for numeric desirability",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromFloat64Array("des",Float64Array.from({length:20},(t,e)=>e)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:null,sign:Po.DEFAULT,desirableCategories:null,pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("desirability"),!0)})),C("validateInputs: rejects threshold producing single group",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromFloat64Array("des",Float64Array.from({length:20},(t,e)=>e)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:100,sign:Po.LESS_OR_EQUAL,desirableCategories:null,pValue:co,r2:ho,qCutoff:po});E(n.valid,!1),E(n.errors.has("desirability"),!0),E(n.errors.has("threshold"),!0)})),C("validateInputs: accepts valid numeric desirability with threshold",()=>vr(void 0,void 0,void 0,function*(){const e=t.DataFrame.fromColumns([t.Column.fromFloat64Array("des",Float64Array.from({length:20},(t,e)=>e)),t.Column.fromFloat64Array("d1",Float64Array.from({length:20},(t,e)=>e+1)),t.Column.fromFloat64Array("d2",Float64Array.from({length:20},(t,e)=>2*e))]),n=mr.validateInputs({descriptors:[e.col("d1"),e.col("d2")],desirability:e.col("des"),threshold:10,sign:Po.LESS_OR_EQUAL,desirableCategories:null,pValue:co,r2:ho,qCutoff:po});E(n.valid,!0),E(n.errors.size,0)}))});var Tr=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const Sr=5e3,Or=1e6,Ir="1M points, 2D";function Lr(t,e,n=42){const o=[];let r=n;const i=()=>(r=(1664525*r+1013904223)%4294967296,r/4294967296);for(let n=0;n<e;n++){const e=new Float32Array(t);for(let o=0;o<t;o++)e[o]=100*i()+10*n;o.push(e)}return o}function Pr(t,e){const n=[];for(let o=0;o<t;o++)"all-min"===e?n.push(Go.MIN):"all-max"===e?n.push(Go.MAX):n.push(o%2==0?Go.MIN:Go.MAX);return n}function Rr(t,e){const n=Math.floor(t*e),o=new Set,r=Math.floor(t/n);for(let t=0;t<n;t++)o.add(t*r);return o}function Fr(t,e){if(t.length!==e)throw new Error(`Invalid mask length: expected ${e}, got ${t.length}`);const n=t.filter(t=>t).length;if(0===n)throw new Error("No optimal points found");n===e&&I.shell.warning("All points are optimal - data may be degenerate")}b("Pareto optimization",()=>{C(`Performance: ${Ir}`,()=>Tr(void 0,void 0,void 0,function*(){var t;let e=null,n=null;try{e=Mr(Lr(Or,2),Pr(2,"mixed"),Or),Fr(e,Or)}catch(t){n=t,I.shell.error(n.message)}E(null!==e,!0,"Failed to compute Pareto mask"),E(null===n,!0,null!==(t=null==n?void 0:n.message)&&void 0!==t?t:"")}),{timeout:Sr}),C(`Performance: ${Ir}, all minimize`,()=>Tr(void 0,void 0,void 0,function*(){var t;let e=null,n=null;try{e=Mr(Lr(Or,2),Pr(2,"all-min"),Or),Fr(e,Or)}catch(t){n=t,I.shell.error(n.message)}E(null!==e,!0,"Failed to compute Pareto mask"),E(null===n,!0,null!==(t=null==n?void 0:n.message)&&void 0!==t?t:"")}),{timeout:Sr}),C(`Performance: ${Ir}, all maximize`,()=>Tr(void 0,void 0,void 0,function*(){var t;let e=null,n=null;try{e=Mr(Lr(Or,2),Pr(2,"all-max"),Or),Fr(e,Or)}catch(t){n=t,I.shell.error(n.message)}E(null!==e,!0,"Failed to compute Pareto mask"),E(null===n,!0,null!==(t=null==n?void 0:n.message)&&void 0!==t?t:"")}),{timeout:Sr}),C(`Performance: ${Ir} with 10% null indices`,()=>Tr(void 0,void 0,void 0,function*(){var t;let e=null,n=null;try{const t=Lr(Or,2),n=Pr(2,"mixed"),o=Rr(Or,.1);e=Mr(t,n,Or,o),Fr(e,Or)}catch(t){n=t,I.shell.error(n.message)}E(null!==e,!0,"Failed to compute Pareto mask"),E(null===n,!0,null!==(t=null==n?void 0:n.message)&&void 0!==t?t:"")}),{timeout:Sr}),C(`Performance: ${Ir} with 25% null indices`,()=>Tr(void 0,void 0,void 0,function*(){var t;let e=null,n=null;try{const t=Lr(Or,2),n=Pr(2,"mixed"),o=Rr(Or,.25);e=Mr(t,n,Or,o),Fr(e,Or)}catch(t){n=t,I.shell.error(n.message)}E(null!==e,!0,"Failed to compute Pareto mask"),E(null===n,!0,null!==(t=null==n?void 0:n.message)&&void 0!==t?t:"")}),{timeout:Sr}),C("Edge case: Empty dataset",()=>Tr(void 0,void 0,void 0,function*(){var t;let e=null,n=null;try{e=Mr([new Float32Array(0),new Float32Array(0)],Pr(2,"mixed"),0)}catch(t){n=t,I.shell.error(n.message)}E(null!==e,!0,"Failed to compute Pareto mask"),E(e.length,0,"Empty dataset should return empty mask"),E(null===n,!0,null!==(t=null==n?void 0:n.message)&&void 0!==t?t:"")}),{timeout:Sr}),C("Edge case: Single point",()=>Tr(void 0,void 0,void 0,function*(){var t;let e=null,n=null;try{e=Mr([new Float32Array([1]),new Float32Array([2])],Pr(2,"mixed"),1)}catch(t){n=t,I.shell.error(n.message)}E(null!==e,!0,"Failed to compute Pareto mask"),E(e.length,1,"Single point dataset should return mask with one element"),E(e[0],!0,"Single point should be optimal"),E(null===n,!0,null!==(t=null==n?void 0:n.message)&&void 0!==t?t:"")}),{timeout:Sr}),C("Edge case: All identical points",()=>Tr(void 0,void 0,void 0,function*(){var t;let e=null,n=null;try{const t=100;e=Mr([new Float32Array(t).fill(5),new Float32Array(t).fill(10)],Pr(2,"mixed"),t)}catch(t){n=t,I.shell.error(n.message)}E(null!==e,!0,"Failed to compute Pareto mask"),E(e.length,100,"Should return mask with correct length"),E(e.filter(t=>t).length>0,!0,"At least some identical points should be optimal"),E(null===n,!0,null!==(t=null==n?void 0:n.message)&&void 0!==t?t:"")}),{timeout:Sr})});var Dr=function(t,e,n,o){return new(n||(n=Promise))(function(r,i){function s(t){try{l(o.next(t))}catch(t){i(t)}}function a(t){try{l(o.throw(t))}catch(t){i(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n(function(t){t(e)})).then(s,a)}l((o=o.apply(t,e||[])).next())})};const Br=new t.Package;function kr(e,s,a){return Dr(this,void 0,void 0,function*(){const d=yield function(t){var e,s,a;return n(this,void 0,void 0,function*(){const d=(null==t?void 0:t.nodeOptions)?t.nodeOptions.package:grok.functions.getCurrentCall().func.package;if(!d)throw new Error("Can't run tests outside of the package");const h=null===(e=d.packageOwner)||void 0===e?void 0:e.match(/<([^>]*)>/),m=h?h[1]:"";null!=d&&(yield _(d));const p=[];console.log("Running tests..."),console.log(t),null!=t||(t={}),null!==(s=(a=t).testContext)&&void 0!==s||(a.testContext=new A),grok.shell.clearLastError();const g=function(){const t=[];return console.log=(...e)=>{t.push(...e),i(...e)},console.info=(...e)=>{t.push(...e),l(...e)},console.warn=(...e)=>{t.push(...e),u(...e)},console.error=(...e)=>{t.push(...e),c(...e)},t}();yield function(t,e){var o,r,s,a,f,h;return n(this,void 0,void 0,function*(){try{let l=null!=(null==e?void 0:e.skipToCategory),u=!1;for(const[c,g]of Object.entries(t)){if(null===(o=e.exclude)||void 0===o?void 0:o.some(t=>c.startsWith(t)))continue;if(null!=(null==e?void 0:e.category)&&!c.toLowerCase().startsWith(null==e?void 0:e.category.toLowerCase().trim()))continue;if(l)if(u)l=!1;else{if(null==(null==e?void 0:e.skipToCategory)||c.toLowerCase().trim()!==(null==e?void 0:e.skipToCategory.toLowerCase().trim()))continue;u=!0}const t=null===(r=g.tests)||void 0===r?void 0:r.every(t=>{var n;return(null===(n=t.options)||void 0===n?void 0:n.skipReason)||null!=(null==e?void 0:e.test)&&e.test.toLowerCase()!==t.name.toLowerCase()});if(!t){const t=(null!==(s=g.tests)&&void 0!==s?s:[]).filter(t=>{var n;return(null===(n=t.options)||void 0===n?void 0:n.skipReason)||null!=(null==e?void 0:e.test)&&e.test.toLowerCase()!==t.name.toLowerCase()}).length;i(`Package testing: Started {{${c}}}${t>0?` skipped {{${t}}}`:""}`),g.beforeStatus=yield v(g.before,c)}let A,w=null!==(a=g.tests)&&void 0!==a?a:[];e.stressTest&&(w=w.filter(t=>{var e;return null===(e=t.options)||void 0===e?void 0:e.stressTest}),w=T(w)),(null!==(h=null===(f=e.tags)||void 0===f?void 0:f.length)&&void 0!==h?h:0)>0&&(w=w.filter(t=>{var n,o;return null===(o=null===(n=t.options)||void 0===n?void 0:n.tags)||void 0===o?void 0:o.some(t=>{var n;return(null!==(n=null==e?void 0:e.tags)&&void 0!==n?n:[]).includes(t)})})),g.beforeStatus?(A=Array.from(w.map(t=>({date:(new Date).toISOString(),category:c,name:t.name,success:!1,result:"before() failed",ms:0,skipped:!1,logs:"",owner:m,package:d.name,widgetsDifference:0,flaking:DG.Test.isReproducing}))),A.forEach(t=>n(this,void 0,void 0,function*(){return yield grok.shell.reportTest("package",t)}))):A=yield y(g,e,l);const C=A.filter(t=>"skipped"!=t.result);if(t||(g.afterStatus=yield v(g.after,c)),g.afterStatus&&(i(`Package testing: Category after() {{${c}}} failed`),i(`Package testing: Result for {{${c}}} after: ${g.afterStatus}`),C.push({date:(new Date).toISOString(),category:c,name:"after",success:!1,result:g.afterStatus,ms:0,skipped:!1,logs:"",owner:m,package:d.name,widgetsDifference:0,flaking:DG.Test.isReproducing})),g.beforeStatus&&(i(`Package testing: Category before() {{${c}}} failed`),i(`Package testing: Result for {{${c}}} before: ${g.beforeStatus}`),C.push({date:(new Date).toISOString(),category:c,name:"before",success:!1,result:g.beforeStatus,ms:0,skipped:!1,logs:"",owner:m,package:d.name,widgetsDifference:0,flaking:DG.Test.isReproducing})),p.push(...C),e.returnOnFail&&C.some(t=>!t.success&&!t.skipped&&t.name!==e.skipToTest))break}}finally{console.log=i,console.info=l,console.warn=u,console.error=c}if(e.testContext.catchUnhandled&&!DG.Test.isInBenchmark){yield S(1e3);const t=yield grok.shell.lastError;if(null!=t){const e={logs:"",date:(new Date).toISOString(),category:"Unhandled exceptions",name:"Exception",result:null!=t?t:"",success:!t,ms:0,skipped:!1,owner:null!=m?m:"",package:d.name,widgetsDifference:0};i(`Package testing: Unhandled Exception: ${t}`),p.push(Object.assign(Object.assign({},e),{flaking:DG.Test.isReproducing&&!t})),e.package=d.name,yield grok.shell.reportTest("package",e)}}})}(f,t);for(let t of p)t.result=t.result.toString().replace(/"/g,"'"),null!=t.logs&&(t.logs=t.logs.toString().replace(/"/g,"'"));return p;function v(t,e){return n(this,void 0,void 0,function*(){let o;try{void 0!==t&&(yield O(()=>n(this,void 0,void 0,function*(){yield t()}),1e5,`before ${e}: timeout error`))}catch(t){o=yield N(t)}return o})}function y(t,e,i){var s,a,l,u,c,f,h,p,v,y,A,C,E,b,x,_,N,T;return n(this,void 0,void 0,function*(){let n=null!==(s=t.tests)&&void 0!==s?s:[];const S=[],O=w();if(t.clear){let s=i&&null!=e.skipToTest;for(let i=0;i<n.length;i++){n[i].options&&void 0===(null===(a=n[i].options)||void 0===a?void 0:a.benchmark)&&(n[i].options||(n[i].options={}),n[i].options.benchmark=null!==(l=t.benchmarks)&&void 0!==l&&l);let C=n[i];if(e.test&&e.test.toLowerCase()!==C.name.toLowerCase())continue;if(s){if(null==(null==e?void 0:e.skipToTest)||C.name.toLowerCase().trim()!==(null==e?void 0:e.skipToTest.toLowerCase().trim()))continue;s=!1}(null==C?void 0:C.options)&&(C.options.owner=null!==(h=null!==(f=null!==(c=null===(u=n[i].options)||void 0===u?void 0:u.owner)&&void 0!==c?c:null==t?void 0:t.owner)&&void 0!==f?f:m)&&void 0!==h?h:"");let E=yield M(C,null==e?void 0:e.test,g,DG.Test.isInBenchmark?null!==(v=null===(p=n[i].options)||void 0===p?void 0:p.benchmarkTimeout)&&void 0!==v?v:r:null!==(A=null===(y=n[i].options)||void 0===y?void 0:y.timeout)&&void 0!==A?A:o,d.name,e.verbose);if(E&&(S.push(Object.assign(Object.assign({},E),{widgetsDifference:w()-O})),e.returnOnFail&&e.skipToTest!==C.name&&!E.success&&!E.skipped))return S;e.nodeOptions||(grok.shell.closeAll(),DG.Balloon.closeAll())}}else{let o=i&&null!=e.skipToTest;for(let i=0;i<n.length;i++){let s=n[i];if(e.test&&e.test.toLowerCase()!==s.name.toLowerCase())continue;if(o){null!=(null==e?void 0:e.skipToTest)&&s.name.toLowerCase().trim()===(null==e?void 0:e.skipToTest.toLowerCase().trim())&&(o=!1);continue}(null==s?void 0:s.options)&&(s.options.owner=null!==(x=null!==(b=null!==(E=null===(C=n[i].options)||void 0===C?void 0:C.owner)&&void 0!==E?E:null==t?void 0:t.owner)&&void 0!==b?b:m)&&void 0!==x?x:"");let a=yield M(s,null==e?void 0:e.test,g,DG.Test.isInBenchmark?null!==(N=null===(_=n[i].options)||void 0===_?void 0:_.benchmarkTimeout)&&void 0!==N?N:r:null===(T=n[i].options)||void 0===T?void 0:T.timeout,d.name,e.verbose);if(a&&(S.push(Object.assign(Object.assign({},a),{widgetsDifference:w()-O})),e.returnOnFail&&e.skipToTest!==s.name&&!a.success&&!a.skipped))return S}}return S})}function w(){var t;if("undefined"!=typeof process)return 0;let e=-1;try{e=DG.Widget.getAll().length}catch(e){console.warn(null!==(t=e.message)&&void 0!==t?t:e)}return e}})}({category:e,test:s,testContext:a});return t.DataFrame.fromObjects(d)})}function Ur(){return Dr(this,void 0,void 0,function*(){yield _(Br,Br.getModule("package-test.js"))})}})(),eda_test=a})();
|
|
2
2
|
//# sourceMappingURL=package-test.js.map
|