@datagrok/eda 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -4
- package/dist/111.js +1 -1
- package/dist/111.js.map +1 -1
- package/dist/153.js +1 -1
- package/dist/153.js.map +1 -1
- package/dist/234.js +1 -1
- package/dist/234.js.map +1 -1
- package/dist/260.js +1 -1
- package/dist/260.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/412.js +1 -1
- package/dist/412.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/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/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/91.js +1 -1
- package/dist/91.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/package.json +11 -10
- package/src/anova/anova-tools.ts +308 -0
- package/src/anova/anova-ui.ts +258 -0
- package/src/eda-ui.ts +0 -9
- package/src/global.d.ts +13 -0
- package/src/missing-values-imputation/ui-constants.ts +2 -0
- package/src/missing-values-imputation/ui.ts +7 -7
- package/src/package-test.ts +7 -1
- package/src/package.ts +6 -12
- package/src/tests/anova-tests.ts +87 -0
- package/src/tests/linear-methods-tests.ts +1 -1
package/dist/package-test.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var eda_test;(()=>{var t={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 s,i=Object.assign({},r),a="object"==typeof window,c="function"==typeof importScripts,l=("object"==typeof process&&"object"==typeof process.versions&&process.versions.node,"");(a||c)&&(c?l=self.location.href:"undefined"!=typeof document&&document.currentScript&&(l=document.currentScript.src),o&&(l=o),l=0!==l.indexOf("blob:")?l.substr(0,l.replace(/[?#].*/,"").lastIndexOf("/")+1):"",c&&(s=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 u,h,f=r.printErr||console.warn.bind(console);Object.assign(r,i),i=null,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.quit&&r.quit,r.wasmBinary&&(u=r.wasmBinary),r.noExitRuntime,"object"!=typeof WebAssembly&&_("no native wasm support detected");var m,d,y,p=!1;function g(){var t=h.buffer;r.HEAP8=m=new Int8Array(t),r.HEAP16=new Int16Array(t),r.HEAP32=new Int32Array(t),r.HEAPU8=d=new Uint8Array(t),r.HEAPU16=new Uint16Array(t),r.HEAPU32=y=new Uint32Array(t),r.HEAPF32=new Float32Array(t),r.HEAPF64=new Float64Array(t)}var E=[],C=[],A=[],w=0,v=null,N=null;function _(t){r.onAbort&&r.onAbort(t),f(t="Aborted("+t+")"),p=!0,t+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(t);throw n(e),e}var x,S;function T(t){return t.startsWith("data:application/octet-stream;base64,")}function M(t){try{if(t==x&&u)return new Uint8Array(u);if(s)return s(t);throw"both async and sync fetching of the wasm failed"}catch(t){_(t)}}function I(t,e,n){return function(t){return u||!a&&!c||"function"!=typeof fetch?Promise.resolve().then((function(){return M(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 M(t)}))}(t).then((function(t){return WebAssembly.instantiate(t,e)})).then((function(t){return t})).then(n,(function(t){f("failed to asynchronously prepare wasm: "+t),_(t)}))}function b(t){for(;t.length>0;)t.shift()(r)}function O(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(t){y[this.ptr+4>>2]=t},this.get_type=function(){return y[this.ptr+4>>2]},this.set_destructor=function(t){y[this.ptr+8>>2]=t},this.get_destructor=function(){return y[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,e){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(e)},this.set_adjusted_ptr=function(t){y[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return y[this.ptr+16>>2]},this.get_exception_ptr=function(){if(G(this.get_type()))return y[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}function R(t){var e=h.buffer;try{return h.grow(t-e.byteLength+65535>>>16),g(),1}catch(t){}}function L(t){return r["_"+t]}T(x="wasmDbscan.wasm")||(S=x,x=r.locateFile?r.locateFile(S,l):l+S);var P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function D(t,e,n,o,r){var s={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=H(e);return function(t,e,n){!function(t,e,n,o){if(!(o>0))return 0;for(var r=n+o-1,s=0;s<t.length;++s){var i=t.charCodeAt(s);if(i>=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&t.charCodeAt(++s)),i<=127){if(n>=r)break;e[n++]=i}else if(i<=2047){if(n+1>=r)break;e[n++]=192|i>>6,e[n++]=128|63&i}else if(i<=65535){if(n+2>=r)break;e[n++]=224|i>>12,e[n++]=128|i>>6&63,e[n++]=128|63&i}else{if(n+3>=r)break;e[n++]=240|i>>18,e[n++]=128|i>>12&63,e[n++]=128|i>>6&63,e[n++]=128|63&i}}e[n]=0}(t,d,e,n)}(t,n,e),n}(t)),e},array:t=>{var e,n,o=H(t.length);return e=t,n=o,m.set(e,n),o}},i=L(t),a=[],c=0;if(o)for(var l=0;l<o.length;l++){var u=s[n[l]];u?(0===c&&(c=B()),a[l]=u(o[l])):a[l]=o[l]}var h=i.apply(null,a);return function(t){return 0!==c&&k(c),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&&P)return P.decode(t.subarray(e,r));for(var s="";e<r;){var i=t[e++];if(128&i){var a=63&t[e++];if(192!=(224&i)){var c=63&t[e++];if((i=224==(240&i)?(15&i)<<12|a<<6|c:(7&i)<<18|a<<12|c<<6|63&t[e++])<65536)s+=String.fromCharCode(i);else{var l=i-65536;s+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else s+=String.fromCharCode((31&i)<<6|a)}else s+=String.fromCharCode(i)}return s}(d,n,o):"":"boolean"===e?Boolean(t):t;var n,o}(t)}(h)}var F,U={__cxa_throw:function(t,e,n){throw new O(t).init(e,n),t},abort:function(){_("")},emscripten_memcpy_big:function(t,e,n){d.copyWithin(t,e,e+n)},emscripten_resize_heap:function(t){var e,n=d.length,o=2147483648;if((t>>>=0)>o)return!1;for(var r=1;r<=4;r*=2){var s=n*(1+.2/r);if(s=Math.min(s,t+100663296),R(Math.min(o,(e=Math.max(t,s))+(65536-e%65536)%65536)))return!0}return!1}},B=(function(){var t,e,o,s,i={env:U,wasi_snapshot_preview1:U};function a(t,e){var n,o=t.exports;return r.asm=o,h=r.asm.memory,g(),r.asm.__indirect_function_table,n=r.asm.__wasm_call_ctors,C.unshift(n),function(){if(w--,r.monitorRunDependencies&&r.monitorRunDependencies(w),0==w&&(null!==v&&(clearInterval(v),v=null),N)){var t=N;N=null,t()}}(),o}if(w++,r.monitorRunDependencies&&r.monitorRunDependencies(w),r.instantiateWasm)try{return r.instantiateWasm(i,a)}catch(t){f("Module.instantiateWasm callback failed with error: "+t),n(t)}(t=u,e=x,o=i,s=function(t){a(t.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||T(e)||"function"!=typeof fetch?I(e,o,s):fetch(e,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,o).then(s,(function(t){return f("wasm streaming compile failed: "+t),f("falling back to ArrayBuffer instantiation"),I(e,o,s)}))}))).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(B=r.asm.stackSave).apply(null,arguments)}),k=function(){return(k=r.asm.stackRestore).apply(null,arguments)},H=function(){return(H=r.asm.stackAlloc).apply(null,arguments)},G=function(){return(G=r.asm.__cxa_is_pointer_type).apply(null,arguments)};function V(){function t(){F||(F=!0,r.calledRun=!0,p||(b(C),e(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)t=r.postRun.shift(),A.unshift(t);var t;b(A)}()))}w>0||(function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)t=r.preRun.shift(),E.unshift(t);var t;b(E)}(),w>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),t()}),1)):t()))}if(r.ccall=D,r.cwrap=function(t,e,n,o){var r=!n||n.every((t=>"number"===t||"boolean"===t));return"string"!==e&&r&&!o?L(t):function(){return D(t,e,n,arguments)}},N=function t(){F||V(),F||(N=t)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return V(),t.ready});"object"==typeof exports?t.exports=r:"function"==typeof define&&n.amdO?define([],(function(){return r})):"object"==typeof exports&&(exports.exportCppDbscanLib=r)},9982:function(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,s){for(var i,a,c,l,u,h,f,m,d,y,p,g,E;s>=64;){for(i=n[0],a=n[1],c=n[2],l=n[3],u=n[4],h=n[5],f=n[6],m=n[7],y=0;y<16;y++)p=r+4*y,t[y]=(255&o[p])<<24|(255&o[p+1])<<16|(255&o[p+2])<<8|255&o[p+3];for(y=16;y<64;y++)g=((d=t[y-2])>>>17|d<<15)^(d>>>19|d<<13)^d>>>10,E=((d=t[y-15])>>>7|d<<25)^(d>>>18|d<<14)^d>>>3,t[y]=(g+t[y-7]|0)+(E+t[y-16]|0);for(y=0;y<64;y++)g=(((u>>>6|u<<26)^(u>>>11|u<<21)^(u>>>25|u<<7))+(u&h^~u&f)|0)+(m+(e[y]+t[y]|0)|0)|0,E=((i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10))+(i&a^i&c^a&c)|0,m=f,f=h,h=u,u=l+g|0,l=c,c=a,a=i,i=g+E|0;n[0]+=i,n[1]+=a,n[2]+=c,n[3]+=l,n[4]+=u,n[5]+=h,n[6]+=f,n[7]+=m,r+=64,s-=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,s=e<<3,i=e%64<56?64:128;this.buffer[o]=128;for(var a=o+1;a<i-8;a++)this.buffer[a]=0;this.buffer[i-8]=r>>>24&255,this.buffer[i-7]=r>>>16&255,this.buffer[i-6]=r>>>8&255,this.buffer[i-5]=r>>>0&255,this.buffer[i-4]=s>>>24&255,this.buffer[i-3]=s>>>16&255,this.buffer[i-2]=s>>>8&255,this.buffer[i-1]=s>>>0&255,n(this.temp,this.state,this.buffer,0,i),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 s(t){var e=(new o).update(t),n=e.digest();return e.clean(),n}function i(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=s,t.default=s,t.hmac=i;var c=new Uint8Array(t.digestLength);t.hkdf=function(t,e,n,o){void 0===e&&(e=c),void 0===o&&(o=32);for(var s=new Uint8Array([1]),l=i(e,t),u=new r(l),h=new Uint8Array(u.digestLength),f=h.length,m=new Uint8Array(o),d=0;d<o;d++)f===h.length&&(a(h,u,n,s),f=0),m[d]=h[f++];return u.clean(),h.fill(0),s.fill(0),m},t.pbkdf2=function(t,e,n,o){for(var s=new r(t),i=s.digestLength,a=new Uint8Array(4),c=new Uint8Array(i),l=new Uint8Array(i),u=new Uint8Array(o),h=0;h*i<o;h++){var f=h+1;a[0]=f>>>24&255,a[1]=f>>>16&255,a[2]=f>>>8&255,a[3]=f>>>0&255,s.reset(),s.update(e),s.update(a),s.finish(l);for(var m=0;m<i;m++)c[m]=l[m];for(m=2;m<=n;m++){s.reset(),s.update(l).finish(l);for(var d=0;d<i;d++)c[d]^=l[d]}for(m=0;m<i&&h*i+m<o;m++)u[h*i+m]=c[m]}for(h=0;h<i;h++)c[h]=l[h]=0;for(h=0;h<4;h++)a[h]=0;return s.clean(),u}}(e);var r=e.default;for(var s in e)r[s]=e[s];"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,s=e.length,i=Math.floor(Math.max(r,s)/2)-1,a=new Array(r),c=new Array(s),l=0;l<r;l++)for(var u=Math.max(0,l-i);u<=Math.min(s,l+i+1);u++)if(!a[l]&&!c[u]&&t[l]===e[u]){++o,a[l]=c[u]=!0;break}if(0===o)return 0;var h=0,f=0;for(l=0;l<r;l++)if(a[l]){for(;!c[f];)f++;t.charAt(l)!==e.charAt(f++)&&h++}return(o/r+o/s+(o-(h/=2))/o)/3}(t,e,n),r=0;if(o>.7){for(var s=Math.min(t.length,e.length),i=0;t[i]===e[i]&&i<4&&i<s;)++r,i++;o+=.1*r*(1-o)}return o}}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var s=e[o]={id:o,loaded:!1,exports:{}};return t[o].call(s.exports,s,s.exports,n),s.loaded=!0,s.exports}n.m=t,n.amdO={},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.u=t=>t+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.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),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;n.g.importScripts&&(t=n.g.location+"");var e=n.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var o=e.getElementsByTagName("script");if(o.length)for(var r=o.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=o[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=t})(),n.b=document.baseURI||self.location.href;var o={};(()=>{"use strict";n.r(o),n.d(o,{_package:()=>Nn,test:()=>_n,tests:()=>f});const t=DG,e=grok;n(9982);const r=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,,,,,,,,,,,,,,,,,,,,,');r.columns.add(t.Column.fromList(t.TYPE.BYTE_ARRAY,"BinaryImage",Array.from(new Uint8Array(11))));var s=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};const i=3e4,a=108e5,c=console.log.bind(console),l=console.info.bind(console),u=console.warn.bind(console),h=console.error.bind(console),f={},m="Auto Tests",d="Demo",y="Detectors",p="Core",g={};let E;var C,A,w,v,N,_,x,S,T,M;!function(t){t.notNull=function(t,e){if(null==t)throw new Error(`${null==e?"Value":e} not defined`)}}(C||(C={}));class I{constructor(t,e){this.catchUnhandled=!0,this.report=!1,void 0!==t&&(this.catchUnhandled=t),void 0!==e&&(this.report=e)}}class b{constructor(t,e,n,o){var r;this.category=t,this.name=e,null!=o||(o={}),null!==(r=o.timeout)&&void 0!==r||(o.timeout=i),this.options=o,this.test=()=>s(this,void 0,void 0,(function*(){return new Promise(((t,e)=>s(this,void 0,void 0,(function*(){let o="";try{o=yield n()}catch(t){e(t)}t(o)}))))}))}}function O(t,e,n){null==f[E]&&(f[E]={}),null==f[E].tests&&(f[E].tests=[]),f[E].tests.push(new b(E,t,e,n))}function R(t,e=!0,n){if(n=n?`${n}, `:"",t!==e)throw new Error(`${n}Expected "${e}", got "${t}"`)}function L(t,e,n){var o;E=t,e(),f[E]&&(f[E].clear=null===(o=null==n?void 0:n.clear)||void 0===o||o,f[E].timeout=null==n?void 0:n.timeout,f[E].benchmarks=null==n?void 0:n.benchmarks,f[E].stressTests=null==n?void 0:n.stressTests)}function P(t,e){return t.replace(new RegExp(e.name,"gi"),e.nqName)}function D(n){var o,a,E,C;return s(this,void 0,void 0,(function*(){const A=null===(a=null===(o=e.functions.getCurrentCall())||void 0===o?void 0:o.func)||void 0===a?void 0:a.package;yield function(n){var o,a,c,l;return s(this,void 0,void 0,(function*(){const u=n.id;if(g[u])return;const h=f;if(void 0!==h[m]||void 0!==h[d]||Object.keys(h).find((t=>t.startsWith(m)||t.startsWith(p))))return void(g[u]=!0);if("DevTools"===n.name)for(const t of window.dartTests){const e=t.name.split(/\s*\|\s*!/g);let n=null!==(o=e.pop())&&void 0!==o?o:t.name,r=e.length?p+": "+e.join(": "):p,s=n.split(" | ");n=s[s.length-1],s.unshift(r),s.pop(),r=s.join(": "),void 0===h[r]&&(h[r]={tests:[],clear:!0}),h[r].tests.push(new b(r,n,t.test,{isAggregated:!1,timeout:null!==(c=null===(a=t.options)||void 0===a?void 0:a.timeout)&&void 0!==c?c:i,skipReason:null===(l=t.options)||void 0===l?void 0:l.skipReason}))}const E=[],C=[],A=[],w=yield e.dapi.functions.filter(`package.id = "${u}"`).list(),v=new RegExp(/skip:\s*([^,\s]+)|wait:\s*(\d+)|cat:\s*([^,\s]+)|timeout:\s*(\d+)/g);for(const n of w){const o=n.options.test,i=n.options.demoPath;if(o&&Array.isArray(o)&&o.length)for(let r=0;r<o.length;r++){const i=o[r].matchAll(v),a={};Array.from(i).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 c=new b(m,1===o.length?n.name:`${n.name} ${r+1}`,(()=>s(this,void 0,void 0,(function*(){const t=yield e.functions.eval(P(o[r],n));if(a.wait&&(yield B(a.wait)),"boolean"==typeof t&&!t)throw`Failed: ${o[r]}, expected true, got ${t}`}))),{skipReason:a.skip,timeout:t.Test.isInBenchmark?a.benchmarkTimeout:a.timeout});if(a.cat){const t=m+": "+a.cat;c.category=t,void 0===h[t]&&(h[t]={tests:[],clear:!0}),h[t].tests.push(c)}else E.push(c)}if(i){const o=n.options.demoWait?parseInt(n.options.demoWait):void 0,r=new b(d,n.friendlyName,(()=>s(this,void 0,void 0,(function*(){e.shell.isInDemo=!0,void 0===e.shell.view(t.View.BROWSE)&&(e.shell.v=t.View.createByType(t.View.BROWSE)),yield B(300),e.shell.clearLastError(),yield n.apply(),yield B(o||2e3);const r=yield e.shell.lastError;if(r)throw new Error(r);e.shell.isInDemo=!1}))),{skipReason:n.options.demoSkip});C.push(r)}if(n.hasTag("semTypeDetector")){const t=new b(y,n.friendlyName,(()=>s(this,void 0,void 0,(function*(){const t=[];for(const e of r.clone().columns){const o=yield n.apply([e]);t.push(o||e.semType)}R(t.filter((t=>t)).length,1)}))),{skipReason:n.options.skipTest});A.push(t)}}g[u]=!0,E.length&&(h[m]={tests:E,clear:!0}),C.length&&(h[d]={tests:C,clear:!0}),A.length&&(h[y]={tests:A,clear:!1})}))}(A);const w=[];console.log("Running tests"),null!=n||(n={}),null!==(E=(C=n).testContext)&&void 0!==E||(C.testContext=new I),e.shell.clearLastError();const v=function(){const t=[];return console.log=(...e)=>{t.push(...e),c(...e)},console.info=(...e)=>{t.push(...e),l(...e)},console.warn=(...e)=>{t.push(...e),u(...e)},console.error=(...e)=>{t.push(...e),h(...e)},t}();(null==n?void 0:n.stressTest)?yield function(e){var n,o,r,i,a,c;return s(this,void 0,void 0,(function*(){let s=[];for(const[t,e]of Object.entries(f)){let t=null===(n=e.tests)||void 0===n?void 0:n.filter((t=>{var e;return null===(e=t.options)||void 0===e?void 0:e.stressTest}));e.stressTests&&(t=null===(o=e.tests)||void 0===o?void 0:o.filter((t=>{var e,n;return void 0===(null===(e=t.options)||void 0===e?void 0:e.stressTest)||!0===(null===(n=t.options)||void 0===n?void 0:n.stressTest)})));const a=null===(r=e.tests)||void 0===r?void 0:r.every((t=>{var e;return null===(e=t.options)||void 0===e?void 0:e.skipReason}));if(!a)for(let n of null!=t?t:[])null==(null===(i=n.options)||void 0===i?void 0:i.skipReason)&&s.push({test:n,value:e})}s=function(t){const e=t.slice();return e.sort((()=>Math.random()-.5)),e}(s);const l=[];for(let n of s){yield N(n.value.before,null!==(a=e.category)&&void 0!==a?a:"");let o=yield U(n.test,null==e?void 0:e.test,v,t.Test.isInBenchmark?n.value.benchmarkTimeout:n.value.timeout,A.name,e.verbose);o&&l.push(o),console.log(`Test: ${null==O?void 0:O.name}; result: ${o}`),yield N(n.value.after,null!==(c=e.category)&&void 0!==c?c:"")}w.push(...l)}))}(n):yield function(n,o){var r,i,a,f,m,d,y;return s(this,void 0,void 0,(function*(){try{for(const[s,l]of Object.entries(n)){if((null==o?void 0:o.category)&&!s.toLowerCase().startsWith(null==o?void 0:o.category.toLowerCase())||(null===(r=o.exclude)||void 0===r?void 0:r.some((t=>s.startsWith(t)))))continue;c(`Started ${s} category`);const n=null===(i=l.tests)||void 0===i?void 0:i.every((t=>{var e;return null===(e=t.options)||void 0===e?void 0:e.skipReason}));n||(l.beforeStatus=yield N(l.before,null!==(a=o.category)&&void 0!==a?a:""));const u=null!==(f=l.tests)&&void 0!==f?f:[],h=[];if(l.clear)for(let n=0;n<u.length;n++){u[n].options&&void 0===(null===(m=u[n].options)||void 0===m?void 0:m.benchmark)&&(u[n].options||(u[n].options={}),u[n].options.benchmark=null!==(d=l.benchmarks)&&void 0!==d&&d);let r=yield U(u[n],null==o?void 0:o.test,v,t.Test.isInBenchmark?l.benchmarkTimeout:l.timeout,A.name,o.verbose);r&&h.push(r),e.shell.closeAll(),t.Balloon.closeAll()}else for(let e=0;e<u.length;e++){let n=yield U(u[e],null==o?void 0:o.test,v,t.Test.isInBenchmark?l.benchmarkTimeout:l.timeout,A.name,o.verbose);n&&h.push(n)}const p=h.filter((t=>"skipped"!=t.result));n||(l.afterStatus=yield N(l.after,null!==(y=o.category)&&void 0!==y?y:"")),l.afterStatus&&p.push({date:(new Date).toISOString(),logs:"",category:s,name:"after",result:l.afterStatus,success:!1,ms:0,skipped:!1}),l.beforeStatus&&p.push({date:(new Date).toISOString(),logs:"",category:s,name:"before",result:l.beforeStatus,success:!1,ms:0,skipped:!1}),w.push(...p)}}finally{console.log=c,console.info=l,console.warn=u,console.error=h}if(o.testContext.catchUnhandled&&!t.Test.isInBenchmark){yield B(1e3);const t=yield e.shell.lastError,n={logs:"",date:(new Date).toISOString(),category:"Unhandled exceptions",name:"Exception",result:null!=t?t:"",success:!t,ms:0,skipped:!1};w.push(n),n.package=A.name,null!=e.shell.reportTest?yield e.shell.reportTest("package",n):yield fetch(`${e.dapi.root}/log/tests/package`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(n)})}}))}(f,n);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 N(t,e){return s(this,void 0,void 0,(function*(){var n=void 0;try{void 0!==t&&(yield k((()=>s(this,void 0,void 0,(function*(){yield t()}))),1e5,`before ${e}: timeout error`))}catch(t){n=yield F(t)}return n}))}}))}function F(e){return s(this,void 0,void 0,(function*(){return`${e.toString()}\n${e.stack?yield t.Logger.translateStackTrace(e.stack):""}`}))}function U(n,o,r,l,u,f){var m,d,y,p,g,E,C,A;return s(this,void 0,void 0,(function*(){let s;r.length=0;let w="package";const v=null!=o&&n.name.toLowerCase()!==o.toLowerCase();let N=(null===(m=n.options)||void 0===m?void 0:m.skipReason)||v,_=v?"skipped":null===(d=n.options)||void 0===d?void 0:d.skipReason;if(t.Test.isInBenchmark&&!(null===(y=n.options)||void 0===y?void 0:y.benchmark))return void c(`SKIPPED: ${n.category} ${n.name} doesnt available in benchmark mode`);N||c(`Started ${n.category} ${n.name}`);const x=Date.now();try{if(N)s={date:(new Date).toISOString(),success:!0,result:_,ms:0,skipped:!0};else{let e=(null===(p=n.options)||void 0===p?void 0:p.timeout)===i&&l?l:null===(g=n.options)||void 0===g?void 0:g.timeout;e=e===i&&t.Test.isInBenchmark?a:e,s={date:(new Date).toISOString(),success:!0,result:null!==(E=yield k(n.test,e))&&void 0!==E?E:"OK",ms:0,skipped:!1}}}catch(t){h(t),s={date:(new Date).toISOString(),success:!1,result:yield F(t),ms:0,skipped:!1}}if((null===(C=n.options)||void 0===C?void 0:C.isAggregated)&&s.result.constructor===t.DataFrame){const t=s.result.col("success");if(t&&(s.success=t.stats.sum===t.length),!f){const t=s.result;t.columns.remove("stack"),t.rows.removeWhere((t=>t.get("success"))),s.result=t}s.result=s.result.toCsv()}if(s.logs=r.join("\n"),s.ms=Date.now()-x,N||c(`Finished ${n.category} ${n.name} for ${s.ms} ms`),s.category=n.category,s.name=n.name,!v){let o={success:s.success,result:s.result,ms:s.ms,skipped:s.skipped,package:u,category:n.category,name:n.name,logs:s.logs};if(s.result.constructor==Object){const t=Object.keys(s.result).reduce(((t,e)=>Object.assign(Object.assign({},t),{["result."+e]:s.result[e]})),{});o=Object.assign(Object.assign({},o),t)}o.result instanceof t.DataFrame&&(o.result=JSON.stringify(null===(A=o.result)||void 0===A?void 0:A.toJson())||""),null!=e.shell.reportTest?yield e.shell.reportTest(w,o):yield fetch(`${e.dapi.root}/log/tests/${w}`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(o)})}return s}))}function B(t){return s(this,void 0,void 0,(function*(){yield new Promise((e=>setTimeout(e,t)))}))}function k(t,e,n="EXECUTION TIMEOUT"){return s(this,void 0,void 0,(function*(){let o=null;const r=new Promise(((t,r)=>{o=setTimeout((()=>{r(n)}),e)}));try{return yield Promise.race([t(),r])}finally{o&&clearTimeout(o)}}))}t.DataFrame.fromColumns([t.Column.fromStrings("col",["val1","val2","val3"])]),function(t){t.UMAP="UMAP",t.T_SNE="t-SNE"}(A||(A={})),function(t){t.Levenshtein="Levenshtein",t.JaroWinkler="Jaro-Winkler",t.Manhattan="Manhattan",t.Onehot="One-Hot"}(w||(w={})),function(t){t.Euclidean="Euclidean"}(v||(v={})),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"}(N||(N={})),function(t){t.TanimotoIntArray="TanimotoIntArray"}(_||(_={})),(M=x||(x={})).Vector="Vector",M.String="String",M.BitArray="BitArray",M.MacroMolecule="MacroMolecule",M.Number="Number",M.IntArray="IntArray",M.NumberArray="NumberArray",function(t){t.Difference="Difference"}(S||(S={})),function(t){t.CommonItems="Common Items"}(T||(T={}));const H=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 s=-1,i=0,a=n,c=n;for(;c--;)H[t.charCodeAt(c)]|=1<<c;for(c=0;c<o;c++){let t=H[e.charCodeAt(c)];const n=t|i;t|=(t&s)+s^s,i|=~(t|s),s&=t,i&r&&a++,s&r&&a--,i=i<<1|1,s=s<<1|~(n|i),i&=n}for(c=n;c--;)H[t.charCodeAt(c)]=0;return a})(t,e):((t,e)=>{const n=e.length,o=t.length,r=[],s=[],i=Math.ceil(n/32),a=Math.ceil(o/32);for(let t=0;t<i;t++)s[t]=-1,r[t]=0;let c=0;for(;c<a-1;c++){let i=0,a=-1;const l=32*c,u=Math.min(32,o)+l;for(let e=l;e<u;e++)H[t.charCodeAt(e)]|=1<<e;for(let t=0;t<n;t++){const n=H[e.charCodeAt(t)],o=s[t/32|0]>>>t&1,c=r[t/32|0]>>>t&1,l=n|i,u=((n|c)&a)+a^a|n|c;let h=i|~(u|a),f=a&u;h>>>31^o&&(s[t/32|0]^=1<<t),f>>>31^c&&(r[t/32|0]^=1<<t),h=h<<1|o,f=f<<1|c,a=f|~(l|h),i=h&l}for(let e=l;e<u;e++)H[t.charCodeAt(e)]=0}let l=0,u=-1;const h=32*c,f=Math.min(32,o-h)+h;for(let e=h;e<f;e++)H[t.charCodeAt(e)]|=1<<e;let m=o;for(let t=0;t<n;t++){const n=H[e.charCodeAt(t)],i=s[t/32|0]>>>t&1,a=r[t/32|0]>>>t&1,c=n|l,h=((n|a)&u)+u^u|n|a;let f=l|~(h|u),d=u&h;m+=f>>>o-1&1,m-=d>>>o-1&1,f>>>31^i&&(s[t/32|0]^=1<<t),d>>>31^a&&(r[t/32|0]^=1<<t),f=f<<1|i,d=d<<1|a,u=d|~(c|f),l=f&c}for(let e=h;e<f;e++)H[t.charCodeAt(e)]=0;return m})(t,e)};var V=n(944);class W{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=W._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 W(t._length);n._length=t._length,n._data=W._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 W(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 W(t);for(let o=0;o<t;++o)n.setBit(o,e(o));return n._version=0,n}static fromString(t){return W.fromSeq(t.length,(e=>"1"==t.charAt(e)))}static fromUint32Array(t,e){const n=new W(t);return n._data=e,n}static fromBytes(t){const e=t.length,n=new W(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 W(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 W.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),s=Math.max(t,e);if(n)for(let t=r;t<=s;t++)this.setTrue(t);else for(let t=r;t<=s;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+=W._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+=W._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+=W._onBitCount[255&e];let s=this._data[r]&t._data[r];const i=31&this._length;for(0!=i&&(s&=~(4294967295<<i));0!=s;s>>>=8)n+=W._onBitCount[255&s];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=W._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=W._lastOnBit[t>>>24];if(n>=0)return n+32*o+e}}return-1}}function $(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 s=n[o];Object.entries(e).forEach((([e,o])=>{r[t.charCodeAt(0)*n.length+e.charCodeAt(0)]=s[o]}))})),(t,e)=>1-r[t.charCodeAt(0)*n.length+e.charCodeAt(0)]}(),n=t?.threshold??0;return(t,o)=>{let r=0;const s=t.length,i=o.length,a=Math.ceil(Math.max(s,i)*(1-n));s!==i&&(r=Math.abs(s-i));let c=0;for(let n=0;n<Math.min(s,i);n++)if(t[n]!==o[n]&&(c+=e(t[n],o[n]),c>a))return 1;return c+=r,c/=Math.max(s,i),c}}W._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]),W._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]),W._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 K;!function(t){t.HAMMING="Hamming",t.LEVENSHTEIN="Levenshtein",t.NEEDLEMANN_WUNSCH="Needlemann-Wunsch",t.MONOMER_CHEMICAL_DISTANCE="Monomer chemical distance"}(K||(K={}));const X={[K.HAMMING]:$,[K.LEVENSHTEIN]:function(){return(t,e)=>G(t,e)/Math.max(t.length,e.length)},[K.NEEDLEMANN_WUNSCH]:function(t){const e=new Uint16Array(65536),{gapOpen:n,gapExtend:o,scoringMatrix:r,alphabetIndexes:s}={...Y,...t};Object.entries(s).forEach((([t,n])=>e[t.charCodeAt(0)]=n));const i=[new Float32Array(1e4),new Float32Array(1e4)];return(t,s)=>{const a=new Array(t.length+1).fill(!1),c=new Array(t.length+1).fill(!1);let l=0,u=1;for(let e=1;e<t.length+1;e++)i[0][e]=-o-(e-1)*o,i[1][e]=0;i[0][0]=0;for(let h=1;h<s.length+1;h++){i[u][0]=-o-(h-1)*o;for(let f=1;f<t.length+1;f++){const m=i[l][f-1]+r[e[t.charCodeAt(f-1)]][e[s.charCodeAt(h-1)]],d=i[l][f]-(a[f]||1===h||h===s.length?o:n),y=i[u][f-1]-(c[f-1]||1===f||f===t.length?o:n);i[u][f]=Math.max(m,y,d),i[u][f]===m?(a[f]=!1,c[f]=!1):i[u][f]===y?(a[f]=!1,c[f]=!0):(a[f]=!0,c[f]=!1)}l=u,u=(u+1)%2}const h=Math.min(t.length,s.length);return(h-i[l][t.length])/h}},[K.MONOMER_CHEMICAL_DISTANCE]:$};function j(t,e){const n=t.trueCount()+e.trueCount();if(0==n)return 1;const o=t.andWithCountBits(e,!0);return o/(n-o)}function z(t){return 0===t?3402823e32:1/t-1}N.Tanimoto,N.Dice,N.Asymmetric,N.BraunBlanquet,N.Cosine,N.Kulczynski,N.McConnaughey,N.RogotGoldberg,N.Russel,N.Sokal,N.Hamming,N.Euclidean,N.Tanimoto,N.Dice,N.Asymmetric,N.BraunBlanquet,N.Cosine,N.Kulczynski,N.McConnaughey,N.RogotGoldberg,N.Russel,N.Sokal,N.Hamming,N.Euclidean,N.Tanimoto,N.Dice,N.Cosine,N.Tanimoto,N.Asymmetric,N.Cosine,N.Sokal,K.HAMMING,K.LEVENSHTEIN,K.MONOMER_CHEMICAL_DISTANCE,K.NEEDLEMANN_WUNSCH;const q={[v.Euclidean]:function(t,e){let n=0;const o=t.length;if(o!==e.length)throw new Error("The dimensionality of the vectors must match");for(let r=0;r<o;++r)n+=Math.pow(t[r]-e[r],2);return Math.sqrt(n)}},Q={[w.Levenshtein]:G,[w.JaroWinkler]:V.Vb,[w.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}},[w.Onehot]:function(t,e){return t===e?0:1}},J={[N.Tanimoto]:function(t,e){return 1-j(t,e)},[N.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)},[N.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)},[N.BraunBlanquet]:function(t,e){return z(function(t,e){const n=Math.max(t.trueCount(),e.trueCount());return 0==n?0:t.andWithCountBits(e,!0)/n}(t,e))},[N.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)},[N.Kulczynski]:function(t,e){return z(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))},[N.McConnaughey]:function(t,e){return z(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))},[N.RogotGoldberg]:function(t,e){return z(function(t,e){const n=t.andWithCountBits(e,!0),o=t.countBits(!0)+e.countBits(!0),r=t.length,s=r-o+n;return n==r||s==r?1:n/o+s/(2*r-o)}(t,e))},[N.Russel]:function(t,e){return z(function(t,e){return 0==t.length?0:t.andWithCountBits(e,!0)/t.length}(t,e))},[N.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)},[N.Hamming]:function(t,e){return t.trueCount()+e.trueCount()-2*t.andWithCountBits(e,!0)},[N.Euclidean]:function(t,e){return Math.sqrt(t.trueCount()+e.trueCount()-2*t.andWithCountBits(e,!0))}},Z={[_.TanimotoIntArray]:function(t,e){return z(j(new W(t,32*t.length),new W(e,32*e.length)))}},tt={[S.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={[T.CommonItems]:function(t){const e=function(t){const e=t?.mostCommon??new Set;return(t,n)=>{const o=t.length,r=n.length;let s=0,i=0,a=0;for(;i<o&&a<r;)t[i]===n[a]?(e?.has(t[i])||++s,++i,++a):t[i]<n[a]?++i:++a;return s}}(t);return(t,n)=>0===n.length||0===t.length?1e4:Math.min(t.length,n.length)/(e(t,n)+1e-4)}},nt={[x.Vector]:{[v.Euclidean]:q[v.Euclidean]},[x.String]:{[w.Levenshtein]:Q[w.Levenshtein],[w.JaroWinkler]:Q[w.JaroWinkler],[w.Manhattan]:Q[w.Manhattan],[w.Onehot]:Q[w.Onehot]},[x.BitArray]:{[N.Tanimoto]:J[N.Tanimoto],[N.Dice]:J[N.Dice],[N.Asymmetric]:J[N.Asymmetric],[N.BraunBlanquet]:J[N.BraunBlanquet],[N.Cosine]:J[N.Cosine],[N.Kulczynski]:J[N.Kulczynski],[N.McConnaughey]:J[N.McConnaughey],[N.RogotGoldberg]:J[N.RogotGoldberg],[N.Russel]:J[N.Russel],[N.Sokal]:J[N.Sokal]},[x.MacroMolecule]:{[K.HAMMING]:X[K.HAMMING],[K.LEVENSHTEIN]:X[K.LEVENSHTEIN],[K.NEEDLEMANN_WUNSCH]:X[K.NEEDLEMANN_WUNSCH],[K.MONOMER_CHEMICAL_DISTANCE]:X[K.MONOMER_CHEMICAL_DISTANCE]},[x.Number]:{[S.Difference]:tt[S.Difference]},[x.IntArray]:{[_.TanimotoIntArray]:Z[_.TanimotoIntArray]},[x.NumberArray]:{[T.CommonItems]:et[T.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",st="show-scatterplot-progress";var it,at,ct,lt,ut,ht,ft,mt=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};n(5540),(at=it||(it={})).EUCLIDEAN="EUCLIDEAN",at.MANHATTAN="MANHATTAN",it.EUCLIDEAN,it.MANHATTAN,(lt=ct||(ct={})).HAMMING="Hamming",lt.EUCLIDEAN="Euclidean",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.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,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.SOKAL,ct.ASYMMETRIC,ct.OneHot,ct.Difference]),new Set([ct.EUCLIDEAN,ct.MANHATTAN,ct.OneHot,ct.Difference]),new Set([ct.EUCLIDEAN,ct.MANHATTAN,ct.Difference]),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"}(ut||(ut={})),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"}(ft||(ft={})),Object.prototype.toString;const dt="dimensionality-reducer-terminate-event";var yt,pt;(pt=yt||(yt={})).EUCLIDEAN="EUCLIDEAN",pt.MANHATTAN="MANHATTAN";const gt=t=>null==t;function Et(t,e){return`${e} (${t.length>4?`${t.length} columns`:t.map((t=>t.name)).join(", ")})`}async function Ct(o,r,s,i,a,c,l,u=!0,h=!1,f={preprocessingFuncArgs:[]},m={},d=null,y={}){const p={showXAxis:!1,showYAxis:!1,showXSelector:!1,showYSelector:!1};if(r.length!==i.length||r.length!==c.length||r.length!==a.length||r.length!==f.preprocessingFuncArgs.length)throw new Error("columns, metrics and preprocessing functions, weights and function argumentsmust have the same length");const g=u?m.tableView??e.shell.tableView(o.name)??e.shell.addTableView(o):null,E=async()=>{const E=t.TaskBarProgressIndicator.create(`Initializing ${m.scatterPlotName??"dimensionality reduction"} ...`);let C;try{const A=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}`))}(o);function w(e,n,i){let a=null,c=null;o.columns.names().includes(A[0])?(a=o.columns.byName(A[0]),c=o.columns.byName(A[1])):(a=o.columns.add(t.Column.float(A[0],o.rowCount)),c=o.columns.add(t.Column.float(A[1],o.rowCount)),u&&!C&&(C=g.scatterPlot({...p,x:A[0],y:A[1],title:m.scatterPlotName??Et(r,s)}))),m[st]&&(C?.root&&ot.setUpdateIndicator(C.root,!1),a.init((t=>i[0]?i[0][t]:void 0)),c.init((t=>i[1]?i[1][t]:void 0)));const l=e/n*100;E.update(l,`Running ${m.scatterPlotName??"dimensionality reduction"}... ${l.toFixed(0)}%`)}async function v(){o.columns.add(t.Column.float(A[0],o.rowCount)),o.columns.add(t.Column.float(A[1],o.rowCount));let h=null;u&&(C=g.scatterPlot({...p,x:A[0],y:A[1],title:m.scatterPlotName??Et(r,s)}),ot.setUpdateIndicator(C.root,!0));const d=e.events.onViewerClosed.subscribe((t=>{const n=t.args.viewer;n?.getOptions()?.look?.title&&C?.getOptions()?.look?.title&&n?.getOptions()?.look?.title===C?.getOptions()?.look?.title&&(e.events.fireCustomEvent(dt,{}),d.unsubscribe(),h?.(),E.close())})),y=new Promise((async(t,o)=>{try{h=t;const o=[];for(let t=0;t<c.length;++t){const e=c[t];if(f.distanceFnArgs||(f.distanceFnArgs=[]),e){const n=e.inputs[0].name,s=e.inputs[1].name,{entries:a,options:c}=await e.apply({[n]:r[t],[s]:i[t],...f.preprocessingFuncArgs[t]??{}});o.push({entries:a,options:c}),f.distanceFnArgs.push(c)}else{const e=r[t].toList(),n={};o.push({entries:e,options:n}),f.distanceFnArgs.push(n)}}t(await async function(t,o,r,s,i,a,c){let l=await async function(t,o,r,s,i,a,c){if(!a.distanceFnArgs)throw new Error("options.distanceFnArgs must be defined");if(t.length!==o.length||t.length!==a.distanceFnArgs.length||t.length!==s.length)throw new Error("data, metrics and options and weights must have the same length");return new Promise((function(l,u){const h=new Worker(new URL(n.p+n.u(234),n.b));h.postMessage({columnsData:t,distanceMetrics:o,method:r,options:a,weights:s,aggregationMethod:i});const f=e.events.onCustomEvent(dt).subscribe((()=>{try{h?.terminate()}finally{f.unsubscribe()}}));h.onmessage=({data:{error:t,embedding:e,epochNum:n,epochsLength:o}})=>{gt(n)||gt(o)?(f.unsubscribe(),t?u(t):l(e),setTimeout((()=>h.terminate()),100)):c&&c(n,o,e)}}))}(t,r,o,s,i,a,c);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,s=1/Math.sqrt(o/e-Math.pow(r,2));for(let n=0;n<e;++n)t[n]=(t[n]-r)*s;return t}(t))),l}(o.map((t=>t.entries)),s,i,a,l,f,m[rt]?void 0:w))}catch(t){o(t)}})),v=await y;return E.close(),d.unsubscribe(),v}const N=await v();if(h&&N){const _=t.TaskBarProgressIndicator.create("Clustering embeddings ...");try{const x=await function(t,e,o,r){return mt(this,void 0,void 0,(function*(){return new Promise((function(s,i){const a=new Worker(new URL(n.p+n.u(682),n.b));a.postMessage({embedX:t,embedY:e,minPts:r,epsilon:o}),a.onmessage=({data:{error:t,clusters:e}})=>{a.terminate(),t?i(t):s(e)}}))}))}(N[0],N[1],f.dbScanEpsilon??.01,f.dbScanMinPts??4),S=o.columns.getUnusedName("Cluster (DBSCAN)");o.columns.addNewString(S).init((t=>x[t].toString())),C&&(C.props.colorColumnName=S)}catch(T){e.shell.error("Clustering embeddings failed"),console.error(T)}finally{_.close()}}if(N){const M=o.columns.byName(A[0]),I=o.columns.byName(A[1]);if(M.init((t=>N[0][t])),I.init((t=>N[1][t])),d)try{const b=d.inputs[0].name,O=d.inputs[1].name;await d.prepare({[b]:M,[O]:I,...y}).call(!0)}catch(R){e.shell.error("Post-processing failed"),console.error(R)}if(C)return ot.setUpdateIndicator(C.root,!1),C.helpUrl="/help/compute/sequence-space",C}}catch(L){e.shell.error("Dimensionality reduction failed"),console.error(L),E.close(),C&&ot.setUpdateIndicator(C.root,!1)}};return new Promise((async(t,e)=>{try{if(m.fastRowCount&&o.rowCount>m.fastRowCount&&!m[rt])ot.dialog().add(ot.divText("Analysis might take several minutes. Do you want to continue?")).onOK((async()=>{try{const e=await E();t(e)}catch(t){e(t)}})).onCancel((()=>t(void 0))).show();else{const e=await E();t(e)}}catch(t){e(t)}}))}var At=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};const wt={SUBJ:"subj",STUDY:"study",SITE:"site",AGE:"age",SEX:"sex",RACE:"race",DISEASE:"disease",WEIGHT:"weight",HEIGHT:"height"};function vt(t,n,o){return At(this,void 0,void 0,(function*(){const r=e.data.demo.demog(100);e.shell.addTableView(r),R(!!(yield Ct(r,t.map((t=>r.col(t))),n,o,t.map((()=>1)),t.map((()=>{})),"EUCLIDEAN",!0,!0,{preprocessingFuncArgs:t.map((()=>({})))})),!0,"No scatterplot returned");const s=r.columns.names().filter((t=>t.toLowerCase().startsWith("embed")));R(s.length,2,"Wrong number of embeddings added"),R(!!r.columns.names().find((t=>t.toLowerCase().startsWith("cluster"))),!0,"No cluster column added");for(const t of s){const e=r.col(t);R(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)))}))}L("Dimensionality reduction: UMAP",(()=>{O("Numeric column",(()=>At(void 0,void 0,void 0,(function*(){yield vt([wt.AGE],A.UMAP,[S.Difference])}))),{timeout:3e4}),O("String column",(()=>At(void 0,void 0,void 0,(function*(){yield vt([wt.SEX],A.UMAP,[w.Onehot])}))),{timeout:3e4}),O("Numeric and string columns",(()=>At(void 0,void 0,void 0,(function*(){yield vt([wt.SEX,wt.AGE],A.UMAP,[w.Onehot,S.Difference])})))),O("All demog columns",(()=>At(void 0,void 0,void 0,(function*(){const n=e.data.demo.demog(10).columns.toList().filter((t=>Object.values(wt).includes(t.name))),o=n.map((e=>e.type===t.COLUMN_TYPE.STRING?w.Onehot:S.Difference)),r=n.map((t=>t.name));yield vt(r,A.UMAP,o)}))))})),L("Dimensionality reduction: T-SNE",(()=>{O("Numeric column",(()=>At(void 0,void 0,void 0,(function*(){yield vt([wt.AGE],A.T_SNE,[S.Difference])}))),{timeout:3e4}),O("String column",(()=>At(void 0,void 0,void 0,(function*(){yield vt([wt.SEX],A.T_SNE,[w.Onehot])}))),{timeout:3e4}),O("Numeric and string columns",(()=>At(void 0,void 0,void 0,(function*(){yield vt([wt.SEX,wt.AGE],A.T_SNE,[w.Onehot,S.Difference])})))),O("All demog columns",(()=>At(void 0,void 0,void 0,(function*(){const n=e.data.demo.demog(10).columns.toList().filter((t=>Object.values(wt).includes(t.name))),o=n.map((e=>e.type===t.COLUMN_TYPE.STRING?w.Onehot:S.Difference)),r=n.map((t=>t.name));yield vt(r,A.T_SNE,o)}))))}));const Nt={i32:"HEAP32",f32:"HEAPF32"},_t={i32:Int32Array,f32:Float32Array},xt={i32:2,f32:2},St={i32:DG.Column.fromInt32Array,f32:DG.Column.fromFloat32Array};class Tt{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 Mt extends Tt{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*_t[this.type].BYTES_PER_ELEMENT)}isMemoryForBufferAllocated(){return 0!=this.buf}putDataToBuffer(t){if(this.isMemoryForBufferAllocated()){const e=this.type,n=xt[e],o=t[Nt[e]];let r=null;const s=this.data;r="int"==s.type&&"i32"==e||"double"==s.type&&"f32"==e?s.getRawData():new _t[e](s.getRawData()),r&&o.set(r,this.buf>>n)}}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const e=this.type,n=t[Nt[e]],o=this.buf,r=_t[e].BYTES_PER_ELEMENT,s=this.data.getRawData();for(let t=0;t<this.numOfRows;t++)s[t]=n[o/r+t]}}freeBuffer(t){this.isMemoryForBufferAllocated()&&(t._free(this.buf),this.buf=0)}}class It extends Mt{constructor(t,e){super([],t,!0),this.numOfRows=e}putDataToBuffer(t){}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const e=this.type,n=t[Nt[e]],o=this.buf,r=St[e],s=new _t[e](this.numOfRows);for(let t=0;t<s.length;t++)s[t]=n[o/s.BYTES_PER_ELEMENT+t];this.data=r("name",s)}}}class bt extends Tt{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*_t[this.type].BYTES_PER_ELEMENT)}isMemoryForBufferAllocated(){return 0!=this.buf}putDataToBuffer(t){if(this.isMemoryForBufferAllocated()){const e=this.type,n=xt[e],o=t[Nt[e]],r=_t[e].BYTES_PER_ELEMENT;for(let t=0;t<this.numOfColumns;t++){let s=null;const i=this.data[t];s="int"==i.type&&"i32"==e||"double"==i.type&&"f32"==e?i.getRawData():new _t[e](i.getRawData()),null!=s&&o.set(s,this.buf+t*this.numOfRows*r>>n)}}}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const e=this.type,n=t[Nt[e]],o=this.numOfRows,r=this.numOfColumns,s=new _t[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]=s[n+t*o]}}}freeBuffer(t){this.isMemoryForBufferAllocated()&&(t._free(this.buf),this.buf=0)}}class Ot extends bt{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[Nt[e]],o=this.numOfRows,r=this.numOfColumns,s=_t[e].BYTES_PER_ELEMENT,i=St[e],a=this.buf;for(let t=0;t<r;t++){const r=new _t[e](o);for(let e=0;e<o;e++)r[e]=n[a/s+e+t*o];this.data.push(i((t+1).toString(),r))}}}}const Rt={intColumn:t=>new Mt(t,"i32"),newIntColumn:t=>new It("i32",t),intColumns:t=>new bt(t.toList(),"i32"),newIntColumns:(t,e)=>new Ot("i32",t,e),floatColumn:t=>new Mt(t,"f32"),newFloatColumn:t=>new It("f32",t),floatColumns:t=>new bt(t.toList(),"f32"),newFloatColumns:(t,e)=>new Ot("f32",t,e),int:t=>new Tt(t),num:t=>new Tt(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,e,n){const o=t[e],r=o.arguments,s=[];let i=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=Rt[e.type](n[i]),i++;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=Rt[e.type](t,o);break;case"newFloatColumn":case"newIntColumn":const s=r[e.numOfRows.ref].data[e.numOfRows.value];e.data=Rt[e.type](s)}s.push(r[t].data)}}const a=function(t,e,n,o){let r;for(const e of o)e.allocateMemoryForBuffer(t);let s=!0;for(const t of o)s&=t.isMemoryForBufferAllocated();if(s){const n=[],s=[];for(const e of o)e.complementArrOfParams(n),e.complementArrOfTypes(s),e.putDataToBuffer(t);const i="number";r=t.ccall(e,i,s,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,s);r._callResult=Rt.num(a);const c=o.output;if("objects"!=c.type)return Lt[c.type](r[c.source].data);const l=[];for(const t of c.source)l.push(r[t].data.data);return l}const Dt="num",Ft="floatColumn",Ut="intColumn",Bt="floatColumns",kt="newFloatColumns",Ht="intColumns",Gt="newIntColumns",Vt="newFloatColumn",Wt="newIntColumn",$t="column",Yt="_callResult",Kt="numOfRows",Xt="numOfColumns",jt="ref",zt="value",qt="tableFromColumns",Qt="objects",Jt="int",Zt="double",te={intColumn:Int32Array,floatColumn:Float32Array,floatColumns:Float32Array,newFloatColumns:Float32Array,intColumns:Int32Array,newIntColumns:Int32Array,newFloatColumn:Float32Array,newIntColumn:Int32Array};function ee(t,e){let n,o=[],r=0;for(const s in t){const i=t[s],a=i.type;if(s!==Yt){switch(a){case Dt:case Jt:case Zt:i.data=e[r],r++;break;case Ut:case Ft:let o;const s=e[r],c=s.length;o=s.type===Jt&&a===Ut||s.type===Zt&&a===Ft?s.getRawData().slice(0,c):new te[a](s.getRawData().slice(0,c)),i.data={array:o,numOfRows:c},r++;break;case Wt:case Vt:let l=0;n=i[Kt][jt],l=t[n].type===Dt?t[n].data:t[n].data[i[Kt][zt]],i.data={numOfRows:l},r++;break;case Ht:case Bt:let u=[];const h=e[r].byIndex(0).length;for(const t of e[r].toList())t.type===Jt&&a===Ut||t.type===Zt&&a===Ft?u.push(t.getRawData().slice(0,h)):u.push(new te[a](t.getRawData().slice(0,h)));i.data={arrays:u,numOfRows:h,numOfColumns:u.length},r++;break;case Gt:case kt:let f=0,m=0;n=i[Kt][jt],f=t[n].type===Dt?t[n].data:t[n].data[i[Kt][zt]],n=i[Xt][jt],m=t[n].type===Dt?t[n].data:t[n].data[i[Xt][zt]],i.data={numOfRows:f,numOfColumns:m},r++;break;default:return}o.push(i)}}return o}function ne(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 s=t[r];switch(s.type){case Dt:case Jt:case Zt:case Ut:case Ft:case Bt:case Ht:break;case Vt:case Wt:let t;null==s.name?t=(0).toString():a=s.name,s.column=n[s.type](t,e[o].array);break;case Gt:case kt:let r=[],i=e[o].arrays.length,a=[];if(null==s.names)for(let t=1;t<=i;t++)a.push(t.toString());else a=s.names;for(let t=0;t<i;t++)r.push(n[s.type](a[t],e[o].arrays[t]));s.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 Dt:case Jt:case Zt:return t.arguments[e.source];case $t:return t.arguments[e.source].column;case qt:return DG.DataFrame.fromColumns(t.arguments[e.source].columns);case Qt: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 Dt:case Jt:case Zt:case Ut:case Ft:case Ht:case Bt:break;case Wt:case Vt:n.column=null;break;case Gt:case kt:n.columns=null}}}(t.arguments),n}const oe=1,re=1e8,se="components must be positive.",ie="components must not be greater than features count.",ae="dataframe is too big.",ce="unsupported column type: ";function le(e){if(e.type!=t.COLUMN_TYPE.FLOAT&&e.type!=t.COLUMN_TYPE.INT)throw new Error(ce+e.type)}function ue(t){if(t.stats.missingValueCount>0)throw new Error(`The column '${t.name}' has missing values.`)}function he(t,e){if(function(t,e){if(e<oe)throw new Error(se);if(e>t.length)throw new Error(ie);for(const e of t)le(e),ue(e)}(t,e),t.length*t.byIndex(0).length>re)throw new Error(ae)}var fe,me,de,ye,pe,ge,Ee,Ce,Ae,we,ve,Ne,_e,xe,Se;function Te(t,e,o,r,s){return i=this,a=void 0,l=function*(){he(e,o);const t=r?1:0,i=s?1:0;return yield async function(t,e,o,r,s){return new Promise(((t,i)=>{const a=new Worker(new URL(n.p+n.u(91),n.b));a.postMessage(ee(EDA.principalComponentAnalysis.arguments,[e,o,r,s])),a.onmessage=function(e){a.terminate(),t(ne(EDA.principalComponentAnalysis,e.data))}}))}(0,e,o,t,i)},new((c=void 0)||(c=Promise))((function(t,e){function n(t){try{r(l.next(t))}catch(t){e(t)}}function o(t){try{r(l.throw(t))}catch(t){e(t)}}function r(e){var r;e.done?t(e.value):(r=e.value,r instanceof c?r:new c((function(t){t(r)}))).then(n,o)}r((l=l.apply(i,a||[])).next())}));var i,a,c,l}(Se=fe||(fe={}))[Se.COMPUTE_COMPONENTS=0]="COMPUTE_COMPONENTS",Se[Se.PERFORM_MVA=1]="PERFORM_MVA",Se[Se.DEMO=2]="DEMO",(xe=me||(me={})).NO_DF="No dataframe is opened",xe.NO_COLS="No numeric columns without missing values",xe.ONE_COL="No columns to be used as features (just one numeric columns without missing values)",xe.EMPTY_DF="Dataframe is empty",(_e=de||(de={})).PREDICT="Predict",_e.USING="Using",_e.COMPONENTS="Components",_e.PLS="PLS",_e.MVA="Multivariate Analysis (PLS)",_e.RUN="RUN",_e.NAMES="Names",_e.MODEL="Observed vs. Predicted",_e.FEATURE="Feature",_e.REGR_COEFS="Regression Coefficients",_e.XLOADING="x.loading.p",_e.LOADINGS="Loadings",_e.XSCORE="x.score.t",_e.YSCORE="y.score.u",_e.SCORES="Scores",_e.EXPL_VAR="Explained Variance",_e.EXPLORE="Explore",_e.FEATURES="Feature names",_e.BROWSE="Browse",(Ne=ye||(ye={})).PREDICT="Column with the response variable",Ne.FEATURES="Predictors (features)",Ne.COMPONENTS="Number of PLS components",Ne.PLS="Compute PLS components",Ne.MVA="Perform multivariate analysis",Ne.NAMES="Names of data samples",(ve=pe||(pe={})).PLS="https://datagrok.ai/help/explore/multivariate-analysis/pls#pls-components",ve.MVA="https://datagrok.ai/help/explore/multivariate-analysis/pls",ve.MODEL="https://datagrok.ai/help/explore/multivariate-analysis/plots/predicted-vs-reference",ve.COEFFS="https://datagrok.ai/help/explore/multivariate-analysis/plots/regression-coefficients",ve.LOADINGS="https://datagrok.ai/help/explore/multivariate-analysis/plots/loadings",ve.EXPL_VARS="https://datagrok.ai/help/explore/multivariate-analysis/plots/explained-variance",ve.SCORES="https://datagrok.ai/help/explore/multivariate-analysis/plots/scores",(we=ge||(ge={}))[we.DEFAULT=3]="DEFAULT",we[we.MIN=1]="MIN",(Ae=Ee||(Ee={})).PREFIX="PLS",Ae.SUFFIX="(predicted)",Ae.COMP="component",Ae.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"}(Ce||(Ce={}));const Me=[.49,.79,.99];var Ie;!function(t){t.AXIS="#838383",t.CIRCLE="#0000FF"}(Ie||(Ie={})),[{caption:de.MODEL,text:"Closer to the line means better price prediction."},{caption:de.SCORES,text:"The latent factor values for each sample reflect the similarities and dissimilarities among observations."},{caption:de.LOADINGS,text:"The impact of each feature on the latent factors: higher loading means stronger influence."},{caption:de.REGR_COEFS,text:"Parameters of the obtained linear model: features make different contribution to the prediction."},{caption:de.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"),pe.MVA;var be=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};function Oe(t){return be(this,void 0,void 0,(function*(){he(t.features,t.components),le(t.predict),ue(t.predict);const e=yield async function(t,e,o,r){return new Promise(((t,s)=>{const i=new Worker(new URL(n.p+n.u(412),n.b));i.postMessage(ee(EDA.partialLeastSquareRegression.arguments,[e,o,r])),i.onmessage=function(e){i.terminate(),t(ne(EDA.partialLeastSquareRegression,e.data))}}))}(t.table,t.features,t.predict,t.components);return{prediction:e[Ce.PREDICTION],regressionCoefficients:e[Ce.REGR_COEFFS],tScores:e[Ce.T_SCORES],uScores:e[Ce.U_SCORES],xLoadings:e[Ce.X_LOADINGS],yLoadings:e[Ce.Y_LOADINGS]}}))}Math.min,Math.max;var Re=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};function Le(e,n){return Re(this,void 0,void 0,(function*(){const o=e.length,r=n.length,s=n.stats.avg,i=n.stats.stdev,a=new Float32Array(o+1).fill(0);if(a[o]=s,0===i||1===r)return a;try{const r=[],c=[],l=new Float32Array(o),u=new Float32Array(o);let h=0,f=0;for(const t of e){const e=t.stats;e.stdev>0&&(r.push(h),c.push(t),l[f]=e.avg,u[f]=e.stdev,++f),++h}if(0===f)return a;const m=function(t,e,n,o,r,s,i){return Pt(EDA,"fitLinearRegressionParamsWithDataNormalizing",[t,e,n,o,r,s,i])}(t.DataFrame.fromColumns(c).columns,t.Column.fromFloat32Array("xAvgs",l,f),t.Column.fromFloat32Array("xStdevs",u,f),n,s,i,f+1).getRawData();for(let t=0;t<f;++t)a[r[t]]=m[t];a[o]=m[f]}catch(r){const s=yield function(e,n,o){return Re(this,void 0,void 0,(function*(){return(yield Oe({table:t.DataFrame.fromColumns([n]),features:e,predict:n,components:o,names:void 0})).regressionCoefficients.getRawData()}))}(e,n,De(e.length,n.length));let i=0;for(let t=0;t<o;++t)a[t]=s[t],i+=s[t]*e.byIndex(t).stats.avg;a[o]-=i}return a}))}function Pe(e,n){const o=e.length;if(o!==n.length-1)throw new Error("Incorrect parameters count");const r=e.byIndex(0),s=r.length,i=new Float32Array(s);let a=r.getRawData();const c=n[o];let l=n[0];for(let t=0;t<s;++t)i[t]=c+l*a[t];for(let t=1;t<o;++t){a=e.byIndex(t).getRawData(),l=n[t];for(let t=0;t<s;++t)i[t]+=l*a[t]}return t.Column.fromFloat32Array(e.getUnusedName("prediction"),i,s)}const De=(t,e)=>e<=t?Math.min(10,e):Math.min(10,t);var Fe;!function(t){t[t.MAX_SAMLPES=1e5]="MAX_SAMLPES",t[t.MAX_FEATURES=1e3]="MAX_FEATURES"}(Fe||(Fe={}));class Ue{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<=Fe.MAX_FEATURES&&e.length<=Fe.MAX_SAMLPES}constructor(e){if(this.specn=null,e)try{const n=new Uint32Array(e.buffer,0,2),o=n[0],r=n[1],s=new Uint8Array(e.buffer,8,o),i=t.DataFrame.fromByteArray(s),a=i.rowCount,c=i.columns,l=c.length,u=new Uint8Array(e.buffer,8+o,r),h=t.DataFrame.fromByteArray(u);if(l<3)throw new Error("incorrect columns count");const f=c.byName(de.FEATURES).toList(),m=new Float32Array(a);m.set(c.byName(de.REGR_COEFS).getRawData());const d=l-2,y=new Array(d);for(let t=0;t<d;++t)y[t]=new Float32Array(a),y[t].set(c.byIndex(t+2).getRawData());this.specn={params:m,loadings:y,names:f,dim:a-1,components:l-2,scores:h}}catch(t){throw new Error(`Failed to load model: ${t instanceof Error?t.message:"the platform issue"}`)}}fit(e,n,o){return r=this,s=void 0,a=function*(){const r=yield Oe({table:t.DataFrame.fromColumns([n]),features:e,predict:n,components:o,names:void 0}),s=e.names();s.push("_");const i=this.getRegrCoeffs(e,n,r.regressionCoefficients),a=this.getLoadings(o,r.xLoadings);this.specn={names:s,params:i,loadings:a,components:o,dim:e.length,scores:this.getScoresDf(r)},this.computeExplVars(n.length,o,r.yLoadings)},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{c(a.next(t))}catch(t){e(t)}}function o(t){try{c(a.throw(t))}catch(t){e(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(t){t(r)}))).then(n,o)}c((a=a.apply(r,s||[])).next())}));var r,s,i,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),s=n.getRawData();let i=0;for(let e=0;e<o;++e)r[e]=s[e],i+=s[e]*t.byIndex(e).stats.avg;return r[o]=e.stats.avg-i,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 s=Math.pow(o[0],2)/t;this.specn.loadings[0][r]=s;for(let n=1;n<e;++n)s+=Math.pow(o[n],2)/t,this.specn.loadings[n][r]=s}toBytes(){if(null===this.specn)throw new Error("Failed to pack untrained model");const e=t.DataFrame.fromColumns([t.Column.fromStrings(de.FEATURES,this.specn.names),t.Column.fromFloat32Array(de.REGR_COEFS,this.specn.params)]);this.specn.loadings.forEach(((n,o)=>e.columns.add(t.Column.fromFloat32Array(`${de.XLOADING}${o+1}`,n))));const n=e.toByteArray(),o=n.length,r=this.specn.scores.toByteArray(),s=r.length,i=o+s+8,a=new Uint8Array(64*(Math.ceil(i/64)+1)),c=new Uint32Array(a.buffer,0,2);return c[0]=o,c[1]=s,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 Pe(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(de.FEATURES,this.specn.names.slice(0,-1)),t.Column.fromFloat32Array(de.REGR_COEFS,this.specn.params,n)]),r=o.columns,s=r.length,i=this.specn.components;return this.specn.loadings.forEach(((e,r)=>o.columns.add(t.Column.fromFloat32Array(`${de.XLOADING}${r+1}`,e,n)))),e.push(t.Viewer.scatterPlot(o,{title:de.LOADINGS,xColumnName:r.byIndex(s).name,yColumnName:r.byIndex(s+(i>1?1:0)).name,markerType:t.MARKER_TYPE.CIRCLE,labels:de.FEATURES,help:pe.LOADINGS})),e.push(t.Viewer.barChart(o,{title:de.REGR_COEFS,splitColumnName:de.FEATURES,valueColumnName:de.REGR_COEFS,valueAggrType:t.AGG.AVG,help:pe.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]=`${Ee.COMP} 1`,r[0]=this.specn.loadings[0][n];for(let t=1;t<e;++t)o[t]=`${Ee.COMPS} ${t+1}`,r[t]=this.specn.loadings[t][n];return t.Viewer.barChart(t.DataFrame.fromColumns([t.Column.fromStrings(Ee.COMPS,o),t.Column.fromFloat32Array(de.EXPL_VAR,r)]),{title:de.EXPL_VAR,splitColumnName:Ee.COMPS,valueColumnName:de.EXPL_VAR,valueAggrType:t.AGG.AVG,help:pe.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=`${de.XSCORE}${e+1}`)),o.forEach(((t,e)=>t.name=`${de.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:de.SCORES,xColumnName:e[0],yColumnName:e[1],markerType:t.MARKER_TYPE.CIRCLE,help:pe.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:Ie.CIRCLE})};return t.forEach((o=>{const r="${"+o+"}";e.push({type:"line",formula:`${r} = 0`,width:1,visible:!0,title:" ",color:Ie.AXIS}),t.forEach((t=>{const e="${"+t+"}";Me.forEach((t=>{n(e+` = sqrt(${t*t} - ${r} * ${r})`,t),n(e+` = -sqrt(${t*t} - ${r} * ${r})`,t)}))}))})),e}(e)),n}}const Be=["Alpha","Beta","Gamma","Delta"];function ke(t,e){if(t.length!==e.length)throw new Error(`Non-equal elements count: ${t.length} vs. ${e.length}`)}function He(n,o,r){const s=e.data.demo.randomWalk(n,o),i=s.columns,a=new Float32Array(o),c=new Array(o);for(let t=0;t<o;++t)c[t]=i.byIndex(t).getRawData();for(let e=0;e<r;++e){const r=new Float32Array(n);for(let t=0;t<o;++t)a[t]=Math.random();for(let t=0;t<n;++t)for(let e=0;e<o;++e)r[t]+=a[e]*c[e][t];i.add(t.Column.fromFloat32Array(`y${e}`,r))}return s}function Ge(t,e){ke(t,e);let n=0;const o=t.length,r=t.getRawData(),s=e.getRawData();for(let t=0;t<o;++t)n=Math.max(n,Math.abs(r[t]-s[t]));return n}function Ve(e,n,o){const r=new Array(e),s=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();s[t]=n}const i=t.DataFrame.fromColumns(s.map(((e,n)=>t.Column.fromFloat32Array(`#${n}`,e))));for(let t=0;t<e;++t)r[t]=s.slice(0,2).map((e=>e[t]>.5?"A":"B")).join("");if(i.columns.add(t.Column.fromStrings("Labels",r)),o)for(let t=0;t<n;++t)for(let n=0;n<e;++n)s[t][n]+=1*(s[t][n]>0?1:-1);return i}function We(t,e){ke(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 $e=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};const Ye=100,Ke=4e3,Xe=.1;L("Principal component analysis",(()=>{O("Performance: 100K rows, 100 cols, 3 components",(()=>$e(void 0,void 0,void 0,(function*(){const t=e.data.demo.randomWalk(1e5,Ye);yield Te(0,t.columns,3,!1,!1)}))),{timeout:Ke,benchmark:!0}),O("Correctness",(()=>$e(void 0,void 0,void 0,(function*(){const t=He(100,3,5);R(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 Te(0,t.columns,4,!1,!1)).columns.byIndex(3))<Xe,!0,"Incorrect PCA computations")}))),{timeout:Ke})})),L("Partial least squares regression",(()=>{O("Performance: 100K rows, 100 cols, 3 components",(()=>$e(void 0,void 0,void 0,(function*(){const t=e.data.demo.randomWalk(1e5,Ye),n=t.columns;yield Oe({table:t,features:n,predict:n.byIndex(99),components:3,names:void 0})}))),{timeout:Ke,benchmark:!0}),O("Correctness",(()=>$e(void 0,void 0,void 0,(function*(){const t=He(100,3,5),e=t.columns,n=e.byIndex(7),o=Ge(n,(yield Oe({table:t,features:e,predict:n,components:3,names:void 0})).prediction);R(o<Xe,!0,`Incorrect PLS computations, error is too big: ${o}; expected: < 0.1`)}))),{timeout:Ke}),O("Predictive modeling: 100K samples, 100 features, 3 components",(()=>$e(void 0,void 0,void 0,(function*(){const t=He(1e5,3,98).columns,e=t.byIndex(Ye);t.remove(e.name);const n=new Ue;yield n.fit(t,e,3);const o=n.toBytes(),r=Ge(e,new Ue(o).predict(t));R(r<Xe,!0,`Incorrect PLS (ML) computations, error is too big: ${r}; expected: < 0.1`)}))),{timeout:Ke,benchmark:!0})})),L("Linear regression",(()=>{O("Performance: 100K samples, 100 features",(()=>$e(void 0,void 0,void 0,(function*(){const t=He(1e5,Ye,1).columns,e=t.byIndex(Ye),n=yield Le(t,e),o=new Uint8Array(n.buffer);Pe(t,new Float32Array(o.buffer))}))),{timeout:Ke,benchmark:!0}),O("Correctness",(()=>$e(void 0,void 0,void 0,(function*(){const t=He(100,2,1).columns,e=t.byIndex(2),n=yield Le(t,e),o=new Uint8Array(n.buffer),r=Pe(t,new Float32Array(o.buffer)),s=Ge(r,r);R(s<Xe,!0,`Incorrect linear regression computations, error is too big: ${s}; expected: < 0.1`)}))),{timeout:Ke})}));var je=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};const ze="Avg-s",qe="Stddev-s";var Qe;!function(t){t[t.MAX_SAMLPES=5e4]="MAX_SAMLPES",t[t.MAX_FEATURES=100]="MAX_FEATURES"}(Qe||(Qe={}));class Je{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<=Qe.MAX_FEATURES&&e.length<=Qe.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),s=r.columns,i=s.length;if(i<3)throw new Error("incorrect columns count");this.classesCount=i-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=s.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 c=s.byName(ze);if(c.type!==t.COLUMN_TYPE.FLOAT)throw new Error("incorrect average values column type");this.avgs=c.getRawData();const l=s.byName(qe);if(l.type!==t.COLUMN_TYPE.FLOAT)throw new Error("incorrect standard deviations column type");this.stdevs=l.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(ze,this.avgs),n[e+1]=t.Column.fromFloat32Array(qe,this.stdevs);const o=t.DataFrame.fromColumns(n).toByteArray(),r=o.length,s=new Uint8Array(r+4);return new Uint32Array(s.buffer,0,1)[0]=r,s.set(o,4),s}fit(e,n){return je(this,arguments,void 0,(function*(e,n,o=1,r=100,s=.1,i=.001){if(e.length!==this.featuresCount)throw new Error("Training failes - incorrect features count");if(o<=0||r<1||s<=0||i<=0)throw new Error("Training failes - incorrect fitting hyperparameters");this.extractStats(e);const a=n.length,c=n.categories.length,l=n.categories;for(let t=0;t<c;++t)this.categories[t]=l[t];try{const l=function(t,e,n,o,r,s,i,a,c,l,u){return Pt(EDA,"fitSoftmax",[t,e,n,o,r,s,i,a,c,l,u])}(e,t.Column.fromFloat32Array("avgs",this.avgs,this.featuresCount),t.Column.fromFloat32Array("stdevs",this.stdevs,this.featuresCount),t.Column.fromInt32Array("targets",n.getRawData(),a),c,r,o,s,i,this.featuresCount+1,c).columns;this.params=new Array(c);for(let t=0;t<c;++t)this.params[t]=l.byIndex(t).getRawData()}catch(t){try{this.params=yield this.fitSoftmaxParams(e,n,r,o,s,i)}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 s of e){if(s.type!==t.COLUMN_TYPE.INT&&s.type!==t.COLUMN_TYPE.FLOAT)throw new Error("Training failes - incorrect features type");const e=s.getRawData(),i=this.avgs[r],a=this.stdevs[r];if(a>0)for(let t=0;t<n;++t)o[t][r]=(e[t]-i)/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 s=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(),i=this.avgs[s],a=this.stdevs[s];if(a>0)for(let t=0;t<n;++t)r[s][t]=(e[t]-i)/a;else for(let t=0;t<n;++t)r[s][t]=0;++s}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(),s=new Array(o),i=new Uint32Array(n).fill(0);for(let t=0;t<o;++t)s[t]=new Uint8Array(n).fill(0);for(let t=0;t<o;++t)s[t][r[t]]=1,++i[r[t]];return{oneHot:s,weights:i}}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,s=this.classesCount;let i,a;const c=new Float32Array(s);let l,u,h;const f=new Array(o);for(let t=0;t<o;++t){i=n[t],l=0;for(let t=0;t<s;++t){a=this.params[t],l=a[r];for(let t=0;t<r;++t)l+=a[t]*i[t];c[t]=Math.exp(l)}u=c[0],h=0;for(let t=1;t<s;++t)u<c[t]&&(u=c[t],h=t);f[t]=this.categories[h]}return t.Column.fromStrings("predicted",f)}fitSoftmaxParams(t,e,o,r,s,i){return je(this,void 0,void 0,(function*(){const a=this.preprocessedTargets(e);return new Promise(((c,l)=>{const u=new Worker(new URL(n.p+n.u(501),n.b));u.postMessage({features:this.normalized(t),transposed:this.transposed(t),oneHot:a.oneHot,classesWeights:a.weights,targetRaw:e.getRawData(),iterations:o,rate:r,penalty:s,tolerance:i}),u.onmessage=function(t){u.terminate(),c(t.data.params),console.log(`Loss: ${t.data.loss}`)}}))}))}}var Ze,tn,en,nn;(nn=Ze||(Ze={}))[nn.ITERATIONS=20]="ITERATIONS",nn[nn.ETA=.3]="ETA",nn[nn.MAX_DEPTH=6]="MAX_DEPTH",nn[nn.LAMBDA=1]="LAMBDA",nn[nn.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"}(tn||(tn={})),function(t){t[t.MODEL=1e7]="MODEL",t[t.UTILS=1]="UTILS",t[t.PACK=128]="PACK",t[t.SIZE=4]="SIZE"}(en||(en={}));const on=t.FLOAT_NULL;var rn;!function(t){t.PREDICT="Prediction",t.TYPE="Type",t.PARAMS="Params count",t.CATS="Categories",t.CATS_SIZE="Categories size"}(rn||(rn={}));class sn{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<=tn.SAMPLES_LOW?n<=tn.FEATURES_LOW:o<=tn.SAMLPES_MID?n<=tn.FEATURES_MID:o<=tn.SAMLPES_HIGH&&n<=tn.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+=en.SIZE;const s=t.DataFrame.fromByteArray(new Uint8Array(e.buffer,o,r));o+=r,this.targetType=s.get(rn.TYPE,0);const i=s.get(rn.PARAMS,0),a=s.get(rn.CATS_SIZE,0);if(a>0){const r=t.DataFrame.fromByteArray(new Uint8Array(e.buffer,o,a));this.targetCategories=null===(n=r.col(rn.CATS))||void 0===n?void 0:n.toList()}o+=a,o=4*Math.ceil(o/4),this.modelParams=new Int32Array(e.buffer,o,i)}catch(t){throw new Error(`Failed to load model: ${t instanceof Error?t.message:"the platform issue"}`)}}fit(e,o){return r=this,s=arguments,a=function*(e,o,r=Ze.ITERATIONS,s=Ze.ETA,i=Ze.MAX_DEPTH,a=Ze.LAMBDA,c=Ze.ALPHA){this.targetType=o.type,this.targetType===t.COLUMN_TYPE.STRING&&(this.targetCategories=o.categories),this.modelParams=yield async function(t,e,o,r,s,i,a,c,l,u){return new Promise(((h,f)=>{const m=e.length,d=t.length,y=new Float32Array(m*d);let p,g;for(let e=0;e<d;++e){g=t.byIndex(e).getRawData(),p=e*m;for(let t=0;t<m;++t)y[t+p]=g[t]}const E=new Worker(new URL(n.p+n.u(990),n.b));E.postMessage({features:y,target:e.getRawData(),samplesCount:m,featuresCount:d,modelReserve:l,utilsLength:u,iterations:r,eta:s,maxDepth:i,lambda:a,alpha:c,missingValue:o}),E.onmessage=function(t){E.terminate(),h(t.data.params)}}))}(e,o,on,r,s,i,a,c,en.MODEL,en.UTILS)},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{c(a.next(t))}catch(t){e(t)}}function o(t){try{c(a.throw(t))}catch(t){e(t)}}function c(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(t){t(r)}))).then(n,o)}c((a=a.apply(r,s||[])).next())}));var r,s,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,s=n.length;let i=XGBoostModule.HEAPF32;const a=XGBoostModule.HEAP32,c=XGBoostModule._malloc(o*r*4),l=XGBoostModule._malloc(4*o),u=XGBoostModule._malloc(4*s);for(let e=0;e<r;++e){const n=t.byIndex(e).getRawData();for(let t=0;t<o;++t)i[c/4+t+e*o]=n[t]}for(let t=0;t<s;++t)a[u/4+t]=n[t];XGBoostModule._predict(c,o,r,e,u,s,l,o),i=XGBoostModule.HEAPF32;const h=new Float32Array(o);for(let t=0;t<o;++t)h[t]=i[l/4+t];return XGBoostModule._free(c),XGBoostModule._free(l),XGBoostModule._free(u),h}(e,on,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(rn.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,rn.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(rn.TYPE,[this.targetType]),t.Column.fromInt32Array(rn.PARAMS,new Int32Array([this.modelParams.length])),t.Column.fromInt32Array(rn.CATS_SIZE,new Int32Array([n]))]).toByteArray(),s=r.length,i=64*Math.ceil((en.SIZE+s+n+o+en.PACK)/64),a=new Uint8Array(i);let c=0;return new Uint32Array(a.buffer,c,1)[0]=s,c+=en.SIZE,a.set(r,c),c+=s,n>0&&a.set(e,c),c+=n,c=4*Math.ceil(c/4),a.set(new Uint8Array(this.modelParams.buffer),c),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;for(let t=0;t<n;++t)o[t]=this.targetCategories[(s=Math.round(e[t]),Math.max(0,Math.min(s,r)))];var s;return t.Column.fromList(t.COLUMN_TYPE.STRING,rn.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(rn.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(rn.PREDICT,o)}}var an=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};const cn=100,ln=8e3;var un;L("Softmax",(()=>{O("Performance: 50K samples, 100 features",(()=>an(void 0,void 0,void 0,(function*(){const t=Ve(5e4,cn,!1).columns,e=t.byIndex(cn);t.remove(e.name);const n=new Je({classesCount:e.categories.length,featuresCount:t.length});yield n.fit(t,e);const o=n.toBytes();new Je(void 0,o).predict(t)}))),{timeout:ln,benchmark:!0}),O("Correctness",(()=>an(void 0,void 0,void 0,(function*(){const t=Ve(50,2,!0).columns,e=t.byIndex(2);t.remove(e.name);const n=new Je({classesCount:e.categories.length,featuresCount:t.length});yield n.fit(t,e);const o=n.toBytes(),r=We(e,new Je(void 0,o).predict(t));R(r>.9,!0,`Softmax failed, too small accuracy: ${r}; expected: <= 0.9`)}))),{timeout:ln})})),L("XGBoost",(()=>{O("Performance: 50K samples, 100 features",(()=>an(void 0,void 0,void 0,(function*(){const t=Ve(5e4,cn,!1).columns,e=t.byIndex(cn);t.remove(e.name);const n=new sn;yield n.fit(t,e);const o=n.toBytes();new sn(o).predict(t)}))),{timeout:ln,benchmark:!0}),O("Correctness",(()=>an(void 0,void 0,void 0,(function*(){const t=Ve(50,2,!0).columns,e=t.byIndex(2);t.remove(e.name);const n=new sn;yield n.fit(t,e);const o=n.toBytes(),r=We(e,new sn(o).predict(t));R(r>.9,!0,`XGBoost failed, too small accuracy: ${r}; expected: <= 0.9`)}))),{timeout:ln})})),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"}(un||(un={}));const hn="copy";var fn,mn;!function(t){t.KNN_IMPUTER="Impute",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"}(fn||(fn={})),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 KNN 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"}(mn||(mn={}));const dn=[t.COLUMN_TYPE.INT,t.COLUMN_TYPE.FLOAT,t.COLUMN_TYPE.STRING,t.COLUMN_TYPE.DATE_TIME,t.COLUMN_TYPE.QNUM];function yn(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(un.UNSUPPORTED_COLUMN_TYPE)}}var pn,gn,En,Cn;function An(e){switch(e){case t.COLUMN_TYPE.STRING:case t.COLUMN_TYPE.DATE_TIME:return{defaultWeight:En.WEIGHT,defaultMetric:pn.ONE_HOT,availableMetrics:[pn.ONE_HOT]};case t.COLUMN_TYPE.INT:case t.COLUMN_TYPE.FLOAT:case t.COLUMN_TYPE.QNUM:return{defaultWeight:En.WEIGHT,defaultMetric:pn.DIFFERENCE,availableMetrics:[pn.DIFFERENCE,pn.ONE_HOT]};default:throw new Error(un.UNSUPPORTED_COLUMN_TYPE)}}!function(t){t.ONE_HOT="One-hot",t.DIFFERENCE="Difference"}(pn||(pn={})),(Cn=gn||(gn={})).EUCLIDEAN="Euclidean",Cn.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"}(En||(En={}));const wn=n=>{O(`${n} dist, 100K rows, 15 cols, 75 missing vals`,(()=>{return o=void 0,r=void 0,i=function*(){const o=function(e){const n=Be.length,o=[];let r=0;const s=new Map;for(let n=0;n<5;++n){const i=new Int32Array(e),a=`int #${n+1}`,c=[];for(let t=0;t<e;++t)i[t]=Math.floor(10*Math.random());for(let n=0;n<5;++n)r=Math.floor(e*Math.random()),i[r]=t.INT_NULL,c.push(r);o.push(t.Column.fromInt32Array(a,i)),s.set(a,c)}for(let n=0;n<5;++n){const i=new Float32Array(e),a=`float #${n+1}`,c=[];for(let t=0;t<e;++t)i[t]=10*Math.random();for(let n=0;n<5;++n)r=Math.floor(e*Math.random()),i[r]=t.FLOAT_NULL,c.push(r);o.push(t.Column.fromFloat32Array(a,i)),s.set(a,c)}for(let i=0;i<5;++i){const a=new Array(e),c=`str #${i+1}`,l=[];for(let t=0;t<e;++t)a[t]=Be[Math.floor(Math.random()*n)];const u=t.Column.fromStrings(c,a);for(let t=0;t<5;++t)r=Math.floor(e*Math.random()),u.set(r,null),l.push(r);o.push(u),s.set(c,l)}return{df:t.DataFrame.fromColumns(o),misValsIds:s}}(1e5),r=o.df,s=r.columns.names(),i=new Map,a=o.misValsIds;for(const t of r.columns){const e=An(t.type);i.set(t.name,{weight:e.defaultWeight,type:e.defaultMetric})}const c=function(n,o,r,s,i,a,c){if(a<1)throw new Error(un.INCORRECT_NEIGHBORS);if(n.rowCount<2)throw new Error(un.KNN_NOT_ENOUGH_OF_ROWS);if(0===o.length)throw new Error(un.KNN_NO_TARGET_COLUMNS);if(0===r.size)throw new Error(un.KNN_NO_FEATURE_COLUMNS);1===r.size&&o.forEach((t=>{if(r.has(t))throw new Error(`${un.KNN_NO_FEATURE_COLUMNS} can be used for the column '${t}'`)})),o.forEach((t=>{if(!s.has(t))throw new Error(`${un.KNN_FAILS}: ${un.WRONG_PREDICTIONS}`)}));const l=n.columns;o.forEach((t=>{if(!dn.includes(l.byName(t).type))throw new Error(un.UNSUPPORTED_COLUMN_TYPE)})),r.forEach(((t,e)=>{if(!dn.includes(n.getCol(e).type))throw new Error(un.UNSUPPORTED_COLUMN_TYPE)}));const u=new Map;return o.forEach((o=>{const h=l.byName(o),f=yn(h),m=h.length,d=h.getRawData(),y=new Uint16Array(h.categories.length),p=[],g=[],E=[],C=[];r.forEach(((t,e)=>{if(e!==h.name){const n=l.byName(e);switch(p.push(n.getRawData()),g.push(yn(n)),t.type){case pn.DIFFERENCE:E.push(((e,n)=>t.weight*Math.abs(e-n)));break;case pn.ONE_HOT:E.push(((e,n)=>t.weight*(e===n?0:1)))}}}));const A=p.length,w=new Uint32Array(p.length),v=new Float32Array(p.length);let N=0;const _=new Array(a);let x=0,S=0,T=0,M=0,I=0;const b=(t,e)=>{w.forEach(((n,o)=>{v[o]=E[n](p[n][t],p[n][e])}))},O=i===gn.EUCLIDEAN?()=>{let t=0;for(let e=0;e<N;++e)t+=v[e]*v[e];return Math.sqrt(t)}:()=>{let t=0;for(let e=0;e<N;++e)t+=Math.abs(v[e]);return Math.sqrt(t)},R=t=>{if(d[t]===f)return!1;for(let e=0;e<N;++e)if(p[w[e]][t]===g[w[e]])return!1;return!0},L=e=>{if((t=>{N=0;for(let e=0;e<A;++e)p[e][t]!==g[e]&&(w[N]=e,++N)})(e),0===N)throw new Error(`${un.KNN_IMPOSSIBLE_IMPUTATION}: the column "${h.name}", row ${e+1}`);x=0;for(let t=0;t<m;++t)if(R(t)&&t!==e){b(e,t);const n=O();if(x<a)_[x]={index:t,dist:n},++x;else{S=0,T=_[0].dist;for(let t=1;t<x;++t)T<_[t].dist&&(T=_[t].dist,S=t);n<T&&(_[S]={index:t,dist:n})}}if(0===x)throw new Error(`${un.KNN_IMPOSSIBLE_IMPUTATION}: the column "${h.name}", row ${e+1}`);if(h.type===t.COLUMN_TYPE.STRING)return(()=>{y.forEach(((t,e,n)=>n[e]=0));let t=0;for(t=0;t<x;++t)++y[d[_[t].index]];let e=y[0],n=0;return y.forEach(((t,o)=>{t>e&&(e=t,n=o)})),n})();M=0;for(let t=0;t<x;++t)M+=d[_[t].index];return I=M/x,h.type===t.COLUMN_TYPE.INT?Math.round(I):I};if(c){for(const t of s.get(o))try{d[t]=L(t)}catch(n){C.push(t),n instanceof Error||e.shell.error(un.CORE_ISSUE)}C.length>0&&u.set(o,C),h.set(0,h.get(0))}else{const t=h.clone();let r=1,i=`${o}(${hn})`;for(;n.columns.contains(i);)i=`${o}(${hn} ${r})`,++r;t.name=i;const a=t.getRawData();for(const t of s.get(o))try{a[t]=L(t)}catch(n){C.push(t),n instanceof Error||e.shell.error(un.CORE_ISSUE)}C.length>0&&u.set(i,C),t.set(0,t.get(0)),n.columns.add(t)}})),u}(r,s,i,a,n,5,!0);let l=0;c.forEach(((t,e)=>l+=t.length)),R(l,0,`Failed to impute ${l} missing values`)},new((s=void 0)||(s=Promise))((function(t,e){function n(t){try{c(i.next(t))}catch(t){e(t)}}function a(t){try{c(i.throw(t))}catch(t){e(t)}}function c(e){var o;e.done?t(e.value):(o=e.value,o instanceof s?o:new s((function(t){t(o)}))).then(n,a)}c((i=i.apply(o,r||[])).next())}));var o,r,s,i}),{timeout:1e4,benchmark:!0})};L("Missing values imputation",(()=>{wn(gn.EUCLIDEAN),wn(gn.MANHATTAN)}));var vn=function(t,e,n,o){return new(n||(n=Promise))((function(r,s){function i(t){try{c(o.next(t))}catch(t){s(t)}}function a(t){try{c(o.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}c((o=o.apply(t,e||[])).next())}))};const Nn=new t.Package;function _n(e,n,o){return vn(this,void 0,void 0,(function*(){const r=yield D({category:e,test:n,testContext:o});return t.DataFrame.fromObjects(r)}))}})(),eda_test=o})();
|
|
1
|
+
var eda_test;(()=>{var t={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&&x("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=[],A=0,C=null,_=null;function x(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}var N,b;function S(t){return t.startsWith("data:application/octet-stream;base64,")}function T(t){try{if(t==N&&l)return new Uint8Array(l);if(i)return i(t);throw"both async and sync fetching of the wasm failed"}catch(t){x(t)}}function I(t,n,e){return function(t){return l||!a&&!u||"function"!=typeof fetch?Promise.resolve().then((function(){return T(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 T(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),x(t)}))}function M(t){for(;t.length>0;)t.shift()(o)}function O(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(G(this.get_type()))return p[this.excPtr>>2];var t=this.get_adjusted_ptr();return 0!==t?t:this.excPtr}}function R(t){var n=f.buffer;try{return f.grow(t-n.byteLength+65535>>>16),y(),1}catch(t){}}function L(t){return o["_"+t]}S(N="wasmDbscan.wasm")||(b=N,N=o.locateFile?o.locateFile(b,c):c+b);var P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function D(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=H(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=H(t.length);return n=t,e=r,m.set(n,e),r}},s=L(t),a=[],u=0;if(r)for(var c=0;c<r.length;c++){var l=i[e[c]];l?(0===u&&(u=B()),a[c]=l(r[c])):a[c]=r[c]}var f=s.apply(null,a);return function(t){return 0!==u&&k(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&&P)return P.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 F,U={__cxa_throw:function(t,n,e){throw new O(t).init(n,e),t},abort:function(){x("")},emscripten_memcpy_big:function(t,n,e){d.copyWithin(t,n,n+e)},emscripten_resize_heap:function(t){var n,e=d.length,r=2147483648;if((t>>>=0)>r)return!1;for(var o=1;o<=4;o*=2){var i=e*(1+.2/o);if(i=Math.min(i,t+100663296),R(Math.min(r,(n=Math.max(t,i))+(65536-n%65536)%65536)))return!0}return!1}},B=(function(){var t,n,r,i,s={env:U,wasi_snapshot_preview1:U};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(A--,o.monitorRunDependencies&&o.monitorRunDependencies(A),0==A&&(null!==C&&(clearInterval(C),C=null),_)){var t=_;_=null,t()}}(),r}if(A++,o.monitorRunDependencies&&o.monitorRunDependencies(A),o.instantiateWasm)try{return o.instantiateWasm(s,a)}catch(t){h("Module.instantiateWasm callback failed with error: "+t),e(t)}(t=l,n=N,r=s,i=function(t){a(t.instance)},t||"function"!=typeof WebAssembly.instantiateStreaming||S(n)||"function"!=typeof fetch?I(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"),I(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(B=o.asm.stackSave).apply(null,arguments)}),k=function(){return(k=o.asm.stackRestore).apply(null,arguments)},H=function(){return(H=o.asm.stackAlloc).apply(null,arguments)},G=function(){return(G=o.asm.__cxa_is_pointer_type).apply(null,arguments)};function V(){function t(){F||(F=!0,o.calledRun=!0,g||(M(w),n(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)t=o.postRun.shift(),E.unshift(t);var t;M(E)}()))}A>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)t=o.preRun.shift(),v.unshift(t);var t;M(v)}(),A>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),t()}),1)):t()))}if(o.ccall=D,o.cwrap=function(t,n,e,r){var o=!e||e.every((t=>"number"===t||"boolean"===t));return"string"!==n&&o&&!r?L(t):function(){return D(t,n,e,arguments)}},_=function t(){F||V(),F||(_=t)},o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return V(),t.ready});"object"==typeof exports?t.exports=o:"function"==typeof define&&e.amdO?define([],(function(){return o})):"object"==typeof exports&&(exports.exportCppDbscanLib=o)},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)}()},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}},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)}},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(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=t})(),e.b=document.baseURI||self.location.href;var r={};(()=>{"use strict";e.r(r),e.d(r,{_package:()=>Ue,initAutoTests:()=>ke,test:()=>Be,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,_,x,N,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(t,n,e,r){var o;this.category=t,this.name=n,null!=r||(r={}),null!==(o=r.timeout)&&void 0!==o||(r.timeout=s),this.options=r,this.test=()=>i(this,void 0,void 0,(function*(){return new Promise(((t,n)=>i(this,void 0,void 0,(function*(){let r="";try{r=yield e()}catch(t){n(t)}t(r)}))))}))}}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)}function P(t,n){return t.replace(new RegExp(n.name,"gi"),n.nqName)}function D(e,r){var a,u,c,l;return i(this,void 0,void 0,(function*(){const f=e.id;if(y[f])return;const v=r?r.tests:h;if(void 0!==v[m]||void 0!==v[d]||Object.keys(v).find((t=>t.startsWith(m)||t.startsWith(g))))return void(y[f]=!0);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!==(a=n.pop())&&void 0!==a?a: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===v[r]&&(v[r]={tests:[],clear:!0}),v[r].tests.push(new M(r,e,t.test,{isAggregated:!1,timeout:null!==(c=null===(u=t.options)||void 0===u?void 0:u.timeout)&&void 0!==c?c:s,skipReason:null===(l=t.options)||void 0===l?void 0:l.skipReason}))}const w=[],E=[],A=[],C=yield n.dapi.functions.filter(`package.id = "${f}"`).list(),_=new RegExp(/skip:\s*([^,\s]+)|wait:\s*(\d+)|cat:\s*([^,\s]+)|timeout:\s*(\d+)/g);for(const e of C){const r=e.options.test,s=e.options.demoPath;if(r&&Array.isArray(r)&&r.length)for(let o=0;o<r.length;o++){const s=r[o].matchAll(_),a={};Array.from(s).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 u=new M(m,1===r.length?e.name:`${e.name} ${o+1}`,(()=>i(this,void 0,void 0,(function*(){const t=yield n.functions.eval(P(r[o],e));if(a.wait&&(yield k(a.wait)),"boolean"==typeof t&&!t)throw`Failed: ${r[o]}, expected true, got ${t}`}))),{skipReason:a.skip,timeout:t.Test.isInBenchmark?a.benchmarkTimeout:a.timeout});if(a.cat){const t=m+": "+a.cat;u.category=t,void 0===v[t]&&(v[t]={tests:[],clear:!0}),v[t].tests.push(u)}else w.push(u)}if(s){const r=e.options.demoWait?parseInt(e.options.demoWait):void 0,o=new M(d,e.friendlyName,(()=>i(this,void 0,void 0,(function*(){n.shell.isInDemo=!0,void 0===n.shell.view(t.View.BROWSE)&&(n.shell.v=t.View.createByType(t.View.BROWSE)),yield k(300),n.shell.clearLastError(),yield e.apply(),yield k(r||2e3);const o=yield n.shell.lastError;if(o)throw new Error(o);n.shell.isInDemo=!1}))),{skipReason:e.options.demoSkip});E.push(o)}if(e.hasTag("semTypeDetector")){const t=new M(p,e.friendlyName,(()=>i(this,void 0,void 0,(function*(){const t=[];for(const n of o.clone().columns){const r=yield e.apply([n]);t.push(r||n.semType)}R(t.filter((t=>t)).length,1)}))),{skipReason:e.options.skipTest});A.push(t)}}y[f]=!0,w.length&&(v[m]={tests:w,clear:!0}),E.length&&(v[d]={tests:E,clear:!0}),A.length&&(v[p]={tests:A,clear:!1})}))}function F(e){var r,o,s,a;return i(this,void 0,void 0,(function*(){const m=null===(o=null===(r=n.functions.getCurrentCall())||void 0===r?void 0:r.func)||void 0===o?void 0:o.package;yield D(m);const d=[];console.log("Running tests"),null!=e||(e={}),null!==(s=(a=e).testContext)&&void 0!==s||(a.testContext=new I),n.shell.clearLastError();const p=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}();(null==e?void 0:e.stressTest)?yield function(n){var e,r,o,s,a,u;return i(this,void 0,void 0,(function*(){let i=[];for(const[t,n]of Object.entries(h)){let t=null===(e=n.tests)||void 0===e?void 0:e.filter((t=>{var n;return null===(n=t.options)||void 0===n?void 0:n.stressTest}));n.stressTests&&(t=null===(r=n.tests)||void 0===r?void 0:r.filter((t=>{var n,e;return void 0===(null===(n=t.options)||void 0===n?void 0:n.stressTest)||!0===(null===(e=t.options)||void 0===e?void 0:e.stressTest)})));const a=null===(o=n.tests)||void 0===o?void 0:o.every((t=>{var n;return null===(n=t.options)||void 0===n?void 0:n.skipReason}));if(!a)for(let e of null!=t?t:[])null==(null===(s=e.options)||void 0===s?void 0:s.skipReason)&&i.push({test:e,value:n})}i=function(t){const n=t.slice();return n.sort((()=>Math.random()-.5)),n}(i);const c=[];for(let e of i){yield g(e.value.before,null!==(a=n.category)&&void 0!==a?a:"");let r=yield B(e.test,null==n?void 0:n.test,p,t.Test.isInBenchmark?e.value.benchmarkTimeout:e.value.timeout,m.name,n.verbose);r&&c.push(r),console.log(`Test: ${null==O?void 0:O.name}; result: ${r}`),yield g(e.value.after,null!==(u=n.category)&&void 0!==u?u:"")}d.push(...c)}))}(e):yield function(e,r){var o,s,a,h,y,v,w;return i(this,void 0,void 0,(function*(){try{for(const[i,c]of Object.entries(e)){if((null==r?void 0:r.category)&&!i.toLowerCase().startsWith(null==r?void 0:r.category.toLowerCase())||(null===(o=r.exclude)||void 0===o?void 0:o.some((t=>i.startsWith(t)))))continue;u(`Started ${i} 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 g(c.before,null!==(a=r.category)&&void 0!==a?a:""));const l=null!==(h=c.tests)&&void 0!==h?h:[],f=[];if(c.clear)for(let e=0;e<l.length;e++){l[e].options&&void 0===(null===(y=l[e].options)||void 0===y?void 0:y.benchmark)&&(l[e].options||(l[e].options={}),l[e].options.benchmark=null!==(v=c.benchmarks)&&void 0!==v&&v);let o=yield B(l[e],null==r?void 0:r.test,p,t.Test.isInBenchmark?c.benchmarkTimeout:c.timeout,m.name,r.verbose);o&&f.push(o),n.shell.closeAll(),t.Balloon.closeAll()}else for(let n=0;n<l.length;n++){let e=yield B(l[n],null==r?void 0:r.test,p,t.Test.isInBenchmark?c.benchmarkTimeout:c.timeout,m.name,r.verbose);e&&f.push(e)}const E=f.filter((t=>"skipped"!=t.result));e||(c.afterStatus=yield g(c.after,null!==(w=r.category)&&void 0!==w?w:"")),c.afterStatus&&E.push({date:(new Date).toISOString(),logs:"",category:i,name:"after",result:c.afterStatus,success:!1,ms:0,skipped:!1}),c.beforeStatus&&E.push({date:(new Date).toISOString(),logs:"",category:i,name:"before",result:c.beforeStatus,success:!1,ms:0,skipped:!1}),d.push(...E)}}finally{console.log=u,console.info=c,console.warn=l,console.error=f}if(r.testContext.catchUnhandled&&!t.Test.isInBenchmark){yield k(1e3);const t=yield n.shell.lastError,e={logs:"",date:(new Date).toISOString(),category:"Unhandled exceptions",name:"Exception",result:null!=t?t:"",success:!t,ms:0,skipped:!1};d.push(e),e.package=m.name,null!=n.shell.reportTest?yield n.shell.reportTest("package",e):yield fetch(`${n.dapi.root}/log/tests/package`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(e)})}}))}(h,e);for(let t of d)t.result=t.result.toString().replace(/"/g,"'"),null!=t.logs&&(t.logs=t.logs.toString().replace(/"/g,"'"));return d;function g(t,n){return i(this,void 0,void 0,(function*(){var e=void 0;try{void 0!==t&&(yield H((()=>i(this,void 0,void 0,(function*(){yield t()}))),1e5,`before ${n}: timeout error`))}catch(t){e=yield U(t)}return 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,c,l,h){var m,d,p,g,y,v,w,E;return i(this,void 0,void 0,(function*(){let i;o.length=0;let A="package";const C=null!=r&&e.name.toLowerCase()!==r.toLowerCase();let _=(null===(m=e.options)||void 0===m?void 0:m.skipReason)||C,x=C?"skipped":null===(d=e.options)||void 0===d?void 0:d.skipReason;if(t.Test.isInBenchmark&&!(null===(p=e.options)||void 0===p?void 0:p.benchmark))return void u(`SKIPPED: ${e.category} ${e.name} doesnt available in benchmark mode`);_||u(`Started ${e.category} ${e.name}`);const N=Date.now();try{if(_)i={date:(new Date).toISOString(),success:!0,result:x,ms:0,skipped:!0};else{let n=(null===(g=e.options)||void 0===g?void 0:g.timeout)===s&&c?c:null===(y=e.options)||void 0===y?void 0:y.timeout;n=n===s&&t.Test.isInBenchmark?a:n,i={date:(new Date).toISOString(),success:!0,result:null!==(v=yield H(e.test,n))&&void 0!==v?v:"OK",ms:0,skipped:!1}}}catch(t){f(t),i={date:(new Date).toISOString(),success:!1,result:yield U(t),ms:0,skipped:!1}}if((null===(w=e.options)||void 0===w?void 0:w.isAggregated)&&i.result.constructor===t.DataFrame){const t=i.result.col("success");if(t&&(i.success=t.stats.sum===t.length),!h){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()-N,_||u(`Finished ${e.category} ${e.name} for ${i.ms} ms`),i.category=e.category,i.name=e.name,!C){let r={success:i.success,result:i.result,ms:i.ms,skipped:i.skipped,package:l,category:e.category,name:e.name,logs:i.logs};if(i.result.constructor==Object){const t=Object.keys(i.result).reduce(((t,n)=>Object.assign(Object.assign({},t),{["result."+n]:i.result[n]})),{});r=Object.assign(Object.assign({},r),t)}r.result instanceof t.DataFrame&&(r.result=JSON.stringify(null===(E=r.result)||void 0===E?void 0:E.toJson())||""),null!=n.shell.reportTest?yield n.shell.reportTest(A,r):yield fetch(`${n.dapi.root}/log/tests/${A}`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(r)})}return i}))}function k(t){return i(this,void 0,void 0,(function*(){yield new Promise((n=>setTimeout(n,t)))}))}function H(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",t.Onehot="One-Hot"}(A||(A={})),function(t){t.Euclidean="Euclidean"}(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"}(_||(_={})),function(t){t.TanimotoIntArray="TanimotoIntArray"}(x||(x={})),(T=N||(N={})).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 G=new Uint32Array(65536),V=(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--;)G[t.charCodeAt(u)]|=1<<u;for(u=0;u<r;u++){let t=G[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--;)G[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++)G[t.charCodeAt(n)]|=1<<n;for(let t=0;t<e;t++){const e=G[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++)G[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++)G[t.charCodeAt(n)]|=1<<n;let m=r;for(let t=0;t<e;t++){const e=G[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++)G[t.charCodeAt(n)]=0;return m})(t,n)};var W=e(944);class q{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=q._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 q(t._length);e._length=t._length,e._data=q._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 q(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 q(t);for(let r=0;r<t;++r)e.setBit(r,n(r));return e._version=0,e}static fromString(t){return q.fromSeq(t.length,(n=>"1"==t.charAt(n)))}static fromUint32Array(t,n){const e=new q(t);return e._data=n,e}static fromBytes(t){const n=t.length,e=new q(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 q(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 q.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+=q._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+=q._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+=q._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+=q._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=q._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=q._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}}q._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]),q._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]),q._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 $={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 K;!function(t){t.HAMMING="Hamming",t.LEVENSHTEIN="Levenshtein",t.NEEDLEMANN_WUNSCH="Needlemann-Wunsch",t.MONOMER_CHEMICAL_DISTANCE="Monomer chemical distance"}(K||(K={}));const j={[K.HAMMING]:Y,[K.LEVENSHTEIN]:function(){return(t,n)=>V(t,n)/Math.max(t.length,n.length)},[K.NEEDLEMANN_WUNSCH]:function(t){const n=new Uint16Array(65536),{gapOpen:e,gapExtend:r,scoringMatrix:o,alphabetIndexes:i}={...$,...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}},[K.MONOMER_CHEMICAL_DISTANCE]:Y};function z(t,n){const e=t.trueCount()+n.trueCount();if(0==e)return 1;const r=t.andWithCountBits(n,!0);return r/(e-r)}function X(t){return 0===t?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,K.HAMMING,K.LEVENSHTEIN,K.MONOMER_CHEMICAL_DISTANCE,K.NEEDLEMANN_WUNSCH;const Q={[C.Euclidean]:function(t,n){let e=0;const r=t.length;if(r!==n.length)throw new Error("The dimensionality of the vectors must match");for(let o=0;o<r;++o)e+=Math.pow(t[o]-n[o],2);return Math.sqrt(e)}},Z={[A.Levenshtein]:V,[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}},J={[_.Tanimoto]:function(t,n){return 1-z(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 X(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 X(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 X(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 X(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 X(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))}},tt={[x.TanimotoIntArray]:function(t,n){return X(z(new q(t,32*t.length),new q(n,32*n.length)))}},nt={[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)}},et={[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)}},rt={[N.Vector]:{[C.Euclidean]:Q[C.Euclidean]},[N.String]:{[A.Levenshtein]:Z[A.Levenshtein],[A.JaroWinkler]:Z[A.JaroWinkler],[A.Manhattan]:Z[A.Manhattan],[A.Onehot]:Z[A.Onehot]},[N.BitArray]:{[_.Tanimoto]:J[_.Tanimoto],[_.Dice]:J[_.Dice],[_.Asymmetric]:J[_.Asymmetric],[_.BraunBlanquet]:J[_.BraunBlanquet],[_.Cosine]:J[_.Cosine],[_.Kulczynski]:J[_.Kulczynski],[_.McConnaughey]:J[_.McConnaughey],[_.RogotGoldberg]:J[_.RogotGoldberg],[_.Russel]:J[_.Russel],[_.Sokal]:J[_.Sokal]},[N.MacroMolecule]:{[K.HAMMING]:j[K.HAMMING],[K.LEVENSHTEIN]:j[K.LEVENSHTEIN],[K.NEEDLEMANN_WUNSCH]:j[K.NEEDLEMANN_WUNSCH],[K.MONOMER_CHEMICAL_DISTANCE]:j[K.MONOMER_CHEMICAL_DISTANCE]},[N.Number]:{[b.Difference]:nt[b.Difference]},[N.IntArray]:{[x.TanimotoIntArray]:tt[x.TanimotoIntArray]},[N.NumberArray]:{[S.CommonItems]:et[S.CommonItems]}};Object.keys(rt).reduce(((t,n)=>{for(const e of Object.keys(rt[n]))t[e]=n;return t}),{});const ot=ui,it="bypassLargeDataWarning",st="show-scatterplot-progress";var at,ut,ct,lt,ft,ht,mt,dt=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())}))};e(5540),(ut=at||(at={})).EUCLIDEAN="EUCLIDEAN",ut.MANHATTAN="MANHATTAN",at.EUCLIDEAN,at.MANHATTAN,(lt=ct||(ct={})).HAMMING="Hamming",lt.EUCLIDEAN="Euclidean",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.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,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.SOKAL,ct.ASYMMETRIC,ct.OneHot,ct.Difference]),new Set([ct.EUCLIDEAN,ct.MANHATTAN,ct.OneHot,ct.Difference]),new Set([ct.EUCLIDEAN,ct.MANHATTAN,ct.Difference]),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 pt="dimensionality-reducer-terminate-event";var gt,yt;(yt=gt||(gt={})).EUCLIDEAN="EUCLIDEAN",yt.MANHATTAN="MANHATTAN";const vt=t=>null==t;function wt(t,n){return`${n} (${t.length>4?`${t.length} columns`:t.map((t=>t.name)).join(", ")})`}async function Et(r,o,i,s,a,u,c,l=!0,f=!1,h={preprocessingFuncArgs:[]},m={},d=null,p={}){const g={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 y=l?m.tableView??n.shell.tableView(r.name)??n.shell.addTableView(r):null,v=async()=>{const v=t.TaskBarProgressIndicator.create(`Initializing ${m.scatterPlotName??"dimensionality reduction"} ...`);let w;try{const E=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 A(n,e,s){let a=null,u=null;r.columns.names().includes(E[0])?(a=r.columns.byName(E[0]),u=r.columns.byName(E[1])):(a=r.columns.add(t.Column.float(E[0],r.rowCount)),u=r.columns.add(t.Column.float(E[1],r.rowCount)),l&&!w&&(w=y.scatterPlot({...g,x:E[0],y:E[1],title:m.scatterPlotName??wt(o,i)}))),m[st]&&(w?.root&&ot.setUpdateIndicator(w.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;v.update(c,`Running ${m.scatterPlotName??"dimensionality reduction"}... ${c.toFixed(0)}%`)}async function C(){r.columns.add(t.Column.float(E[0],r.rowCount)),r.columns.add(t.Column.float(E[1],r.rowCount));let f=null;l&&(w=y.scatterPlot({...g,x:E[0],y:E[1],title:m.scatterPlotName??wt(o,i)}),ot.setUpdateIndicator(w.root,!0));const d=n.events.onViewerClosed.subscribe((t=>{const e=t.args.viewer;e?.getOptions()?.look?.title&&w?.getOptions()?.look?.title&&e?.getOptions()?.look?.title===w?.getOptions()?.look?.title&&(n.events.fireCustomEvent(pt,{}),d.unsubscribe(),f?.(),v.close())})),p=new Promise((async(t,r)=>{try{f=t;const r=[];for(let t=0;t<u.length;++t){const n=u[t];if(h.distanceFnArgs||(h.distanceFnArgs=[]),n){const e=n.inputs[0].name,i=n.inputs[1].name,{entries:a,options:u}=await n.apply({[e]:o[t],[i]:s[t],...h.preprocessingFuncArgs[t]??{}});r.push({entries:a,options:u}),h.distanceFnArgs.push(u)}else{const n=o[t].toList(),e={};r.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(pt).subscribe((()=>{try{f?.terminate()}finally{h.unsubscribe()}}));f.onmessage=({data:{error:t,embedding:n,epochNum:e,epochsLength:r}})=>{vt(e)||vt(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}(r.map((t=>t.entries)),i,s,a,c,h,m[it]?void 0:A))}catch(t){r(t)}})),C=await p;return v.close(),d.unsubscribe(),C}const _=await C();if(f&&_){const x=t.TaskBarProgressIndicator.create("Clustering embeddings ...");try{const N=await function(t,n,r,o){return dt(this,void 0,void 0,(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)}}))}))}(_[0],_[1],h.dbScanEpsilon??.01,h.dbScanMinPts??4),b=r.columns.getUnusedName("Cluster (DBSCAN)");r.columns.addNewString(b).init((t=>N[t].toString())),w&&(w.props.colorColumnName=b)}catch(S){n.shell.error("Clustering embeddings failed"),console.error(S)}finally{x.close()}}if(_){const T=r.columns.byName(E[0]),I=r.columns.byName(E[1]);if(T.init((t=>_[0][t])),I.init((t=>_[1][t])),d)try{const M=d.inputs[0].name,O=d.inputs[1].name;await d.prepare({[M]:T,[O]:I,...p}).call(!0)}catch(R){n.shell.error("Post-processing failed"),console.error(R)}if(w)return ot.setUpdateIndicator(w.root,!1),w.helpUrl="/help/compute/sequence-space",w}}catch(L){n.shell.error("Dimensionality reduction failed"),console.error(L),v.close(),w&&ot.setUpdateIndicator(w.root,!1)}};return new Promise((async(t,n)=>{try{if(m.fastRowCount&&r.rowCount>m.fastRowCount&&!m[it])ot.dialog().add(ot.divText("Analysis might take several minutes. Do you want to continue?")).onOK((async()=>{try{const n=await v();t(n)}catch(t){n(t)}})).onCancel((()=>t(void 0))).show();else{const n=await v();t(n)}}catch(t){n(t)}}))}var At=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 Ct={SUBJ:"subj",STUDY:"study",SITE:"site",AGE:"age",SEX:"sex",RACE:"race",DISEASE:"disease",WEIGHT:"weight",HEIGHT:"height"};function _t(t,e,r){return At(this,void 0,void 0,(function*(){const o=n.data.demo.demog(100);n.shell.addTableView(o),R(!!(yield Et(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",(()=>At(void 0,void 0,void 0,(function*(){yield _t([Ct.AGE],E.UMAP,[b.Difference])}))),{timeout:3e4}),O("String column",(()=>At(void 0,void 0,void 0,(function*(){yield _t([Ct.SEX],E.UMAP,[A.Onehot])}))),{timeout:3e4}),O("Numeric and string columns",(()=>At(void 0,void 0,void 0,(function*(){yield _t([Ct.SEX,Ct.AGE],E.UMAP,[A.Onehot,b.Difference])})))),O("All demog columns",(()=>At(void 0,void 0,void 0,(function*(){const e=n.data.demo.demog(10).columns.toList().filter((t=>Object.values(Ct).includes(t.name))),r=e.map((n=>n.type===t.COLUMN_TYPE.STRING?A.Onehot:b.Difference)),o=e.map((t=>t.name));yield _t(o,E.UMAP,r)}))))})),L("Dimensionality reduction: T-SNE",(()=>{O("Numeric column",(()=>At(void 0,void 0,void 0,(function*(){yield _t([Ct.AGE],E.T_SNE,[b.Difference])}))),{timeout:3e4}),O("String column",(()=>At(void 0,void 0,void 0,(function*(){yield _t([Ct.SEX],E.T_SNE,[A.Onehot])}))),{timeout:3e4}),O("Numeric and string columns",(()=>At(void 0,void 0,void 0,(function*(){yield _t([Ct.SEX,Ct.AGE],E.T_SNE,[A.Onehot,b.Difference])})))),O("All demog columns",(()=>At(void 0,void 0,void 0,(function*(){const e=n.data.demo.demog(10).columns.toList().filter((t=>Object.values(Ct).includes(t.name))),r=e.map((n=>n.type===t.COLUMN_TYPE.STRING?A.Onehot:b.Difference)),o=e.map((t=>t.name));yield _t(o,E.T_SNE,r)}))))}));const xt={i32:"HEAP32",f32:"HEAPF32"},Nt={i32:Int32Array,f32:Float32Array},bt={i32:2,f32:2},St={i32:DG.Column.fromInt32Array,f32:DG.Column.fromFloat32Array};class Tt{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 It extends Tt{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=bt[n],r=t[xt[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[xt[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 Mt extends It{constructor(t,n){super([],t,!0),this.numOfRows=n}putDataToBuffer(t){}getDataFromBuffer(t){if(this.toUpdate&&this.isMemoryForBufferAllocated()){const n=this.type,e=t[xt[n]],r=this.buf,o=St[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 Ot extends Tt{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=bt[n],r=t[xt[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[xt[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 Rt extends Ot{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[xt[n]],r=this.numOfRows,o=this.numOfColumns,i=Nt[n].BYTES_PER_ELEMENT,s=St[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 Lt={intColumn:t=>new It(t,"i32"),newIntColumn:t=>new Mt("i32",t),intColumns:t=>new Ot(t.toList(),"i32"),newIntColumns:(t,n)=>new Rt("i32",t,n),floatColumn:t=>new It(t,"f32"),newFloatColumn:t=>new Mt("f32",t),floatColumns:t=>new Ot(t.toList(),"f32"),newFloatColumns:(t,n)=>new Rt("f32",t,n),int:t=>new Tt(t),num:t=>new Tt(t)},Pt={tableFromColumns:t=>DG.DataFrame.fromColumns(t.data),num:t=>t,int:t=>t,double:t=>t,column:t=>t.data};function Dt(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=Lt[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=Lt[n.type](t,r);break;case"newFloatColumn":case"newIntColumn":const i=o[n.numOfRows.ref].data[n.numOfRows.value];n.data=Lt[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=Lt.num(a);const u=r.output;if("objects"!=u.type)return Pt[u.type](o[u.source].data);const c=[];for(const t of u.source)c.push(o[t].data.data);return c}const Ft="num",Ut="floatColumn",Bt="intColumn",kt="floatColumns",Ht="newFloatColumns",Gt="intColumns",Vt="newIntColumns",Wt="newFloatColumn",qt="newIntColumn",Yt="column",$t="_callResult",Kt="numOfRows",jt="numOfColumns",zt="ref",Xt="value",Qt="tableFromColumns",Zt="objects",Jt="int",tn="double",nn={intColumn:Int32Array,floatColumn:Float32Array,floatColumns:Float32Array,newFloatColumns:Float32Array,intColumns:Int32Array,newIntColumns:Int32Array,newFloatColumn:Float32Array,newIntColumn:Int32Array};function en(t,n){let e,r=[],o=0;for(const i in t){const s=t[i],a=s.type;if(i!==$t){switch(a){case Ft:case Jt:case tn:s.data=n[o],o++;break;case Bt:case Ut:let r;const i=n[o],u=i.length;r=i.type===Jt&&a===Bt||i.type===tn&&a===Ut?i.getRawData().slice(0,u):new nn[a](i.getRawData().slice(0,u)),s.data={array:r,numOfRows:u},o++;break;case qt:case Wt:let c=0;e=s[Kt][zt],c=t[e].type===Ft?t[e].data:t[e].data[s[Kt][Xt]],s.data={numOfRows:c},o++;break;case Gt:case kt:let l=[];const f=n[o].byIndex(0).length;for(const t of n[o].toList())t.type===Jt&&a===Bt||t.type===tn&&a===Ut?l.push(t.getRawData().slice(0,f)):l.push(new nn[a](t.getRawData().slice(0,f)));s.data={arrays:l,numOfRows:f,numOfColumns:l.length},o++;break;case Vt:case Ht:let h=0,m=0;e=s[Kt][zt],h=t[e].type===Ft?t[e].data:t[e].data[s[Kt][Xt]],e=s[jt][zt],m=t[e].type===Ft?t[e].data:t[e].data[s[jt][Xt]],s.data={numOfRows:h,numOfColumns:m},o++;break;default:return}r.push(s)}}return r}function rn(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 Ft:case Jt:case tn:case Bt:case Ut:case kt:case Gt:break;case Wt:case qt:let t;null==i.name?t=(0).toString():a=i.name,i.column=e[i.type](t,n[r].array);break;case Vt:case Ht: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 Ft:case Jt:case tn:return t.arguments[n.source];case Yt:return t.arguments[n.source].column;case Qt:return DG.DataFrame.fromColumns(t.arguments[n.source].columns);case Zt: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 Ft:case Jt:case tn:case Bt:case Ut:case Gt:case kt:break;case qt:case Wt:e.column=null;break;case Vt:case Ht:e.columns=null}}}(t.arguments),e}const on=1,sn=1e8,an="components must be positive.",un="components must not be greater than features count.",cn="dataframe is too big.",ln="unsupported column type: ";function fn(n){if(n.type!=t.COLUMN_TYPE.FLOAT&&n.type!=t.COLUMN_TYPE.INT)throw new Error(ln+n.type)}function hn(t){if(t.stats.missingValueCount>0)throw new Error(`The column '${t.name}' has missing values.`)}function mn(t,n){if(function(t,n){if(n<on)throw new Error(an);if(n>t.length)throw new Error(un);for(const n of t)fn(n),hn(n)}(t,n),t.length*t.byIndex(0).length>sn)throw new Error(cn)}var dn,pn,gn,yn,vn,wn,En,An,Cn,_n,xn,Nn,bn,Sn,Tn;function In(t,n,r,o,i){return s=this,a=void 0,c=function*(){mn(n,r);const t=o?1:0,s=i?1:0;return yield async function(t,n,r,o,i){return new Promise(((t,s)=>{const a=new Worker(new URL(e.p+e.u(91),e.b));a.postMessage(en(EDA.principalComponentAnalysis.arguments,[n,r,o,i])),a.onmessage=function(n){a.terminate(),t(rn(EDA.principalComponentAnalysis,n.data))}}))}(0,n,r,t,s)},new((u=void 0)||(u=Promise))((function(t,n){function e(t){try{o(c.next(t))}catch(t){n(t)}}function r(t){try{o(c.throw(t))}catch(t){n(t)}}function o(n){var o;n.done?t(n.value):(o=n.value,o instanceof u?o:new u((function(t){t(o)}))).then(e,r)}o((c=c.apply(s,a||[])).next())}));var s,a,u,c}(Tn=dn||(dn={}))[Tn.COMPUTE_COMPONENTS=0]="COMPUTE_COMPONENTS",Tn[Tn.PERFORM_MVA=1]="PERFORM_MVA",Tn[Tn.DEMO=2]="DEMO",(Sn=pn||(pn={})).NO_DF="No dataframe is opened",Sn.NO_COLS="No numeric columns without missing values",Sn.ONE_COL="No columns to be used as features (just one numeric columns without missing values)",Sn.EMPTY_DF="Dataframe is empty",(bn=gn||(gn={})).PREDICT="Predict",bn.USING="Using",bn.COMPONENTS="Components",bn.PLS="PLS",bn.MVA="Multivariate Analysis (PLS)",bn.RUN="RUN",bn.NAMES="Names",bn.MODEL="Observed vs. Predicted",bn.FEATURE="Feature",bn.REGR_COEFS="Regression Coefficients",bn.XLOADING="x.loading.p",bn.LOADINGS="Loadings",bn.XSCORE="x.score.t",bn.YSCORE="y.score.u",bn.SCORES="Scores",bn.EXPL_VAR="Explained Variance",bn.EXPLORE="Explore",bn.FEATURES="Feature names",bn.BROWSE="Browse",(Nn=yn||(yn={})).PREDICT="Column with the response variable",Nn.FEATURES="Predictors (features)",Nn.COMPONENTS="Number of PLS components",Nn.PLS="Compute PLS components",Nn.MVA="Perform multivariate analysis",Nn.NAMES="Names of data samples",(xn=vn||(vn={})).PLS="https://datagrok.ai/help/explore/multivariate-analysis/pls#pls-components",xn.MVA="https://datagrok.ai/help/explore/multivariate-analysis/pls",xn.MODEL="https://datagrok.ai/help/explore/multivariate-analysis/plots/predicted-vs-reference",xn.COEFFS="https://datagrok.ai/help/explore/multivariate-analysis/plots/regression-coefficients",xn.LOADINGS="https://datagrok.ai/help/explore/multivariate-analysis/plots/loadings",xn.EXPL_VARS="https://datagrok.ai/help/explore/multivariate-analysis/plots/explained-variance",xn.SCORES="https://datagrok.ai/help/explore/multivariate-analysis/plots/scores",(_n=wn||(wn={}))[_n.DEFAULT=3]="DEFAULT",_n[_n.MIN=1]="MIN",(Cn=En||(En={})).PREFIX="PLS",Cn.SUFFIX="(predicted)",Cn.COMP="component",Cn.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"}(An||(An={}));const Mn=[.49,.79,.99];var On;!function(t){t.AXIS="#838383",t.CIRCLE="#0000FF"}(On||(On={})),[{caption:gn.MODEL,text:"Closer to the line means better price prediction."},{caption:gn.SCORES,text:"The latent factor values for each sample reflect the similarities and dissimilarities among observations."},{caption:gn.LOADINGS,text:"The impact of each feature on the latent factors: higher loading means stronger influence."},{caption:gn.REGR_COEFS,text:"Parameters of the obtained linear model: features make different contribution to the prediction."},{caption:gn.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"),vn.MVA;var Rn=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 Ln(t){return Rn(this,void 0,void 0,(function*(){mn(t.features,t.components),fn(t.predict),hn(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(en(EDA.partialLeastSquareRegression.arguments,[n,r,o])),s.onmessage=function(n){s.terminate(),t(rn(EDA.partialLeastSquareRegression,n.data))}}))}(t.table,t.features,t.predict,t.components);return{prediction:n[An.PREDICTION],regressionCoefficients:n[An.REGR_COEFFS],tScores:n[An.T_SCORES],uScores:n[An.U_SCORES],xLoadings:n[An.X_LOADINGS],yLoadings:n[An.Y_LOADINGS]}}))}Math.min,Math.max;var Pn=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 Dn(n,e){return Pn(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 Dt(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 Pn(this,void 0,void 0,(function*(){return(yield Ln({table:t.DataFrame.fromColumns([e]),features:n,predict:e,components:r,names:void 0})).regressionCoefficients.getRawData()}))}(n,e,Un(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 Fn(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 Un=(t,n)=>n<=t?Math.min(10,n):Math.min(10,t);var Bn;!function(t){t[t.MAX_SAMLPES=1e5]="MAX_SAMLPES",t[t.MAX_FEATURES=1e3]="MAX_FEATURES"}(Bn||(Bn={}));class kn{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<=Bn.MAX_FEATURES&&n.length<=Bn.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(gn.FEATURES).toList(),m=new Float32Array(a);m.set(u.byName(gn.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 Ln({table:t.DataFrame.fromColumns([e]),features:n,predict:e,components:r,names:void 0}),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(gn.FEATURES,this.specn.names),t.Column.fromFloat32Array(gn.REGR_COEFS,this.specn.params)]);this.specn.loadings.forEach(((e,r)=>n.columns.add(t.Column.fromFloat32Array(`${gn.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 Fn(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(gn.FEATURES,this.specn.names.slice(0,-1)),t.Column.fromFloat32Array(gn.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(`${gn.XLOADING}${o+1}`,n,e)))),n.push(t.Viewer.scatterPlot(r,{title:gn.LOADINGS,xColumnName:o.byIndex(i).name,yColumnName:o.byIndex(i+(s>1?1:0)).name,markerType:t.MARKER_TYPE.CIRCLE,labels:gn.FEATURES,help:vn.LOADINGS})),n.push(t.Viewer.barChart(r,{title:gn.REGR_COEFS,splitColumnName:gn.FEATURES,valueColumnName:gn.REGR_COEFS,valueAggrType:t.AGG.AVG,help:vn.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]=`${En.COMP} 1`,o[0]=this.specn.loadings[0][e];for(let t=1;t<n;++t)r[t]=`${En.COMPS} ${t+1}`,o[t]=this.specn.loadings[t][e];return t.Viewer.barChart(t.DataFrame.fromColumns([t.Column.fromStrings(En.COMPS,r),t.Column.fromFloat32Array(gn.EXPL_VAR,o)]),{title:gn.EXPL_VAR,splitColumnName:En.COMPS,valueColumnName:gn.EXPL_VAR,valueAggrType:t.AGG.AVG,help:vn.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=`${gn.XSCORE}${n+1}`)),r.forEach(((t,n)=>t.name=`${gn.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:gn.SCORES,xColumnName:n[0],yColumnName:n[1],markerType:t.MARKER_TYPE.CIRCLE,help:vn.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:On.CIRCLE})};return t.forEach((r=>{const o="${"+r+"}";n.push({type:"line",formula:`${o} = 0`,width:1,visible:!0,title:" ",color:On.AXIS}),t.forEach((t=>{const n="${"+t+"}";Mn.forEach((t=>{e(n+` = sqrt(${t*t} - ${o} * ${o})`,t),e(n+` = -sqrt(${t*t} - ${o} * ${o})`,t)}))}))})),n}(n)),e}}const Hn=["Alpha","Beta","Gamma","Delta"];function Gn(t,n){if(t.length!==n.length)throw new Error(`Non-equal elements count: ${t.length} vs. ${n.length}`)}function Vn(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 Wn(t,n){Gn(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 qn(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 Yn(t,n){Gn(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 $n=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,jn=8e3,zn=.1;L("Principal component analysis",(()=>{O("Performance: 100K rows, 100 cols, 3 components",(()=>$n(void 0,void 0,void 0,(function*(){const t=n.data.demo.randomWalk(1e5,Kn);yield In(0,t.columns,3,!1,!1)}))),{timeout:jn,benchmark:!0}),O("Correctness",(()=>$n(void 0,void 0,void 0,(function*(){const t=Vn(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 In(0,t.columns,4,!1,!1)).columns.byIndex(3))<zn,!0,"Incorrect PCA computations")}))),{timeout:jn})})),L("Partial least squares regression",(()=>{O("Performance: 100K rows, 100 cols, 3 components",(()=>$n(void 0,void 0,void 0,(function*(){const t=n.data.demo.randomWalk(1e5,Kn),e=t.columns;yield Ln({table:t,features:e,predict:e.byIndex(99),components:3,names:void 0})}))),{timeout:jn,benchmark:!0}),O("Correctness",(()=>$n(void 0,void 0,void 0,(function*(){const t=Vn(100,3,5),n=t.columns,e=n.byIndex(7),r=Wn(e,(yield Ln({table:t,features:n,predict:e,components:3,names:void 0})).prediction);R(r<zn,!0,`Incorrect PLS computations, error is too big: ${r}; expected: < 0.1`)}))),{timeout:jn}),O("Predictive modeling: 100K samples, 100 features, 3 components",(()=>$n(void 0,void 0,void 0,(function*(){const t=Vn(1e5,3,98).columns,n=t.byIndex(Kn);t.remove(n.name);const e=new kn;yield e.fit(t,n,3);const r=e.toBytes(),o=Wn(n,new kn(r).predict(t));R(o<zn,!0,`Incorrect PLS (ML) computations, error is too big: ${o}; expected: < 0.1`)}))),{timeout:jn,benchmark:!0})})),L("Linear regression",(()=>{O("Performance: 100K samples, 100 features",(()=>$n(void 0,void 0,void 0,(function*(){const t=Vn(1e5,Kn,1).columns,n=t.byIndex(Kn),e=yield Dn(t,n),r=new Uint8Array(e.buffer);Fn(t,new Float32Array(r.buffer))}))),{timeout:jn,benchmark:!0}),O("Correctness",(()=>$n(void 0,void 0,void 0,(function*(){const t=Vn(100,2,1).columns,n=t.byIndex(2),e=yield Dn(t,n),r=new Uint8Array(e.buffer),o=Fn(t,new Float32Array(r.buffer)),i=Wn(o,o);R(i<zn,!0,`Incorrect linear regression computations, error is too big: ${i}; expected: < 0.1`)}))),{timeout:jn})}));var Xn=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",Zn="Stddev-s";var Jn;!function(t){t[t.MAX_SAMLPES=5e4]="MAX_SAMLPES",t[t.MAX_FEATURES=100]="MAX_FEATURES"}(Jn||(Jn={}));class te{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<=Jn.MAX_FEATURES&&n.length<=Jn.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(Zn);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(Zn,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 Xn(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 Dt(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 Xn(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 ne,ee,re,oe;(oe=ne||(ne={}))[oe.ITERATIONS=20]="ITERATIONS",oe[oe.ETA=.3]="ETA",oe[oe.MAX_DEPTH=6]="MAX_DEPTH",oe[oe.LAMBDA=1]="LAMBDA",oe[oe.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"}(ee||(ee={})),function(t){t[t.MODEL=1e7]="MODEL",t[t.UTILS=1]="UTILS",t[t.PACK=128]="PACK",t[t.SIZE=4]="SIZE"}(re||(re={}));const ie=t.FLOAT_NULL;var se;!function(t){t.PREDICT="Prediction",t.TYPE="Type",t.PARAMS="Params count",t.CATS="Categories",t.CATS_SIZE="Categories size"}(se||(se={}));class ae{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<=ee.SAMPLES_LOW?e<=ee.FEATURES_LOW:r<=ee.SAMLPES_MID?e<=ee.FEATURES_MID:r<=ee.SAMLPES_HIGH&&e<=ee.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+=re.SIZE;const i=t.DataFrame.fromByteArray(new Uint8Array(n.buffer,r,o));r+=o,this.targetType=i.get(se.TYPE,0);const s=i.get(se.PARAMS,0),a=i.get(se.CATS_SIZE,0);if(a>0){const o=t.DataFrame.fromByteArray(new Uint8Array(n.buffer,r,a));this.targetCategories=null===(e=o.col(se.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=ne.ITERATIONS,i=ne.ETA,s=ne.MAX_DEPTH,a=ne.LAMBDA,u=ne.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,ie,o,i,s,a,u,re.MODEL,re.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,ie,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(se.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,se.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(se.TYPE,[this.targetType]),t.Column.fromInt32Array(se.PARAMS,new Int32Array([this.modelParams.length])),t.Column.fromInt32Array(se.CATS_SIZE,new Int32Array([e]))]).toByteArray(),i=o.length,s=64*Math.ceil((re.SIZE+i+e+r+re.PACK)/64),a=new Uint8Array(s);let u=0;return new Uint32Array(a.buffer,u,1)[0]=i,u+=re.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;for(let t=0;t<e;++t)r[t]=this.targetCategories[(i=Math.round(n[t]),Math.max(0,Math.min(i,o)))];var i;return t.Column.fromList(t.COLUMN_TYPE.STRING,se.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(se.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(se.PREDICT,r)}}var ue=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 ce=100,le=8e3;var fe;L("Softmax",(()=>{O("Performance: 50K samples, 100 features",(()=>ue(void 0,void 0,void 0,(function*(){const t=qn(5e4,ce,!1).columns,n=t.byIndex(ce);t.remove(n.name);const e=new te({classesCount:n.categories.length,featuresCount:t.length});yield e.fit(t,n);const r=e.toBytes();new te(void 0,r).predict(t)}))),{timeout:le,benchmark:!0}),O("Correctness",(()=>ue(void 0,void 0,void 0,(function*(){const t=qn(50,2,!0).columns,n=t.byIndex(2);t.remove(n.name);const e=new te({classesCount:n.categories.length,featuresCount:t.length});yield e.fit(t,n);const r=e.toBytes(),o=Yn(n,new te(void 0,r).predict(t));R(o>.9,!0,`Softmax failed, too small accuracy: ${o}; expected: <= 0.9`)}))),{timeout:le})})),L("XGBoost",(()=>{O("Performance: 50K samples, 100 features",(()=>ue(void 0,void 0,void 0,(function*(){const t=qn(5e4,ce,!1).columns,n=t.byIndex(ce);t.remove(n.name);const e=new ae;yield e.fit(t,n);const r=e.toBytes();new ae(r).predict(t)}))),{timeout:le,benchmark:!0}),O("Correctness",(()=>ue(void 0,void 0,void 0,(function*(){const t=qn(50,2,!0).columns,n=t.byIndex(2);t.remove(n.name);const e=new ae;yield e.fit(t,n);const r=e.toBytes(),o=Yn(n,new ae(r).predict(t));R(o>.9,!0,`XGBoost failed, too small accuracy: ${o}; expected: <= 0.9`)}))),{timeout:le})})),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"}(fe||(fe={}));const he="copy";var me,de;!function(t){t.KNN_IMPUTER="Impute",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"}(me||(me={})),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 KNN 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"}(de||(de={}));const pe=[t.COLUMN_TYPE.INT,t.COLUMN_TYPE.FLOAT,t.COLUMN_TYPE.STRING,t.COLUMN_TYPE.DATE_TIME,t.COLUMN_TYPE.QNUM];function ge(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(fe.UNSUPPORTED_COLUMN_TYPE)}}var ye,ve,we,Ee;function Ae(n){switch(n){case t.COLUMN_TYPE.STRING:case t.COLUMN_TYPE.DATE_TIME:return{defaultWeight:we.WEIGHT,defaultMetric:ye.ONE_HOT,availableMetrics:[ye.ONE_HOT]};case t.COLUMN_TYPE.INT:case t.COLUMN_TYPE.FLOAT:case t.COLUMN_TYPE.QNUM:return{defaultWeight:we.WEIGHT,defaultMetric:ye.DIFFERENCE,availableMetrics:[ye.DIFFERENCE,ye.ONE_HOT]};default:throw new Error(fe.UNSUPPORTED_COLUMN_TYPE)}}!function(t){t.ONE_HOT="One-hot",t.DIFFERENCE="Difference"}(ye||(ye={})),(Ee=ve||(ve={})).EUCLIDEAN="Euclidean",Ee.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"}(we||(we={}));const Ce=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=Hn.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]=Hn[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=Ae(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(fe.INCORRECT_NEIGHBORS);if(e.rowCount<2)throw new Error(fe.KNN_NOT_ENOUGH_OF_ROWS);if(0===r.length)throw new Error(fe.KNN_NO_TARGET_COLUMNS);if(0===o.size)throw new Error(fe.KNN_NO_FEATURE_COLUMNS);1===o.size&&r.forEach((t=>{if(o.has(t))throw new Error(`${fe.KNN_NO_FEATURE_COLUMNS} can be used for the column '${t}'`)})),r.forEach((t=>{if(!i.has(t))throw new Error(`${fe.KNN_FAILS}: ${fe.WRONG_PREDICTIONS}`)}));const c=e.columns;r.forEach((t=>{if(!pe.includes(c.byName(t).type))throw new Error(fe.UNSUPPORTED_COLUMN_TYPE)})),o.forEach(((t,n)=>{if(!pe.includes(e.getCol(n).type))throw new Error(fe.UNSUPPORTED_COLUMN_TYPE)}));const l=new Map;return r.forEach((r=>{const f=c.byName(r),h=ge(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(ge(e)),t.type){case ye.DIFFERENCE:v.push(((n,e)=>t.weight*Math.abs(n-e)));break;case ye.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 x=new Array(a);let N=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===ve.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(`${fe.KNN_IMPOSSIBLE_IMPUTATION}: the column "${f.name}", row ${n+1}`);N=0;for(let t=0;t<m;++t)if(R(t)&&t!==n){M(n,t);const e=O();if(N<a)x[N]={index:t,dist:e},++N;else{b=0,S=x[0].dist;for(let t=1;t<N;++t)S<x[t].dist&&(S=x[t].dist,b=t);e<S&&(x[b]={index:t,dist:e})}}if(0===N)throw new Error(`${fe.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<N;++t)++p[d[x[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<N;++t)T+=d[x[t].index];return I=T/N,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(fe.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}(${he})`;for(;e.columns.contains(s);)s=`${r}(${he} ${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(fe.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",(()=>{Ce(ve.EUCLIDEAN),Ce(ve.MANHATTAN)}));var _e,xe=e(6572);function Ne(t){if(t<=0||t>=1)throw new Error(_e.INCORRECT_SIGNIFICANCE_LEVEL)}function be(t){const n=t.size;return n<=1?0:(t.sumOfSquares-Math.pow(t.sum,2)/n)/(n-1)}function Se(t,n,e){Ne(e);const r=be(t),o=be(n);return 0===r||0===o?r===o:r/o<xe.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"}(_e||(_e={}));class Te{constructor(t,n,e){if(this.nullsCount=0,t.length!==n.length)throw new Error(_e.NON_EQUAL_FACTORS_VALUES_SIZE);if(!(n.stats.stdev>0))throw new Error(_e.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(!Se(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(_e.SINGLE_FACTOR);const i=this.size-this.nullsCount;if(i===r)throw new Error(_e.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(_e.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-xe.centralF.cdf(m,c,l)}}setStats(n,e,r){const o=e.type,i=e.length,s=ge(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?ge(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(_e.UNSUPPORTED_COLUMN_TYPE)}}}function Ie(t,n,e,r=!0){Ne(e);const o=t.stats.uniqueCount;if(o<2)throw new Error(_e.SINGLE_FACTOR);const i=new Te(t,n,o);if(r&&!i.areVarsEqual(e))throw new Error(_e.NON_EQUAL_VARIANCES);const s=i.getOneWayAnova();return{anovaTable:s,fCritical:xe.centralF.inv(1-e,s.dfBn,s.dfWn),significance:e}}var Me=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 Oe=.05,Re=!1,Le=t.Column.fromList(t.COLUMN_TYPE.INT,"features",[9,12,4,8,7,4,6,8,2,10,1,3,4,5,2]),Pe=t.Column.fromStrings("features",["A","A","A","A","A","B","B","B","B","B","C","C","C","C","C"]);var De;!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"}(De||(De={})),L("ANOVA",(()=>{O("Performance: 1M rows demog",(()=>Me(void 0,void 0,void 0,(function*(){const t=n.data.demo.demog(1e6),e=t.col("race"),r=t.col("height");new Te(e,r,e.stats.uniqueCount).areVarsEqual(Oe),Ie(e,r,Oe,Re)}))),{timeout:4e3,benchmark:!0}),O("Correctness",(()=>Me(void 0,void 0,void 0,(function*(){const t=Ie(Pe,Le,Oe,Re),n=t.anovaTable;R(n.dfBn,De.DF_BN,"Incorrect degrees of freedom: dfBn"),R(n.dfTot,De.DF_TOT,"Incorrect degrees of freedom: dfTot"),R(n.dfWn,De.DF_WN,"Incorrect degrees of freedom: dfWn");const e=(t,n)=>Math.abs(t-n)<.01;R(e(n.ssBn,De.SS_BN),!0,"Incorrect sum of squares: ssBn"),R(e(n.ssTot,De.SS_TOT),!0,"Incorrect sum of squares: ssTot"),R(e(n.ssWn,De.SS_WN),!0,"Incorrect sum of squares: ssWn"),R(e(n.msBn,De.MS_BN),!0,"Incorrect mean squares: msBn"),R(e(n.msWn,De.MS_WN),!0,"Incorrect mean squares: msWn"),R(e(n.fStat,De.F_STAT),!0,"Incorrect F-statistics value"),R(e(n.pValue,De.P_VAL),!0,"Incorrect p-value"),R(e(t.fCritical,De.F_CRIT),!0,"Incorrect F-critical")}))),{timeout:4e3,benchmark:!0})}));var Fe=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 Ue=new t.Package;function Be(n,e,r){return Fe(this,void 0,void 0,(function*(){const o=yield F({category:n,test:e,testContext:r});return t.DataFrame.fromObjects(o)}))}function ke(){return Fe(this,void 0,void 0,(function*(){yield D(Ue,Ue.getModule("package-test.js"))}))}})(),eda_test=r})();
|
|
2
2
|
//# sourceMappingURL=package-test.js.map
|