prographs 0.12.0 → 0.13.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/CHANGELOG.md +9 -1
- package/README.md +6 -4
- package/dist/AutoGraph-PDPEAIXL.cjs +145 -0
- package/dist/GraphType.js +19 -0
- package/dist/autograph/chartIndex.js +521 -0
- package/dist/autograph/chartModules.js +2 -1
- package/dist/autograph/index.cjs +98 -93
- package/dist/catalog-DI4XZ46L.cjs +142 -0
- package/dist/catalog.js +2 -1
- package/dist/charts/biologycharts/BiologySamples.js +59 -0
- package/dist/charts/biologycharts/PunnettSquare.js +342 -0
- package/dist/charts/biologycharts/biologyEnums.js +22 -1
- package/dist/charts/biologycharts/index.js +5 -3
- package/dist/charts/doecharts/DoeSamples.js +78 -0
- package/dist/charts/doecharts/SipocDiagram.js +453 -0
- package/dist/charts/doecharts/index.js +4 -2
- package/dist/charts/fieldcharts/SpeciesAccumulationCurve.js +350 -0
- package/dist/charts/fieldcharts/fieldEnums.js +8 -1
- package/dist/charts/fieldcharts/index.js +5 -3
- package/dist/charts/signals/AntennaPatternChart.js +492 -0
- package/dist/charts/signals/SignalSamples.js +17 -0
- package/dist/charts/signals/index.js +5 -3
- package/dist/charts/softwarediagrams/ComponentDiagram.js +504 -0
- package/dist/charts/softwarediagrams/DeploymentDiagram.js +419 -0
- package/dist/charts/softwarediagrams/SoftwareSamples.js +283 -1
- package/dist/charts/softwarediagrams/index.js +7 -3
- package/dist/charts/softwarediagrams/softwareEnums.js +45 -1
- package/dist/charts/sportscharts/PowerDurationCurve.js +301 -0
- package/dist/charts/sportscharts/SportsSamples.js +102 -0
- package/dist/charts/sportscharts/TrainingLoadChart.js +325 -0
- package/dist/charts/sportscharts/index.js +6 -2
- package/dist/charts/strategycharts/BassDiffusionChart.js +362 -0
- package/dist/charts/strategycharts/BassModel.js +96 -0
- package/dist/charts/strategycharts/BurnRunwayChart.js +284 -0
- package/dist/charts/strategycharts/CapTableChart.js +366 -0
- package/dist/charts/strategycharts/KanbanBoard.js +324 -0
- package/dist/charts/strategycharts/OkrTree.js +339 -0
- package/dist/charts/strategycharts/StrategyPane.js +27 -0
- package/dist/charts/strategycharts/StrategySamples.js +251 -0
- package/dist/charts/strategycharts/index.js +15 -3
- package/dist/charts/threefields/BsfcMap3DChart.js +231 -0
- package/dist/charts/threefields/CompressorMap3DChart.js +217 -0
- package/dist/charts/threefields/FieldGrid.js +50 -0
- package/dist/charts/threefields/LossLandscape3DChart.js +201 -0
- package/dist/charts/threefields/MapSheet.js +77 -0
- package/dist/charts/threefields/TerrainRoute3DChart.js +201 -0
- package/dist/charts/threefields/TerrainRouteMath.js +40 -0
- package/dist/charts/threefields/ThreeFieldBase.js +117 -0
- package/dist/charts/threefields/ThreeFieldsSamples.js +80 -0
- package/dist/charts/threefields/WaferMap3DChart.js +218 -0
- package/dist/charts/threefields/index.js +19 -0
- package/dist/charts/threesurfaces/index.js +2 -2
- package/dist/charts/tradingcharts/KeltnerChannelChart.js +171 -0
- package/dist/charts/tradingcharts/TradingMath.js +20 -0
- package/dist/charts/tradingcharts/index.js +4 -2
- package/dist/{chunk-ZL6XDXMK.cjs → chunk-26PSLEP4.cjs} +8 -8
- package/dist/{chunk-W3US6EFP.cjs → chunk-2BO5DZUP.cjs} +12 -12
- package/dist/{chunk-5DP7OUSE.cjs → chunk-2GG5YYSC.cjs} +6 -6
- package/dist/{chunk-7FG4JSVO.cjs → chunk-2GL2VNJU.cjs} +253 -33
- package/dist/{chunk-LCWMRCLF.cjs → chunk-2PYOI7OY.cjs} +21 -21
- package/dist/{chunk-JFWJAEBD.cjs → chunk-3U4MCSKI.cjs} +4 -4
- package/dist/{chunk-CUPLHZRR.cjs → chunk-3ZMM3FSK.cjs} +4 -4
- package/dist/{chunk-L2AV62DP.cjs → chunk-4767WQJ7.cjs} +6 -6
- package/dist/{chunk-DA2EYIIP.cjs → chunk-4E7FSSBF.cjs} +1210 -168
- package/dist/{chunk-VS5LQEZB.cjs → chunk-526STI2S.cjs} +5 -5
- package/dist/{chunk-RXIMEK6C.cjs → chunk-55767YPI.cjs} +20 -20
- package/dist/{chunk-JXLSKIUV.cjs → chunk-5FBQOMMT.cjs} +26 -26
- package/dist/{chunk-27PZV5BR.cjs → chunk-5N4Z7MTS.cjs} +4 -4
- package/dist/{chunk-KEWCUIQA.cjs → chunk-5WEV6YWA.cjs} +22 -22
- package/dist/chunk-5XOVVC5X.cjs +3281 -0
- package/dist/{chunk-HK5J7Q2W.cjs → chunk-6HLXVWXU.cjs} +9 -9
- package/dist/{chunk-7JG47RW4.cjs → chunk-6LQT4WJ5.cjs} +25 -25
- package/dist/{chunk-OCVTI6X4.cjs → chunk-6YTWOUFD.cjs} +329 -36
- package/dist/{chunk-W7IQCAVN.cjs → chunk-7F6W6HKL.cjs} +11 -11
- package/dist/{chunk-F2DCJXDM.cjs → chunk-7L6KYU5A.cjs} +21 -21
- package/dist/{chunk-GTGR6LPR.cjs → chunk-A4GIN4FE.cjs} +17 -17
- package/dist/{chunk-B2CETSR6.cjs → chunk-A4US7SA7.cjs} +5 -5
- package/dist/{chunk-3DIF2YYW.cjs → chunk-AOXPBLPW.cjs} +10 -10
- package/dist/{chunk-7TTR4UF5.cjs → chunk-ATI45Z4M.cjs} +2 -2
- package/dist/{chunk-5BFCIX2V.cjs → chunk-CPPMO4IQ.cjs} +434 -148
- package/dist/{chunk-AYZZQ6AC.cjs → chunk-CZ5KGF6Q.cjs} +9 -9
- package/dist/{chunk-7THJ3ZBK.cjs → chunk-D4I35MCE.cjs} +2 -2
- package/dist/{chunk-MCPPFRLN.cjs → chunk-DCGAAN3Z.cjs} +2 -2
- package/dist/{chunk-VABL6CVX.cjs → chunk-DEY36N37.cjs} +21 -21
- package/dist/{chunk-RNCKGJCC.cjs → chunk-DXHXD3DK.cjs} +3 -3
- package/dist/{chunk-A56ZGMVZ.cjs → chunk-E7B45DBZ.cjs} +11 -11
- package/dist/{chunk-DOR6L4MT.cjs → chunk-EJC6EAC5.cjs} +18 -18
- package/dist/{chunk-UPGNM7MA.cjs → chunk-EULJOOMA.cjs} +11 -11
- package/dist/{chunk-G4AZL4GO.cjs → chunk-EYM6LEIF.cjs} +474 -70
- package/dist/{chunk-NJ4X6XGV.cjs → chunk-EZTYX2GH.cjs} +5 -5
- package/dist/chunk-FDD4UP73.cjs +521 -0
- package/dist/{chunk-WJ3VH2Q4.cjs → chunk-GEAIGM3J.cjs} +110 -615
- package/dist/{chunk-P3SBHF43.cjs → chunk-GRUYVXTS.cjs} +2 -2
- package/dist/{chunk-NX4Z5LMS.cjs → chunk-H3SZXND5.cjs} +5 -5
- package/dist/{chunk-EE4S4TOE.cjs → chunk-HS45TOFJ.cjs} +21 -21
- package/dist/chunk-INGOG6OV.cjs +899 -0
- package/dist/{chunk-UDKA6DGT.cjs → chunk-J3CDXZHF.cjs} +4 -4
- package/dist/{chunk-YO6G7TKI.cjs → chunk-JAU5ADEU.cjs} +11 -11
- package/dist/{chunk-22LBK4GA.cjs → chunk-JQEBSHX3.cjs} +4 -4
- package/dist/{chunk-RXX3U7VQ.cjs → chunk-KLXGLMFU.cjs} +10 -10
- package/dist/chunk-KVOX36J3.cjs +327 -0
- package/dist/chunk-L6BGNHFL.cjs +139 -0
- package/dist/{chunk-GMER35L3.cjs → chunk-L7TB7PU5.cjs} +20 -20
- package/dist/{chunk-AFXYNBL2.cjs → chunk-LBTRYEM2.cjs} +4 -4
- package/dist/{chunk-WYYCKIOD.cjs → chunk-LLULNJSP.cjs} +11 -11
- package/dist/{chunk-J27XOSLP.cjs → chunk-LSO46AFV.cjs} +8 -8
- package/dist/{chunk-5XJO45ES.cjs → chunk-LZ2KJ7ZX.cjs} +11 -11
- package/dist/chunk-M4IQ5LIZ.cjs +422 -0
- package/dist/{chunk-Y2KIUKJF.cjs → chunk-MPDHDKYZ.cjs} +11 -11
- package/dist/{chunk-4EMPKRZU.cjs → chunk-MRQ42ZJE.cjs} +3 -3
- package/dist/{chunk-EU5D2MF4.cjs → chunk-MYV4KZWP.cjs} +9 -9
- package/dist/{chunk-XD7KN4UN.cjs → chunk-MZXVLC24.cjs} +6 -6
- package/dist/{chunk-PPSONARU.cjs → chunk-NLBVDFIR.cjs} +41 -2
- package/dist/{chunk-L3PEGMGM.cjs → chunk-NY3TBZY4.cjs} +33 -33
- package/dist/{chunk-6YNYXXB6.cjs → chunk-OGVVSFAR.cjs} +3 -3
- package/dist/{chunk-MLV7QLB6.cjs → chunk-OMTQIQMN.cjs} +6 -6
- package/dist/{chunk-BEEOSNK7.cjs → chunk-PEJJ6TXJ.cjs} +15 -144
- package/dist/{chunk-SOKOWUF5.cjs → chunk-PPGWHIU7.cjs} +2 -2
- package/dist/{chunk-IELWOM2J.cjs → chunk-PPO6SDAN.cjs} +6 -6
- package/dist/{chunk-6JTZZCSL.cjs → chunk-PUMKX5F2.cjs} +3 -3
- package/dist/{chunk-RFOXFY2U.cjs → chunk-PXBYWCNB.cjs} +190 -799
- package/dist/{chunk-3BYXOISI.cjs → chunk-Q3HB3IX6.cjs} +4 -4
- package/dist/{chunk-RXCOVONX.cjs → chunk-RBMUOIXE.cjs} +289 -34
- package/dist/{chunk-MSBNHCSE.cjs → chunk-RJHGCUUD.cjs} +6 -6
- package/dist/{chunk-I6VG7F6Z.cjs → chunk-RSONDMYW.cjs} +708 -141
- package/dist/{chunk-GZDNPHMT.cjs → chunk-SHMPFCUE.cjs} +19 -19
- package/dist/{chunk-ZIBVCOW6.cjs → chunk-SN4FCXFC.cjs} +19 -19
- package/dist/{chunk-7KM52NMN.cjs → chunk-SN5T7WYO.cjs} +2 -2
- package/dist/{chunk-7MSZR65Z.cjs → chunk-SQJZGVDR.cjs} +7 -7
- package/dist/chunk-SYABFMD7.cjs +633 -0
- package/dist/{chunk-2RRFEYFH.cjs → chunk-TICB3MAC.cjs} +16 -16
- package/dist/{chunk-AOOKHUV5.cjs → chunk-U7Z7XYR2.cjs} +5 -5
- package/dist/{chunk-JEWQAXVG.cjs → chunk-UA2THQFV.cjs} +6 -6
- package/dist/{chunk-LHZPAHU3.cjs → chunk-VIK4L2YF.cjs} +112 -521
- package/dist/{chunk-4YWMAQ4J.cjs → chunk-VM2Y6BDY.cjs} +4 -4
- package/dist/{chunk-IRRKE2ZE.cjs → chunk-VMS3KWYI.cjs} +21 -21
- package/dist/{chunk-4SLARW6F.cjs → chunk-VU5NUD46.cjs} +17 -17
- package/dist/{chunk-XHY6TVYG.cjs → chunk-VV5CVOF7.cjs} +13 -13
- package/dist/{chunk-CCIBPGPZ.cjs → chunk-VYSAWPSS.cjs} +57 -57
- package/dist/{chunk-TTNEMQ2A.cjs → chunk-W7YRWEWQ.cjs} +22 -22
- package/dist/{chunk-C7MUOGEW.cjs → chunk-X7R5SY62.cjs} +6 -6
- package/dist/{chunk-ILR5KBMB.cjs → chunk-XOK3KTSS.cjs} +6 -6
- package/dist/{chunk-2CZM2I3T.cjs → chunk-XUIX45VU.cjs} +19 -19
- package/dist/{chunk-TGRMPS3A.cjs → chunk-XWH46PVJ.cjs} +165 -43
- package/dist/{chunk-WQYXXECR.cjs → chunk-Y5XVMK3K.cjs} +6 -6
- package/dist/{chunk-AK4TX2WG.cjs → chunk-YCNKEDTG.cjs} +13 -13
- package/dist/{chunk-PJJB24DU.cjs → chunk-YEF7SE3X.cjs} +20 -20
- package/dist/{chunk-RVLV4XW6.cjs → chunk-YMTVPMU3.cjs} +22 -22
- package/dist/data/index.cjs +2 -2
- package/dist/entries/autograph-lazy.cjs +2 -2
- package/dist/entries/charts/acoustictransport.cjs +3 -3
- package/dist/entries/charts/analysischarts.cjs +3 -3
- package/dist/entries/charts/astrocharts.cjs +3 -3
- package/dist/entries/charts/bars.cjs +3 -3
- package/dist/entries/charts/bayesiancharts.cjs +3 -3
- package/dist/entries/charts/biocharts.cjs +3 -3
- package/dist/entries/charts/biologycharts.cjs +11 -3
- package/dist/entries/charts/biologycharts.d.ts +1 -1
- package/dist/entries/charts/biologycharts.js +3 -2
- package/dist/entries/charts/business.cjs +3 -3
- package/dist/entries/charts/carecharts.cjs +3 -3
- package/dist/entries/charts/chemistrycharts.cjs +3 -3
- package/dist/entries/charts/civicscharts.cjs +3 -3
- package/dist/entries/charts/clinicalcharts.cjs +3 -3
- package/dist/entries/charts/comparison.cjs +3 -3
- package/dist/entries/charts/demography.cjs +3 -3
- package/dist/entries/charts/density.cjs +3 -3
- package/dist/entries/charts/diagrams.cjs +3 -3
- package/dist/entries/charts/distribution.cjs +3 -3
- package/dist/entries/charts/doecharts.cjs +13 -3
- package/dist/entries/charts/doecharts.d.ts +1 -1
- package/dist/entries/charts/doecharts.js +2 -1
- package/dist/entries/charts/earthscience.cjs +3 -3
- package/dist/entries/charts/economicscharts.cjs +3 -3
- package/dist/entries/charts/energycharts.cjs +3 -3
- package/dist/entries/charts/engineering.cjs +3 -3
- package/dist/entries/charts/fieldcharts.cjs +7 -3
- package/dist/entries/charts/fieldcharts.d.ts +1 -1
- package/dist/entries/charts/fieldcharts.js +3 -2
- package/dist/entries/charts/financial.cjs +3 -3
- package/dist/entries/charts/flow.cjs +3 -3
- package/dist/entries/charts/frameworks.cjs +3 -3
- package/dist/entries/charts/genomics.cjs +3 -3
- package/dist/entries/charts/geoflows.cjs +3 -3
- package/dist/entries/charts/geomaps.cjs +3 -3
- package/dist/entries/charts/geosciencecharts.cjs +3 -3
- package/dist/entries/charts/hierarchy.cjs +3 -3
- package/dist/entries/charts/indicators.cjs +3 -3
- package/dist/entries/charts/inferencecharts.cjs +3 -3
- package/dist/entries/charts/layoutcharts.cjs +3 -3
- package/dist/entries/charts/lifescience.cjs +4 -4
- package/dist/entries/charts/linesareas.cjs +3 -3
- package/dist/entries/charts/logisticscharts.cjs +3 -3
- package/dist/entries/charts/machinecharts.cjs +7 -3
- package/dist/entries/charts/machinecharts.d.ts +1 -1
- package/dist/entries/charts/machinecharts.js +2 -1
- package/dist/entries/charts/massive.cjs +3 -3
- package/dist/entries/charts/mathematical.cjs +3 -3
- package/dist/entries/charts/matrix.cjs +3 -3
- package/dist/entries/charts/medicalcharts.cjs +4 -4
- package/dist/entries/charts/mlcharts.cjs +4 -4
- package/dist/entries/charts/modelcharts.cjs +6 -5
- package/dist/entries/charts/multivariate.cjs +3 -3
- package/dist/entries/charts/musiccharts.cjs +3 -3
- package/dist/entries/charts/network.cjs +3 -3
- package/dist/entries/charts/physicscharts.cjs +3 -3
- package/dist/entries/charts/pictorial.cjs +4 -4
- package/dist/entries/charts/portfoliocharts.cjs +3 -3
- package/dist/entries/charts/productcharts.cjs +3 -3
- package/dist/entries/charts/proportion.cjs +3 -3
- package/dist/entries/charts/qualitycharts.cjs +3 -3
- package/dist/entries/charts/radial.cjs +3 -3
- package/dist/entries/charts/reliabilitycharts.cjs +5 -3
- package/dist/entries/charts/scatter.cjs +3 -3
- package/dist/entries/charts/scientific.cjs +3 -3
- package/dist/entries/charts/seriescharts.cjs +3 -3
- package/dist/entries/charts/signals.cjs +7 -3
- package/dist/entries/charts/signals.d.ts +1 -1
- package/dist/entries/charts/signals.js +2 -1
- package/dist/entries/charts/softwarediagrams.cjs +21 -3
- package/dist/entries/charts/softwarediagrams.d.ts +1 -1
- package/dist/entries/charts/softwarediagrams.js +4 -2
- package/dist/entries/charts/sportscharts.cjs +13 -3
- package/dist/entries/charts/sportscharts.d.ts +1 -1
- package/dist/entries/charts/sportscharts.js +3 -1
- package/dist/entries/charts/statistics.cjs +6 -6
- package/dist/entries/charts/strategycharts.cjs +30 -3
- package/dist/entries/charts/strategycharts.d.ts +1 -1
- package/dist/entries/charts/strategycharts.js +6 -1
- package/dist/entries/charts/structure.cjs +3 -3
- package/dist/entries/charts/surveycharts.cjs +3 -3
- package/dist/entries/charts/systemscharts.cjs +3 -3
- package/dist/entries/charts/textcharts.cjs +5 -5
- package/dist/entries/charts/thematicmaps.cjs +4 -4
- package/dist/entries/charts/threebars.cjs +3 -3
- package/dist/entries/charts/threefields.cjs +53 -0
- package/dist/entries/charts/threefields.d.ts +1 -0
- package/dist/entries/charts/threefields.js +6 -0
- package/dist/entries/charts/threeglobe.cjs +3 -3
- package/dist/entries/charts/threenetwork.cjs +3 -3
- package/dist/entries/charts/threestrata.cjs +3 -3
- package/dist/entries/charts/threesurfaces.cjs +7 -3
- package/dist/entries/charts/threesurfaces.d.ts +1 -1
- package/dist/entries/charts/threesurfaces.js +2 -1
- package/dist/entries/charts/threevolume.cjs +4 -4
- package/dist/entries/charts/timeline.cjs +3 -3
- package/dist/entries/charts/tracecharts.cjs +3 -3
- package/dist/entries/charts/trackscharts.cjs +3 -3
- package/dist/entries/charts/tradingcharts.cjs +6 -4
- package/dist/entries/charts/tradingcharts.d.ts +1 -1
- package/dist/entries/charts/tradingcharts.js +2 -1
- package/dist/entries/three.cjs +60 -20
- package/dist/entries/three.d.ts +1 -1
- package/dist/entries/three.js +7 -1
- package/dist/index.cjs +258 -97
- package/dist/index.d.cts +1953 -10
- package/dist/index.d.ts +1953 -10
- package/dist/index.js +26 -5
- package/dist/page/index.cjs +2 -2
- package/dist/react/components.js +58 -1
- package/dist/react/index.cjs +135 -92
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.js +2 -2
- package/package.json +1 -1
- package/dist/AutoGraph-XLBJQDRB.cjs +0 -140
- package/dist/catalog-O7XGDD2H.cjs +0 -137
- package/dist/chunk-77K2HTRC.cjs +0 -3220
- package/dist/chunk-XEK47TVD.cjs +0 -323
- /package/dist/{chunk-UMEKIIHJ.cjs → chunk-LNWTC72Y.cjs} +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkDCGAAN3Zcjs = require('./chunk-DCGAAN3Z.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
|
|
7
|
+
|
|
8
|
+
// src/charts/modelcharts/ModelSamples.ts
|
|
9
|
+
var _d3 = require('d3');
|
|
10
|
+
var SHAP_FEATURES = [
|
|
11
|
+
["tenure_months", -1, 1, "saturating", 30, 16],
|
|
12
|
+
["monthly_charges", 1, 0.78, "linear", 68, 22],
|
|
13
|
+
["support_tickets", 1, 0.6, "count", 2, 1.8],
|
|
14
|
+
["contract_months", -1, 0.5, "saturating", 14, 9],
|
|
15
|
+
["payment_delay_days", 1, 0.4, "count", 4, 5],
|
|
16
|
+
["data_usage_gb", -1, 0.3, "linear", 42, 18],
|
|
17
|
+
["autopay_enrolled", -1, 0.24, "binary", 0, 1],
|
|
18
|
+
["device_count", -1, 0.18, "count", 3, 1.4],
|
|
19
|
+
["customer_age", -1, 0.13, "linear", 44, 13],
|
|
20
|
+
["discount_rate", -1, 0.1, "linear", 8, 5],
|
|
21
|
+
["region_index", 1, 0.06, "linear", 5, 3],
|
|
22
|
+
["referral_count", -1, 0.05, "count", 1, 1.2]
|
|
23
|
+
];
|
|
24
|
+
var SHAP_ROWS = 120;
|
|
25
|
+
var ALE_ROWS = 480;
|
|
26
|
+
var ALE_BINS = 12;
|
|
27
|
+
var ALE_SIDE = 6;
|
|
28
|
+
var GRID = 61;
|
|
29
|
+
var STEPS = 60;
|
|
30
|
+
var LAYER_UNITS = [[12, 24, 16, 8, 3], [16, 32, 16, 8, 4], [8, 20, 20, 10, 2]];
|
|
31
|
+
var round = (value, digits = 4) => +value.toFixed(digits);
|
|
32
|
+
var clamp = (value, low, high) => Math.max(low, Math.min(high, value));
|
|
33
|
+
var ModelSamples = class {
|
|
34
|
+
/** `{ score, actual }` for one classifier at 30% prevalence. */
|
|
35
|
+
static scores(seed) {
|
|
36
|
+
return _chunkDCGAAN3Zcjs.ClassifierCurveBase.scored(seed).filter((row) => row.model === "Logistic").map(({ score, actual }) => ({ score, actual }));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* ALE of a debt-to-income feature at its quantile bin edges, `{ x, x2, effect, low, high, count }`: rows with no `x2` are the
|
|
40
|
+
* one-feature curve, rows with one are the nodes of its interaction surface with credit utilisation.
|
|
41
|
+
*/
|
|
42
|
+
static ale(seed) {
|
|
43
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
44
|
+
const pairs = Array.from({ length: ALE_ROWS }, () => {
|
|
45
|
+
const debt = clamp(34 + 11 * n(), 4, 68);
|
|
46
|
+
return [debt, clamp(48 + 1.2 * (debt - 34) + 15 * n(), 0, 100)];
|
|
47
|
+
});
|
|
48
|
+
const edges = (values, bins) => {
|
|
49
|
+
const sorted = [...values].sort(_d3.ascending);
|
|
50
|
+
return [...new Set(Array.from({ length: bins + 1 }, (_, k) => Math.round(_d3.quantileSorted.call(void 0, sorted, k / bins))))];
|
|
51
|
+
};
|
|
52
|
+
const within = (value, grid, k) => (k === 1 ? value >= grid[0] : value > grid[k - 1]) && value <= grid[k];
|
|
53
|
+
const debts = edges(pairs.map((pair) => pair[0]), ALE_BINS), uses = edges(pairs.map((pair) => pair[1]), ALE_SIDE);
|
|
54
|
+
const counts = debts.map((_, k) => k ? pairs.filter(([debt]) => within(debt, debts, k)).length : 0);
|
|
55
|
+
const raw = debts.map((debt) => 0.17 * Math.tanh((debt - 36) / 9) + 6e-3 * n());
|
|
56
|
+
const total = counts.reduce((sum, count) => sum + count, 0) || 1;
|
|
57
|
+
const centre = counts.reduce((sum, count, k) => sum + (k ? count * (raw[k - 1] + raw[k]) / 2 : 0), 0) / total;
|
|
58
|
+
const curve = debts.map((x, k) => {
|
|
59
|
+
const effect = raw[k] - centre, reach = 0.012 + 16e-4 * Math.abs(x - 36);
|
|
60
|
+
return { x, x2: null, effect: round(effect), low: round(effect - reach), high: round(effect + reach), count: counts[k] };
|
|
61
|
+
});
|
|
62
|
+
const coarse = debts.filter((_, k) => k % 2 === 0);
|
|
63
|
+
const surface = coarse.flatMap((x, i) => uses.map((x2, j) => ({
|
|
64
|
+
x,
|
|
65
|
+
x2,
|
|
66
|
+
effect: round(0.05 * ((x - 34) / 11) * ((x2 - 48) / 20) + 4e-3 * n()),
|
|
67
|
+
low: null,
|
|
68
|
+
high: null,
|
|
69
|
+
count: i && j ? pairs.filter(([debt, use]) => within(debt, coarse, i) && within(use, uses, j)).length : 0
|
|
70
|
+
})));
|
|
71
|
+
return [...curve, ...surface];
|
|
72
|
+
}
|
|
73
|
+
/** `{ feature, shap, value }`, one row per customer and feature of a churn model, in log-odds. */
|
|
74
|
+
static shap(seed) {
|
|
75
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
76
|
+
return Array.from({ length: SHAP_ROWS }, () => SHAP_FEATURES.map(([feature, direction, strength, shape, centre, spread]) => {
|
|
77
|
+
const z = n();
|
|
78
|
+
const value = shape === "binary" ? +(z > 0.1) : shape === "count" ? Math.max(0, Math.round(centre + spread * z)) : round(centre + spread * z, 1);
|
|
79
|
+
const level = shape === "binary" ? value ? 0.8 : -0.7 : shape === "count" ? (value - centre) / spread : z;
|
|
80
|
+
const push = shape === "saturating" ? Math.tanh(1.3 * level) * 0.75 : level * 0.5;
|
|
81
|
+
return { feature, shap: round(direction * strength * push + 0.09 * strength * n()), value };
|
|
82
|
+
})).flat();
|
|
83
|
+
}
|
|
84
|
+
/** A curved valley of loss over two parameter directions, with the paths of three optimisers from one start. */
|
|
85
|
+
static lossSurface(seed) {
|
|
86
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
87
|
+
const steep = 4;
|
|
88
|
+
const loss = (x2, y2) => 0.05 + (1 - x2) ** 2 + steep * (y2 - x2 * x2) ** 2;
|
|
89
|
+
const slope = (x2, y2) => [-2 * (1 - x2) - 4 * steep * x2 * (y2 - x2 * x2), 2 * steep * (y2 - x2 * x2)];
|
|
90
|
+
const x = Array.from({ length: GRID }, (_, i) => round(-2 + 4 * i / (GRID - 1), 3)), y = x.map((value) => round(value + 1, 3));
|
|
91
|
+
const start = [-1.3 + 0.08 * n(), 2.55 + 0.08 * n()];
|
|
92
|
+
const walk = (name, step) => {
|
|
93
|
+
const points = [start];
|
|
94
|
+
for (let t = 1; t <= STEPS; t++) {
|
|
95
|
+
const [px, py] = step(points[t - 1], t);
|
|
96
|
+
points.push([clamp(px, -2, 2), clamp(py, -1, 3)]);
|
|
97
|
+
}
|
|
98
|
+
return { name, points: points.map(([px, py]) => [round(px, 3), round(py, 3)]) };
|
|
99
|
+
};
|
|
100
|
+
const speed = [0, 0], mean = [0, 0], square = [0, 0];
|
|
101
|
+
return {
|
|
102
|
+
x,
|
|
103
|
+
y,
|
|
104
|
+
z: y.map((row) => x.map((column) => round(loss(column, row)))),
|
|
105
|
+
paths: [
|
|
106
|
+
walk("SGD", ([px, py]) => {
|
|
107
|
+
const [gx, gy] = slope(px, py);
|
|
108
|
+
return [px - 0.03 * (gx + 0.6 * n()), py - 0.03 * (gy + 0.6 * n())];
|
|
109
|
+
}),
|
|
110
|
+
walk("Momentum", ([px, py]) => {
|
|
111
|
+
const grad = slope(px, py);
|
|
112
|
+
for (const axis of [0, 1]) speed[axis] = 0.85 * speed[axis] - 8e-3 * grad[axis];
|
|
113
|
+
return [px + speed[0], py + speed[1]];
|
|
114
|
+
}),
|
|
115
|
+
walk("Adam", ([px, py], t) => {
|
|
116
|
+
const grad = slope(px, py);
|
|
117
|
+
const move = [0, 1].map((axis) => {
|
|
118
|
+
mean[axis] = 0.9 * mean[axis] + 0.1 * grad[axis];
|
|
119
|
+
square[axis] = 0.999 * square[axis] + 1e-3 * grad[axis] ** 2;
|
|
120
|
+
return 0.15 * mean[axis] / (1 - 0.9 ** t) / (Math.sqrt(square[axis] / (1 - 0.999 ** t)) + 1e-8);
|
|
121
|
+
});
|
|
122
|
+
return [px - move[0], py - move[1]];
|
|
123
|
+
})
|
|
124
|
+
]
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** `{ layer, kind, units }` for a small fully connected classifier. */
|
|
128
|
+
static network(seed) {
|
|
129
|
+
const units = LAYER_UNITS[Math.abs(Math.round(seed)) % LAYER_UNITS.length];
|
|
130
|
+
return units.map((count, i) => {
|
|
131
|
+
const last = i === units.length - 1;
|
|
132
|
+
return { layer: i === 0 ? "Input" : last ? "Output" : `Hidden ${i}`, kind: i === 0 ? "Input" : last ? "Softmax" : "Dense", units: count };
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
exports.ModelSamples = ModelSamples;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkSN5T7WYOcjs = require('./chunk-SN5T7WYO.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@ var _chunkUXFWDEP6cjs = require('./chunk-UXFWDEP6.cjs');
|
|
|
12
12
|
var _chunkAL4XQZH6cjs = require('./chunk-AL4XQZH6.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
|
|
16
16
|
|
|
17
17
|
// src/charts/medicalcharts/AlbatrossPlot.ts
|
|
18
18
|
var _d3 = require('d3');
|
|
@@ -23,7 +23,7 @@ var expit = (x) => 1 / (1 + Math.exp(-x));
|
|
|
23
23
|
var MedicalSamples = class {
|
|
24
24
|
/** `{ study, treatmentEvents, treatmentTotal, controlEvents, controlTotal }`: two-arm trials with a protective odds ratio near 0.6. */
|
|
25
25
|
static binaryTrials(seed, count = 16) {
|
|
26
|
-
return
|
|
26
|
+
return _chunkLNWTC72Ycjs.SampleData.points(seed, count, 3).map((row, i) => {
|
|
27
27
|
const control = 0.06 + (+row.x - 4) / 80 * 0.5, noise = (+row.y - +row.x * 0.8 - 10) / 9;
|
|
28
28
|
const pc = Math.min(0.85, Math.max(0.04, control)), pt = expit(logit(pc) - 0.5 + noise * 0.22);
|
|
29
29
|
const controlTotal = Math.round(30 + +row.size * 9), treatmentTotal = Math.round(controlTotal * (0.9 + i % 3 * 0.1));
|
|
@@ -32,18 +32,18 @@ var MedicalSamples = class {
|
|
|
32
32
|
}
|
|
33
33
|
/** `{ study, effect, se, subgroup }` for heterogeneity plots, with two studies pulled away from the rest. */
|
|
34
34
|
static heterogeneous(seed, count = 14) {
|
|
35
|
-
return
|
|
35
|
+
return _chunkSN5T7WYOcjs.MetaAnalysis.studies(seed, count).map((row, i) => i === 3 ? { ...row, effect: +(+row.effect + 0.55).toFixed(3) } : i === 8 ? { ...row, effect: +(+row.effect - 0.4).toFixed(3) } : row);
|
|
36
36
|
}
|
|
37
37
|
/** `{ study, p, n, effect, subgroup }`: P value, sample size and direction, as reported by studies too diverse to pool. */
|
|
38
38
|
static albatross(seed, count = 30) {
|
|
39
|
-
return
|
|
39
|
+
return _chunkSN5T7WYOcjs.MetaAnalysis.studies(seed, count).map((row) => {
|
|
40
40
|
const se = +row.se, effect = +row.effect - 0.3;
|
|
41
41
|
return { study: row.study, p: +_chunkAL4XQZH6cjs.StatMath.twoSided(effect / se).toPrecision(3), n: Math.round(4 / se ** 2), effect: +effect.toFixed(3), subgroup: row.subgroup };
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
/** `{ time, stage }`: one row per stage change in minutes after lights out, scored W, N1, N2, N3 and R. */
|
|
45
45
|
static night(seed) {
|
|
46
|
-
const { u } =
|
|
46
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
47
47
|
const rows = [];
|
|
48
48
|
let time = 0;
|
|
49
49
|
const stay = (stage, minutes) => {
|
|
@@ -73,7 +73,7 @@ var MedicalSamples = class {
|
|
|
73
73
|
* step of a preload reduction, as during a vena cava occlusion.
|
|
74
74
|
*/
|
|
75
75
|
static pressureVolume(seed, beats = 5) {
|
|
76
|
-
const { n } =
|
|
76
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
77
77
|
const ees = 2.1, ea = 1.8, v0 = 12, stiffness = 0.026, scale = 0.45;
|
|
78
78
|
const edpvr = (v) => scale * (Math.exp(stiffness * (v - v0)) - 1);
|
|
79
79
|
return Array.from({ length: beats }, (_, b) => {
|
|
@@ -97,7 +97,7 @@ var MedicalSamples = class {
|
|
|
97
97
|
* palpable, fetal heart rate, and contractions per 10 minutes with their length in seconds.
|
|
98
98
|
*/
|
|
99
99
|
static labour(seed) {
|
|
100
|
-
const { u, n } =
|
|
100
|
+
const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
101
101
|
const rows = [];
|
|
102
102
|
const add = (hour, measure, value) => rows.push({ hour: +hour.toFixed(2), measure, value: +value.toFixed(1) });
|
|
103
103
|
const rate = 0.62 + u() * 0.25;
|
|
@@ -122,7 +122,7 @@ var MedicalSamples = class {
|
|
|
122
122
|
}
|
|
123
123
|
/** `{ series, time, volume, flow }`: a forced expiration and inspiration, measured with mild obstruction, beside a predicted loop. */
|
|
124
124
|
static spirometry(seed) {
|
|
125
|
-
const { n } =
|
|
125
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
126
126
|
const loop = (series, fvc, pef, scoop, pif, noise) => {
|
|
127
127
|
const steps = 60, peakAt = 0.1 * fvc, rows = [];
|
|
128
128
|
const out = (v) => v < peakAt ? pef * Math.sin(Math.PI / 2 * (v / peakAt)) ** 0.8 : pef * ((fvc - v) / (fvc - peakAt)) ** scoop;
|
|
@@ -144,7 +144,7 @@ var MedicalSamples = class {
|
|
|
144
144
|
}
|
|
145
145
|
/** `{ reference, meter }`: paired glucose readings in mg/dL, mostly close, with a few dangerous misses. */
|
|
146
146
|
static glucose(seed, count = 140) {
|
|
147
|
-
const { u, n } =
|
|
147
|
+
const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
148
148
|
const rows = Array.from({ length: count }, () => {
|
|
149
149
|
const reference = 40 + u() ** 1.3 * 340;
|
|
150
150
|
return { reference: Math.round(reference), meter: Math.round(Math.max(20, reference * (1 + n() * 0.11) + n() * 6)) };
|
|
@@ -296,7 +296,7 @@ var AlbatrossPlot = (_class = class _AlbatrossPlot extends _chunkUXFWDEP6cjs.Sta
|
|
|
296
296
|
|
|
297
297
|
var MetaStudies = class _MetaStudies {
|
|
298
298
|
static read(data, effect, se, study, group = study) {
|
|
299
|
-
return
|
|
299
|
+
return _chunkSN5T7WYOcjs.MetaAnalysis.read(Array.isArray(data) ? data.filter((row) => row && typeof row === "object") : [], { effect, se, study, subgroup: group });
|
|
300
300
|
}
|
|
301
301
|
/** Cochran's Q about the fixed-effect estimate, and Higgins' I² as a percentage. */
|
|
302
302
|
static heterogeneity(studies) {
|
|
@@ -309,9 +309,9 @@ var MetaStudies = class _MetaStudies {
|
|
|
309
309
|
/** Baujat's two coordinates for each study, under the pooling model for the influence axis. */
|
|
310
310
|
static baujat(studies, model) {
|
|
311
311
|
if (studies.length < 3) return [];
|
|
312
|
-
const { centre } = _MetaStudies.heterogeneity(studies), pooled =
|
|
312
|
+
const { centre } = _MetaStudies.heterogeneity(studies), pooled = _chunkSN5T7WYOcjs.MetaAnalysis.pool(studies, model).effect;
|
|
313
313
|
return studies.map((study, i) => {
|
|
314
|
-
const rest =
|
|
314
|
+
const rest = _chunkSN5T7WYOcjs.MetaAnalysis.pool(studies.filter((_, j) => j !== i), model);
|
|
315
315
|
return { ...study, contribution: (study.effect - centre) ** 2 / study.se ** 2, influence: rest.se > 0 ? (pooled - rest.effect) ** 2 / rest.se ** 2 : 0, without: rest.effect };
|
|
316
316
|
});
|
|
317
317
|
}
|
|
@@ -329,7 +329,7 @@ var BaujatPlot = (_class2 = class extends _chunkUXFWDEP6cjs.StatisticalChart {
|
|
|
329
329
|
description: "Plots each study's contribution to Cochran's Q against its influence on the pooled estimate, to find the studies driving heterogeneity.",
|
|
330
330
|
tags: ["meta-analysis", "evidence synthesis", "heterogeneity", "influence", "sensitivity analysis"],
|
|
331
331
|
sample: (seed) => MedicalSamples.heterogeneous(seed),
|
|
332
|
-
variants: { model: Object.values(
|
|
332
|
+
variants: { model: Object.values(_chunkSN5T7WYOcjs.PoolingModel), labels: [true, false], guides: [false, true] }
|
|
333
333
|
}}
|
|
334
334
|
defaults() {
|
|
335
335
|
return { effect: "effect", se: "se", study: "study", model: "fixed-effect" /* Fixed */, labels: true, guides: false };
|
|
@@ -688,7 +688,7 @@ var GalbraithPlot = (_class5 = class extends _chunkUXFWDEP6cjs.StatisticalChart
|
|
|
688
688
|
description: "Plots each study z-statistic against its precision, so the pooled effect is a slope and heterogeneous studies fall outside the \xB12 band.",
|
|
689
689
|
tags: ["meta-analysis", "evidence synthesis", "heterogeneity", "radial plot", "outliers"],
|
|
690
690
|
sample: (seed) => MedicalSamples.heterogeneous(seed),
|
|
691
|
-
variants: { model: Object.values(
|
|
691
|
+
variants: { model: Object.values(_chunkSN5T7WYOcjs.PoolingModel), arc: [true, false], band: [true, false] }
|
|
692
692
|
}}
|
|
693
693
|
defaults() {
|
|
694
694
|
return { effect: "effect", se: "se", study: "study", model: "fixed-effect" /* Fixed */, arc: true, band: true };
|
|
@@ -699,7 +699,7 @@ var GalbraithPlot = (_class5 = class extends _chunkUXFWDEP6cjs.StatisticalChart
|
|
|
699
699
|
#fit() {
|
|
700
700
|
const { data, effect, se, study, model } = this.options;
|
|
701
701
|
const read = MetaStudies.read(data, effect, se, study);
|
|
702
|
-
const pooled =
|
|
702
|
+
const pooled = _chunkSN5T7WYOcjs.MetaAnalysis.pool(read, model), slope = pooled.effect;
|
|
703
703
|
const studies = read.map((d) => {
|
|
704
704
|
const spread = Math.sqrt(d.se ** 2 + pooled.tau2), x = 1 / spread, y = d.effect / spread;
|
|
705
705
|
return { name: d.name, effect: d.effect, x, y, outside: Math.abs(y - slope * x) > 2 };
|
|
@@ -800,7 +800,7 @@ var GoshPlot = (_class6 = class _GoshPlot extends _chunkUXFWDEP6cjs.StatisticalC
|
|
|
800
800
|
description: "Plots the pooled effect against heterogeneity for every subset of studies, so separate clusters expose the studies that cause them.",
|
|
801
801
|
tags: ["meta-analysis", "evidence synthesis", "heterogeneity", "subsets", "sensitivity analysis"],
|
|
802
802
|
sample: (seed) => MedicalSamples.heterogeneous(seed, 10),
|
|
803
|
-
variants: { model: Object.values(
|
|
803
|
+
variants: { model: Object.values(_chunkSN5T7WYOcjs.PoolingModel), heterogeneity: Object.values(GoshHeterogeneity), marks: Object.values(GoshMarks), marginals: [true, false] }
|
|
804
804
|
}}
|
|
805
805
|
#suspect = "";
|
|
806
806
|
defaults() {
|
|
@@ -1151,7 +1151,7 @@ var LAbbePlot = (_class8 = class extends _chunkUXFWDEP6cjs.StatisticalChart {
|
|
|
1151
1151
|
}[this.options.measure];
|
|
1152
1152
|
return { name: d.study, effect, se: Math.sqrt(variance), subgroup: "All" };
|
|
1153
1153
|
}).filter((d) => Number.isFinite(d.effect) && d.se > 0);
|
|
1154
|
-
return studies.length ?
|
|
1154
|
+
return studies.length ? _chunkSN5T7WYOcjs.MetaAnalysis.pool(studies, "fixed-effect" /* Fixed */).effect : null;
|
|
1155
1155
|
}
|
|
1156
1156
|
/** Treatment risk the pooled effect implies at a control risk. */
|
|
1157
1157
|
#implied(pc, pooled) {
|
|
@@ -1422,7 +1422,7 @@ var PressureVolumeLoop = (_class10 = class _PressureVolumeLoop extends _chunkUXF
|
|
|
1422
1422
|
/** Slope and dead volume of the line through the end-systolic corners. */
|
|
1423
1423
|
static espvr(beats) {
|
|
1424
1424
|
if (beats.length < 2) return null;
|
|
1425
|
-
const fit = new (0,
|
|
1425
|
+
const fit = new (0, _chunkSN5T7WYOcjs.RegressionFit)(beats.map((d) => d.points[d.es][0]), beats.map((d) => d.points[d.es][1]));
|
|
1426
1426
|
const ees = fit.predict(1) - fit.predict(0);
|
|
1427
1427
|
return ees > 0 ? { ees, v0: -fit.predict(0) / ees } : null;
|
|
1428
1428
|
}
|
|
@@ -1430,7 +1430,7 @@ var PressureVolumeLoop = (_class10 = class _PressureVolumeLoop extends _chunkUXF
|
|
|
1430
1430
|
static edpvr(beats) {
|
|
1431
1431
|
const corners = beats.map((d) => d.points[d.ed]).filter((d) => d[1] > 0);
|
|
1432
1432
|
if (corners.length < 2) return null;
|
|
1433
|
-
const fit = new (0,
|
|
1433
|
+
const fit = new (0, _chunkSN5T7WYOcjs.RegressionFit)(corners.map((d) => d[0]), corners.map((d) => Math.log(d[1])));
|
|
1434
1434
|
const b = fit.predict(1) - fit.predict(0);
|
|
1435
1435
|
return b > 0 ? { a: Math.exp(fit.predict(0)), b } : null;
|
|
1436
1436
|
}
|
|
@@ -18,7 +18,7 @@ var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
|
|
|
18
18
|
var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
|
|
22
22
|
|
|
23
23
|
// src/charts/distribution/BackToBackHistogram.ts
|
|
24
24
|
var _d3 = require('d3');
|
|
@@ -285,7 +285,7 @@ var BinnedChart = class extends MeasureDistribution {
|
|
|
285
285
|
// src/charts/distribution/DistributionSamples.ts
|
|
286
286
|
var DistributionSamples = class {
|
|
287
287
|
static uneven(seed, perGroup = 150, groups = 4) {
|
|
288
|
-
const rows =
|
|
288
|
+
const rows = _chunkLNWTC72Ycjs.SampleData.distribution(seed, perGroup, groups);
|
|
289
289
|
const names = [...new Set(rows.map((row) => String(row.group)))];
|
|
290
290
|
const turn = [...names.filter((_, i) => i % 2).reverse(), ...names.filter((_, i) => !(i % 2))];
|
|
291
291
|
return turn.flatMap((name, position) => rows.filter((row) => row.group === name).slice(0, Math.round(perGroup * (1 - position * 0.55 / groups))));
|
|
@@ -525,7 +525,7 @@ var BeeswarmChart = (_class7 = class extends BandDistribution {
|
|
|
525
525
|
shape: "table" /* Table */,
|
|
526
526
|
description: "Shifts each point sideways just enough to avoid overlap, showing every observation and the shape they build.",
|
|
527
527
|
tags: ["swarm", "strip", "categorical scatter", "bubble"],
|
|
528
|
-
sample: (seed) =>
|
|
528
|
+
sample: (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 96, 3).map(({ group, y, size }) => ({ group, value: y, size })),
|
|
529
529
|
variants: {
|
|
530
530
|
orientation: ["horizontal" /* Horizontal */, "vertical" /* Vertical */],
|
|
531
531
|
lanes: ["lanes" /* Grouped */, "shared-lane" /* Shared */],
|
|
@@ -1491,7 +1491,7 @@ var ParetoChart = (_class18 = class extends _chunkXX2YTCORcjs.CartesianChart {co
|
|
|
1491
1491
|
shape: "table" /* Table */,
|
|
1492
1492
|
description: "Sorts categories by size and adds their running share, showing which few account for most of the total.",
|
|
1493
1493
|
tags: ["80/20", "quality", "cumulative"],
|
|
1494
|
-
sample: (seed) =>
|
|
1494
|
+
sample: (seed) => _chunkLNWTC72Ycjs.SampleData.categories(seed, 12, 1),
|
|
1495
1495
|
variants: {
|
|
1496
1496
|
orientation: ["vertical" /* Vertical */, "horizontal" /* Horizontal */],
|
|
1497
1497
|
cutoff: ["vital-few" /* Highlight */, "cutoff-line" /* Line */, "no-cutoff" /* None */],
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _chunkXX2YTCORcjs = require('./chunk-XX2YTCOR.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
|
|
7
7
|
|
|
8
8
|
// src/charts/chemistrycharts/TanabeSuganoTerms.ts
|
|
9
9
|
var TanabeSuganoConfiguration = /* @__PURE__ */ ((TanabeSuganoConfiguration2) => {
|
|
@@ -436,7 +436,7 @@ var BANDS = [
|
|
|
436
436
|
var ChemSamples = class {
|
|
437
437
|
/** `{ reaction, temperature, rate }`: rate constants in 1/s from 290 K to 350 K, from the Arrhenius equation. */
|
|
438
438
|
static rateConstants(seed) {
|
|
439
|
-
const { n } =
|
|
439
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
440
440
|
return REACTIONS.flatMap(({ reaction, energy, prefactor }) => {
|
|
441
441
|
const ea = energy * (1 + 0.06 * n());
|
|
442
442
|
return [290, 300, 310, 320, 330, 340, 350].map((temperature) => ({
|
|
@@ -448,7 +448,7 @@ var ChemSamples = class {
|
|
|
448
448
|
}
|
|
449
449
|
/** `{ electrode, overpotential, current }`: Butler-Volmer current densities in A/cm², bent over by a mass-transport limit. */
|
|
450
450
|
static polarisation(seed) {
|
|
451
|
-
const { n } =
|
|
451
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed), thermal = ChemMath.F / (ChemMath.R * 298.15);
|
|
452
452
|
return ELECTRODES.flatMap(({ electrode, exchange, anodic, cathodic, limit }) => {
|
|
453
453
|
const j0 = exchange * Math.exp(0.5 * n());
|
|
454
454
|
return Array.from({ length: 81 }, (_, i) => round(-0.4 + i * 0.01, 2)).filter((eta) => eta !== 0).map((overpotential) => {
|
|
@@ -462,7 +462,7 @@ var ChemSamples = class {
|
|
|
462
462
|
* explicit finite-difference solution of diffusion to a planar electrode with a Nernstian surface.
|
|
463
463
|
*/
|
|
464
464
|
static voltammetry(seed) {
|
|
465
|
-
const { n } =
|
|
465
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
466
466
|
const formal = round(0.25 + 0.04 * n()), diffusion = 76e-7, area = 0.071, bulk = 1e-6, thermal = ChemMath.F / (ChemMath.R * 298.15);
|
|
467
467
|
const start = formal - 0.35, turn = formal + 0.35, steps = 2400, every = 8, lambda = 0.45;
|
|
468
468
|
return [25, 100, 400].flatMap((rate) => {
|
|
@@ -482,7 +482,7 @@ var ChemSamples = class {
|
|
|
482
482
|
}
|
|
483
483
|
/** `{ titration, volume, ph }`: 25 mL of a 0.1 M diprotic acid titrated with 0.1 M strong base, from the exact charge balance. */
|
|
484
484
|
static titration(seed) {
|
|
485
|
-
const { n } =
|
|
485
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
486
486
|
const k1 = 10 ** -(3.1 + 0.3 * n()), k2 = 10 ** -(7.4 + 0.3 * n()), water = 1e-14, acid = 0.1, base = 0.1, sample = 25;
|
|
487
487
|
const curve = Array.from({ length: 1201 }, (_, i) => {
|
|
488
488
|
const ph = 1 + i * 12 / 1200, h = 10 ** -ph, oh = water / h, parts = h * h + k1 * h + k1 * k2;
|
|
@@ -494,7 +494,7 @@ var ChemSamples = class {
|
|
|
494
494
|
}
|
|
495
495
|
/** `{ pathway, step, state, kind, energy }` in kJ/mol: a one-step reaction, and the same reaction through a catalysed two-step route. */
|
|
496
496
|
static pathways(seed) {
|
|
497
|
-
const { u } =
|
|
497
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
498
498
|
const product = -Math.round(28 + 30 * u()), barrier = Math.round(118 + 30 * u()), first = Math.round(52 + 16 * u()), middle = Math.round(12 + 16 * u()), second = Math.round(first - 12 + 14 * u());
|
|
499
499
|
return [
|
|
500
500
|
{ pathway: "Uncatalysed", step: 0, state: "Reactants", kind: "minimum", energy: 0 },
|
|
@@ -509,7 +509,7 @@ var ChemSamples = class {
|
|
|
509
509
|
}
|
|
510
510
|
/** `{ configuration, complex, band, delta, energy }`: the spin-allowed bands of one made-up complex per configuration, placed on its diagram. */
|
|
511
511
|
static ligandFieldBands(seed) {
|
|
512
|
-
const { u } =
|
|
512
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
513
513
|
const fields = {
|
|
514
514
|
["d2" /* D2 */]: 26,
|
|
515
515
|
["d3" /* D3 */]: 24,
|
|
@@ -525,12 +525,12 @@ var ChemSamples = class {
|
|
|
525
525
|
}
|
|
526
526
|
/** `{ shift, protons, multiplicity, coupling, assignment }`: the first-order proton peak list of a small ester or an alkylbenzene. */
|
|
527
527
|
static protonPeaks(seed) {
|
|
528
|
-
const { n } =
|
|
528
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
529
529
|
return pick(MOLECULES, seed).map((peak) => ({ ...peak, shift: round(peak.shift + 0.01 * n(), 2) }));
|
|
530
530
|
}
|
|
531
531
|
/** `{ sample, wavenumber, transmittance }`: percent transmittance every 4 cm⁻¹ from 4000 to 400, from Lorentzian absorption bands on a sloping baseline. */
|
|
532
532
|
static infrared(seed) {
|
|
533
|
-
const { n } =
|
|
533
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed), { sample, bands } = pick(COMPOUNDS, seed);
|
|
534
534
|
const shifted = bands.map(([centre, half, depth]) => [centre + 3 * n(), half, depth * (1 + 0.08 * n())]);
|
|
535
535
|
return Array.from({ length: 901 }, (_, i) => 4e3 - i * 4).map((wavenumber) => {
|
|
536
536
|
const absorbed = shifted.reduce((sum, [centre, half, depth]) => sum + depth * half * Math.PI * ChemMath.lorentz(wavenumber, centre, half), 0.02 + (4e3 - wavenumber) / 3600 * 0.03);
|
|
@@ -542,7 +542,7 @@ var ChemSamples = class {
|
|
|
542
542
|
* reflections of each phase with their Miller indices. Peak positions come from the cubic lattice constants by Bragg's law.
|
|
543
543
|
*/
|
|
544
544
|
static diffraction(seed) {
|
|
545
|
-
const { n } =
|
|
545
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed), wavelength = 1.5406, half = 0.09;
|
|
546
546
|
const phases = seed % 2 ? [PHASES[0], PHASES[1]] : [PHASES[2], PHASES[1]];
|
|
547
547
|
const reflections = phases.flatMap(({ phase, cell, share, lines }) => lines.flatMap(([hkl, intensity]) => {
|
|
548
548
|
const sine = wavelength * Math.hypot(...[...hkl].map(Number)) / (2 * cell);
|
|
@@ -559,7 +559,7 @@ var ChemSamples = class {
|
|
|
559
559
|
* the submillimetre, with two bands as 3σ upper limits, then the stellar, warm dust and cold dust curves it was drawn from.
|
|
560
560
|
*/
|
|
561
561
|
static photometry(seed) {
|
|
562
|
-
const { n, u } =
|
|
562
|
+
const { n, u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
563
563
|
const planck = (wavelength, kelvin, beta = 0) => {
|
|
564
564
|
const reduced = 14387.77 / (wavelength * kelvin);
|
|
565
565
|
return wavelength ** -(3 + beta) / Math.expm1(Math.min(600, reduced));
|
|
@@ -9,7 +9,7 @@ var _chunkSGMB5HSQcjs = require('./chunk-SGMB5HSQ.cjs');
|
|
|
9
9
|
var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
|
|
13
13
|
|
|
14
14
|
// src/charts/structure/DependencyMatrix.ts
|
|
15
15
|
var _d3 = require('d3');
|
|
@@ -130,7 +130,7 @@ var DependencyMatrix = (_class = class _DependencyMatrix extends _chunkEEF5WRRZc
|
|
|
130
130
|
}}
|
|
131
131
|
/** A vehicle's subsystems: the sample graph's clusters become systems, and stronger links inside a system run both ways. */
|
|
132
132
|
static vehicle(seed) {
|
|
133
|
-
const first =
|
|
133
|
+
const first = _chunkLNWTC72Ycjs.SampleData.graph(seed, 20, 4), second = _chunkLNWTC72Ycjs.SampleData.graph(seed + 1, 20, 4);
|
|
134
134
|
const count = {};
|
|
135
135
|
const names = new Map(first.nodes.map((node) => {
|
|
136
136
|
const taken = count[node.group] = (_nullishCoalesce(count[node.group], () => ( -1))) + 1;
|
|
@@ -408,8 +408,8 @@ var VERBS = ["Add", "Fix", "Rework", "Document", "Test", "Tidy"];
|
|
|
408
408
|
var GitSample = class {
|
|
409
409
|
/** Three finished feature branches and two still open, newest row first, with parents as comma-separated text. */
|
|
410
410
|
static history(seed) {
|
|
411
|
-
const { u } =
|
|
412
|
-
const words =
|
|
411
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
412
|
+
const words = _chunkLNWTC72Ycjs.SampleData.words(seed).sort((a, b) => +b.value - +a.value).map((row) => String(row.text));
|
|
413
413
|
const rows = [];
|
|
414
414
|
const commit = (parents, message, ref) => {
|
|
415
415
|
const id = Math.floor(u() * 268435455).toString(16).padStart(7, "0");
|
|
@@ -728,8 +728,8 @@ var MareyChart = (_class3 = class _MareyChart extends _chunkEEF5WRRZcjs.Chart2D
|
|
|
728
728
|
}}
|
|
729
729
|
/** A morning on an eight-station line: locals call everywhere, every third train runs express, trains are numbered even one way and odd the other. */
|
|
730
730
|
static line(seed) {
|
|
731
|
-
const legs =
|
|
732
|
-
const wobble =
|
|
731
|
+
const legs = _chunkLNWTC72Ycjs.SampleData.categories(seed, 12, 1).slice(4);
|
|
732
|
+
const wobble = _chunkLNWTC72Ycjs.SampleData.timeSeries(seed, 8, 2);
|
|
733
733
|
let reach = 0;
|
|
734
734
|
const stations = legs.map((row, i) => {
|
|
735
735
|
if (i) reach += Math.round(6 + +row.value * 0.2);
|
|
@@ -1182,7 +1182,7 @@ var TournamentBracket = (_class5 = class _TournamentBracket extends _chunkEEF5WR
|
|
|
1182
1182
|
}}
|
|
1183
1183
|
/** Eight regional sides. Ratings set the seeds and pull scores toward form, so upsets stay possible but rare. */
|
|
1184
1184
|
static sampleResults(seed) {
|
|
1185
|
-
const rows = [...
|
|
1185
|
+
const rows = [..._chunkLNWTC72Ycjs.SampleData.categories(seed, 8, 8), ..._chunkLNWTC72Ycjs.SampleData.categories(seed + 1, 8, 2)];
|
|
1186
1186
|
const teams = [...new Set(rows.map((row) => String(row.category)))];
|
|
1187
1187
|
const rating = new Map(teams.map((team) => {
|
|
1188
1188
|
const own = rows.filter((row) => row.category === team);
|
|
@@ -1348,7 +1348,7 @@ var UmlClassDiagram = (_class6 = class _UmlClassDiagram extends _chunkEEF5WRRZcj
|
|
|
1348
1348
|
}}
|
|
1349
1349
|
/** An order-taking domain model; the seed decides which optional payment type it includes. */
|
|
1350
1350
|
static ordering(seed) {
|
|
1351
|
-
const voucher = +
|
|
1351
|
+
const voucher = +_chunkLNWTC72Ycjs.SampleData.categories(seed, 1, 1)[0].value % 2 === 0;
|
|
1352
1352
|
const nodes = [
|
|
1353
1353
|
{ id: "Customer", fields: ["- id: UUID", "- email: string"], methods: ["+ placeOrder(): Order"] },
|
|
1354
1354
|
{ id: "Order", fields: ["- placedAt: Date", "- status: Status"], methods: ["+ total(): Money", "+ cancel(): void"] },
|
|
@@ -12,7 +12,7 @@ var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
|
|
|
12
12
|
var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
|
|
16
16
|
|
|
17
17
|
// src/charts/physicscharts/BlochSphere3D.ts
|
|
18
18
|
|
|
@@ -124,7 +124,7 @@ var BlochShell = /* @__PURE__ */ ((BlochShell2) => {
|
|
|
124
124
|
var RADIUS = 0.9;
|
|
125
125
|
var STEPS = 60;
|
|
126
126
|
var sampleQubits = (seed) => {
|
|
127
|
-
const { n } =
|
|
127
|
+
const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
128
128
|
const tilt = Math.PI / 2 - 0.35;
|
|
129
129
|
const free = Array.from({ length: STEPS }, (_, t) => {
|
|
130
130
|
const coherence = Math.sin(tilt) * Math.exp(-t / 22), phase = 2 * Math.PI * t / 12;
|
|
@@ -304,7 +304,7 @@ var DalitzPlot = (_class2 = class _DalitzPlot extends _chunkXX2YTCORcjs.Cartesia
|
|
|
304
304
|
}
|
|
305
305
|
/** Phase-space events by accept-reject in the boundary, a third of them in a K*(892) Breit-Wigner band on each Kπ pair. */
|
|
306
306
|
static sampleDecays(seed, count = 900) {
|
|
307
|
-
const { u } =
|
|
307
|
+
const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
|
|
308
308
|
const masses = [KAON, PION, PION];
|
|
309
309
|
const [lo, hi] = [(KAON + PION) ** 2, (D_PLUS - PION) ** 2];
|
|
310
310
|
const rows = [];
|
|
@@ -487,7 +487,7 @@ var FeynmanDiagram = (_class3 = class _FeynmanDiagram extends _chunkEEF5WRRZcjs.
|
|
|
487
487
|
description: "Lays out particle lines and vertices in time order, drawing fermions, photons, gluons, weak bosons and scalars in standard notation.",
|
|
488
488
|
tags: ["particle physics", "quantum field theory", "qed", "qcd", "interaction", "physics"],
|
|
489
489
|
sample: (seed) => {
|
|
490
|
-
const pick = _nullishCoalesce(PROCESSES[Math.floor(
|
|
490
|
+
const pick = _nullishCoalesce(PROCESSES[Math.floor(_chunkLNWTC72Ycjs.SampleData.rng(seed).u() * PROCESSES.length)], () => ( PROCESSES[0]));
|
|
491
491
|
return pick.map(([from, to, particle, label]) => ({ from, to, particle, label }));
|
|
492
492
|
},
|
|
493
493
|
variants: {
|
|
@@ -771,7 +771,7 @@ var InfluenceLineChart = (_class4 = class extends _chunkXX2YTCORcjs.CartesianCha
|
|
|
771
771
|
shape: "table" /* Table */,
|
|
772
772
|
description: "Plots how a reaction, shear or moment changes as a unit load moves along a beam, and places an axle train at its worst position.",
|
|
773
773
|
tags: ["structural", "bridge", "moving load", "muller-breslau", "beam", "civil engineering"],
|
|
774
|
-
sample: (seed) =>
|
|
774
|
+
sample: (seed) => _chunkLNWTC72Ycjs.SampleData.categories(seed, 3, 1).map((row, i) => ({ axle: `Axle ${i + 1}`, offset: HS20_SPACING[i], load: Math.round(+row.value * (i ? 1.6 : 0.5)) })),
|
|
775
775
|
variants: {
|
|
776
776
|
quantity: Object.values(InfluenceQuantity),
|
|
777
777
|
support: Object.values(BeamSupport),
|
|
@@ -910,7 +910,7 @@ var InteractionDiagram = (_class5 = class _InteractionDiagram extends _chunkXX2Y
|
|
|
910
910
|
shape: "table" /* Table */,
|
|
911
911
|
description: "Draws the axial load and moment capacity envelope of a reinforced concrete column by strain compatibility, and checks load cases against it.",
|
|
912
912
|
tags: ["structural", "column", "reinforced concrete", "aci 318", "capacity", "civil engineering"],
|
|
913
|
-
sample: (seed) =>
|
|
913
|
+
sample: (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 10, 1).map((row, i) => ({ loadCase: `LC${i + 1}`, moment: Math.round(+row.x * 9), axial: Math.round(+row.y * 90 - 500) })),
|
|
914
914
|
variants: {
|
|
915
915
|
strength: Object.values(InteractionStrength),
|
|
916
916
|
bars: Object.values(InteractionBars),
|
|
@@ -1086,7 +1086,7 @@ var CAPTION = 16;
|
|
|
1086
1086
|
var FINE = 1200;
|
|
1087
1087
|
var chainage = (metres) => `${Math.floor(metres / 1e3)}+${String(Math.round(metres % 1e3)).padStart(3, "0")}`;
|
|
1088
1088
|
var sampleEarthworks = (seed) => {
|
|
1089
|
-
const walk =
|
|
1089
|
+
const walk = _chunkLNWTC72Ycjs.SampleData.timeSeries(seed, 31, 1).map((row) => +row.value);
|
|
1090
1090
|
const mean = walk.reduce((sum, v) => sum + v, 0) / walk.length;
|
|
1091
1091
|
return walk.map((v, i) => {
|
|
1092
1092
|
const net = i ? (v - mean) * 60 : 0;
|
|
@@ -1249,7 +1249,7 @@ var STARTS = [0, -0.6, 2.4];
|
|
|
1249
1249
|
var NAMES2 = ["Earth", "Rocket", "Probe"];
|
|
1250
1250
|
var clips = 0;
|
|
1251
1251
|
var sampleEvents = (seed) => {
|
|
1252
|
-
const rows =
|
|
1252
|
+
const rows = _chunkLNWTC72Ycjs.SampleData.points(seed, 12, 3);
|
|
1253
1253
|
return NAMES2.flatMap((name, g) => {
|
|
1254
1254
|
const ys = rows.filter((_, i) => i % 3 === g).map((row) => +row.y).sort((a, b) => a - b);
|
|
1255
1255
|
const low = ys[0], high = ys[ys.length - 1];
|
|
@@ -1435,7 +1435,7 @@ var PenroseRegion = /* @__PURE__ */ ((PenroseRegion2) => {
|
|
|
1435
1435
|
var HALF = Math.PI / 2;
|
|
1436
1436
|
var MASS = 1;
|
|
1437
1437
|
var RADIUS2 = 10;
|
|
1438
|
-
var sampleWorldlines = (seed) =>
|
|
1438
|
+
var sampleWorldlines = (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 3, 3).flatMap((row, g) => {
|
|
1439
1439
|
const r = +(2.8 + 2.4 * g + +row.size / 30).toFixed(1);
|
|
1440
1440
|
return Array.from({ length: 81 }, (_, i) => ({ path: `r = ${r}`, time: i - 40, radius: r, region: "I" /* I */ }));
|
|
1441
1441
|
});
|
|
@@ -1659,7 +1659,7 @@ var PlasticityChart = (_class9 = class _PlasticityChart extends _chunkXX2YTCORcj
|
|
|
1659
1659
|
shape: "table" /* Table */,
|
|
1660
1660
|
description: "Plots plasticity index against liquid limit on the Casagrande chart, classifying each specimen as clay or silt by the A-line.",
|
|
1661
1661
|
tags: ["geotechnical", "soil", "atterberg limits", "uscs", "classification", "civil engineering"],
|
|
1662
|
-
sample: (seed) =>
|
|
1662
|
+
sample: (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 36, 3).map((row, i) => ({
|
|
1663
1663
|
specimen: `S${i + 1}`,
|
|
1664
1664
|
borehole: `BH-${i % 3 + 1}`,
|
|
1665
1665
|
liquidLimit: +Math.max(12, +row.x).toFixed(1),
|
|
@@ -1813,7 +1813,7 @@ var BEAM_BAND = 78;
|
|
|
1813
1813
|
var GAP = 18;
|
|
1814
1814
|
var GUTTER2 = 44;
|
|
1815
1815
|
var sampleLoads = (seed) => {
|
|
1816
|
-
const [a, b, c] =
|
|
1816
|
+
const [a, b, c] = _chunkLNWTC72Ycjs.SampleData.categories(seed, 3, 1).map((row) => +row.value);
|
|
1817
1817
|
return [
|
|
1818
1818
|
{ label: "P1", position: 2.5, end: null, load: +(a / 4).toFixed(1) },
|
|
1819
1819
|
{ label: "P2", position: 9.5, end: null, load: +(b / 5).toFixed(1) },
|