@elaraai/e3-ui 1.0.12 → 1.0.13
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/dist/src/experiment/index.d.ts +376 -322
- package/dist/src/experiment/index.d.ts.map +1 -1
- package/dist/src/experiment/index.js +57 -58
- package/dist/src/experiment/index.js.map +1 -1
- package/dist/src/experiment/types.d.ts +439 -475
- package/dist/src/experiment/types.d.ts.map +1 -1
- package/dist/src/experiment/types.js +218 -256
- package/dist/src/experiment/types.js.map +1 -1
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/test/experiment/experiment.examples.d.ts +174 -415
- package/dist/test/experiment/experiment.examples.d.ts.map +1 -1
- package/dist/test/experiment/experiment.examples.js +112 -81
- package/dist/test/experiment/experiment.examples.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/experiment/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/experiment/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,70 +6,66 @@
|
|
|
6
6
|
* `Experiment` component — an interactive causal-experiment surface.
|
|
7
7
|
*
|
|
8
8
|
* @remarks
|
|
9
|
-
* `Experiment` lets a domain expert ask *"did X change Y?"*
|
|
10
|
-
* and
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* `Experiment` lets a domain expert ask *"did X change Y, and can I trust it?"*
|
|
10
|
+
* against a dataset and read a derived, honest answer — without meeting a
|
|
11
|
+
* statistician's vocabulary. It is a registered extension component
|
|
12
|
+
* (architecturally like {@link Ontology}): the author writes one tag,
|
|
13
|
+
* `Experiment.Root({ … })`; the React renderer lives in
|
|
14
|
+
* `@elaraai/e3-ui-components`.
|
|
15
15
|
*
|
|
16
16
|
* **Generic over the input row, like `Table`.** The author binds the input
|
|
17
|
-
* dataset (`data: BoundValue<ArrayType<Row>>`); the renderer introspects its
|
|
18
|
-
*
|
|
19
|
-
* **end user** re-frames the experiment from the dataset's own columns.
|
|
17
|
+
* dataset (`data: BoundValue<ArrayType<Row>>`); the renderer introspects its row
|
|
18
|
+
* struct to drive the treatment / outcome / confounder pickers.
|
|
20
19
|
*
|
|
21
|
-
* **The user
|
|
22
|
-
* stages a new {@link
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
20
|
+
* **The user edits the config → Apply runs ONE function.** Editing a picker
|
|
21
|
+
* stages a new {@link ExperimentConfigType}; **Apply** calls the single bound
|
|
22
|
+
* `experiment` function (`(rows, config) → ExperimentResult`) and the answer
|
|
23
|
+
* arrives reactively. The result carries the naive vs adjusted effect, balance,
|
|
24
|
+
* overlap, robustness, and an honesty **verdict** — `adjusted` is `none` when the
|
|
25
|
+
* engine refuses. **Commit** appends to the journal.
|
|
27
26
|
*
|
|
28
|
-
* **Visual-first and derived.**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* derived by rule (interval clears zero → HIGHER / LOWER; spans zero → NO CLEAR
|
|
32
|
-
* EFFECT; raw and adjusted disagree in sign → the "misleading" banner). The
|
|
33
|
-
* contract types ({@link ExperimentSpecType}, {@link ExperimentResultType}, …)
|
|
34
|
-
* live in {@link "./experiment/types"} and are reached via `Experiment.Types.*`.
|
|
27
|
+
* **Visual-first and derived.** Nothing on the result side is hand-authored —
|
|
28
|
+
* every word is a column name the user picked, a number the engine returned, or
|
|
29
|
+
* a status derived by rule from the verdict tag.
|
|
35
30
|
*
|
|
36
31
|
* @packageDocumentation
|
|
37
32
|
*/
|
|
38
|
-
import {
|
|
33
|
+
import { NullType, BooleanType, ArrayType, StructType, VariantType, OptionType, East, none, some, variant, } from '@elaraai/east';
|
|
39
34
|
import { EastUI } from '@elaraai/east-ui';
|
|
40
35
|
import { DiffBindingType } from '../data.js';
|
|
41
36
|
import { FuncBindingType } from '../func.js';
|
|
42
|
-
import {
|
|
37
|
+
import { ExperimentConfigType, ExperimentResultType, DoseResponseType, JournalType, ColumnMetaType, PopulationType, DesignConfigType, ExperimentDesignType, } from './types.js';
|
|
43
38
|
// Re-export the contract types so consumers can reach them from the component
|
|
44
39
|
// module too (the canonical home is `./types`).
|
|
45
|
-
export { WeightingSchemeType, EstimatorType, TargetUnitsType,
|
|
40
|
+
export { CiType, WeightingSchemeType, EstimatorType, TargetUnitsType, BootstrapConfigType, RefuteSpecType, ExperimentConfigType, BalanceRowType, OverlapDiagnosticType, RefutationType, DoseResponseType, ExperimentVerdictType, ExperimentResultType, JournalRowType, JournalType, ColumnMetaType, PopulationType, } from './types.js';
|
|
46
41
|
// ============================================================================
|
|
47
42
|
// Component payload — descriptors only (binding handles + options).
|
|
48
43
|
// ============================================================================
|
|
49
|
-
/** Initial result tab variant — `answer` (default), `trust`, or `
|
|
50
|
-
export const ExperimentTabType = VariantType({ answer: NullType, trust: NullType, dose: NullType });
|
|
44
|
+
/** Initial result tab variant — `answer` (default), `trust`, `dose`, or `validate`. */
|
|
45
|
+
export const ExperimentTabType = VariantType({ answer: NullType, trust: NullType, dose: NullType, validate: NullType });
|
|
51
46
|
/**
|
|
52
47
|
* The `Experiment` component payload — binding descriptors + options. Renderers
|
|
53
48
|
* decode this and resolve each binding to a live, reactive value / call handle.
|
|
54
49
|
*
|
|
55
50
|
* @property data - {@link DiffBindingType} for the input dataset — the renderer
|
|
56
|
-
* introspects its row struct for the pickers and passes it to the
|
|
57
|
-
* @property
|
|
58
|
-
* @property
|
|
59
|
-
* @property
|
|
60
|
-
*
|
|
51
|
+
* introspects its row struct for the pickers and passes it to the function.
|
|
52
|
+
* @property config - {@link DiffBindingType} for the staged {@link ExperimentConfigType}.
|
|
53
|
+
* @property experiment - {@link FuncBindingType} for the single `experiment` function.
|
|
54
|
+
* @property population - Optional {@link DiffBindingType} for the staged Step-4
|
|
55
|
+
* population filter ({@link PopulationType}); narrows rows UI-side before the call.
|
|
61
56
|
* @property journal - Optional {@link DiffBindingType} for the committed-experiment journal.
|
|
62
57
|
* @property columnMeta - Optional per-column display metadata.
|
|
63
|
-
* @property readonly - Render without the
|
|
58
|
+
* @property readonly - Render without the Apply / Commit / edit affordances.
|
|
64
59
|
* @property defaultTab - Initial result tab ({@link ExperimentTabType}).
|
|
65
60
|
*/
|
|
66
61
|
export const ExperimentPayloadType = StructType({
|
|
67
62
|
data: DiffBindingType,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
dose: OptionType(FuncBindingType),
|
|
63
|
+
config: DiffBindingType,
|
|
64
|
+
experiment: FuncBindingType,
|
|
65
|
+
population: OptionType(DiffBindingType),
|
|
72
66
|
journal: OptionType(DiffBindingType),
|
|
67
|
+
/** Optional `design` function → the validation-trial recipe ("Validate" tab). */
|
|
68
|
+
design: OptionType(FuncBindingType),
|
|
73
69
|
columnMeta: OptionType(ColumnMetaType),
|
|
74
70
|
readonly: OptionType(BooleanType),
|
|
75
71
|
defaultTab: OptionType(ExperimentTabType),
|
|
@@ -80,11 +76,12 @@ export const ExperimentPayloadType = StructType({
|
|
|
80
76
|
*/
|
|
81
77
|
export const ExperimentComponent = EastUI.component('Experiment', ExperimentPayloadType, { optional: true });
|
|
82
78
|
/**
|
|
83
|
-
* Build an Experiment surface bound to an input dataset +
|
|
79
|
+
* Build an Experiment surface bound to an input dataset + the single experiment
|
|
80
|
+
* function.
|
|
84
81
|
*
|
|
85
82
|
* @typeParam Row - The input dataset's row struct, inferred from `data`.
|
|
86
|
-
* @param options - {@link ExperimentOptions}. `data`, `
|
|
87
|
-
* required; the rest are optional.
|
|
83
|
+
* @param options - {@link ExperimentOptions}. `data`, `config` and `experiment`
|
|
84
|
+
* are required; the rest are optional.
|
|
88
85
|
* @returns An East expression of {@link UIComponentType}.
|
|
89
86
|
*/
|
|
90
87
|
function createExperiment(options) {
|
|
@@ -100,11 +97,11 @@ function createExperiment(options) {
|
|
|
100
97
|
}])), ColumnMetaType));
|
|
101
98
|
return ExperimentComponent.Root({
|
|
102
99
|
data: options.data.binding,
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
dose: options.dose !== undefined ? some(options.dose.binding) : none,
|
|
100
|
+
config: options.config.binding,
|
|
101
|
+
experiment: options.experiment.binding,
|
|
102
|
+
population: options.population !== undefined ? some(options.population.binding) : none,
|
|
107
103
|
journal: options.journal !== undefined ? some(options.journal.binding) : none,
|
|
104
|
+
design: options.design !== undefined ? some(options.design.binding) : none,
|
|
108
105
|
columnMeta,
|
|
109
106
|
readonly: options.readonly ?? none,
|
|
110
107
|
defaultTab,
|
|
@@ -112,15 +109,13 @@ function createExperiment(options) {
|
|
|
112
109
|
}
|
|
113
110
|
/**
|
|
114
111
|
* The Experiment component namespace. Surfaces an interactive causal-experiment
|
|
115
|
-
* over a bound input dataset +
|
|
116
|
-
* (the `Table` pattern)
|
|
117
|
-
* uses.
|
|
112
|
+
* over a bound input dataset + a single `experiment` function, generic over the
|
|
113
|
+
* row struct (the `Table` pattern).
|
|
118
114
|
*
|
|
119
115
|
* @remarks
|
|
120
|
-
* Use `Experiment.Root({ data,
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
* value types (`Spec`, `Result`, `Refute`, `Dose`, `Journal`, …).
|
|
116
|
+
* Use `Experiment.Root({ data, config, experiment, journal })` inside a
|
|
117
|
+
* `Reactive` block. `Types` exposes the render-contract value types (`Config`,
|
|
118
|
+
* `Result`, `Verdict`, `Overlap`, `Balance`, `Refutation`, `Journal`, …).
|
|
124
119
|
*/
|
|
125
120
|
export const Experiment = {
|
|
126
121
|
Root: createExperiment,
|
|
@@ -129,16 +124,20 @@ export const Experiment = {
|
|
|
129
124
|
Types: {
|
|
130
125
|
/** Rendered payload struct (bindings + options). */
|
|
131
126
|
Payload: ExperimentPayloadType,
|
|
132
|
-
/** The experiment-
|
|
133
|
-
|
|
134
|
-
/** The
|
|
127
|
+
/** The experiment-config value type (what the pickers stage). */
|
|
128
|
+
Config: ExperimentConfigType,
|
|
129
|
+
/** The result value type (numbers + verdict). */
|
|
135
130
|
Result: ExperimentResultType,
|
|
136
|
-
/** The
|
|
137
|
-
|
|
138
|
-
/** The dose-response value type. */
|
|
139
|
-
Dose: DoseResultType,
|
|
131
|
+
/** The ALE dose-response curve value type (the "How much?" tab). */
|
|
132
|
+
DoseResponse: DoseResponseType,
|
|
140
133
|
/** The committed-experiment journal value type. */
|
|
141
134
|
Journal: JournalType,
|
|
135
|
+
/** The validation-trial recipe value type (the "Validate" tab). */
|
|
136
|
+
Design: ExperimentDesignType,
|
|
137
|
+
/** The optional design-knobs value type. */
|
|
138
|
+
DesignConfig: DesignConfigType,
|
|
139
|
+
/** The UI-side Step-4 population filter value type (Array of Slice predicates). */
|
|
140
|
+
Population: PopulationType,
|
|
142
141
|
/** Optional per-column display metadata. */
|
|
143
142
|
ColumnMeta: ColumnMetaType,
|
|
144
143
|
/** Initial result tab variant. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/experiment/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/experiment/index.ts"],"names":[],"mappings":"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"}
|