pca-web 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +421 -0
- package/dist/base.d.ts +79 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +358 -0
- package/dist/base.js.map +1 -0
- package/dist/incremental-pca.d.ts +86 -0
- package/dist/incremental-pca.d.ts.map +1 -0
- package/dist/incremental-pca.js +397 -0
- package/dist/incremental-pca.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/matrix.d.ts +44 -0
- package/dist/matrix.d.ts.map +1 -0
- package/dist/matrix.js +99 -0
- package/dist/matrix.js.map +1 -0
- package/dist/model.d.ts +86 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +132 -0
- package/dist/model.js.map +1 -0
- package/dist/numeric/blas.d.ts +33 -0
- package/dist/numeric/blas.d.ts.map +1 -0
- package/dist/numeric/blas.js +130 -0
- package/dist/numeric/blas.js.map +1 -0
- package/dist/numeric/eigh.d.ts +21 -0
- package/dist/numeric/eigh.d.ts.map +1 -0
- package/dist/numeric/eigh.js +233 -0
- package/dist/numeric/eigh.js.map +1 -0
- package/dist/numeric/lanczos.d.ts +31 -0
- package/dist/numeric/lanczos.d.ts.map +1 -0
- package/dist/numeric/lanczos.js +287 -0
- package/dist/numeric/lanczos.js.map +1 -0
- package/dist/numeric/lu.d.ts +27 -0
- package/dist/numeric/lu.d.ts.map +1 -0
- package/dist/numeric/lu.js +149 -0
- package/dist/numeric/lu.js.map +1 -0
- package/dist/numeric/mle.d.ts +5 -0
- package/dist/numeric/mle.d.ts.map +1 -0
- package/dist/numeric/mle.js +67 -0
- package/dist/numeric/mle.js.map +1 -0
- package/dist/numeric/qr.d.ts +15 -0
- package/dist/numeric/qr.d.ts.map +1 -0
- package/dist/numeric/qr.js +88 -0
- package/dist/numeric/qr.js.map +1 -0
- package/dist/numeric/randomized.d.ts +54 -0
- package/dist/numeric/randomized.d.ts.map +1 -0
- package/dist/numeric/randomized.js +130 -0
- package/dist/numeric/randomized.js.map +1 -0
- package/dist/numeric/rng.d.ts +40 -0
- package/dist/numeric/rng.d.ts.map +1 -0
- package/dist/numeric/rng.js +127 -0
- package/dist/numeric/rng.js.map +1 -0
- package/dist/numeric/special.d.ts +2 -0
- package/dist/numeric/special.d.ts.map +1 -0
- package/dist/numeric/special.js +25 -0
- package/dist/numeric/special.js.map +1 -0
- package/dist/numeric/stats.d.ts +27 -0
- package/dist/numeric/stats.d.ts.map +1 -0
- package/dist/numeric/stats.js +110 -0
- package/dist/numeric/stats.js.map +1 -0
- package/dist/numeric/svd.d.ts +27 -0
- package/dist/numeric/svd.d.ts.map +1 -0
- package/dist/numeric/svd.js +374 -0
- package/dist/numeric/svd.js.map +1 -0
- package/dist/numeric/svdflip.d.ts +9 -0
- package/dist/numeric/svdflip.d.ts.map +1 -0
- package/dist/numeric/svdflip.js +32 -0
- package/dist/numeric/svdflip.js.map +1 -0
- package/dist/pca.d.ts +170 -0
- package/dist/pca.d.ts.map +1 -0
- package/dist/pca.js +649 -0
- package/dist/pca.js.map +1 -0
- package/dist/progress.d.ts +155 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +173 -0
- package/dist/progress.js.map +1 -0
- package/dist/scheduling.d.ts +66 -0
- package/dist/scheduling.d.ts.map +1 -0
- package/dist/scheduling.js +160 -0
- package/dist/scheduling.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +17 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +36 -0
- package/dist/validation.js.map +1 -0
- package/dist/webgpu/df64.d.ts +18 -0
- package/dist/webgpu/df64.d.ts.map +1 -0
- package/dist/webgpu/df64.js +42 -0
- package/dist/webgpu/df64.js.map +1 -0
- package/dist/webgpu/engine.d.ts +74 -0
- package/dist/webgpu/engine.d.ts.map +1 -0
- package/dist/webgpu/engine.js +326 -0
- package/dist/webgpu/engine.js.map +1 -0
- package/dist/webgpu/gpu-pca.d.ts +90 -0
- package/dist/webgpu/gpu-pca.d.ts.map +1 -0
- package/dist/webgpu/gpu-pca.js +407 -0
- package/dist/webgpu/gpu-pca.js.map +1 -0
- package/dist/webgpu/index.d.ts +19 -0
- package/dist/webgpu/index.d.ts.map +1 -0
- package/dist/webgpu/index.js +16 -0
- package/dist/webgpu/index.js.map +1 -0
- package/dist/webgpu/kernels.d.ts +47 -0
- package/dist/webgpu/kernels.d.ts.map +1 -0
- package/dist/webgpu/kernels.js +147 -0
- package/dist/webgpu/kernels.js.map +1 -0
- package/dist/worker/client.d.ts +174 -0
- package/dist/worker/client.d.ts.map +1 -0
- package/dist/worker/client.js +482 -0
- package/dist/worker/client.js.map +1 -0
- package/dist/worker/handler.d.ts +17 -0
- package/dist/worker/handler.d.ts.map +1 -0
- package/dist/worker/handler.js +404 -0
- package/dist/worker/handler.js.map +1 -0
- package/dist/worker/protocol.d.ts +192 -0
- package/dist/worker/protocol.d.ts.map +1 -0
- package/dist/worker/protocol.js +70 -0
- package/dist/worker/protocol.js.map +1 -0
- package/dist/worker/worker.d.ts +14 -0
- package/dist/worker/worker.d.ts.map +1 -0
- package/dist/worker/worker.js +20 -0
- package/dist/worker/worker.js.map +1 -0
- package/package.json +94 -0
package/dist/pca.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pca.js","sourceRoot":"","sources":["../src/pca.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAuC,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAkB,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAGL,YAAY,EAGZ,kBAAkB,EAClB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAmB,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAqD7F,MAAM,OAAO,GAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAClG,MAAM,WAAW,GAAwC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,IAAY,EACZ,WAAkC,EAClC,SAAoB;IAEpB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;IACvD,4EAA4E;IAC5E,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACtC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC;QAC3D,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,0CAA0C;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAkB,EAClB,CAAS,EACT,CAAS,EACT,MAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACtD,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,eAAe,EAAE,mDAAmD,MAAM,oBAAoB,MAAM,GAAG,CACxG,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,wCAAwC,MAAM,GAAG,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,eAAe,EAAE,8DAA8D,MAAM,oBAAoB,MAAM,GAAG,CACnH,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,eAAe,EAAE,wDAAwD,MAAM,0BAA0B,CAC1G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,CAAa;IACpC,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACvE,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QAClD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,qDAAqD,WAAW,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CACb,+EAA+E,WAAW,EAAE,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,SAAS,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;IACzB,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC;IAChD,IAAI,aAAa,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,wDAAwD,aAAa,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,6CAA6C,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,wBAAwB,GAAG,CAAC,CAAC,wBAAwB,IAAI,MAAM,CAAC;IACtE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,2CAA2C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,wBAAwB,GAAG,CACvG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,WAAW;QACX,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK;QACzB,SAAS;QACT,GAAG;QACH,aAAa;QACb,YAAY;QACZ,wBAAwB;QACxB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAI,SAAQ,OAAO;IACb,IAAI,CAAkB;IAE/B,SAAS,GAAG,CAAC,CAAC;IACd,aAAa,GAA+B,MAAM,CAAC;IAE3D,YAAY,UAAsB,EAAE;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,8BAA8B;IAC9B,IAAI,QAAQ;QACV,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,qEAAqE;IACrE,IAAI,iBAAiB;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,qEAAqE;IACrE,UAAU;IACV,qEAAqE;IAErE,4EAA4E;IAC5E,GAAG,CAAC,CAAc,EAAE,QAAsB;QACxC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,YAAY,CAAC,CAAc,EAAE,QAAsB;QACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,CAAc,EAAE,UAA2B,EAAE;QAC1D,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;YACrD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,iBAAiB,CAAC,CAAc,EAAE,UAA2B,EAAE;QACnE,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACtD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,sEAAsE;IAC9D,sBAAsB,CAAC,CAAY;QACzC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACjB,mDAAmD;YACnD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,6CAA6C;QAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;OAOG;IACH,CAAC,SAAS,CAAC,CAAS,EAAE,QAAsB;QAC1C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QACD,qEAAqE;QACrE,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,2BAA2B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,iDAAiD,CAC9F,CAAC;QACJ,CAAC;QACD,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YAErB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5E,MAAM,EAAE,GACN,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACvE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;YAE5B,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE;gBACtC,SAAS,EAAE,KAAK;gBAChB,MAAM;gBACN,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;aACzB,CAAC,CAAC;YAEH,IAAI,CAAY,CAAC;YACjB,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;gBACtD,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,CAAC,CAAC;QACX,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,mEAAmE;gBACnE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,CAAC,YAAY,CACnB,CAAS,EACT,EAAkB,EAClB,QAAiC,EACjC,OAAsB;QAEtB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAElC,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvC,IAAI,CAAsB,CAAC;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAe,CAAC;QACpB,IAAI,EAAgB,CAAC;QACrB,IAAI,iBAA+B,CAAC;QAEpC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC;YACN,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACV,KAAK,GAAG,MAAM,CAAC;YACf,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACV,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,iBAAiB,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kEAAkE;YAClE,qEAAqE;YACrE,wDAAwD;YACxD,MAAM,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,qEAAqE;YACrE,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,iBAAiB,GAAG,KAAK,CAAC;YAC1B,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;YACxB,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YACD,CAAC,GAAG,IAAI,CAAC;QACX,CAAC;QAED,wEAAwE;QACxE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEpD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,KAAK,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAC7C,CAAC;QAED,IAAI,CAAS,CAAC;QACd,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACjB,CAAC,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC5B,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACK,CAAC,SAAS,CAChB,CAAS,EACT,QAAiC;QAEjC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAC5C,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;YAC3C,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YACpD,KAAK,CAAC;QACR,CAAC;QACD,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,CAAC,iBAAiB,CACxB,CAAS,EACT,EAAkB,EAClB,MAA+B,EAC/B,QAAiC;QAEjC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9B,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,EAAY,CAAC;QAEvB,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAEjC,IAAI,GAAc,CAAC;QACnB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,oEAAoE;YACpE,iEAAiE;YACjE,GAAG,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBACtC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBACpC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;gBAC9B,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB;gBAC5D,GAAG;gBACH,aAAa,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;gBACvC,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YACH,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,CAAC;gBACN,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,iFAAiF;IACzE,eAAe,CACrB,CAAS,EACT,EAAc,EACd,OAAqB,EACrB,EAAU,EACV,GAAc;QAEd,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;QACzB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE/B,MAAM,iBAAiB,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,qEAAqE;QACrE,0EAA0E;QAC1E,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACf,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;QAElB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;YAChB,IAAI,GAAG,GAAG,QAAQ,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,qEAAqE;IACrE,0EAA0E;IAC1E,qEAAqE;IAErE;;;;;OAKG;IACH,QAAQ,CAAC,CAAS,EAAE,OAAqB;QACvC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,CAAS,EAAE,EAAc,EAAE,OAAqB,EAAE,GAAc;QAC7E,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACpC,MAAM,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7D,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAY,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,mEAAmE;IACnE,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,+DAA+D;IACvD,UAAU,CAAC,CAAS,EAAE,MAAkC;QAC9D,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,2BAA2B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,iDAAiD,CAC9F,CAAC;QACJ,CAAC;QACD,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,aAAa,CACX,QAA0B,EAC1B,CAAS,EACT,CAAsB,EACtB,KAAa,EACb,CAAsB;QAEtB,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,CAAC;YACP,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CACtB,QAA0B,EAC1B,CAAS,EACT,CAAsB,EACtB,KAAa,EACb,CAAsB;QAEtB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAqB,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5B,MAAM,QAAQ,GAAmB;YAC/B,UAAU,EAAE,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtD,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,eAA6B,CAAC;YACjE,iBAAiB,EAAE,aAAa,CAAC,IAAI,CAAC,kBAAgC,CAAC;SACxE,CAAC;QACF,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;wBAC5B,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;gBACD,QAAQ,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAgC,CAAC;gBACjD,QAAQ,CAAC,MAAM,GAAG,kBAAkB,CAClC,CAAC,CAAC,IAAI,EACN,CAAC,EACD,CAAC,EACD,IAAI,CAAC,IAAI,EACT,CAAC,EACD,IAAI,CAAC,KAAmB,EACxB,EAAE,EACF,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CACpB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,WAAW,CACjB,CAAS,EACT,OAAqB,EACrB,CAAS,EACT,EAAgB,EAChB,iBAA+B,EAC/B,KAAmB,EACnB,CAAe;QAEf,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,qEAAqE;IACrE,sBAAsB;IACtB,qEAAqE;IAErE;;;;OAIG;IACH,OAAO;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,OAAO;YACL,GAAG,IAAI;YACP,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,SAAS,EAAE,IAAI,CAAC,aAAa;YAC7B,OAAO,EAAE;gBACP,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,wBAAwB,EAAE,CAAC,CAAC,wBAAwB;gBACpD,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;aAC5C;SAC5B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,KAAe;QAC9B,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qEAAqE;IACrE,8DAA8D;IAC9D,qEAAqE;IAErE,kFAAkF;IAClF,YAAY,CAAC,CAAc;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvB,eAAe,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACxC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAmB,CAAC;QACzC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAChE,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;oBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,CAAc;QAClB,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;QACD,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;IACzB,CAAC;CACF;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress reporting for fits: the public observer/event types and the
|
|
3
|
+
* internal reporter that turns solver checkpoints into `PCAFitProgress`
|
|
4
|
+
* events with optional intermediate model snapshots.
|
|
5
|
+
*
|
|
6
|
+
* Layering: solver modules under `src/numeric/` import ONLY types from this
|
|
7
|
+
* file (erased at compile time), keeping the numeric layer dependency-free.
|
|
8
|
+
* The estimators construct the concrete `ProgressReporter` and thread it
|
|
9
|
+
* through solver options as `SolverHooks`.
|
|
10
|
+
*/
|
|
11
|
+
import { Matrix } from './matrix.js';
|
|
12
|
+
import type { SvdResult } from './numeric/svd.js';
|
|
13
|
+
import type { AbortSignalLike } from './scheduling.js';
|
|
14
|
+
import type { FloatArray } from './types.js';
|
|
15
|
+
/** The solver a progress event originates from. */
|
|
16
|
+
export type FitSolverId = 'full' | 'covariance_eigh' | 'arpack' | 'randomized' | 'incremental';
|
|
17
|
+
/** The stage of the fit a progress event belongs to. */
|
|
18
|
+
export type FitPhase = 'gram' | 'decompose' | 'power-iteration' | 'lanczos-step' | 'batch' | 'finalize';
|
|
19
|
+
/**
|
|
20
|
+
* An intermediate (or final) model snapshot: the evolving principal axes
|
|
21
|
+
* and, when requested, the embedding of the training rows. All arrays are
|
|
22
|
+
* fresh float64 copies owned by the callback — safe to keep, mutate, or
|
|
23
|
+
* transfer to another thread; they never alias solver or estimator state.
|
|
24
|
+
*/
|
|
25
|
+
export interface PCAFitSnapshot {
|
|
26
|
+
/** k×p principal axes in sklearn's `svd_flip` sign convention. */
|
|
27
|
+
components: Matrix;
|
|
28
|
+
/** Singular values (length k, descending). */
|
|
29
|
+
singularValues: Float64Array;
|
|
30
|
+
/** Per-component variance, s²/(n−1) against the rows fitted so far. */
|
|
31
|
+
explainedVariance: Float64Array;
|
|
32
|
+
/**
|
|
33
|
+
* rows×k embedding of the training rows (U·S, or U·√(n−1) when
|
|
34
|
+
* whitening). Present only when `SnapshotOptions.scores` is set.
|
|
35
|
+
*/
|
|
36
|
+
scores?: Matrix;
|
|
37
|
+
}
|
|
38
|
+
/** One progress event. Emitted synchronously from inside the fit. */
|
|
39
|
+
export interface PCAFitProgress {
|
|
40
|
+
estimator: 'PCA' | 'IncrementalPCA';
|
|
41
|
+
solver: FitSolverId;
|
|
42
|
+
phase: FitPhase;
|
|
43
|
+
/** Completed units of the current phase (0 marks entering a phase). */
|
|
44
|
+
step: number;
|
|
45
|
+
/** Units in the current phase, when known ahead of time. */
|
|
46
|
+
totalSteps: number | null;
|
|
47
|
+
/**
|
|
48
|
+
* Overall fit progress in [0, 1] — monotone within a fit, exactly 1 at
|
|
49
|
+
* `finalize` — or null while progress is indeterminate.
|
|
50
|
+
*/
|
|
51
|
+
fraction: number | null;
|
|
52
|
+
/** Intermediate model, when requested through `SnapshotOptions`. */
|
|
53
|
+
snapshot?: PCAFitSnapshot;
|
|
54
|
+
/** Solver-specific extras (arpack: `{basisSize, jmax, maxResidual}`). */
|
|
55
|
+
detail?: Readonly<Record<string, number>>;
|
|
56
|
+
}
|
|
57
|
+
/** Opt-in intermediate model snapshots on progress events. */
|
|
58
|
+
export interface SnapshotOptions {
|
|
59
|
+
/** Attach evolving components/singularValues/explainedVariance. */
|
|
60
|
+
components?: boolean;
|
|
61
|
+
/** Also attach `scores` (implies `components`). */
|
|
62
|
+
scores?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Attach snapshots only to every Nth step within a phase (default 1).
|
|
65
|
+
* The `finalize` event always carries a snapshot when snapshots are
|
|
66
|
+
* enabled. Snapshots cost roughly one extra solver step on the randomized
|
|
67
|
+
* solver, so `every: 2` halves that overhead.
|
|
68
|
+
*/
|
|
69
|
+
every?: number;
|
|
70
|
+
}
|
|
71
|
+
/** Observer options accepted by the synchronous `fit`/`fitTransform`. */
|
|
72
|
+
export interface FitObserver {
|
|
73
|
+
onProgress?: (event: PCAFitProgress) => void;
|
|
74
|
+
snapshot?: SnapshotOptions;
|
|
75
|
+
signal?: AbortSignalLike;
|
|
76
|
+
}
|
|
77
|
+
/** Options accepted by `fitAsync`/`fitTransformAsync`. */
|
|
78
|
+
export interface FitAsyncOptions extends FitObserver {
|
|
79
|
+
/** Milliseconds of solver work per event-loop slice (default 12). */
|
|
80
|
+
budgetMs?: number;
|
|
81
|
+
}
|
|
82
|
+
/** @internal What a solver reports at a checkpoint. */
|
|
83
|
+
export interface SolverProgressEmit {
|
|
84
|
+
phase: FitPhase;
|
|
85
|
+
step: number;
|
|
86
|
+
totalSteps: number | null;
|
|
87
|
+
/**
|
|
88
|
+
* Fresh snapshot-only decomposition triplets, truncated to k, oriented
|
|
89
|
+
* like the input matrix, unflipped. Ownership transfers to the reporter,
|
|
90
|
+
* which applies the sign convention in place. Solvers must never pass
|
|
91
|
+
* arrays that the ongoing fit still reads.
|
|
92
|
+
*/
|
|
93
|
+
dec?: SvdResult | null;
|
|
94
|
+
/** Pre-built snapshot (estimator-side emits: batches, finalize). */
|
|
95
|
+
snapshot?: PCAFitSnapshot;
|
|
96
|
+
detail?: Readonly<Record<string, number>>;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* @internal Reporting channel threaded through solver options. Solvers call
|
|
100
|
+
* `wantSnapshot` before spending anything on a snapshot decomposition and
|
|
101
|
+
* `emit` at every checkpoint. Both are purely synchronous — suspension is
|
|
102
|
+
* the generators' job, not the reporter's.
|
|
103
|
+
*/
|
|
104
|
+
export interface SolverHooks {
|
|
105
|
+
wantSnapshot(step: number): boolean;
|
|
106
|
+
emit(e: SolverProgressEmit): void;
|
|
107
|
+
}
|
|
108
|
+
/** @internal Fresh float64 copy of a possibly-float32 stored attribute. */
|
|
109
|
+
export declare function toFloat64Copy(a: FloatArray): Float64Array;
|
|
110
|
+
/**
|
|
111
|
+
* @internal Float64 embedding of the first `n` rows of `x` under a possibly
|
|
112
|
+
* intermediate model — `transform`'s math without the dtype casting:
|
|
113
|
+
* project, remove the projected mean, and whiten with an eps clip.
|
|
114
|
+
*/
|
|
115
|
+
export declare function projectForSnapshot(x: FloatArray, n: number, p: number, components: FloatArray, k: number, mean: FloatArray, explainedVariance: FloatArray, whiten: boolean, evEps: number): Matrix;
|
|
116
|
+
/** @internal Context a reporter needs to shape events and snapshots. */
|
|
117
|
+
export interface ReporterContext {
|
|
118
|
+
estimator: 'PCA' | 'IncrementalPCA';
|
|
119
|
+
solver: FitSolverId;
|
|
120
|
+
/** Rows of the training matrix (variance scaling, score shapes). */
|
|
121
|
+
nRows: number;
|
|
122
|
+
whiten: boolean;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @internal Turns solver checkpoints into observer events: computes the
|
|
126
|
+
* overall fraction from the per-solver phase table and materializes
|
|
127
|
+
* snapshots from fresh solver triplets. Callback exceptions propagate —
|
|
128
|
+
* they abort the fit by design.
|
|
129
|
+
*/
|
|
130
|
+
export declare class ProgressReporter implements SolverHooks {
|
|
131
|
+
private readonly onProgress;
|
|
132
|
+
private readonly wantComponents;
|
|
133
|
+
private readonly wantScores;
|
|
134
|
+
private readonly every;
|
|
135
|
+
private readonly ctx;
|
|
136
|
+
constructor(onProgress: (event: PCAFitProgress) => void, snapshot: SnapshotOptions | undefined, ctx: ReporterContext);
|
|
137
|
+
/** True when any event may carry a snapshot. */
|
|
138
|
+
get snapshotsEnabled(): boolean;
|
|
139
|
+
/** True when snapshots should include `scores`. */
|
|
140
|
+
get scoresRequested(): boolean;
|
|
141
|
+
wantSnapshot(step: number): boolean;
|
|
142
|
+
emit(e: SolverProgressEmit): void;
|
|
143
|
+
/**
|
|
144
|
+
* Builds a snapshot from fresh solver triplets, adopting their arrays:
|
|
145
|
+
* applies the deterministic sign convention in place, then derives the
|
|
146
|
+
* variances and (when requested) the U·S scores.
|
|
147
|
+
*/
|
|
148
|
+
private snapshotFromDec;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* @internal Constructs a reporter only when there is a callback to feed —
|
|
152
|
+
* a null reporter means solvers skip all snapshot work.
|
|
153
|
+
*/
|
|
154
|
+
export declare function makeReporter(observer: FitObserver | undefined, ctx: ReporterContext): ProgressReporter | null;
|
|
155
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
|
package/dist/progress.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress reporting for fits: the public observer/event types and the
|
|
3
|
+
* internal reporter that turns solver checkpoints into `PCAFitProgress`
|
|
4
|
+
* events with optional intermediate model snapshots.
|
|
5
|
+
*
|
|
6
|
+
* Layering: solver modules under `src/numeric/` import ONLY types from this
|
|
7
|
+
* file (erased at compile time), keeping the numeric layer dependency-free.
|
|
8
|
+
* The estimators construct the concrete `ProgressReporter` and thread it
|
|
9
|
+
* through solver options as `SolverHooks`.
|
|
10
|
+
*/
|
|
11
|
+
import { Matrix } from './matrix.js';
|
|
12
|
+
import { matmulTransB } from './numeric/blas.js';
|
|
13
|
+
import { svdFlipVBased } from './numeric/svdflip.js';
|
|
14
|
+
/**
|
|
15
|
+
* Static phase → [start, end] fraction spans per solver. A phase with known
|
|
16
|
+
* totalSteps interpolates linearly across its span; a single-shot span
|
|
17
|
+
* (start === end) pins the bar while an indeterminate stage runs; a phase
|
|
18
|
+
* with no span reports null (indeterminate). `finalize` is always 1.
|
|
19
|
+
*/
|
|
20
|
+
const PHASE_SPANS = {
|
|
21
|
+
full: {},
|
|
22
|
+
covariance_eigh: { gram: [0, 0.85], decompose: [0.85, 0.85] },
|
|
23
|
+
arpack: {},
|
|
24
|
+
randomized: { 'power-iteration': [0, 0.9] },
|
|
25
|
+
incremental: { batch: [0, 1] },
|
|
26
|
+
};
|
|
27
|
+
function fractionFor(solver, phase, step, totalSteps) {
|
|
28
|
+
if (phase === 'finalize') {
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
const span = PHASE_SPANS[solver][phase];
|
|
32
|
+
if (span === undefined) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const [lo, hi] = span;
|
|
36
|
+
if (lo === hi) {
|
|
37
|
+
return lo;
|
|
38
|
+
}
|
|
39
|
+
if (totalSteps === null || totalSteps <= 0) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const t = Math.min(1, Math.max(0, step / totalSteps));
|
|
43
|
+
return lo + (hi - lo) * t;
|
|
44
|
+
}
|
|
45
|
+
/** @internal Fresh float64 copy of a possibly-float32 stored attribute. */
|
|
46
|
+
export function toFloat64Copy(a) {
|
|
47
|
+
return a instanceof Float64Array ? a.slice() : new Float64Array(a);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @internal Float64 embedding of the first `n` rows of `x` under a possibly
|
|
51
|
+
* intermediate model — `transform`'s math without the dtype casting:
|
|
52
|
+
* project, remove the projected mean, and whiten with an eps clip.
|
|
53
|
+
*/
|
|
54
|
+
export function projectForSnapshot(x, n, p, components, k, mean, explainedVariance, whiten, evEps) {
|
|
55
|
+
const xt = matmulTransB(x, components, n, p, k);
|
|
56
|
+
const meanProj = new Float64Array(k);
|
|
57
|
+
for (let c = 0; c < k; c++) {
|
|
58
|
+
let acc = 0;
|
|
59
|
+
const off = c * p;
|
|
60
|
+
for (let j = 0; j < p; j++) {
|
|
61
|
+
acc += mean[j] * components[off + j];
|
|
62
|
+
}
|
|
63
|
+
meanProj[c] = acc;
|
|
64
|
+
}
|
|
65
|
+
for (let i = 0; i < n; i++) {
|
|
66
|
+
for (let c = 0; c < k; c++) {
|
|
67
|
+
xt[i * k + c] -= meanProj[c];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (whiten) {
|
|
71
|
+
for (let c = 0; c < k; c++) {
|
|
72
|
+
let scale = Math.sqrt(explainedVariance[c]);
|
|
73
|
+
if (scale < evEps) {
|
|
74
|
+
scale = evEps;
|
|
75
|
+
}
|
|
76
|
+
for (let i = 0; i < n; i++) {
|
|
77
|
+
xt[i * k + c] /= scale;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return new Matrix(xt, n, k);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @internal Turns solver checkpoints into observer events: computes the
|
|
85
|
+
* overall fraction from the per-solver phase table and materializes
|
|
86
|
+
* snapshots from fresh solver triplets. Callback exceptions propagate —
|
|
87
|
+
* they abort the fit by design.
|
|
88
|
+
*/
|
|
89
|
+
export class ProgressReporter {
|
|
90
|
+
onProgress;
|
|
91
|
+
wantComponents;
|
|
92
|
+
wantScores;
|
|
93
|
+
every;
|
|
94
|
+
ctx;
|
|
95
|
+
constructor(onProgress, snapshot, ctx) {
|
|
96
|
+
this.onProgress = onProgress;
|
|
97
|
+
this.wantScores = snapshot?.scores === true;
|
|
98
|
+
this.wantComponents = snapshot?.components === true || this.wantScores;
|
|
99
|
+
const every = snapshot?.every ?? 1;
|
|
100
|
+
this.every = Number.isInteger(every) && every >= 1 ? every : 1;
|
|
101
|
+
this.ctx = ctx;
|
|
102
|
+
}
|
|
103
|
+
/** True when any event may carry a snapshot. */
|
|
104
|
+
get snapshotsEnabled() {
|
|
105
|
+
return this.wantComponents;
|
|
106
|
+
}
|
|
107
|
+
/** True when snapshots should include `scores`. */
|
|
108
|
+
get scoresRequested() {
|
|
109
|
+
return this.wantScores;
|
|
110
|
+
}
|
|
111
|
+
wantSnapshot(step) {
|
|
112
|
+
return this.wantComponents && step >= 1 && step % this.every === 0;
|
|
113
|
+
}
|
|
114
|
+
emit(e) {
|
|
115
|
+
const event = {
|
|
116
|
+
estimator: this.ctx.estimator,
|
|
117
|
+
solver: this.ctx.solver,
|
|
118
|
+
phase: e.phase,
|
|
119
|
+
step: e.step,
|
|
120
|
+
totalSteps: e.totalSteps,
|
|
121
|
+
fraction: fractionFor(this.ctx.solver, e.phase, e.step, e.totalSteps),
|
|
122
|
+
};
|
|
123
|
+
const snapshot = e.snapshot ?? (e.dec ? this.snapshotFromDec(e.dec) : undefined);
|
|
124
|
+
if (snapshot !== undefined) {
|
|
125
|
+
event.snapshot = snapshot;
|
|
126
|
+
}
|
|
127
|
+
if (e.detail !== undefined) {
|
|
128
|
+
event.detail = e.detail;
|
|
129
|
+
}
|
|
130
|
+
this.onProgress(event);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Builds a snapshot from fresh solver triplets, adopting their arrays:
|
|
134
|
+
* applies the deterministic sign convention in place, then derives the
|
|
135
|
+
* variances and (when requested) the U·S scores.
|
|
136
|
+
*/
|
|
137
|
+
snapshotFromDec(dec) {
|
|
138
|
+
const n = this.ctx.nRows;
|
|
139
|
+
const k = dec.s.length;
|
|
140
|
+
const p = dec.vt.length / k;
|
|
141
|
+
svdFlipVBased(dec.u, n, dec.vt, k, p);
|
|
142
|
+
const explainedVariance = new Float64Array(k);
|
|
143
|
+
for (let i = 0; i < k; i++) {
|
|
144
|
+
explainedVariance[i] = (dec.s[i] * dec.s[i]) / (n - 1);
|
|
145
|
+
}
|
|
146
|
+
const snapshot = {
|
|
147
|
+
components: new Matrix(dec.vt, k, p),
|
|
148
|
+
singularValues: dec.s,
|
|
149
|
+
explainedVariance,
|
|
150
|
+
};
|
|
151
|
+
if (this.wantScores) {
|
|
152
|
+
const scores = new Float64Array(n * k);
|
|
153
|
+
const f = Math.sqrt(n - 1);
|
|
154
|
+
for (let i = 0; i < n; i++) {
|
|
155
|
+
for (let c = 0; c < k; c++) {
|
|
156
|
+
const u = dec.u[i * k + c];
|
|
157
|
+
scores[i * k + c] = this.ctx.whiten ? u * f : u * dec.s[c];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
snapshot.scores = new Matrix(scores, n, k);
|
|
161
|
+
}
|
|
162
|
+
return snapshot;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* @internal Constructs a reporter only when there is a callback to feed —
|
|
167
|
+
* a null reporter means solvers skip all snapshot work.
|
|
168
|
+
*/
|
|
169
|
+
export function makeReporter(observer, ctx) {
|
|
170
|
+
const onProgress = observer?.onProgress;
|
|
171
|
+
return onProgress ? new ProgressReporter(onProgress, observer?.snapshot, ctx) : null;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cooperative scheduling for non-blocking fits: abort signalling, event-loop
|
|
3
|
+
* yielding, time-slice budgeting, and the two generator drivers (synchronous
|
|
4
|
+
* drain and time-sliced async). Environment-agnostic — browser main thread,
|
|
5
|
+
* Web Workers, and Node all work; every host global is feature-detected
|
|
6
|
+
* through `globalThis` (the build targets lib ES2022 only).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Structural subset of `AbortSignal` read by the fit drivers, so any object
|
|
10
|
+
* with an `aborted` flag works (no DOM lib required).
|
|
11
|
+
*/
|
|
12
|
+
export interface AbortSignalLike {
|
|
13
|
+
readonly aborted: boolean;
|
|
14
|
+
readonly reason?: unknown;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Thrown (or rejected) when a fit is aborted through a signal that carries
|
|
18
|
+
* no `reason`. `name` is 'AbortError', matching the DOMException convention,
|
|
19
|
+
* so `err.name === 'AbortError'` identifies cancellations portably.
|
|
20
|
+
*/
|
|
21
|
+
export declare class FitAbortError extends Error {
|
|
22
|
+
readonly name = "AbortError";
|
|
23
|
+
constructor(message?: string);
|
|
24
|
+
}
|
|
25
|
+
/** Throws `signal.reason` (or a `FitAbortError`) when the signal is aborted. */
|
|
26
|
+
export declare function throwIfAborted(signal?: AbortSignalLike | null): void;
|
|
27
|
+
/**
|
|
28
|
+
* Resolves in a later macrotask, giving the host a chance to process input,
|
|
29
|
+
* rendering, and — crucially for cancellation — incoming messages. Prefers
|
|
30
|
+
* `setImmediate` (Node), then a `MessageChannel` round-trip, then
|
|
31
|
+
* `setTimeout(0)`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function yieldToEventLoop(): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Tracks a wall-clock budget per event-loop slice. `pause()` returns null
|
|
36
|
+
* while the current slice has budget left — callers skip awaiting entirely,
|
|
37
|
+
* avoiding microtask churn in the hot loop — or a promise that yields to the
|
|
38
|
+
* event loop and restarts the budget.
|
|
39
|
+
*/
|
|
40
|
+
export declare class TimeSlicer {
|
|
41
|
+
private readonly budgetMs;
|
|
42
|
+
private readonly now;
|
|
43
|
+
private sliceStart;
|
|
44
|
+
constructor(budgetMs: number, nowFn?: () => number);
|
|
45
|
+
pause(): Promise<void> | null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Drains a step generator synchronously — the classic blocking fit. The
|
|
49
|
+
* abort signal is checked before every step; on any exit before completion
|
|
50
|
+
* (abort, callback throw) the generator's `finally` blocks run via
|
|
51
|
+
* `gen.return`, releasing estimator state such as the re-entrancy flag.
|
|
52
|
+
*/
|
|
53
|
+
export declare function driveSync<T>(gen: Generator<void, T, void>, signal?: AbortSignalLike | null): T;
|
|
54
|
+
export interface DriveAsyncOptions {
|
|
55
|
+
/** Milliseconds of solver work per event-loop slice (default 12). */
|
|
56
|
+
budgetMs?: number;
|
|
57
|
+
signal?: AbortSignalLike | null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Drives a step generator cooperatively: runs steps until the slice's time
|
|
61
|
+
* budget is spent, then yields to the event loop. Yields once before the
|
|
62
|
+
* first step so callers can paint (a spinner, a disabled button) ahead of
|
|
63
|
+
* any heavy work. A `budgetMs` of 0 yields after every step.
|
|
64
|
+
*/
|
|
65
|
+
export declare function driveAsync<T>(gen: Generator<void, T, void>, options?: DriveAsyncOptions): Promise<T>;
|
|
66
|
+
//# sourceMappingURL=scheduling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../src/scheduling.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAkB,IAAI,gBAAgB;gBAE1B,OAAO,SAA8B;CAGlD;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAIpE;AAuDD;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhD;AAUD;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,MAAM;IAMlD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAQ9B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,CAAC,CAgB9F;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAC7B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,CAAC,CAAC,CAwBZ"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cooperative scheduling for non-blocking fits: abort signalling, event-loop
|
|
3
|
+
* yielding, time-slice budgeting, and the two generator drivers (synchronous
|
|
4
|
+
* drain and time-sliced async). Environment-agnostic — browser main thread,
|
|
5
|
+
* Web Workers, and Node all work; every host global is feature-detected
|
|
6
|
+
* through `globalThis` (the build targets lib ES2022 only).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Thrown (or rejected) when a fit is aborted through a signal that carries
|
|
10
|
+
* no `reason`. `name` is 'AbortError', matching the DOMException convention,
|
|
11
|
+
* so `err.name === 'AbortError'` identifies cancellations portably.
|
|
12
|
+
*/
|
|
13
|
+
export class FitAbortError extends Error {
|
|
14
|
+
name = 'AbortError';
|
|
15
|
+
constructor(message = 'The operation was aborted') {
|
|
16
|
+
super(message);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** Throws `signal.reason` (or a `FitAbortError`) when the signal is aborted. */
|
|
20
|
+
export function throwIfAborted(signal) {
|
|
21
|
+
if (signal?.aborted) {
|
|
22
|
+
throw signal.reason ?? new FitAbortError();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const GLOBALS = globalThis;
|
|
26
|
+
let yieldImpl = null;
|
|
27
|
+
/**
|
|
28
|
+
* Picks the best macrotask-yield mechanism available — once, lazily.
|
|
29
|
+
*
|
|
30
|
+
* Deliberately NOT `scheduler.yield()`: its continuation resumes at a
|
|
31
|
+
* priority above pending message events, so a slicing loop built on it
|
|
32
|
+
* starves incoming `postMessage` traffic — abort requests sent to a busy
|
|
33
|
+
* worker would only be seen after the fit finished. A MessageChannel
|
|
34
|
+
* round-trip queues behind already-arrived messages (same task source,
|
|
35
|
+
* FIFO), which is exactly the fairness cancellation needs, and it is not
|
|
36
|
+
* subject to setTimeout's >=4ms nesting clamp.
|
|
37
|
+
*/
|
|
38
|
+
function pickYieldImpl() {
|
|
39
|
+
if (typeof GLOBALS.setImmediate === 'function') {
|
|
40
|
+
// Node: cheaper than a channel and fair with worker_threads messages.
|
|
41
|
+
const setImmediateFn = GLOBALS.setImmediate;
|
|
42
|
+
return () => new Promise((resolve) => setImmediateFn(resolve));
|
|
43
|
+
}
|
|
44
|
+
if (typeof GLOBALS.MessageChannel === 'function') {
|
|
45
|
+
// One long-lived channel; each posted message wakes one waiter (FIFO).
|
|
46
|
+
const channel = new GLOBALS.MessageChannel();
|
|
47
|
+
const waiters = [];
|
|
48
|
+
channel.port1.onmessage = () => {
|
|
49
|
+
waiters.shift()?.();
|
|
50
|
+
};
|
|
51
|
+
return () => new Promise((resolve) => {
|
|
52
|
+
waiters.push(resolve);
|
|
53
|
+
channel.port2.postMessage(null);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
if (typeof GLOBALS.setTimeout === 'function') {
|
|
57
|
+
const setTimeoutFn = GLOBALS.setTimeout;
|
|
58
|
+
return () => new Promise((resolve) => setTimeoutFn(resolve, 0));
|
|
59
|
+
}
|
|
60
|
+
// Hosts without timers: a microtask still lets chained promises interleave.
|
|
61
|
+
return () => Promise.resolve();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Resolves in a later macrotask, giving the host a chance to process input,
|
|
65
|
+
* rendering, and — crucially for cancellation — incoming messages. Prefers
|
|
66
|
+
* `setImmediate` (Node), then a `MessageChannel` round-trip, then
|
|
67
|
+
* `setTimeout(0)`.
|
|
68
|
+
*/
|
|
69
|
+
export function yieldToEventLoop() {
|
|
70
|
+
yieldImpl ??= pickYieldImpl();
|
|
71
|
+
return yieldImpl();
|
|
72
|
+
}
|
|
73
|
+
function defaultNow() {
|
|
74
|
+
const perf = GLOBALS.performance;
|
|
75
|
+
if (perf && typeof perf.now === 'function') {
|
|
76
|
+
return () => perf.now();
|
|
77
|
+
}
|
|
78
|
+
return () => Date.now();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Tracks a wall-clock budget per event-loop slice. `pause()` returns null
|
|
82
|
+
* while the current slice has budget left — callers skip awaiting entirely,
|
|
83
|
+
* avoiding microtask churn in the hot loop — or a promise that yields to the
|
|
84
|
+
* event loop and restarts the budget.
|
|
85
|
+
*/
|
|
86
|
+
export class TimeSlicer {
|
|
87
|
+
budgetMs;
|
|
88
|
+
now;
|
|
89
|
+
sliceStart;
|
|
90
|
+
constructor(budgetMs, nowFn) {
|
|
91
|
+
this.budgetMs = budgetMs;
|
|
92
|
+
this.now = nowFn ?? defaultNow();
|
|
93
|
+
this.sliceStart = this.now();
|
|
94
|
+
}
|
|
95
|
+
pause() {
|
|
96
|
+
if (this.now() - this.sliceStart < this.budgetMs) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
return yieldToEventLoop().then(() => {
|
|
100
|
+
this.sliceStart = this.now();
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Drains a step generator synchronously — the classic blocking fit. The
|
|
106
|
+
* abort signal is checked before every step; on any exit before completion
|
|
107
|
+
* (abort, callback throw) the generator's `finally` blocks run via
|
|
108
|
+
* `gen.return`, releasing estimator state such as the re-entrancy flag.
|
|
109
|
+
*/
|
|
110
|
+
export function driveSync(gen, signal) {
|
|
111
|
+
let finished = false;
|
|
112
|
+
try {
|
|
113
|
+
for (;;) {
|
|
114
|
+
throwIfAborted(signal);
|
|
115
|
+
const step = gen.next();
|
|
116
|
+
if (step.done) {
|
|
117
|
+
finished = true;
|
|
118
|
+
return step.value;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
if (!finished) {
|
|
124
|
+
gen.return(undefined);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Drives a step generator cooperatively: runs steps until the slice's time
|
|
130
|
+
* budget is spent, then yields to the event loop. Yields once before the
|
|
131
|
+
* first step so callers can paint (a spinner, a disabled button) ahead of
|
|
132
|
+
* any heavy work. A `budgetMs` of 0 yields after every step.
|
|
133
|
+
*/
|
|
134
|
+
export async function driveAsync(gen, options = {}) {
|
|
135
|
+
const signal = options.signal;
|
|
136
|
+
let finished = false;
|
|
137
|
+
try {
|
|
138
|
+
throwIfAborted(signal);
|
|
139
|
+
await yieldToEventLoop();
|
|
140
|
+
const slicer = new TimeSlicer(options.budgetMs ?? 12);
|
|
141
|
+
for (;;) {
|
|
142
|
+
throwIfAborted(signal);
|
|
143
|
+
const step = gen.next();
|
|
144
|
+
if (step.done) {
|
|
145
|
+
finished = true;
|
|
146
|
+
return step.value;
|
|
147
|
+
}
|
|
148
|
+
const pause = slicer.pause();
|
|
149
|
+
if (pause !== null) {
|
|
150
|
+
await pause;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
if (!finished) {
|
|
156
|
+
gen.return(undefined);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=scheduling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduling.js","sourceRoot":"","sources":["../src/scheduling.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Floating-point storage used throughout the library. */
|
|
2
|
+
export type FloatArray = Float64Array | Float32Array;
|
|
3
|
+
/** Storage dtype. Mirrors sklearn's float64/float32 handling. */
|
|
4
|
+
export type Dtype = 'float64' | 'float32';
|
|
5
|
+
export type FloatArrayConstructor = Float64ArrayConstructor | Float32ArrayConstructor;
|
|
6
|
+
export declare function dtypeOf(a: FloatArray): Dtype;
|
|
7
|
+
export declare function constructorFor(dtype: Dtype): FloatArrayConstructor;
|
|
8
|
+
/** Machine epsilon for a dtype (numpy finfo(dtype).eps). */
|
|
9
|
+
export declare function epsFor(dtype: Dtype): number;
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AAErD,iEAAiE;AACjE,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,GAAG,uBAAuB,CAAC;AAEtF,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,CAE5C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,qBAAqB,CAElE;AAED,4DAA4D;AAC5D,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE3C"}
|