From 5ff15cd22945bf0c44f95891024582e6820b75ab Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 29 Aug 2026 04:53:13 +0000 Subject: [PATCH 1/5] Restore static browser summary report parity Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- pyproject.toml | 2 +- src/rtichoke/_calibration_viz_spec_v2.py | 6 +- src/rtichoke/_report_browser.py | 5 +- src/rtichoke/_report_spec.py | 242 +- src/rtichoke/_summary_metrics_spec.py | 235 + .../_vendor/rtichoke_viz/VENDORED_FROM | 8 +- .../rtichoke_viz/rtichoke-viz-0.10.0.tar.gz | Bin 176165 -> 0 bytes .../rtichoke_viz/rtichoke-viz-0.14.0.tar.gz | Bin 0 -> 206747 bytes .../rtichoke-viz-report.schema.json | 14989 ++++++++++++++++ .../rtichoke_viz/rtichoke-viz-v2.schema.json | 100 +- .../_vendor/rtichoke_viz/rtichoke-viz.css | 202 +- .../_vendor/rtichoke_viz/rtichoke-viz.js | 666 +- src/rtichoke/_viz_spec_v2.py | 7 +- src/rtichoke/summary_report/summary_report.py | 211 +- tests/test_calibration_v2.py | 50 +- tests/test_report_browser.py | 35 +- tests/test_report_spec.py | 246 +- tests/test_rtichoke_viz_vendor.py | 26 +- tests/test_summary_metrics_spec.py | 74 + tests/test_summary_report_browser.py | 51 +- uv.lock | 4 +- 21 files changed, 16739 insertions(+), 420 deletions(-) create mode 100644 src/rtichoke/_summary_metrics_spec.py delete mode 100644 src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.10.0.tar.gz create mode 100644 src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.14.0.tar.gz create mode 100644 src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json create mode 100644 tests/test_summary_metrics_spec.py diff --git a/pyproject.toml b/pyproject.toml index efa25ca0..c98d32ea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,7 @@ dependencies = [ "polars>=1.31.0", "reactable>=0.1.5", "great-tables>=0.18.0", + "scikit-learn>=1.6.1", ] name = "rtichoke" version = "0.1.36" @@ -59,7 +60,6 @@ dev = [ "pre-commit>=4.2.0", "dcurves>=1.1.5", "ty>=0.0.1a12", - "scikit-learn>=1.6.1", ] docs = [ "great-docs==0.15.0", diff --git a/src/rtichoke/_calibration_viz_spec_v2.py b/src/rtichoke/_calibration_viz_spec_v2.py index 29af0d15..9a5d4e15 100644 --- a/src/rtichoke/_calibration_viz_spec_v2.py +++ b/src/rtichoke/_calibration_viz_spec_v2.py @@ -151,6 +151,10 @@ def _calibration_v2_spec_from_curve_list( } ) + y_axis: dict[str, object] = {"label": "Observed probability"} + if calibration_type == "discrete": + y_axis["domain"] = [0, 1] + return { "schemaVersion": "2.0", "type": "calibration", @@ -161,7 +165,7 @@ def _calibration_v2_spec_from_curve_list( "x": "predicted", "y": "observed", "xAxis": {"label": "Predicted probability", "domain": [0, 1]}, - "yAxis": {"label": "Observed probability", "domain": [0, 1]}, + "yAxis": y_axis, "references": [{"type": "identity", "scope": "global"}], } diff --git a/src/rtichoke/_report_browser.py b/src/rtichoke/_report_browser.py index c3693502..385fa71f 100644 --- a/src/rtichoke/_report_browser.py +++ b/src/rtichoke/_report_browser.py @@ -41,7 +41,10 @@ def write_html(self, path: str | Path) -> Path: const spec = JSON.parse( document.querySelector("#rtichoke-report-spec").textContent ); - document.querySelector("#rtichoke-report").append(renderReport(spec)); + document.querySelector("#rtichoke-report").append(renderReport(spec, {{ + sectionGroupPresentation: "tabs", + groupPresentation: "stacked" + }})); diff --git a/src/rtichoke/_report_spec.py b/src/rtichoke/_report_spec.py index 9602fc0f..2f65082e 100644 --- a/src/rtichoke/_report_spec.py +++ b/src/rtichoke/_report_spec.py @@ -1,102 +1,210 @@ -"""Internal assembler for canonical ``rtichoke_viz`` ReportSpec objects. +"""Internal assembler for canonical ``rtichoke_viz`` ReportSpec v1.1 objects. -The assembler composes complete standalone canonical component specs. It does -not calculate statistics, normalize component specs, hoist evaluations, or +The assembler composes complete standalone canonical component specs into a structured +ReportSpec v1.1 object hierarchy with sections, items (components and groups), and title. +It does not calculate statistics, normalize component specs, hoist evaluations, or create report-global semantic registries. - -This path is intentionally separate from the existing public summary-report -API, which currently delegates to the historical R backend and Quarto -composition. Complete ReportSpec values can now use the internal shared-browser -path backed by the immutable vendored ``rtichoke_viz`` release, while the -existing public report behavior remains unchanged. """ from __future__ import annotations from collections.abc import Mapping, Sequence -from typing import TypedDict, cast +from typing import Any, TypedDict, cast + +_V10_SCHEMA_TYPES = { + "summary_metrics", +} -_SUPPORTED_COMPONENT_TYPES = { +_V20_SCHEMA_TYPES = { "performance_table", "roc", "calibration", "precision_recall", "gains", "lift", + "decision_curve", + "interventions_avoided", } -_COMPONENT_ID_BASES = { - "performance_table": "performance-table", - "roc": "roc", - "calibration": "calibration", - "precision_recall": "precision-recall", - "gains": "gains", - "lift": "lift", -} + +_ALL_SUPPORTED_TYPES = _V10_SCHEMA_TYPES | _V20_SCHEMA_TYPES -class _ReportComponent(TypedDict, total=False): +def _validate_spec_schema_version(spec: Mapping[str, object]) -> None: + """Validate that spec schemaVersion strictly matches type requirements. + + summary_metrics -> "1.0" + all v2 component types -> "2.0" + """ + spec_type = spec.get("type") + if not isinstance(spec_type, str): + raise ValueError("Report component spec is missing a string type") + if spec_type not in _ALL_SUPPORTED_TYPES: + raise ValueError(f"Unsupported ReportSpec component type: {spec_type}") + + schema_version = spec.get("schemaVersion") + if not isinstance(schema_version, str): + raise ValueError("Report component spec is missing a string schemaVersion") + + if spec_type in _V10_SCHEMA_TYPES: + if schema_version != "1.0": + raise ValueError( + f"Component type {spec_type!r} requires schemaVersion '1.0', got {schema_version!r}" + ) + elif spec_type in _V20_SCHEMA_TYPES: + if schema_version != "2.0": + raise ValueError( + f"Component type {spec_type!r} requires schemaVersion '2.0', got {schema_version!r}" + ) + + +class _ReportComponentV11(TypedDict, total=False): + type: str id: str title: str spec: Mapping[str, object] -class _ReportSpec(TypedDict, total=False): +class _ReportGroupV11(TypedDict, total=False): + type: str + id: str + title: str + components: list[_ReportComponentV11] + + +class _ReportSectionV11(TypedDict, total=False): + id: str + title: str + items: list[_ReportComponentV11 | _ReportGroupV11] + + +class _ReportSpecV11(TypedDict, total=False): schemaVersion: str type: str title: str - components: list[_ReportComponent] + sections: list[_ReportSectionV11] -def _report_spec_from_components( - components: Sequence[Mapping[str, object]], +def _build_report_spec_v11( + sections: Sequence[Mapping[str, Any]], *, title: str | None = None, -) -> _ReportSpec: - """Compose complete canonical component specs into a ReportSpec. - - Component order is preserved exactly. Component IDs are deterministic and - live in a report-local identity domain: the first component of a type gets - its boring base ID (for example ``roc``), and repeats get ``-2``, ``-3``, - and so on. Embedded specs are retained as-is, so evaluation IDs remain - component-local even when equal strings occur in multiple components. +) -> _ReportSpecV11: + """Compose structured ReportSpec v1.1 hierarchy. + + Validates type-aware schemaVersion for every embedded component spec. """ - if not components: - raise ValueError("ReportSpec requires at least one component") - - type_counts: dict[str, int] = {} - report_components: list[_ReportComponent] = [] - for component in components: - raw_spec = component.get("spec") - if not isinstance(raw_spec, Mapping): - raise ValueError("Report component is missing spec") - spec = cast(Mapping[str, object], raw_spec) - - component_type = spec.get("type") - if not isinstance(component_type, str): - raise ValueError("Report component spec is missing a string type") - if component_type not in _SUPPORTED_COMPONENT_TYPES: - raise ValueError(f"Unsupported ReportSpec component type: {component_type}") - - count = type_counts.get(component_type, 0) + 1 - type_counts[component_type] = count - base_id = _COMPONENT_ID_BASES[component_type] - component_id = base_id if count == 1 else f"{base_id}-{count}" - - assembled: _ReportComponent = { - "id": component_id, - "spec": spec, + if not sections: + raise ValueError("ReportSpec v1.1 requires at least one section") + + assembled_sections: list[_ReportSectionV11] = [] + + for section in sections: + sec_id = section.get("id") + if not isinstance(sec_id, str) or not sec_id: + raise ValueError("Report section must have a non-empty string id") + + sec_title = section.get("title") + if sec_title is None: + sec_title = sec_id + elif not isinstance(sec_title, str) or not sec_title: + raise ValueError("Report section must have a non-empty string title") + + items_assembled: list[_ReportComponentV11 | _ReportGroupV11] = [] + + components_raw = section.get("components") + if components_raw is not None: + if not isinstance(components_raw, Sequence): + raise ValueError("Section components must be a sequence") + for comp in components_raw: + if not isinstance(comp, Mapping): + raise ValueError("Report component must be a Mapping") + comp_id = comp.get("id") + raw_spec = comp.get("spec") + if not isinstance(comp_id, str) or not comp_id: + raise ValueError("Report component must have a non-empty string id") + if not isinstance(raw_spec, Mapping): + raise ValueError("Report component is missing spec") + _validate_spec_schema_version(cast(Mapping[str, object], raw_spec)) + assembled_comp: _ReportComponentV11 = { + "type": "component", + "id": comp_id, + "spec": raw_spec, + } + comp_title = comp.get("title") + if comp_title is not None: + if not isinstance(comp_title, str): + raise ValueError("Report component title must be a string") + assembled_comp["title"] = comp_title + items_assembled.append(assembled_comp) + + groups_raw = section.get("groups") + if groups_raw is not None: + if not isinstance(groups_raw, Sequence): + raise ValueError("Section groups must be a sequence") + for group in groups_raw: + if not isinstance(group, Mapping): + raise ValueError("Report group must be a Mapping") + group_id = group.get("id") + group_title = group.get("title") + if not isinstance(group_id, str) or not group_id: + raise ValueError("Report group must have a non-empty string id") + if not isinstance(group_title, str) or not group_title: + raise ValueError("Report group must have a non-empty string title") + + grp_comps_raw = group.get("components") + if not isinstance(grp_comps_raw, Sequence) or not grp_comps_raw: + raise ValueError("Group components must be a non-empty sequence") + + grp_components: list[_ReportComponentV11] = [] + for comp in grp_comps_raw: + if not isinstance(comp, Mapping): + raise ValueError("Report component must be a Mapping") + comp_id = comp.get("id") + raw_spec = comp.get("spec") + if not isinstance(comp_id, str) or not comp_id: + raise ValueError( + "Report component must have a non-empty string id" + ) + if not isinstance(raw_spec, Mapping): + raise ValueError("Report component is missing spec") + _validate_spec_schema_version(cast(Mapping[str, object], raw_spec)) + assembled_comp = cast( + _ReportComponentV11, + { + "type": "component", + "id": comp_id, + "spec": raw_spec, + }, + ) + comp_title = comp.get("title") + if comp_title is not None: + if not isinstance(comp_title, str): + raise ValueError("Report component title must be a string") + assembled_comp["title"] = comp_title + grp_components.append(assembled_comp) + + grp_dict: _ReportGroupV11 = { + "type": "group", + "id": group_id, + "title": group_title, + "components": grp_components, + } + items_assembled.append(grp_dict) + + if not items_assembled: + raise ValueError(f"Section {sec_id!r} has no components or groups") + + assembled_sec: _ReportSectionV11 = { + "id": sec_id, + "title": sec_title, + "items": items_assembled, } - component_title = component.get("title") - if component_title is not None: - if not isinstance(component_title, str): - raise ValueError("Report component title must be a string") - assembled["title"] = component_title - report_components.append(assembled) - - report: _ReportSpec = { - "schemaVersion": "1.0", + assembled_sections.append(assembled_sec) + + report: _ReportSpecV11 = { + "schemaVersion": "1.1", "type": "report", - "components": report_components, + "sections": assembled_sections, } if title is not None: report["title"] = title diff --git a/src/rtichoke/_summary_metrics_spec.py b/src/rtichoke/_summary_metrics_spec.py new file mode 100644 index 00000000..d39dccc1 --- /dev/null +++ b/src/rtichoke/_summary_metrics_spec.py @@ -0,0 +1,235 @@ +"""Internal builder for canonical SummaryMetricsSpec v1.0 objects. + +Calculates SummaryMetricsSpec components (Prevalence and AUROC) from production +inputs and prepared performance data. Does not perform statistical rendering or +alter global evaluation identity. +""" + +from __future__ import annotations + +import math +from collections.abc import Mapping +from typing import Any, TypedDict, cast + +import numpy as np +import polars as pl +from sklearn.metrics import roc_auc_score + +from rtichoke.performance_data.performance_data import _validate_and_align_binary_inputs +from rtichoke.processing.evaluation_semantics import ( + _EvaluationMetadata, + _SHARED_POPULATION, +) + + +class _PopulationSpec(TypedDict): + id: str + label: str + + +class _EvaluationSpec(TypedDict, total=False): + id: str + model: str + population: str + label: str + + +class _PopulationOwner(TypedDict): + type: str + populationId: str + + +class _EvaluationOwner(TypedDict): + type: str + evaluationId: str + + +class _PrevalenceMetric(TypedDict): + metric: str + owner: _PopulationOwner + estimate: float | None + + +class _AurocMetric(TypedDict): + metric: str + owner: _EvaluationOwner + estimate: float | None + + +class _SummaryMetricsSpec(TypedDict, total=False): + schemaVersion: str + type: str + title: str + evaluations: list[_EvaluationSpec] + populations: list[_PopulationSpec] + metrics: list[dict[str, Any]] + + +def _compute_auroc_proc_compatible( + reals: np.ndarray, + probs: np.ndarray, +) -> float | None: + """Compute AUROC with historical pROC auto-direction compatibility. + + If outcomes contain only a single class (all 0s or all 1s), returns None. + Otherwise, compares the median score of controls (y==0) and cases (y==1). + If median(controls) <= median(cases), computes roc_auc_score with original + scores. If median(controls) > median(cases), reverses ranking using -scores. + """ + reals_arr = np.asarray(reals) + probs_arr = np.asarray(probs) + + unique_reals = np.unique(reals_arr) + if not set(unique_reals).issubset({0, 1}) or len(unique_reals) < 2: + return None + + controls = probs_arr[reals_arr == 0] + cases = probs_arr[reals_arr == 1] + if len(controls) == 0 or len(cases) == 0: + return None + + med_controls = np.median(controls) + med_cases = np.median(cases) + + scores = probs_arr if med_controls <= med_cases else -probs_arr + + try: + score_val = float(roc_auc_score(reals_arr, scores)) + if math.isnan(score_val) or not math.isfinite(score_val): + return None + return score_val + except Exception: + return None + + +def _prevalence_summary_metrics_spec( + performance_data: pl.DataFrame, + evaluation_metadata: Mapping[str, _EvaluationMetadata], +) -> _SummaryMetricsSpec: + """Build canonical population-owned Prevalence SummaryMetricsSpec v1.0.""" + populations_list: list[_PopulationSpec] = [] + metrics_list: list[dict[str, Any]] = [] + + seen_populations: dict[str, str] = {} + pop_counter = 1 + + for metadata in evaluation_metadata.values(): + pop_name = metadata.population + if pop_name not in seen_populations: + pop_id = f"population-{pop_counter}" + pop_counter += 1 + seen_populations[pop_name] = pop_id + + label = "Population" if pop_name == _SHARED_POPULATION else pop_name + populations_list.append({"id": pop_id, "label": label}) + + # Compute population prevalence from performance data + group_prevalence: dict[str, float] = {} + for row in ( + performance_data.select( + "reference_group", + (pl.col("real_positives") / pl.col("n")).alias("prevalence"), + ) + .unique() + .to_dicts() + ): + group = str(row["reference_group"]) + prev_val = row["prevalence"] + if prev_val is not None and math.isfinite(float(prev_val)): + group_prevalence[group] = float(prev_val) + + pop_estimates: dict[str, set[float]] = {} + for group, metadata in evaluation_metadata.items(): + if group in group_prevalence: + pop_estimates.setdefault(metadata.population, set()).add( + group_prevalence[group] + ) + + for pop_spec in populations_list: + pop_id = pop_spec["id"] + # Find corresponding population name + pop_name = next(name for name, pid in seen_populations.items() if pid == pop_id) + estimates = pop_estimates.get(pop_name, set()) + estimate: float | None = next(iter(estimates)) if len(estimates) == 1 else None + + metric_item: _PrevalenceMetric = { + "metric": "prevalence", + "owner": { + "type": "population", + "populationId": pop_id, + }, + "estimate": estimate, + } + metrics_list.append(cast(dict[str, Any], metric_item)) + + return { + "schemaVersion": "1.0", + "type": "summary_metrics", + "title": "Prevalence summary", + "evaluations": [], + "populations": populations_list, + "metrics": metrics_list, + } + + +def _auroc_summary_metrics_spec( + probs: dict[str, np.ndarray], + reals: np.ndarray | dict[str, np.ndarray], + evaluation_metadata: Mapping[str, _EvaluationMetadata], +) -> _SummaryMetricsSpec: + """Build canonical evaluation-owned AUROC SummaryMetricsSpec v1.0.""" + reals_normalized = _validate_and_align_binary_inputs(probs, reals) + + evaluations_list: list[_EvaluationSpec] = [] + metrics_list: list[dict[str, Any]] = [] + + seen_populations: dict[str, str] = {} + pop_counter = 1 + + for index, (group, metadata) in enumerate(evaluation_metadata.items(), start=1): + pop_name = metadata.population + if pop_name not in seen_populations: + seen_populations[pop_name] = f"population-{pop_counter}" + pop_counter += 1 + pop_id = seen_populations[pop_name] + + eval_id = f"evaluation-{index}" + eval_spec: _EvaluationSpec = { + "id": eval_id, + "population": pop_id, + } + if metadata.model is not None: + eval_spec["model"] = metadata.model + eval_spec["label"] = metadata.model + else: + label = "Population" if pop_name == _SHARED_POPULATION else pop_name + eval_spec["label"] = label + evaluations_list.append(eval_spec) + + # Get raw arrays for this evaluation + probs_arr = np.asarray(probs[group]) + if isinstance(reals_normalized, dict): + reals_arr = np.asarray(reals_normalized[group]) + else: + reals_arr = np.asarray(reals_normalized) + + auroc_est = _compute_auroc_proc_compatible(reals_arr, probs_arr) + + metric_item: _AurocMetric = { + "metric": "auroc", + "owner": { + "type": "evaluation", + "evaluationId": eval_id, + }, + "estimate": auroc_est, + } + metrics_list.append(cast(dict[str, Any], metric_item)) + + return { + "schemaVersion": "1.0", + "type": "summary_metrics", + "title": "AUROC", + "evaluations": evaluations_list, + "populations": [], + "metrics": metrics_list, + } diff --git a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM index abc0d7db..81b9d552 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM +++ b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM @@ -1,5 +1,5 @@ repository=https://github.com/uriahf/rtichoke_viz -release=v0.10.0 -source_commit=b65b903e9456b5eb323dbe0bac823e9ff0c1bd01 -archive=rtichoke-viz-0.10.0.tar.gz -sha256=030a9e58c6367147b4904d73cf641d8ef3990d95e70b66022a99d6c8d37b3233 +release=v0.14.0 +source_commit=ec3a382656ce5b1c735175d5a8fd1ceb4f153eaf +archive=rtichoke-viz-0.14.0.tar.gz +sha256=b7c30d12db4b3f8008ef035bd4f7e04c09d599ced5bc8606a4a4141c5cdf48ee diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.10.0.tar.gz b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.10.0.tar.gz deleted file mode 100644 index 87d00a4ce372fe4b4bf2cfa2139318cb7bbeb1a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176165 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

@kW0i^lQ zO{i#oE$;_Z*p&L)17w)6qrY~kXR}{ZYnfRf6_O2v8TkCQ0b_0kk3N#S5IYIIgQFC> zSJFG^78O}~MG&!y4mmu1RXaPWDn#%>|bup;(P)wKcvAnBCXaD@~r_R^8IgFB3=3& znP^X@&yJ7tA?O@`H=9fchsd$EYbRlp56bA@1!m#8KOVduu!kWc^LK~6!ElIvUcN5o zi+r5V+Tso-ACqGnMWdbTxvGj#@*?$MExLN})vO*4pR0(Uwx%3GJZ)+i&Sf%D*};$4 zPLQlAtX7<}qRfqMwqcb&I;r|U)&f}Xt=GVKT@8Z(l);ee>REQWv6cM@(aul%=0_iX zY*AcnlL|v&F0#4-NHts3l*EfH#cDK(z#iO$Wb_h!D}#XK5Q$mJ{J2RB1YOYfPZQ|8 zHs~x3IB&>&%_HHop^&+iKb!#!$I~fgTYvYsSd21D1NBN;y z%JW<1ay<2Lri>RR*&N2B$!ycD6sy@t6vx`JVlg&j#T+0cFM-8;klm#e(FN*9>QT3E zoB5Cmv3A?WXDOAn^`sKo#@!N7tfR3mfku|2+#x#OqCfbk6u)N1&Li&Lc9kh4>z4Y> zqV@wf>v&NN76Oe~hsxqZyqp)9l8iK|oD^J(l&#oE!wRgE0m13fP#IbV-dlWwOKCf+ zjt{r9u`3T7Y7|tcLoby#mavGPtX#Rz)y{LtS&;Yvd~@T>qItds%lC~GfiYh@7#tTP z)OVgQ4cR|lI{^iJa~WI%x7`OVuQ1$$OwoJx|0*b zEi-QG|Bfr=T|PS)P2O*1?}~Y`H$wM1rLAYq{O0{pvB=lZ>lmmCLA^JOKifr{|LRaR z+DngiZi7;Pv(6q4e}%WG2Pi`^V|~~ok2wzwfL0GmWB|afg5`#G!WwHj@{CIpbhlz9 zA;9MaPSOM3!rSn8V3-6*B)8b7n?3xZNP&{ERa#DpxMq^C`&@U6{uoerPE04@Kg-(v zPm6bx1-~i*wUJ$_$_Cy{Z3a4%AlUxNqw0d(rO5a5_r*NdFvAe`D(kycc^D24eQK9^ zE)=c1p_bK6r{n%)x@>nu$&G>r{Fd8Wx!noml*^_&;-2)gYXN3X{lk0EH_N0=gR87| zyUFo-Ha-A#qGcvi#UMKVD!;F00i59U@7&c%`-Abjfp+FNOgafPL=p>%kcqx}a`ukB zRC@q>iap#wpM?BS4xHQaDbnf>1+?`;U*Nfl?&!z(=$C=8dkn7Vi|8R0?P4iv4IYYa zxtW{bt?XC*GUCd=0OJuu#MhB+6=(i*BSAKwsUW)2v^(25ezYgmRe57hum!7oW9Awd zU1IhwS2~6*8=y}R1~-gb?1Yi0WdWhi2mg5SH9vhRcVb8>NXoS^mF7p2(Xi$3bej%~ ziq`i1R5l&kz?uXnyItVzA=0m*woUSjDib9RKd(xVJ(B%Q?|D*4>bE*mn$1im+5w{YAc(n040ZKhE@yz;g? z(&aOd#D7-HbS{N4;`do$mDLlsMm9?+W`G zpa8x&6+1gPE#{N~ig?Ib&D;1m(33|3T2~!qyod?i282RqiChGZ!oE?ays|@;?hi5*rbO=rS-6=Nl#cYdqte)G9$12 z`q>og*iZbe@?GDnM$!&jhSDDuv;7fxL$~F5pQ~!xtlz5)RYa@#&5bikJbz<2rLQON z4eY@jwu7hXj9gZry6YaVsLWtC1D$2R5CMM(S#1@U*sHTP%gwcT9yJivU7N#%+TtFh z;bf7n|9G;{<@RypJiTN}TEl&r1mTZ%P>rJ-R8*t@?7Aw@r*w^1CMPveP-E@1qRzeb zxcsuB{JNzirPdi#8uX}TiG-`(&Cg_3*e4bjwTGml){h9tiFM>B0uW2EoV=*Db|*9c zzp-xq-_l5`_5-sJcYAj~^>e-w@~N{3LEvr((|{Oz*9aT1f`yM>vW-iz(Yq7mxUdf` z6mzr^`5afm7NFxvh{l7@c~r}znY6xHGc9-5HbBfGt}hHk<42K#RhaUFHSmFBI{3yk4r z{Rk3O`%{l$v%zY#&#!t6kp_P-qPdxw|G%5vEgQwMA*>;m(Rf{ec&!`C_3o}uvVaW* zB|ze!o&nRfem`)&{ta`K08)i{urX`#Wizn`b!B9=eF!g6+eF9L?uveD(0fD-uq^=aX+AgH$vKHAVa zpZd6O6;gri^;!#~`vIoUcGf)yhQHy>4#NFPB+j2eg&Y)Mo}(`L?+<89o$&NL#1`eZ z0mh$Wl+m@dKL}+r?>@ppPjrOpcqykApxoB*_M|Rn>Q2^`$i(OJYjR+PDwNXZN7)bBK0YRNoCdGR7Tz9oPaizJf)b+vF z+mA3tf{H_ePlphR*i#~hXRQo#M94+QBF8?uA3&rqgKzM}rNHg;gN5(nojeC%FX^Sqz}1S0kU=bQx}S z{oTq7UL9(b0w4cDgstO5UEb~!Ze*oqkuGpc*V~QSs%_yI=fIT@Kp=Uj0b#h0mPfCu z$Hh?3&T1yS&eHQ1n%4)?ujO9;43a@V4D-90wdCiY91f<$;&vxld{@L#2)tbdSsOC1 zfnrXV0&8u7(KIbOfj#8zoSnGH;aE)uE7jpeOC-dnv*@tcHZ`Px4@O? z&KvX*u<-^yH|%#Gzx!$BFdGsfIcj0=d9<{is1BK+1iuc5vNpMH@%PVR&pN{re4%w^Pm=Xb{dUbN>B? z_PQnB^P$DZ*4Tx?W$sg+gk}65Ly8_mb4I?~r1xQ&vfjaHVwi4|9KPwOW!@&t!a_l> zbF@_ehx^N8c((^|H?g@}8EVy(H(%b?c4iuax;GKpO$KLs8QcRBp;*cBG0`tsb=Igs z@lXEJk<*ahoGqK_9fx7GRIlz8v{3>5b#v%T5BlpS&KBs zvT3(L)>jR>4RZ0Tw#eW1xl>LBJZ&{Z*f|BNtk>7|YO2YGm+FzPaD${J;4-_{6tUn) zf_CU6K&~W3#q4-`CDpAdvw9d_SUAORpa-DP@sA3HlQ6(9Sqc7-W2IoKbfeWeSO{7B=G3s0mq#0{$Ybrimlx00LTlO&Rm}Eo7J5rbR`NR6R*~c4^_3kLX5XKZg{1XK z7akX4uog~5q;dH7$E|yJ?3mH1^7;r*BU6e=ED~U>r zf2!jG4OY96VeKDzT!cc?KmNENt6oF1mUvvO%Zc&PkBbC>KGg*JM~^_W7dr1CaLX{H z(Wjb5|CpfB)Y55^M*k=@I?^mx^SBk14l+}r({&L`p7oKHvXa(EQhAJX3#WfsI3Mr0 za4xOjis2sz$`YEkK9KXFS#rfK*|JeH7%+^7$eb%)It2ba%K`-@Ye2XEOU! zKAW@&HkHuAW{?HEP{^K1d)>s%1~Ce6@6grP_;tD_JSs=E54-&L+v(p7>@ zB~o2|9e0%nKg1|0s3>pCKJA}ILTF6g&{9PIX&f5UYW5O3YMuJY&!fJhJE`}eq~3F_Q0s7viaI7KrFHWw@m^pUy2%#x_e~-z-u$ZPkX6eO)XuNFQOr0!HwaI^^fP{$ z#44Wm=A&XiZ+jv}!oiCaZT+Z7ttnRfwVU<3k_gD$ba>r#>E`!_i%U;~;2><+oV7Lc zxwbY=>&_HPu1c;VT{oC;0d9z^L%^AKP-vso#YkxQ8ij$!8--MLupcpTn&(M>wXavfwVLmxne6^fHG*h!gem;HpxJ4PS z*w?}p+$MNPmEUI1b9079^IMr1=N9v4;B4Cr6idqC-F6Q6oD4?RJ)0%eXku*`qvr<# z?!Y-h)h$p8D9X&>5WaD%=wV1uRU81fKoh|Ly)`oIO=%(0sQ@=6$Hj2S(mh;tW=>p7 z|6EL_Wgtuzw)4+Dj!O93xhC;ki0GsrR4^p)9Rj|a_)H0|lI+0r9hEUu zk$%{t)_3S3rL4sT*S2_O`|{I5c*+R^Lkfsp<_8mfUg!oa*s02@cjfhHWK^xOH*h?@ zohlHtdo2Lm#wyn2WNZ#Tvjl7J)4`*(rGwEGns5T*M88y)x6gg^LzmUHJ4r+JHm(Gm zbctOG9zh=%eG>Ms1J$)VbvJ}+_vlUc6%>&Td((adoswNEtMipgYwH5KakqINWY@3T zFIB?Z>vLzPNok#+B>O$GdnL?f=LZVTOY6l%m2=8V3;3U2g}&4+_Cmv2SciFtD;8Htr264w@ym_!^^V8=T<-?&?bOkwVvxiYXMr z1Gbn>b&)?r%unJQAqFqHys2M7WYPtYpI2XZ6^(iNvO==M+tU}fT-as#hnCYwCD>4Y z#aA9Sjb8$~zMSW>!X36-t`_bniGU%Q1+2|i7|p@<XV3ckD0EJ2%c=xQsWvA`GM#rpS5c4S0;9MY64P=?CS%dE>k#sqTSNuA#Kr zGX1G%5b_l5E}9EdY6K)TwAPD$>{02^yReO5tT`}Z=;ad*6-1{6G@)e!m(0!XSQvbV zcyWO|P?n{V`N(|Ei@7WPzyBZqzf4kHIjqHcz$zu@JA;Dcm$IoI>)Fx`v`o@&M?5^Y zZ~e0kpnsPlog24IKW}Vc(S&J^w_w|}Elj30tD&{)%n@G2h6ZPuKBnCn+x7X~%+cm< zW-0JFTdM;&*E;Db#})#t-lyq10&J7}7mmTzeuXw1+lFOsk#?0d7kNWMP+l-4%0pq4 zW=YWH4cr*Ev-RGm;Gj6nm5TznFJ8+a~}atn>W% zje>|WrWBANLpiRhO%-9OqBAOFjO_TSVlYm0Dm*$WMuwC?Jq5>`yYn(p96XW6CJxeF z)7w%^EiW3Px$enAQ2wN8Av^%Q`WpU7ag;~V9ud@dO#riT*);($+?v480PR;QLP9*O zP(eB33WTfZ*h3_!W8|hUus!AA%^2eo<6u&x|j`B7ohQi@j8Ur0f-skvY zw14#R_NCn=$fw(l^{*0`7!+b0oK!m@alaG}KL$9+FeJ{LnCD9!Jk+>lJG>%zaIX#I zGKd~X+yxV7tfZpvJO?WV7p|&`%=6f4Rv=MX30-LFTJ}~}Rn7VFu@&vj%{LeD9l-Y6 zuR8Qz=vAt1&-&1@HSI-DO<=M$wMt$gH(1QSHDqH}>_aZ9nOY6jR~?eRY45^TfF(A% zGPY%*pTHZW_3;W`{m_68$i@ZiC}Rg8~J+r&h*Kmb<^M)ZM>P&fk(QSqmNGT56> zMurl5a86Ix=Es8(*Y!TsPjIq+LQH&X1is;=xc&&f^e4ulGpv5`&Tkz{%v5vc;~EGz zeD1hZPG*Up6CF53U4EfZS%!ll*^_gAv%^wFTg-Xm4XR&PKDJzSCjcWryY!x71sU?Q zXDS|>JD2B9M^Rn78hS^Ax$2cTuUh#iahMrqvKUWKP#xm*2U4QIC-2FD)~y#7bqD(lOdL6vMUzAL zNuH9{?F$oM&|&tu6#PU>JPy)2#6VF{_X~*GG$%Yd`rXO4;T>)&HM8*VdzAp2&s9OQ zhq+VITZKL&*2zA%W1zTLWT-JKani&WlE*WF!fjM`m*yt}i! zH+)l`wecBEn=`$I!Z(GnmR_ z=2mtG-RAFYWq0v$a^IwU3O|ODlA9FtjDN6|ZDQ7;$->9NBl80vnToBfk8pmKA8$>q zJMd#9DaTvcX9#C3wI=doDgggWe#}f;_wf1Dz(FVY3zLG?Po&m6Y2y7>_9+%VmBLHO z`b~a3G_|nI7v=}{;*qI^9eiwlV67)63*YUYN|(PhS%~~s<_E%gX1aq}|Cd1iy8!%J zYJFpRifw%>wVs%Xg*GPo)>1Ny0oyd|W3#R6=I15?{m<5anuaL# zKOq%|u+?tK6t+6ZI^!((w?;Yeqy9offW-$Qn zW1`u?=9)WzP}cC~Kus0)3`bywUId$W2Md}@^DfA=40HWmvA>uc8eZhcaM%_KNS^v& zxfN9J<&h7}6NuEVRhHy!>d!L#P82TFqN*duw5(yqTeWFR9v${ z$Fieya(^w3Fq{%CT%XAWM}!`%6KdPd*H`0y7{V?8%1PmU+Q7QcKm85RdcK0DvN zdFy0(pKEL84EF8x=fx3Fz&m$0`&OTykEux# zjP0V6h)ob4K)?se3Bdbw^Y-oFTwq0auQ#OwT{ko!?)j|0ekXtzPq!aTF`R&H!V2E` zQ!9ebP?dv1XxjC`lSl7sx@iQ;`q- zE=0=n;I#W%16}*C$%(kl5#4&mjsrtK$ToX-DC4~$LKqGydk_@*B;z9Uqro&sNA29T z;cW1}&H8KRGGvC;U-AGGt{Mi!%$#br3Cq2qjR6GCcr}3oOQ}L*4yxc_&f2Jxth5F& zyVTHH78a_g&smA;)_57a`*K>m&6{-B!)mrtUpUKF@-ZlT?gKZP@Z7hF<|)ma~mTvf`ftRLASz+ha^Vqg=$J&OTQt)Hm`iQ{NyNf&d51u9k6MYPpanL%hc zFc71GfioBoKdj1R03;2by}*i^?0=xLxXk$1PH+6-oeH(^(tRgGg@X!P_FqJE{G+OY zvtRxOHvV=?eOLu=GuJ5%?}v9*QSrWUHc$$zY*S|{K(@|7lf3QhYu%(D*X?WDY?#CA zjWTN>fHA{!})mW>>98s194KJcFsT4g|sc~ks5%A=1PrKRI7-(?jm5{*q zE)6_0w%eC&%k9m&<~nT~=Jl#{?TKOkvGk1hXjP;*Xf5(%Cyv035R*~jJs?z;Burk{ zVv<&2ydWl8ZF99d5yUHu-3mX(=#R0#1K`~TvqRLXwFlwfGI7-5+un9m?+F%pSM>s) z*&<5kM-Q4BfE^E^-I$dnlHPBh$^IurP&p;$engH?k=ATDF1Le@oXbyR0p}}+V&dz5 z+Z!bjgGujpOM`5ZU-q znLKKUW%9`pyRbI6M$Hbe>ro4!0LtH&q?#VhOgHnFcGSKZ^Q%JOz+s?fvKE6M zuLglrvS5hjy?z8vuMB|$hk;rrwHTPe13$pB`3L@R5DuF;pAb>Q;s}Bk3+RA2_zbJ;5|HXCvM0yjvMnP;@-}Eg6KDUV}yX2J)Ptz%@S8)ijB( zH5*0uzCTMr5l*$GUdSy{7otQfJW>7d9O~$FWrePK4SL!33$K;?cvleO9@?S1A(9>c zwM}WeOug%ot011%jtVgc-%iGPF+Xb4t^ye_j3`7#E8XhIWZF&RzSO31iFVWIw)MB# zCz9m$3jFh&jMx<*32NGji_M%f-b{B8NP_L2+0&KXgTh_)JK43ZfP6$Fv6ZGM!QgDA zNDK~zN2;!7{G3xhFX4rD(xHihpN0(9X3JW%#A0wey8@Vq0D(4KB+iXD zE1s26*F}MXIR(EJgZ+HriBCkJq67?)=XNY(#U|hr{(ey6%#Eh%o>*NG0%{Sol@nh=4`A9l=h*(Y=dbmM{WbYegg z0rZ?htQbJa!$x=8b2Zop-+!A9GCHgpQFsSIpyScka-n=d2`TIy>rCskp4*o+wI!KPBfHPJ07B$Q@oc;F$;HPC{0ZVKvTQh%xD#6)rKhJ4Bsy+t6QQ#ku zfURuDTp}%9!FA0v0mRhgAj68QcgO(zp*b(GAv`W{)4(NP&JE&Y^yb1r>FQJZyt8Xo zha2B>!S$R4C`>7@p@=)=xKID$xKkYWX>*R-dM0bmaqG1yYrl+ru42TK+;b(rty^}R zsm~{H~DWuIk=@Cyv`2zrQ%{e{qic^doWH zL~t&^bMyJ+@nv2=FUD~>vdEb8_AbHLIj?gt@Xx(xVI z9@{lyOJlAS8QB;k@AgA1uq`A)F~>{Onv1#Q|5I7sO6gOA8TEAb_$4b=^HUi(HsPJ@ zX4dwkxve$ya>BuYm=>${ zNtLMo1D*rkB{mdMn51t8i=*E0;IzHj&F-0@wfAIbA2SDgbA9X0KF{vLt^RiQ302;o z=zLHT9}J7Zc)kf|>v~5dDdN8QTHrFhstr+R%+f?F;I~k0pjj)0l>lVV=ql%L*&1b~ zy`cy0#4mrWdc>gF8QYL#pcAxGf>BK>n3D^MLbGihOs^#Qg_I*rffRdc7j@5?yX>mR ztCf7Ld8`L~pgBK`1K*-IxgsC@T?s&oGP6xrFnQdsjGC#LV_g)yh6*|Yu z@+Hiw7qBWg;r&2WUihr(q<{yKC+~n5VW&av@B$6=_z@5sdSo0q@7g(d_d)l-rrjC4 z@Ytc(GfU-gGOTx9c$~ZMN^x&Wj7C)nO&aOUMt%wI;%8BKEZyP< z)X>%wqc;#M7MpS(7xOtVkZjkBH1LfFd^kBCpkSC@FX>Y(&M4Aq!7kgk>@VTewh|26 zme0H)M+<8YuZ-TY@EIHln|ETHY~?SS;ES~(dW%LkA_MCl{4rrnBhYauvY={ixys-L z6B}{RE$1s`adW;Hj1R5L`nKvmjTRt@QA3EWHB}!?PR0viYE|Erzb$Va`0Thc<{~^g z`r(!LZ!UH!ENI5M0#Y&FADzsLcht|ejF%zPXw$!F({kvfTA&e- zA<@v$qZy}f+La|K{zEm7BQ)&4Q8OEPT#Rp{$F@x%m_AnbqvEiR+fW$ZUQJDKMP)JB zkzbEbX5eRIysH6dgb(wvnFZLqugpG=rhgM$wB6#B!qd+=8e+*HD=4mWsxOIGb%8|v zPInv2cwuQiRKLg>vOoo8lW-~2_gt+oDBIEfzm{(3L875}!Hh*rgN|L=dQ@E3!rpLL z9XrfeiNYba+e7r7^WgKW$o@Se6}y~i_EOs!*TY$Fx`UEbQn^j;IU{9QK`%sW6rYigaGuiSF@!# zst*iphA=Xixb4E@=wVcMLv<3LdWtg#a+2@NU_JMF?e3P&p70HDe4A=#ats6C!YUaq zDDJtB)_K4hZIjV98ECH}@6m_712<%b6S_kVXL<*-$?=o1Ib-v=sElz=&Z#b-Jw(WA z??6N!+tO}e$}aZ9R0z$cxuoqp{+S#Izs1=-_EU5229}jd+!-3OR~?9IG$6U%)ucs34+sdpq{Fd#&bwxi| zj>j|y3@lteLoA#dAhHMd*^hm<8jgFuHxT!oiD|gE(BoWg$MNKz`Yx}jfniJ!$L(Xy zyIT~Gdvxhi)g;M9Fc(eSIM_@jBc_E^N$!FODsFLho+KV+1I|K0P2iB0aaM~s{TsEA z2!!^oIo8RNJ`yCIP?v7U~c73x(D!zRW@SkHsfEt z28db=qP3=>d($0r!Ntu6_n)X`W`3i`5=@Myq&0+ zOC{wJ2dH;2nwV=V!s%FdW1(_L(%)Q(v$;yYc`286ta5U7jjWZm!Ws@&(ahQ??H$i* znq5&lelw*JzT|00FNIJ!8pwpt&TB!jAMDFpgw1tWEw3GGwED`dnIHO(D=TmGkkG?k z&hlZE`~mWA{S)X?{`Fo`QQKR|MkEB*Z=2#|F8e||NdY9&)r)ZBWduuGIp^JS0Skc zBaoZ>a<9p3$Q+Lute1esb4c;t3ef`%q>4i#uS2&^CH&Uge#egfLnZAOrTXolEM!vq zGw&~yB7@_yVB#znmR>w)0@p~ray8F-q1^Ycl6p)esNcp@j0Yp?E5YforQNF| zbL~HxjD}t&5tXYCA@b%x5}*O|7b+1zdLUyNLmPU2m(=IuHD?Xx-? z86I<5@5r2C+dWLYu6b9TPubdAv~R5JKYjX;Ik_A*7ud>TyGQ@&HH+O9TB{swl#Nl=H~Sy8~Tjo-Q-jWyn5w zhF+~%%kR5q_oG>8+XnBUuL_%J77kMR;IZ`l8APGKr{e8&3*5ngcj&|;1V=k0D4{mdhUUq z`xO;%f4clq(p5bHQp~JYxno{~iW)ZJ)$_;Co!x)Nt+R#x#vPp~Tfr64xfDA- zk?lDlSeJ+U!F>KLNOcK<(-gq@L;0Zhpv#7?bd>}NE&BI;MBiGg#)ig*c=@W44C9v1Jk3u5OzwuLCM8U{IKAq>ygESzNO8Zr~G zB5b6%ZQN0iga^s{*K^I`}_J}}IXJS7FzwLP}a-k6@k zhPpUbTU&ei!DPmVA|SOkKQdS6w_6kn{Nj+;=qikG-yfL{uAxrLmSKEhI-oZb4*Ry1 z9ifsJu0%85Yc4|q;TT-_@@4sV+$e23&s`x4o!F+S!*<2B4NJ$#xUD>qKV`9_K^iUs;l*ZU52f<0-Yd*<<;7*<)*FjuQB-Q!}s zM#tz@wz)aQqPVaC)K*55U$?TLRFiE~j6syPR)-Rj-L)AZwUHmEmeXpB#w_OX2U<1U zgw;lOZ>I8S0NUi{Qk~BpPxevow@2g^9!b6h=hA8s^w2LgKXf`hVNw59PW0*GDdXYR zZriL;dXg^Qp*M%w0$7YCIq?6a#S4#dtX@w{XAJdUJ3xiGEyGL9&3vt$6lNR-)r;l~VH*<(VJRu}*SbD_GehePs?xEE8sIG&D*e8|F1 ztyl<`Co}z{R>$}9PvO+bIXS{~-pE%LrAQ1S`h1Ze7KYJ;TSavM8R8vVUH{t3L1c&z zmOQ*-agJkoDNpo1{TMU(>2xyBza|9RHWGx0=p{hLJtY{C*T}c|QaK8@oG{68y)L3g z2FQ65!kv@xTXVn(Yl~7gU%_>wPo-Dr@mZ`@NZ z=G6WH2F3AoaQfu9={&)mJHIxLQAOng=08y}n_mQ)DKT1)<|%jE#n|lRVxe4ZUuDCo z>jy3}B~s&=V=Z=1oTlD1xR4dv+geJlMOQl(h>>j^lR=WA501&DB6FWmP1Hx#OTAkd zB1{K?GBy{5Ch}zKwy{7+T_Q}>7Y8eC2NaXlUznVds=V~1TGK5eU6Kc}cp>73Hw%$! zz<>Mv`Z=A9Fp`RyEY|8x%w(wRKRevRw>fx(E1T!*3VdR>-#9}o&PDvnTgsfXB;cK& zOsA9CA|JkSk5Hv6$6pYolZ?_eDx1WJYgv?-T9@JE%_{AMV1#8*y|LcXA2Kx}PgbKJ z3~ccJT?)a8=+3fPH#_WRdq_55&ZNxmzk5@tHA_fP^u}ZlAm$1Layf+m?7@E)=bblx zh*4yoN)HW>OmTQc9#aWJjFE>~Oo-YD6k@WA2`@!)mOUF?xetM|O^9as# zDgp_OT|U@kqqD&)GpRlj1R-w5UXFzaz$n7>p)3l|!-X|pg}<<2d*-)9pD%u`dB!=f z+rG#MbPYl8&^uMkf&JPU1#Md?(^lqdfstW=r$l%mwDVKe>>zzP5BngGHPa4Q?@kC0 zecLcyX3KAMoGO#9L;7+~U6-n`8lV!!JZF8>f0%9e*+bBIZ;!1w1X$qFU2Wb^OWUDFBRxgYSX;x^q_Jh{f!R$3D3!k|rjCUN#c$zj&@R$E>K`u$|YN!kOBdu;iYOCWFP@+jM;THGYaJ{1%khpBzu&G9%h)hJ@e` zF8<@~E{5m)DX5m_jTEXIXj})2s155^~F2!&WzQ zx1C`_Xk*eooJ~%q!k0)8%iD1Dlj+AC1Owo$6iO%~JrXBY3el5q~h-ta$*R)n@ruyeteOgj|T3X$fR)uvjQOtrJ#( zRTNz*Z5Uzs1kMfwWSm+pALsku|CZk9n>1 z5GGbG?dEiOpuj7QI_qeeV=>dV#_-mrJWi0yn)}V?NkkcI8$K8Fw2;ecpM)dCYgjja zcKy-7hfL7pgJg9#q0r_}hPU~N!fY#9gn&SP#?l+xQdkUZltFRL3=F>2{R%Qas=G$1 z@Rs&#$9E!+8E{Vh%JN&a(U>d&V7qF9?mar#0N!q$9;r@_=O@SQ#|NDhuUE35dA;6r z)KV>2FZJAOc@7Ojb59FTW;@^Lz~rw`re?%;l9nzF{q=Y=#y*+TWGGtJ0E^W zq#>)jHrnulWdN6H%gC8-*z~?-ef8pNu-xmWB|$_Y5>iQCE5}21b8ID##ML?96Xa9D zlL5PnZ6LLzy12chpCG%Winlj9Vhh$uv)jVw zB3ZR;E~c3Qm+#CQ!q?GNlVJSTN|*nsq`aYhB{g0es+g`rt}+JW{k){=LtCH(0;z7U zO->di5Zns!0T9vk+S=dG=jQI+J}C0hkWKw8=}j+|_?krZJb}2(qBJ0r_y`diEGDxK zw?n{9+e@S*}g!fQ$}_nwLl3wYqZx=EDEoN2$} zFD~E4%RS@+nTP@ZR1X-ruq5oC5cE%J$a*np*wic=xAA_&Qf%{(Y8oXvFG1QO7eePC zr6aC#nOMWou4poJ-xZ-mz#CIy4g9jj{4sm*`J_=N_!%mNOwRJ z*=L}5pzzmZ_3yx3N4>uz^PK|2{?0WHI2^gj-w;d*@_Re-RwD0lu-XJpv5)V zSYuhD(BjI&wNB_^gZu;xr*@c+LtLv#8f*aVig2DIy*2&_ojz zn-=x9eu|%>TH?KtUF>XSzxgbZVS(>N7il&&4x1x>*6mEC;d!#HWCfg|bb&hw}D zkkta$4WM8twn>Bl_}iqH(XMT3she8rrk1v;rQg)@f=z*2XxFQtQxzEMYRdq@u$mA+ zsUG^)m!+X;Kdgyo;0u4wCIY@LCuF}E42vR>OX6B^Lfb|qo4)hs>O8#GdUkbQowsDg zXm_mSG8NXukFvmCi<|8q`}}_Yx=$5-Pg?@tg%tIIiTYtgbpTP{<`f}^u`31kbT;{w zj8V7L?@hvny6ac4QJ-|2G#$I3tK#(l6c~3O#O$=2&6ehWryI)+`qPI$efsM2D7uP3 z5Zh+>K*IbZ2pz!QUt^12pdJ~rfjYYU_w$0qb4tBWT5^ z7O<-HN)&LUJZL4MKB{m1bx3S+Y-U7T#~B#uS{cnTYP!NK(~rKSz)YJH{*XAo!+vPn z>#%$rbu4Ts%djBY`Q}479J(qG7K52tSPk3uiJ3(&S^Gzlxcp6$wzD-AUTVuNXqXoO z6~oX0j+8Bp%FyV%CUjnFbY5F@UJE*}eROPW5ZQx(&g+d73>zy(#m!a8wL>G~>C&O$ zuDW3=ADX>WFQ$_zM{9mfQ?q2;#nPd&=#>o>bzO~G`B3dGqu47zC3f!g92q zdeyRX0e?Tbz$;s+rO*B}s+YbqI;MYc2nSQT?awI1W-@#rO-q-jxDzbh)t9yEc!brm z70%?gKam!z*NoL`A1j*16&H6EMr^m%WUL0KpqX#qhU}L3(Mpru!p1>a3wA?AcIh5a zW9*e*Yc}BG2BOKR2mQ0}vu+C9&VT`43%656cD#qENNPVtm6KcPq3J64WCCt;cAClo zhH|!SzWulvwlTI=grP4x#a~j8fio4AD~`#Pic6S`(iKNF^psJdt)7BT-X-s}E$P4S z6_N(MVzd(df))#}Bu}belyUP4;vwi=cpZby!vjn;da^l%|C)OsNL2-)o3mGrPQYLK*&oir`tXTN)^fO&QI(shx!xw$q7G*U=8G}kd~@S$ zgocyA)D&P!w-|K|%+C2klSo;kb3JaUict zg}f+CKQb6P`^k2yB@U8Gm*VnOHBm zB1d;azvYb)(;@VCV_U@q@OO4cD-Nn#^aI_{LYzbGe^%lHD-X0p-6|#DxbVfz{l^f4 ze@HR44AUPWebyXDS_Tqv8g&A$m}N-`G9pf;fm|vnH0GrT{yW|sZovYDH=hQgSuBsj zSn&4&A1Izuf@DMWPLA8_mli{p3V0jbQ=A_)AT? zmifywu6@Gg#ROtRSYZSKe+iPotomaij;_qMUem>_!&T5v))lOTia%K_RU>7>le6y| z>M8~U4?bmGx+Az89sY&UeOc)sns7GZZi^tyh)&bR3ArX<6ug~X1C4%&_B?67yqxjvzs&06}}E54daqR~42kw%SHtLHe77{Fcb z2u)RPT=iwTdZ0#A-ugzmbzhyPy!CW-rY#l%EyOZC9ForC65N7w1C-x5t4>AdE}eI! z*B{zM(d|c9h^ddR8RQxeL5c@U?Qntf)Fri5wyx#vc3(E_vP{cni48}2E3E1^{!R6% zd+6=_o9a^+(qw>4DB3Pfx9O3*o9-(pBJ}U3{Rr?DA|@mCN~N`R0o}Nx^$)V^*X@^{ z1AR2ioySi~>jWivP~`DRlA>bl1X#htq_CXxp+1j%jfQ1^u+Gn2QA+E?D#Ya3%r5(m z4YyLTn_KtX51;6>4DPv7LAg!C;&Zdg79bA+#sEJ+s|HzERSIMyPzZUTVmeI}p_2

&hXc%Y!|$5+t3Oo8dBn1oQ~Oq8X*GtaOgLXApom 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 diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.14.0.tar.gz b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.14.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0754908cf721dc156540a013d2e52bf6210c1d82 GIT binary patch literal 206747 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∨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


-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 literal 0 HcmV?d00001 diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json new file mode 100644 index 00000000..c763e815 --- /dev/null +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json @@ -0,0 +1,14989 @@ +{ + "$id": "https://rtichoke.dev/schema/viz/report.json", + "title": "rtichoke report specification", + "anyOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "components" + ], + "properties": { + "schemaVersion": { + "const": "1.0", + "type": "string" + }, + "type": { + "const": "report", + "type": "string" + }, + "title": { + "type": "string" + }, + "components": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "spec" + ], + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "spec": { + "anyOf": [ + { + "$id": "https://rtichoke.dev/schema/viz/2.0.json", + "title": "rtichoke visualization specification v2", + "anyOf": [ + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "roc", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "sensitivity", + "specificity" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "specificity": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "false_positive_rate", + "type": "string" + }, + "y": { + "const": "sensitivity", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "calibration", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "seriesId", + "predicted", + "observed", + "method" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "predicted": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "observed": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "method": { + "const": "discrete", + "type": "string" + }, + "events": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" + } + } + }, + { + "type": "object", + "required": [ + "seriesId", + "predicted", + "observed", + "method" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "predicted": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "observed": { + "type": "number" + }, + "method": { + "const": "smooth", + "type": "string" + }, + "events": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + }, + "distribution": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "midpoint", + "count", + "binWidth" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "midpoint": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "count": { + "minimum": 0, + "type": "number" + }, + "binWidth": { + "exclusiveMinimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "predicted", + "type": "string" + }, + "y": { + "const": "observed", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "precision_recall", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "sensitivity", + "ppv" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "ppv": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "sensitivity", + "type": "string" + }, + "y": { + "const": "ppv", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "gains", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "ppcr", + "sensitivity" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "ppcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "ppcr", + "type": "string" + }, + "y": { + "const": "sensitivity", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "lift", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "ppcr", + "lift" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "ppcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "lift": { + "type": "number" + } + } + } + }, + "x": { + "const": "ppcr", + "type": "string" + }, + "y": { + "const": "lift", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "evaluations", + "series", + "data", + "x", + "y", + "references" + ], + "properties": { + "type": { + "const": "decision_curve", + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "series": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + }, + { + "type": "object", + "required": [ + "id", + "evaluationId" + ], + "properties": { + "id": { + "pattern": "^series-[1-9][0-9]*$", + "type": "string" + }, + "evaluationId": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "threshold", + "netBenefit" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "threshold": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "netBenefit": { + "type": "number" + } + } + } + }, + "x": { + "const": "threshold", + "type": "string" + }, + "y": { + "const": "netBenefit", + "type": "string" + }, + "references": { + "minItems": 2, + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value", + "scope", + "benchmark" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "const": 0, + "type": "number" + }, + "label": { + "type": "string" + }, + "scope": { + "const": "global", + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + } + } + }, + { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + }, + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population", + "horizon" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + }, + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "evaluations", + "series", + "data", + "x", + "y", + "references" + ], + "properties": { + "type": { + "const": "interventions_avoided", + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "series": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + }, + { + "type": "object", + "required": [ + "id", + "evaluationId" + ], + "properties": { + "id": { + "pattern": "^series-[1-9][0-9]*$", + "type": "string" + }, + "evaluationId": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "threshold", + "interventionsAvoided" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "threshold": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "interventionsAvoided": { + "type": "number" + } + } + } + }, + "x": { + "const": "threshold", + "type": "string" + }, + "y": { + "const": "interventionsAvoided", + "type": "string" + }, + "references": { + "minItems": 2, + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value", + "scope", + "benchmark" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "const": 0, + "type": "number" + }, + "label": { + "type": "string" + }, + "scope": { + "const": "global", + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + } + } + }, + { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + }, + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population", + "horizon" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + }, + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + } + ] + } + ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "metrics", + "rows" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "performance_table", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "metrics": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "label" + ], + "properties": { + "id": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "label": { + "type": "string" + } + } + } + }, + "rows": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "operatingPoint", + "values" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "operatingPoint": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "probability_threshold", + "type": "string" + }, + "value": { + "type": "number" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "ppcr", + "type": "string" + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + ] + }, + "context": { + "type": "object", + "properties": { + "censoringHeuristic": { + "type": "string" + }, + "competingEventHeuristic": { + "type": "string" + } + } + }, + "values": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + } + } + } + } + } + }, + { + "$id": "https://rtichoke.dev/schema/viz/summary-metrics.json", + "title": "rtichoke summary metrics specification", + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "populations", + "metrics" + ], + "properties": { + "schemaVersion": { + "const": "1.0", + "type": "string" + }, + "type": { + "const": "summary_metrics", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "populations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "label" + ], + "properties": { + "id": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "metrics": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "metric", + "owner", + "estimate" + ], + "properties": { + "metric": { + "const": "auroc", + "type": "string" + }, + "owner": { + "type": "object", + "required": [ + "type", + "evaluationId" + ], + "properties": { + "type": { + "const": "evaluation", + "type": "string" + }, + "evaluationId": { + "type": "string" + } + } + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + }, + { + "type": "object", + "required": [ + "metric", + "owner", + "estimate" + ], + "properties": { + "metric": { + "const": "prevalence", + "type": "string" + }, + "owner": { + "type": "object", + "required": [ + "type", + "populationId" + ], + "properties": { + "type": { + "const": "population", + "type": "string" + }, + "populationId": { + "type": "string" + } + } + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + } + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "sections" + ], + "properties": { + "schemaVersion": { + "const": "1.1", + "type": "string" + }, + "type": { + "const": "report", + "type": "string" + }, + "title": { + "type": "string" + }, + "sections": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "title", + "items" + ], + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "items": { + "minItems": 1, + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "id", + "spec" + ], + "properties": { + "type": { + "const": "component", + "type": "string" + }, + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "spec": { + "anyOf": [ + { + "$id": "https://rtichoke.dev/schema/viz/2.0.json", + "title": "rtichoke visualization specification v2", + "anyOf": [ + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "roc", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "sensitivity", + "specificity" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "specificity": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "false_positive_rate", + "type": "string" + }, + "y": { + "const": "sensitivity", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "calibration", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "seriesId", + "predicted", + "observed", + "method" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "predicted": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "observed": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "method": { + "const": "discrete", + "type": "string" + }, + "events": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" + } + } + }, + { + "type": "object", + "required": [ + "seriesId", + "predicted", + "observed", + "method" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "predicted": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "observed": { + "type": "number" + }, + "method": { + "const": "smooth", + "type": "string" + }, + "events": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + }, + "distribution": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "midpoint", + "count", + "binWidth" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "midpoint": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "count": { + "minimum": 0, + "type": "number" + }, + "binWidth": { + "exclusiveMinimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "predicted", + "type": "string" + }, + "y": { + "const": "observed", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "precision_recall", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "sensitivity", + "ppv" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "ppv": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "sensitivity", + "type": "string" + }, + "y": { + "const": "ppv", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "gains", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "ppcr", + "sensitivity" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "ppcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "ppcr", + "type": "string" + }, + "y": { + "const": "sensitivity", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "lift", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "ppcr", + "lift" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "ppcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "lift": { + "type": "number" + } + } + } + }, + "x": { + "const": "ppcr", + "type": "string" + }, + "y": { + "const": "lift", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "evaluations", + "series", + "data", + "x", + "y", + "references" + ], + "properties": { + "type": { + "const": "decision_curve", + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "series": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + }, + { + "type": "object", + "required": [ + "id", + "evaluationId" + ], + "properties": { + "id": { + "pattern": "^series-[1-9][0-9]*$", + "type": "string" + }, + "evaluationId": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "threshold", + "netBenefit" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "threshold": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "netBenefit": { + "type": "number" + } + } + } + }, + "x": { + "const": "threshold", + "type": "string" + }, + "y": { + "const": "netBenefit", + "type": "string" + }, + "references": { + "minItems": 2, + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value", + "scope", + "benchmark" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "const": 0, + "type": "number" + }, + "label": { + "type": "string" + }, + "scope": { + "const": "global", + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + } + } + }, + { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + }, + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population", + "horizon" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + }, + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "evaluations", + "series", + "data", + "x", + "y", + "references" + ], + "properties": { + "type": { + "const": "interventions_avoided", + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "series": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + }, + { + "type": "object", + "required": [ + "id", + "evaluationId" + ], + "properties": { + "id": { + "pattern": "^series-[1-9][0-9]*$", + "type": "string" + }, + "evaluationId": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "threshold", + "interventionsAvoided" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "threshold": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "interventionsAvoided": { + "type": "number" + } + } + } + }, + "x": { + "const": "threshold", + "type": "string" + }, + "y": { + "const": "interventionsAvoided", + "type": "string" + }, + "references": { + "minItems": 2, + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value", + "scope", + "benchmark" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "const": 0, + "type": "number" + }, + "label": { + "type": "string" + }, + "scope": { + "const": "global", + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + } + } + }, + { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + }, + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population", + "horizon" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + }, + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + } + ] + } + ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "metrics", + "rows" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "performance_table", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "metrics": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "label" + ], + "properties": { + "id": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "label": { + "type": "string" + } + } + } + }, + "rows": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "operatingPoint", + "values" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "operatingPoint": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "probability_threshold", + "type": "string" + }, + "value": { + "type": "number" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "ppcr", + "type": "string" + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + ] + }, + "context": { + "type": "object", + "properties": { + "censoringHeuristic": { + "type": "string" + }, + "competingEventHeuristic": { + "type": "string" + } + } + }, + "values": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + } + } + } + } + } + }, + { + "$id": "https://rtichoke.dev/schema/viz/summary-metrics.json", + "title": "rtichoke summary metrics specification", + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "populations", + "metrics" + ], + "properties": { + "schemaVersion": { + "const": "1.0", + "type": "string" + }, + "type": { + "const": "summary_metrics", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "populations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "label" + ], + "properties": { + "id": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "metrics": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "metric", + "owner", + "estimate" + ], + "properties": { + "metric": { + "const": "auroc", + "type": "string" + }, + "owner": { + "type": "object", + "required": [ + "type", + "evaluationId" + ], + "properties": { + "type": { + "const": "evaluation", + "type": "string" + }, + "evaluationId": { + "type": "string" + } + } + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + }, + { + "type": "object", + "required": [ + "metric", + "owner", + "estimate" + ], + "properties": { + "metric": { + "const": "prevalence", + "type": "string" + }, + "owner": { + "type": "object", + "required": [ + "type", + "populationId" + ], + "properties": { + "type": { + "const": "population", + "type": "string" + }, + "populationId": { + "type": "string" + } + } + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + }, + { + "type": "object", + "required": [ + "type", + "id", + "title", + "components" + ], + "properties": { + "type": { + "const": "group", + "type": "string" + }, + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "components": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "type", + "id", + "spec" + ], + "properties": { + "type": { + "const": "component", + "type": "string" + }, + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "spec": { + "anyOf": [ + { + "$id": "https://rtichoke.dev/schema/viz/2.0.json", + "title": "rtichoke visualization specification v2", + "anyOf": [ + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "roc", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "sensitivity", + "specificity" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "specificity": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "false_positive_rate", + "type": "string" + }, + "y": { + "const": "sensitivity", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "calibration", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "seriesId", + "predicted", + "observed", + "method" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "predicted": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "observed": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "method": { + "const": "discrete", + "type": "string" + }, + "events": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" + } + } + }, + { + "type": "object", + "required": [ + "seriesId", + "predicted", + "observed", + "method" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "predicted": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "observed": { + "type": "number" + }, + "method": { + "const": "smooth", + "type": "string" + }, + "events": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + }, + "distribution": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "midpoint", + "count", + "binWidth" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "midpoint": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "count": { + "minimum": 0, + "type": "number" + }, + "binWidth": { + "exclusiveMinimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "predicted", + "type": "string" + }, + "y": { + "const": "observed", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "precision_recall", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "sensitivity", + "ppv" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "ppv": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "sensitivity", + "type": "string" + }, + "y": { + "const": "ppv", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "gains", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "ppcr", + "sensitivity" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "ppcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "sensitivity": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + }, + "x": { + "const": "ppcr", + "type": "string" + }, + "y": { + "const": "sensitivity", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "data", + "x", + "y" + ], + "properties": { + "type": { + "const": "lift", + "type": "string" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "cutoff", + "ppcr", + "lift" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "cutoff": { + "type": "number" + }, + "ppcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "lift": { + "type": "number" + } + } + } + }, + "x": { + "const": "ppcr", + "type": "string" + }, + "y": { + "const": "lift", + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "evaluations", + "series", + "data", + "x", + "y", + "references" + ], + "properties": { + "type": { + "const": "decision_curve", + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "series": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + }, + { + "type": "object", + "required": [ + "id", + "evaluationId" + ], + "properties": { + "id": { + "pattern": "^series-[1-9][0-9]*$", + "type": "string" + }, + "evaluationId": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "threshold", + "netBenefit" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "threshold": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "netBenefit": { + "type": "number" + } + } + } + }, + "x": { + "const": "threshold", + "type": "string" + }, + "y": { + "const": "netBenefit", + "type": "string" + }, + "references": { + "minItems": 2, + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value", + "scope", + "benchmark" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "const": 0, + "type": "number" + }, + "label": { + "type": "string" + }, + "scope": { + "const": "global", + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + } + } + }, + { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + }, + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population", + "horizon" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + }, + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + } + ] + }, + { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "schemaVersion", + "evaluations", + "series", + "xAxis", + "yAxis" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "series": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + } + }, + "xAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "yAxis": { + "type": "object", + "required": [ + "label" + ], + "properties": { + "label": { + "type": "string" + }, + "domain": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + }, + "references": { + "type": "array", + "items": { + "anyOf": [ + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope" + ], + "properties": { + "scope": { + "const": "global", + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population" + ], + "properties": { + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + } + ] + }, + { + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "const": "identity", + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "vertical", + "type": "string" + }, + "value": { + "type": "number" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + } + } + } + ] + }, + { + "type": "object", + "required": [ + "scope", + "population", + "horizon" + ], + "properties": { + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + }, + { + "type": "object", + "required": [ + "type", + "evaluations", + "series", + "data", + "x", + "y", + "references" + ], + "properties": { + "type": { + "const": "interventions_avoided", + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "series": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "id", + "evaluationId", + "display" + ], + "properties": { + "id": { + "type": "string" + }, + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "display": { + "type": "object", + "required": [ + "label", + "group", + "role" + ], + "properties": { + "label": { + "type": "string" + }, + "group": { + "type": "string" + }, + "role": { + "anyOf": [ + { + "const": "model", + "type": "string" + }, + { + "const": "population", + "type": "string" + }, + { + "const": "evaluation", + "type": "string" + }, + { + "const": "context", + "type": "string" + } + ] + } + } + } + } + }, + { + "type": "object", + "required": [ + "id", + "evaluationId" + ], + "properties": { + "id": { + "pattern": "^series-[1-9][0-9]*$", + "type": "string" + }, + "evaluationId": { + "pattern": "^evaluation-[1-9][0-9]*$", + "type": "string" + } + } + } + ] + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "seriesId", + "threshold", + "interventionsAvoided" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "threshold": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "interventionsAvoided": { + "type": "number" + } + } + } + }, + "x": { + "const": "threshold", + "type": "string" + }, + "y": { + "const": "interventionsAvoided", + "type": "string" + }, + "references": { + "minItems": 2, + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value", + "scope", + "benchmark" + ], + "properties": { + "type": { + "const": "horizontal", + "type": "string" + }, + "value": { + "const": 0, + "type": "number" + }, + "label": { + "type": "string" + }, + "scope": { + "const": "global", + "type": "string" + }, + "benchmark": { + "const": "treat_all", + "type": "string" + } + } + }, + { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + }, + "scope": { + "const": "population", + "type": "string" + }, + "population": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "type", + "points", + "benchmark", + "scope", + "population", + "horizon" + ], + "properties": { + "type": { + "const": "path", + "type": "string" + }, + "points": { + "minItems": 2, + "type": "array", + "items": { + "type": "object", + "required": [ + "x", + "y" + ], + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + } + } + }, + "label": { + "type": "string" + }, + "benchmark": { + "const": "treat_none", + "type": "string" + }, + "scope": { + "const": "population_horizon", + "type": "string" + }, + "population": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + } + } + } + ] + } + ] + } + } + } + } + ] + } + ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "metrics", + "rows" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "performance_table", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "metrics": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "label" + ], + "properties": { + "id": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "label": { + "type": "string" + } + } + } + }, + "rows": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "operatingPoint", + "values" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "operatingPoint": { + "anyOf": [ + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "probability_threshold", + "type": "string" + }, + "value": { + "type": "number" + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "const": "ppcr", + "type": "string" + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + } + } + } + ] + }, + "context": { + "type": "object", + "properties": { + "censoringHeuristic": { + "type": "string" + }, + "competingEventHeuristic": { + "type": "string" + } + } + }, + "values": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + } + } + } + } + } + }, + { + "$id": "https://rtichoke.dev/schema/viz/summary-metrics.json", + "title": "rtichoke summary metrics specification", + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "populations", + "metrics" + ], + "properties": { + "schemaVersion": { + "const": "1.0", + "type": "string" + }, + "type": { + "const": "summary_metrics", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "populations": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "label" + ], + "properties": { + "id": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "metrics": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "metric", + "owner", + "estimate" + ], + "properties": { + "metric": { + "const": "auroc", + "type": "string" + }, + "owner": { + "type": "object", + "required": [ + "type", + "evaluationId" + ], + "properties": { + "type": { + "const": "evaluation", + "type": "string" + }, + "evaluationId": { + "type": "string" + } + } + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + }, + { + "type": "object", + "required": [ + "metric", + "owner", + "estimate" + ], + "properties": { + "metric": { + "const": "prevalence", + "type": "string" + }, + "owner": { + "type": "object", + "required": [ + "type", + "populationId" + ], + "properties": { + "type": { + "const": "population", + "type": "string" + }, + "populationId": { + "type": "string" + } + } + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + ] + } + } + } + } + ] + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + ] +} diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json index f5113042..ba024b43 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json @@ -1071,48 +1071,78 @@ "data": { "type": "array", "items": { - "type": "object", - "required": [ - "seriesId", - "predicted", - "observed", - "method" - ], - "properties": { - "seriesId": { - "type": "string" - }, - "predicted": { - "minimum": 0, - "maximum": 1, - "type": "number" - }, - "observed": { - "minimum": 0, - "maximum": 1, - "type": "number" - }, - "method": { - "anyOf": [ - { + "anyOf": [ + { + "type": "object", + "required": [ + "seriesId", + "predicted", + "observed", + "method" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "predicted": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "observed": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "method": { "const": "discrete", "type": "string" }, - { + "events": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" + } + } + }, + { + "type": "object", + "required": [ + "seriesId", + "predicted", + "observed", + "method" + ], + "properties": { + "seriesId": { + "type": "string" + }, + "predicted": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "observed": { + "type": "number" + }, + "method": { "const": "smooth", "type": "string" + }, + "events": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" } - ] - }, - "events": { - "minimum": 0, - "type": "number" - }, - "total": { - "minimum": 0, - "type": "number" + } } - } + ] } }, "distribution": { diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.css b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.css index 422303db..d57025dc 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.css +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.css @@ -11,13 +11,211 @@ display: flex; flex-direction: column; gap: 2.5rem; + max-width: 1200px; + margin: 0 auto; + box-sizing: border-box; + font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; + color: #1a1a1a; +} + +.rtichoke-report__header { + border-bottom: 2px solid #e5e7eb; + padding-bottom: 1rem; +} + +.rtichoke-report__title { + margin: 0; + font-size: 2rem; + font-weight: 700; + color: #111827; +} + +.rtichoke-report__nav { + background-color: #f9fafb; + border: 1px solid #e5e7eb; + border-radius: 6px; + padding: 1rem 1.5rem; +} + +.rtichoke-report__nav-list, +.rtichoke-report__nav-sublist { + list-style-type: none; + margin: 0; + padding: 0; +} + +.rtichoke-report__nav-list { + display: flex; + flex-wrap: wrap; + gap: 1rem 1.5rem; +} + +.rtichoke-report__nav-item { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.rtichoke-report__nav-link { + color: #2563eb; + text-decoration: none; + font-weight: 600; + font-size: 0.95rem; +} + +.rtichoke-report__nav-link:hover, +.rtichoke-report__nav-link:focus { + text-decoration: underline; +} + +.rtichoke-report__nav-sublist { + padding-left: 0.75rem; + border-left: 2px solid #d1d5db; + margin-top: 0.25rem; + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.rtichoke-report__nav-subitem .rtichoke-report__nav-link { + font-weight: 400; + font-size: 0.875rem; + color: #4b5563; +} + +.rtichoke-report__section { + display: flex; + flex-direction: column; + gap: 1.75rem; + padding-top: 0.5rem; +} + +.rtichoke-report__section-title { + margin: 0; + font-size: 1.5rem; + font-weight: 600; + color: #111827; + border-bottom: 1px solid #e5e7eb; + padding-bottom: 0.5rem; +} + +.rtichoke-report__group { + display: flex; + flex-direction: column; + gap: 1.25rem; + padding-left: 0.5rem; +} + +.rtichoke-report__group-title { + margin: 0; + font-size: 1.25rem; + font-weight: 600; + color: #374151; +} + +.rtichoke-report__group-title--tab-panel { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.rtichoke-report__component { + display: flex; + flex-direction: column; + gap: 0.75rem; } -.rtichoke-report__title, .rtichoke-report__component-title { - margin: 0 0 1rem; + margin: 0; + font-size: 1.1rem; + font-weight: 600; + color: #4b5563; } .rtichoke-report__component-content { overflow-x: auto; } + +.rtichoke-report__tablist { + display: flex; + flex-wrap: wrap; + gap: 0.25rem; + border-bottom: 2px solid #e5e7eb; + margin-bottom: 0.5rem; +} + +.rtichoke-report__tab { + padding: 0.5rem 1rem; + font-family: inherit; + font-size: 0.9rem; + font-weight: 500; + color: #4b5563; + background-color: transparent; + border: none; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + cursor: pointer; + border-radius: 4px 4px 0 0; + transition: color 0.15s ease-in-out, border-color 0.15s ease-in-out, background-color 0.15s ease-in-out; +} + +.rtichoke-report__tab:hover { + color: #111827; + background-color: #f3f4f6; +} + +.rtichoke-report__tab[aria-selected="true"] { + color: #2563eb; + border-bottom-color: #2563eb; + font-weight: 600; + background-color: #eff6ff; +} + +.rtichoke-report__tab:focus-visible { + outline: 2px solid #2563eb; + outline-offset: -2px; +} + +.rtichoke-report__tabpanel[hidden] { + display: none !important; +} + +.rtichoke-report__tabpanel { + display: flex; + flex-direction: column; + gap: 0.75rem; + outline: none; +} + +@media (max-width: 640px) { + .rtichoke-report__nav-list { + flex-direction: column; + gap: 0.75rem; + } + + .rtichoke-report__tablist { + flex-direction: column; + border-bottom: none; + gap: 0.25rem; + } + + .rtichoke-report__tab { + width: 100%; + text-align: left; + border-bottom: none; + border-left: 3px solid transparent; + margin-bottom: 0; + border-radius: 4px; + } + + .rtichoke-report__tab[aria-selected="true"] { + border-bottom-color: transparent; + border-left-color: #2563eb; + } +} diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js index 915f87d5..7abfda3b 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js @@ -1053,7 +1053,7 @@ function Literal(value, options) { } // node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs -function Boolean(options) { +function Boolean2(options) { return CreateType({ [Kind]: "Boolean", type: "boolean" }, options); } @@ -1075,7 +1075,7 @@ function String2(options) { // node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs function* FromUnion(syntax) { const trim = syntax.trim().replace(/"|'/g, ""); - return trim === "boolean" ? yield Boolean() : trim === "number" ? yield Number2() : trim === "bigint" ? yield BigInt2() : trim === "string" ? yield String2() : yield (() => { + return trim === "boolean" ? yield Boolean2() : trim === "number" ? yield Number2() : trim === "bigint" ? yield BigInt2() : trim === "string" ? yield String2() : yield (() => { const literals = trim.split("|").map((literal) => Literal(literal.trim())); return literals.length === 0 ? Never() : literals.length === 1 ? literals[0] : UnionEvaluated(literals); })(); @@ -2691,7 +2691,7 @@ __export(type_exports3, { AsyncIterator: () => AsyncIterator, Awaited: () => Awaited, BigInt: () => BigInt2, - Boolean: () => Boolean, + Boolean: () => Boolean2, Capitalize: () => Capitalize, Composite: () => Composite, Const: () => Const, @@ -2917,14 +2917,26 @@ var BaseChartV2SpecSchema = Type.Object({ }); // src/spec/v2/calibration.ts -var CalibrationV2DatumSchema = Type.Object({ +var DiscreteCalibrationV2DatumSchema = Type.Object({ seriesId: Type.String(), predicted: Type.Number({ minimum: 0, maximum: 1 }), observed: Type.Number({ minimum: 0, maximum: 1 }), - method: Type.Union([Type.Literal("discrete"), Type.Literal("smooth")]), + method: Type.Literal("discrete"), + events: Type.Optional(Type.Number({ minimum: 0 })), + total: Type.Optional(Type.Number({ minimum: 0 })) +}); +var SmoothCalibrationV2DatumSchema = Type.Object({ + seriesId: Type.String(), + predicted: Type.Number({ minimum: 0, maximum: 1 }), + observed: Type.Number(), + method: Type.Literal("smooth"), events: Type.Optional(Type.Number({ minimum: 0 })), total: Type.Optional(Type.Number({ minimum: 0 })) }); +var CalibrationV2DatumSchema = Type.Union([ + DiscreteCalibrationV2DatumSchema, + SmoothCalibrationV2DatumSchema +]); var CalibrationV2DistributionDatumSchema = Type.Object({ seriesId: Type.String(), midpoint: Type.Number({ minimum: 0, maximum: 1 }), @@ -3210,27 +3222,130 @@ var PerformanceTableSpecSchema = Type.Object({ rows: Type.Array(PerformanceTableRowSchema) }); +// src/spec/v2/summary-metrics.ts +var PopulationSummaryOwnerSpecSchema = Type.Object({ + id: Type.String(), + label: Type.String() +}); +var AUROCSummaryMetricSchema = Type.Object({ + metric: Type.Literal("auroc"), + owner: Type.Object({ + type: Type.Literal("evaluation"), + evaluationId: Type.String() + }), + estimate: Type.Union([Type.Number(), Type.Null()]) +}); +var PrevalenceSummaryMetricSchema = Type.Object({ + metric: Type.Literal("prevalence"), + owner: Type.Object({ + type: Type.Literal("population"), + populationId: Type.String() + }), + estimate: Type.Union([Type.Number(), Type.Null()]) +}); +var SummaryMetricSchema = Type.Union([ + AUROCSummaryMetricSchema, + PrevalenceSummaryMetricSchema +]); +var SummaryMetricsSpecSchema = Type.Object( + { + schemaVersion: Type.Literal("1.0"), + type: Type.Literal("summary_metrics"), + title: Type.Optional(Type.String()), + evaluations: Type.Array(EvaluationSpecSchema), + populations: Type.Array(PopulationSummaryOwnerSpecSchema), + metrics: Type.Array(SummaryMetricSchema) + }, + { + $id: "https://rtichoke.dev/schema/viz/summary-metrics.json", + title: "rtichoke summary metrics specification" + } +); + // src/spec/report.ts +var StandaloneCanonicalSpecSchema = Type.Union([ + RtichokeChartSpecV2Schema, + PerformanceTableSpecSchema, + SummaryMetricsSpecSchema +]); var ReportComponentSchema = Type.Object({ id: Type.String(), title: Type.Optional(Type.String()), - spec: Type.Union([RtichokeChartSpecV2Schema, PerformanceTableSpecSchema]) + spec: StandaloneCanonicalSpecSchema }); -var ReportSpecSchema = Type.Object({ +var ReportSpecV1_0Schema = Type.Object({ schemaVersion: Type.Literal("1.0"), type: Type.Literal("report"), title: Type.Optional(Type.String()), components: Type.Array(ReportComponentSchema, { minItems: 1 }) }); +var ReportComponentV1_1Schema = Type.Object({ + type: Type.Literal("component"), + id: Type.String(), + title: Type.Optional(Type.String()), + spec: StandaloneCanonicalSpecSchema +}); +var ReportGroupSchema = Type.Object({ + type: Type.Literal("group"), + id: Type.String(), + title: Type.String(), + components: Type.Array(ReportComponentV1_1Schema, { minItems: 1 }) +}); +var ReportSectionSchema = Type.Object({ + id: Type.String(), + title: Type.String(), + items: Type.Array( + Type.Union([ReportComponentV1_1Schema, ReportGroupSchema]), + { minItems: 1 } + ) +}); +var ReportSpecV1_1Schema = Type.Object({ + schemaVersion: Type.Literal("1.1"), + type: Type.Literal("report"), + title: Type.Optional(Type.String()), + sections: Type.Array(ReportSectionSchema, { minItems: 1 }) +}); +var ReportSpecSchema = Type.Union( + [ReportSpecV1_0Schema, ReportSpecV1_1Schema], + { + $id: "https://rtichoke.dev/schema/viz/report.json", + title: "rtichoke report specification" + } +); // src/spec/validate-report.ts function assertReportReferentialIntegrity(spec) { const componentIds = /* @__PURE__ */ new Set(); - for (const component of spec.components) { + const assertUniqueComponent = (component) => { if (componentIds.has(component.id)) { throw new Error(`duplicate component id: ${component.id}`); } componentIds.add(component.id); + }; + if (spec.schemaVersion === "1.0") { + for (const component of spec.components) assertUniqueComponent(component); + return; + } + const sectionIds = /* @__PURE__ */ new Set(); + const groupIds = /* @__PURE__ */ new Set(); + for (const section of spec.sections) { + if (sectionIds.has(section.id)) { + throw new Error(`duplicate section id: ${section.id}`); + } + sectionIds.add(section.id); + for (const item of section.items) { + if (item.type === "component") { + assertUniqueComponent(item); + continue; + } + if (groupIds.has(item.id)) { + throw new Error(`duplicate group id: ${item.id}`); + } + groupIds.add(item.id); + for (const component of item.components) { + assertUniqueComponent(component); + } + } } } @@ -3262,6 +3377,53 @@ function assertPerformanceTableReferentialIntegrity(spec) { } } +// src/spec/v2/validate-summary-metrics.ts +function assertSummaryMetricsReferentialIntegrity(spec) { + const evaluationIds = /* @__PURE__ */ new Set(); + for (const evaluation of spec.evaluations) { + if (evaluationIds.has(evaluation.id)) { + throw new Error(`duplicate evaluation id: ${evaluation.id}`); + } + evaluationIds.add(evaluation.id); + } + const populationIds = /* @__PURE__ */ new Set(); + for (const population of spec.populations) { + if (populationIds.has(population.id)) { + throw new Error(`duplicate population id: ${population.id}`); + } + populationIds.add(population.id); + } + const seenMetrics = /* @__PURE__ */ new Set(); + for (const item of spec.metrics) { + if (item.estimate !== null && !Number.isFinite(item.estimate)) { + throw new Error(`non-finite metric estimate: ${item.estimate}`); + } + if (item.metric === "auroc") { + if (!evaluationIds.has(item.owner.evaluationId)) { + throw new Error(`unknown evaluation id: ${item.owner.evaluationId}`); + } + const key = `auroc:${item.owner.evaluationId}`; + if (seenMetrics.has(key)) { + throw new Error( + `duplicate metric ownership: auroc for evaluation ${item.owner.evaluationId}` + ); + } + seenMetrics.add(key); + } else if (item.metric === "prevalence") { + if (!populationIds.has(item.owner.populationId)) { + throw new Error(`unknown population id: ${item.owner.populationId}`); + } + const key = `prevalence:${item.owner.populationId}`; + if (seenMetrics.has(key)) { + throw new Error( + `duplicate metric ownership: prevalence for population ${item.owner.populationId}` + ); + } + seenMetrics.add(key); + } + } +} + // src/spec/v2/validate.ts function assertV2ReferentialIntegrity(spec) { const evaluationIds = new Set(spec.evaluations.map((evaluation) => evaluation.id)); @@ -3541,6 +3703,9 @@ function rocV2SpecFromRtichokePython(rows, context) { } function calibrationV2SpecFromRtichokeRows(rows, method, context, distributionRows) { const byGroup = identities(rows.map((row) => row.reference_group), context); + const observedValues = rows.map((row) => row.y).filter(Number.isFinite); + const minY = Math.min(0, ...observedValues); + const maxY = Math.max(1, ...observedValues); return { schemaVersion: "2.0", type: "calibration", @@ -3569,7 +3734,7 @@ function calibrationV2SpecFromRtichokeRows(rows, method, context, distributionRo x: "predicted", y: "observed", xAxis: { label: "Predicted probability", domain: [0, 1] }, - yAxis: { label: "Observed probability", domain: [0, 1] }, + yAxis: { label: "Observed probability", domain: [minY, maxY] }, references: [{ type: "identity", scope: "global", label: "Perfectly Calibrated" }] }; } @@ -19364,6 +19529,11 @@ function renderCalibrationV2(spec, options = {}) { ); const hasDistribution = (spec.distribution?.length ?? 0) > 0; const mainHeight = hasDistribution ? Math.round(theme.height * 0.8) : theme.height; + const observedValues = data.map((datum2) => datum2.observed).filter(Number.isFinite); + const yDomain = spec.yAxis.domain ?? [ + Math.min(0, ...observedValues), + Math.max(1, ...observedValues) + ]; const calibration = themedPlot( { ...basePlotOptions(resolved, spec), @@ -19374,7 +19544,7 @@ function renderCalibrationV2(spec, options = {}) { axis: null, label: null } : axisOptions2(theme, spec.xAxis.label, spec.xAxis.domain), - y: axisOptions2(theme, spec.yAxis.label, spec.yAxis.domain), + y: axisOptions2(theme, spec.yAxis.label, yDomain), marks: finishMarks(marks2, theme) }, theme @@ -19720,6 +19890,89 @@ function renderPerformanceTable(spec, document2 = globalThis.document) { return root2; } +// src/render/summary-metrics.ts +var MISSING2 = "\u2014"; +function cell2(document2, text2, className) { + const element = document2.createElement("td"); + element.textContent = text2; + if (className) element.className = className; + return element; +} +function header2(document2, text2) { + const element = document2.createElement("th"); + element.scope = "col"; + element.textContent = text2; + return element; +} +function formatEstimate(value) { + if (value === null) return MISSING2; + return value.toFixed(2); +} +function renderSummaryMetrics(spec, document2 = globalThis.document) { + assertSummaryMetricsReferentialIntegrity(spec); + const root2 = document2.createElement("div"); + root2.className = "rtichoke-summary-metrics"; + if (spec.title) { + const title = document2.createElement("div"); + title.className = "rtichoke-summary-metrics__title"; + title.textContent = spec.title; + root2.append(title); + } + const table = document2.createElement("table"); + table.className = "rtichoke-summary-metrics__table"; + const head = document2.createElement("thead"); + const headRow = document2.createElement("tr"); + for (const label of ["Owner", "Metric", "Estimate"]) { + headRow.append(header2(document2, label)); + } + head.append(headRow); + table.append(head); + const evaluations = new Map( + spec.evaluations.map((evaluation) => [evaluation.id, evaluation]) + ); + const populations = new Map( + spec.populations.map((population) => [population.id, population]) + ); + const body = document2.createElement("tbody"); + for (const item of spec.metrics) { + const tr = document2.createElement("tr"); + let ownerLabel = ""; + let metricLabel = ""; + if (item.metric === "auroc") { + const evaluation = evaluations.get(item.owner.evaluationId); + ownerLabel = evaluation.label ?? evaluation.model ?? evaluation.population ?? evaluation.id; + metricLabel = "AUROC"; + tr.dataset.metric = "auroc"; + tr.dataset.evaluationId = item.owner.evaluationId; + } else if (item.metric === "prevalence") { + const population = populations.get(item.owner.populationId); + ownerLabel = population.label; + metricLabel = "Prevalence"; + tr.dataset.metric = "prevalence"; + tr.dataset.populationId = item.owner.populationId; + } + tr.append( + cell2(document2, ownerLabel, "rtichoke-summary-metrics__owner"), + cell2(document2, metricLabel, "rtichoke-summary-metrics__metric") + ); + const estimateCell = cell2( + document2, + formatEstimate(item.estimate), + "rtichoke-summary-metrics__estimate" + ); + if (item.estimate === null) { + estimateCell.dataset.unavailable = "true"; + } else { + estimateCell.dataset.estimate = String(item.estimate); + } + tr.append(estimateCell); + body.append(tr); + } + table.append(body); + root2.append(table); + return root2; +} + // node_modules/@sinclair/typebox/build/esm/errors/function.mjs function DefaultErrorFunction(error) { switch (error.errorType) { @@ -23055,8 +23308,80 @@ __export(value_exports2, { }); // src/render/report.ts -function renderReport(spec) { - if (!value_exports2.Check(ReportSpecSchema, spec)) throw new Error("Invalid ReportSpec"); +function renderStandaloneComponentContent(spec) { + switch (spec.type) { + case "summary_metrics": + return renderSummaryMetrics(spec); + case "performance_table": + return renderPerformanceTable(spec); + case "roc": + return renderRocV2(spec); + case "calibration": + return renderCalibrationV2(spec); + case "precision_recall": + return renderPrecisionRecallV2(spec); + case "gains": + return renderGainsV2(spec); + case "lift": + return renderLiftV2(spec); + case "decision_curve": + return renderDecisionCurveV2(spec); + case "interventions_avoided": + return renderInterventionsAvoidedV2(spec); + } +} +function generateUniqueDomId(rawId, used) { + let base = rawId.toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "") || "id"; + if (!/^[a-z]/i.test(base)) { + base = `id-${base}`; + } + let candidate = base; + let counter = 1; + while (used.has(candidate)) { + candidate = `${base}-${counter}`; + counter++; + } + used.add(candidate); + return candidate; +} +function wireTabInteraction(tabs, panels) { + const activateTab = (index2, setFocus = true) => { + tabs.forEach((tab, tabIndex) => { + const isSelected = tabIndex === index2; + tab.setAttribute("aria-selected", isSelected ? "true" : "false"); + tab.tabIndex = isSelected ? 0 : -1; + panels[tabIndex].hidden = !isSelected; + }); + if (setFocus) { + tabs[index2].focus(); + } + }; + tabs.forEach((tab, index2) => { + tab.addEventListener("click", () => { + activateTab(index2, false); + }); + tab.addEventListener("keydown", (event) => { + let targetIndex = null; + if (event.key === "ArrowRight") { + targetIndex = (index2 + 1) % tabs.length; + } else if (event.key === "ArrowLeft") { + targetIndex = (index2 - 1 + tabs.length) % tabs.length; + } else if (event.key === "Home") { + targetIndex = 0; + } else if (event.key === "End") { + targetIndex = tabs.length - 1; + } + if (targetIndex !== null) { + event.preventDefault(); + activateTab(targetIndex, true); + } + }); + }); +} +function renderReportV1_0(spec) { + if (!value_exports2.Check(ReportSpecV1_0Schema, spec)) { + throw new Error("Invalid ReportSpec"); + } assertReportReferentialIntegrity(spec); const root2 = document.createElement("div"); root2.className = "rtichoke-report"; @@ -23078,37 +23403,286 @@ function renderReport(spec) { } const content = document.createElement("div"); content.className = "rtichoke-report__component-content"; - switch (component.spec.type) { - case "performance_table": - content.append(renderPerformanceTable(component.spec)); - break; - case "roc": - content.append(renderRocV2(component.spec)); - break; - case "calibration": - content.append(renderCalibrationV2(component.spec)); - break; - case "precision_recall": - content.append(renderPrecisionRecallV2(component.spec)); - break; - case "gains": - content.append(renderGainsV2(component.spec)); - break; - case "lift": - content.append(renderLiftV2(component.spec)); - break; - case "decision_curve": - content.append(renderDecisionCurveV2(component.spec)); - break; - case "interventions_avoided": - content.append(renderInterventionsAvoidedV2(component.spec)); - break; - } + content.append(renderStandaloneComponentContent(component.spec)); container.append(content); root2.append(container); } return root2; } +function renderReportV1_1(spec, options) { + if (!value_exports2.Check(ReportSpecV1_1Schema, spec)) { + throw new Error("Invalid ReportSpec"); + } + assertReportReferentialIntegrity(spec); + const hasTitle = Boolean(spec.title); + const usedDomIds = /* @__PURE__ */ new Set(); + const root2 = document.createElement("article"); + root2.className = "rtichoke-report"; + if (spec.title) { + const header3 = document.createElement("header"); + header3.className = "rtichoke-report__header"; + const title = document.createElement("h1"); + title.className = "rtichoke-report__title"; + title.textContent = spec.title; + header3.append(title); + root2.append(header3); + } + const navSections = []; + let totalNavigableTargets = 0; + for (const section of spec.sections) { + const secDomId = generateUniqueDomId(section.id, usedDomIds); + totalNavigableTargets++; + const navGroups = []; + for (const item of section.items) { + if (item.type === "group") { + const grpDomId = generateUniqueDomId(item.id, usedDomIds); + totalNavigableTargets++; + navGroups.push({ + rawId: item.id, + title: item.title, + domId: grpDomId + }); + } + } + navSections.push({ + rawId: section.id, + title: section.title, + domId: secDomId, + groups: navGroups + }); + } + if (totalNavigableTargets > 1) { + const nav = document.createElement("nav"); + nav.className = "rtichoke-report__nav"; + nav.setAttribute("aria-label", "Report sections"); + const navList = document.createElement("ul"); + navList.className = "rtichoke-report__nav-list"; + for (const sec of navSections) { + const navItem = document.createElement("li"); + navItem.className = "rtichoke-report__nav-item"; + const navLink = document.createElement("a"); + navLink.className = "rtichoke-report__nav-link"; + navLink.href = `#${sec.domId}`; + navLink.textContent = sec.title; + navItem.append(navLink); + if (sec.groups.length > 0) { + const subList = document.createElement("ul"); + subList.className = "rtichoke-report__nav-sublist"; + for (const grp of sec.groups) { + const subItem = document.createElement("li"); + subItem.className = "rtichoke-report__nav-subitem"; + const subLink = document.createElement("a"); + subLink.className = "rtichoke-report__nav-link"; + subLink.href = `#${grp.domId}`; + subLink.textContent = grp.title; + subItem.append(subLink); + subList.append(subItem); + } + navItem.append(subList); + } + navList.append(navItem); + } + nav.append(navList); + root2.append(nav); + } + const sectionHeadingTag = hasTitle ? "h2" : "h1"; + const groupHeadingTag = hasTitle ? "h3" : "h2"; + const directCompHeadingTag = hasTitle ? "h3" : "h2"; + const groupCompHeadingTag = hasTitle ? "h4" : "h3"; + const renderComponent = (comp, headingTag) => { + const container = document.createElement("section"); + container.className = "rtichoke-report__component"; + container.dataset.componentId = comp.id; + if (comp.title) { + const compHeadingDomId = generateUniqueDomId( + `heading-${comp.id}`, + usedDomIds + ); + const titleEl = document.createElement(headingTag); + titleEl.className = "rtichoke-report__component-title"; + titleEl.id = compHeadingDomId; + titleEl.textContent = comp.title; + container.setAttribute("aria-labelledby", compHeadingDomId); + container.append(titleEl); + } + const content = document.createElement("div"); + content.className = "rtichoke-report__component-content"; + content.append(renderStandaloneComponentContent(comp.spec)); + container.append(content); + return container; + }; + const renderGroup = (item, grpNav, sectionPanelTabId) => { + const grpSection = document.createElement("section"); + grpSection.className = "rtichoke-report__group"; + grpSection.id = grpNav.domId; + grpSection.dataset.groupId = item.id; + const grpHeadingDomId = generateUniqueDomId( + `heading-${item.id}`, + usedDomIds + ); + const grpHeading = document.createElement(groupHeadingTag); + grpHeading.className = "rtichoke-report__group-title"; + if (sectionPanelTabId) { + grpHeading.classList.add("rtichoke-report__group-title--tab-panel"); + } + grpHeading.id = grpHeadingDomId; + grpHeading.textContent = item.title; + grpSection.setAttribute( + "aria-labelledby", + sectionPanelTabId ?? grpHeadingDomId + ); + grpSection.append(grpHeading); + if (options.groupPresentation === "tabs") { + const tablist = document.createElement("div"); + tablist.className = "rtichoke-report__tablist"; + tablist.setAttribute("role", "tablist"); + tablist.setAttribute("aria-labelledby", grpHeadingDomId); + const tabs = []; + const panels = []; + item.components.forEach((comp, compIdx) => { + const tabDomId = generateUniqueDomId( + `tab-${item.id}-${comp.id}`, + usedDomIds + ); + const panelDomId = generateUniqueDomId( + `panel-${item.id}-${comp.id}`, + usedDomIds + ); + const tab = document.createElement("button"); + tab.className = "rtichoke-report__tab"; + tab.type = "button"; + tab.id = tabDomId; + tab.setAttribute("role", "tab"); + tab.setAttribute("aria-controls", panelDomId); + tab.setAttribute("aria-selected", compIdx === 0 ? "true" : "false"); + tab.tabIndex = compIdx === 0 ? 0 : -1; + tab.textContent = comp.title || comp.id; + const panel = document.createElement("section"); + panel.className = "rtichoke-report__component rtichoke-report__tabpanel"; + panel.id = panelDomId; + panel.setAttribute("role", "tabpanel"); + panel.setAttribute("aria-labelledby", tabDomId); + panel.tabIndex = 0; + panel.dataset.componentId = comp.id; + panel.hidden = compIdx !== 0; + const content = document.createElement("div"); + content.className = "rtichoke-report__component-content"; + content.append(renderStandaloneComponentContent(comp.spec)); + panel.append(content); + tabs.push(tab); + panels.push(panel); + tablist.append(tab); + }); + wireTabInteraction(tabs, panels); + grpSection.append(tablist, ...panels); + } else { + for (const comp of item.components) { + grpSection.append(renderComponent(comp, groupCompHeadingTag)); + } + } + return grpSection; + }; + for (let i = 0; i < spec.sections.length; i++) { + const sectionSpec = spec.sections[i]; + const secNav = navSections[i]; + const secSection = document.createElement("section"); + secSection.className = "rtichoke-report__section"; + secSection.id = secNav.domId; + secSection.dataset.sectionId = sectionSpec.id; + const secHeadingDomId = generateUniqueDomId( + `heading-${sectionSpec.id}`, + usedDomIds + ); + const secHeading = document.createElement(sectionHeadingTag); + secHeading.className = "rtichoke-report__section-title"; + secHeading.id = secHeadingDomId; + secHeading.textContent = sectionSpec.title; + secSection.setAttribute("aria-labelledby", secHeadingDomId); + secSection.append(secHeading); + const groups2 = sectionSpec.items.filter( + (item) => item.type === "group" + ); + const useSectionGroupTabs = options.sectionGroupPresentation === "tabs" && groups2.length > 1; + let groupIndex2 = 0; + let renderedSectionGroupTabs = false; + for (const item of sectionSpec.items) { + if (item.type === "component") { + secSection.append(renderComponent(item, directCompHeadingTag)); + } else if (item.type === "group") { + if (useSectionGroupTabs) { + if (renderedSectionGroupTabs) { + continue; + } + renderedSectionGroupTabs = true; + const tablist = document.createElement("div"); + tablist.className = "rtichoke-report__tablist rtichoke-report__section-group-tablist"; + tablist.setAttribute("role", "tablist"); + tablist.setAttribute("aria-labelledby", secHeadingDomId); + const tabs = []; + const panels = []; + groups2.forEach((group2, tabIndex) => { + const groupNav = secNav.groups[tabIndex]; + const tabDomId = generateUniqueDomId( + `section-group-tab-${sectionSpec.id}-${group2.id}`, + usedDomIds + ); + const tab = document.createElement("button"); + tab.className = "rtichoke-report__tab"; + tab.type = "button"; + tab.id = tabDomId; + tab.setAttribute("role", "tab"); + tab.setAttribute("aria-controls", groupNav.domId); + tab.setAttribute("aria-selected", tabIndex === 0 ? "true" : "false"); + tab.tabIndex = tabIndex === 0 ? 0 : -1; + tab.textContent = group2.title; + const panel = renderGroup(group2, groupNav, tabDomId); + panel.classList.add("rtichoke-report__tabpanel"); + panel.setAttribute("role", "tabpanel"); + panel.setAttribute("aria-labelledby", tabDomId); + panel.tabIndex = 0; + panel.hidden = tabIndex !== 0; + tabs.push(tab); + panels.push(panel); + tablist.append(tab); + }); + wireTabInteraction(tabs, panels); + secSection.append(tablist, ...panels); + } else { + secSection.append(renderGroup(item, secNav.groups[groupIndex2++])); + } + } + } + root2.append(secSection); + } + return root2; +} +function renderReport(spec, options) { + if (!spec || typeof spec !== "object") { + throw new Error("Invalid ReportSpec"); + } + const groupPresentation = options?.groupPresentation ?? "stacked"; + const sectionGroupPresentation = options?.sectionGroupPresentation ?? "stacked"; + if (options !== void 0 && (typeof options !== "object" || options === null || options.groupPresentation !== void 0 && options.groupPresentation !== "stacked" && options.groupPresentation !== "tabs")) { + throw new Error( + "Invalid render options: groupPresentation must be 'stacked' or 'tabs'" + ); + } + if (options !== void 0 && options.sectionGroupPresentation !== void 0 && options.sectionGroupPresentation !== "stacked" && options.sectionGroupPresentation !== "tabs") { + throw new Error( + "Invalid render options: sectionGroupPresentation must be 'stacked' or 'tabs'" + ); + } + if (spec.schemaVersion === "1.0") { + return renderReportV1_0(spec); + } + if (spec.schemaVersion === "1.1") { + return renderReportV1_1(spec, { + groupPresentation, + sectionGroupPresentation + }); + } + throw new Error("Invalid ReportSpec"); +} // src/render/roc.ts var RTICHOKE_COLORS3 = [ @@ -23176,13 +23750,16 @@ function renderRoc(spec) { }); } export { + AUROCSummaryMetricSchema, CalibrationSpecSchema, + CalibrationV2DatumSchema, CalibrationV2SpecSchema, DecisionCurveV2DatumSchema, DecisionCurveV2EvaluationSchema, DecisionCurveV2ReferenceSchema, DecisionCurveV2SeriesSchema, DecisionCurveV2SpecSchema, + DiscreteCalibrationV2DatumSchema, DisplayGroupingSpecSchema, DisplayRoleSchema, EvaluationSpecSchema, @@ -23202,21 +23779,33 @@ export { PerformanceMetricValueSchema, PerformanceTableRowSchema, PerformanceTableSpecSchema, + PopulationSummaryOwnerSpecSchema, PrecisionRecallV2SpecSchema, + PrevalenceSummaryMetricSchema, RTICHOKE_BROWSER_THEME, RTICHOKE_COLORS2 as RTICHOKE_COLORS, ReferenceLineV2SpecSchema, ReportComponentSchema, + ReportComponentV1_1Schema, + ReportGroupSchema, + ReportSectionSchema, ReportSpecSchema, + ReportSpecV1_0Schema, + ReportSpecV1_1Schema, RocSpecSchema, RocV2SpecSchema, RtichokeChartSpecSchema, RtichokeChartSpecV2Schema, SeriesSpecSchema, + SmoothCalibrationV2DatumSchema, + StandaloneCanonicalSpecSchema, + SummaryMetricSchema, + SummaryMetricsSpecSchema, TreatAllReferenceSchema, TreatNoneReferenceSchema, assertPerformanceTableReferentialIntegrity, assertReportReferentialIntegrity, + assertSummaryMetricsReferentialIntegrity, assertV2ReferentialIntegrity, calibrationSpecFromRtichokeRows, calibrationV2SpecFromRtichokeRows, @@ -23231,6 +23820,7 @@ export { renderReport, renderRoc, renderRocV2, + renderSummaryMetrics, resolveV2RenderOptions, rocSpecFromRtichokePython, rocSpecFromRtichokeR, diff --git a/src/rtichoke/_viz_spec_v2.py b/src/rtichoke/_viz_spec_v2.py index 3098b3a5..48ff236d 100644 --- a/src/rtichoke/_viz_spec_v2.py +++ b/src/rtichoke/_viz_spec_v2.py @@ -262,8 +262,13 @@ def _lift_v2_spec_from_performance_data( evaluation_metadata: Mapping[str, _EvaluationMetadata], ) -> dict[str, object]: """Build a canonical lift-v2 spec from production performance quantities.""" + finite_rows = performance_data.filter( + pl.col("chosen_cutoff").is_finite() + & pl.col("ppcr").is_finite() + & pl.col("lift").is_finite() + ) spec = _curve_v2_spec_from_performance_data( - performance_data, + finite_rows, evaluation_metadata, chart_type="lift", ) diff --git a/src/rtichoke/summary_report/summary_report.py b/src/rtichoke/summary_report/summary_report.py index 156587e7..9d58af54 100644 --- a/src/rtichoke/summary_report/summary_report.py +++ b/src/rtichoke/summary_report/summary_report.py @@ -9,12 +9,27 @@ import numpy as np from rtichoke._calibration_viz_spec_v2 import _calibration_v2_spec_from_curve_list +from rtichoke._decision_curve_viz_spec_v2 import ( + _decision_curve_v2_spec_from_performance_data, +) +from rtichoke._interventions_avoided_viz_spec_v2 import ( + _interventions_avoided_v2_spec_from_performance_data, +) from rtichoke._performance_table_spec import ( _performance_table_spec_from_performance_data, ) from rtichoke._report_browser import RtichokeBrowserReport -from rtichoke._report_spec import _report_spec_from_components -from rtichoke._viz_spec_v2 import _roc_v2_spec_from_performance_data +from rtichoke._report_spec import _build_report_spec_v11 +from rtichoke._summary_metrics_spec import ( + _auroc_summary_metrics_spec, + _prevalence_summary_metrics_spec, +) +from rtichoke._viz_spec_v2 import ( + _gains_v2_spec_from_performance_data, + _lift_v2_spec_from_performance_data, + _precision_recall_v2_spec_from_performance_data, + _roc_v2_spec_from_performance_data, +) from rtichoke.calibration.calibration import _create_calibration_curve_list from rtichoke.performance_data.performance_data import prepare_performance_data from rtichoke.processing.evaluation_semantics import _build_evaluation_metadata @@ -42,12 +57,6 @@ def create_summary_report( calculations, canonical standalone component builders, canonical ReportSpec assembly, and the vendored ``rtichoke_viz`` ``renderReport()`` composer. - The first browser report contains a canonical PerformanceTable, ROC-v2, and - calibration-v2 component, in that order. The browser renderer writes an HTML - file plus the vendored ``rtichoke-viz.js`` and ``rtichoke-viz.css`` assets - beside it, and returns the written HTML path. The historical R path retains - its existing return behavior (``None``). - Parameters ---------- probs : Dict[str, np.ndarray] @@ -89,25 +98,183 @@ def _create_browser_summary_report( *, output_file: str | Path, ) -> Path: - """Build the first public canonical browser report from production outputs.""" - performance_data = prepare_performance_data(probs, reals) + """Build the canonical static ReportSpec v1.1 browser summary report.""" metadata = _build_evaluation_metadata(probs, reals, np.array([])) + + # Stratified by probability threshold + perf_data_thresh = prepare_performance_data( + probs, reals, stratified_by=("probability_threshold",), by=0.01 + ) + # Stratified by PPCR + perf_data_ppcr = prepare_performance_data( + probs, reals, stratified_by=("ppcr",), by=0.01 + ) + calibration_curve_list = _create_calibration_curve_list(probs, reals) - performance_table = _performance_table_spec_from_performance_data( - performance_data, metadata + # Specs + prev_spec = _prevalence_summary_metrics_spec(perf_data_thresh, metadata) + auroc_spec = _auroc_summary_metrics_spec(probs, reals, metadata) + + calib_smooth_spec = _calibration_v2_spec_from_curve_list( + calibration_curve_list, metadata, calibration_type="smooth" + ) + calib_discrete_spec = _calibration_v2_spec_from_curve_list( + calibration_curve_list, metadata, calibration_type="discrete" ) - roc = _roc_v2_spec_from_performance_data(performance_data, metadata) - calibration = _calibration_v2_spec_from_curve_list(calibration_curve_list, metadata) - - report = _report_spec_from_components( - [ - {"title": "Performance", "spec": performance_table}, - {"title": "ROC", "spec": roc}, - {"title": "Calibration", "spec": calibration}, - ], - title="rtichoke summary report", + + roc_thresh_spec = _roc_v2_spec_from_performance_data(perf_data_thresh, metadata) + pr_thresh_spec = _precision_recall_v2_spec_from_performance_data( + perf_data_thresh, metadata ) + gains_thresh_spec = _gains_v2_spec_from_performance_data(perf_data_thresh, metadata) + lift_thresh_spec = _lift_v2_spec_from_performance_data(perf_data_thresh, metadata) + + roc_ppcr_spec = _roc_v2_spec_from_performance_data(perf_data_ppcr, metadata) + pr_ppcr_spec = _precision_recall_v2_spec_from_performance_data( + perf_data_ppcr, metadata + ) + gains_ppcr_spec = _gains_v2_spec_from_performance_data(perf_data_ppcr, metadata) + lift_ppcr_spec = _lift_v2_spec_from_performance_data(perf_data_ppcr, metadata) + + decision_curve_spec = _decision_curve_v2_spec_from_performance_data( + perf_data_thresh, metadata + ) + interventions_avoided_spec = _interventions_avoided_v2_spec_from_performance_data( + perf_data_thresh, metadata + ) + + table_thresh_spec = _performance_table_spec_from_performance_data( + perf_data_thresh, metadata + ) + table_ppcr_spec = _performance_table_spec_from_performance_data( + perf_data_ppcr, metadata + ) + + sections = [ + { + "id": "prevalence", + "title": "Prevalence", + "components": [ + { + "id": "prevalence-summary", + "title": "Prevalence summary", + "spec": prev_spec, + } + ], + }, + { + "id": "calibration", + "title": "Calibration", + "components": [ + { + "id": "calibration-smooth", + "title": "Smooth", + "spec": calib_smooth_spec, + }, + { + "id": "calibration", + "title": "Discrete", + "spec": calib_discrete_spec, + }, + ], + }, + { + "id": "discrimination", + "title": "Discrimination", + "components": [ + { + "id": "auroc", + "title": "AUROC", + "spec": auroc_spec, + } + ], + "groups": [ + { + "id": "discrimination-probability-threshold", + "title": "By Probability Threshold", + "components": [ + {"id": "roc", "title": "ROC", "spec": roc_thresh_spec}, + { + "id": "precision-recall", + "title": "Precision-Recall", + "spec": pr_thresh_spec, + }, + { + "id": "gains", + "title": "Gains", + "spec": gains_thresh_spec, + }, + {"id": "lift", "title": "Lift", "spec": lift_thresh_spec}, + ], + }, + { + "id": "discrimination-ppcr", + "title": "By PPCR", + "components": [ + {"id": "roc-2", "title": "ROC", "spec": roc_ppcr_spec}, + { + "id": "precision-recall-2", + "title": "Precision-Recall", + "spec": pr_ppcr_spec, + }, + { + "id": "gains-2", + "title": "Gains", + "spec": gains_ppcr_spec, + }, + {"id": "lift-2", "title": "Lift", "spec": lift_ppcr_spec}, + ], + }, + ], + }, + { + "id": "utility", + "title": "Utility", + "components": [ + { + "id": "decision-curve", + "title": "Decision Curve", + "spec": decision_curve_spec, + }, + { + "id": "interventions-avoided", + "title": "Interventions Avoided", + "spec": interventions_avoided_spec, + }, + ], + }, + { + "id": "performance-table", + "title": "Performance Table", + "groups": [ + { + "id": "performance-table-probability-threshold", + "title": "By Probability Threshold", + "components": [ + { + "id": "performance-table", + "title": "Performance Table", + "spec": table_thresh_spec, + } + ], + }, + { + "id": "performance-table-ppcr", + "title": "By PPCR", + "components": [ + { + "id": "performance-table-2", + "title": "Performance Table", + "spec": table_ppcr_spec, + } + ], + }, + ], + }, + ] + + report = _build_report_spec_v11(sections, title="rtichoke summary report") return RtichokeBrowserReport(cast(dict[str, Any], report)).write_html(output_file) diff --git a/tests/test_calibration_v2.py b/tests/test_calibration_v2.py index 3efa3988..25d3b34e 100644 --- a/tests/test_calibration_v2.py +++ b/tests/test_calibration_v2.py @@ -9,7 +9,7 @@ _performance_table_spec_from_performance_data, ) from rtichoke._report_browser import RtichokeBrowserReport -from rtichoke._report_spec import _report_spec_from_components +from rtichoke._report_spec import _build_report_spec_v11 from rtichoke._viz_browser import _calibration_spec_from_curve_list from rtichoke._viz_spec_v2 import _roc_v2_spec_from_performance_data from rtichoke.calibration.calibration import ( @@ -244,11 +244,13 @@ def test_calibration_v2_complete_spec_embeds_unchanged_in_report(): calibration = _calibration_v2_spec_from_curve_list( _create_calibration_curve_list(probs, reals), _metadata(probs, reals) ) - report = _report_spec_from_components([{"spec": calibration}]) + report = _build_report_spec_v11( + [{"id": "sec-1", "components": [{"id": "calibration", "spec": calibration}]}] + ) - assert report["components"][0]["id"] == "calibration" - assert report["components"][0]["spec"] is calibration - assert report["components"][0]["spec"] == calibration + assert report["sections"][0]["items"][0]["id"] == "calibration" + assert report["sections"][0]["items"][0]["spec"] is calibration + assert report["sections"][0]["items"][0]["spec"] == calibration def test_real_performance_table_roc_calibration_report_uses_shared_renderer(tmp_path): @@ -261,11 +263,16 @@ def test_real_performance_table_roc_calibration_report_uses_shared_renderer(tmp_ calibration = _calibration_v2_spec_from_curve_list( _create_calibration_curve_list(probs, reals), metadata ) - report = _report_spec_from_components( + report = _build_report_spec_v11( [ - {"title": "Performance", "spec": table}, - {"title": "ROC", "spec": roc}, - {"title": "Calibration", "spec": calibration}, + { + "id": "sec-1", + "components": [ + {"id": "performance-table", "title": "Performance", "spec": table}, + {"id": "roc", "title": "ROC", "spec": roc}, + {"id": "calibration", "title": "Calibration", "spec": calibration}, + ], + } ] ) @@ -275,16 +282,16 @@ def test_real_performance_table_roc_calibration_report_uses_shared_renderer(tmp_ html = output.read_text(encoding="utf-8") viz_js = (tmp_path / "rtichoke-viz.js").read_text(encoding="utf-8") - assert [component["id"] for component in report["components"]] == [ + assert [item["id"] for item in report["sections"][0]["items"]] == [ "performance-table", "roc", "calibration", ] - assert report["components"][2]["spec"] is calibration + assert report["sections"][0]["items"][2]["spec"] is calibration assert _embedded_report(html) == report assert 'import { renderReport } from "./rtichoke-viz.js";' not in html assert viz_js in html - assert "append(renderReport(spec))" in html + assert 'sectionGroupPresentation: "tabs"' in html def test_duplicate_evaluation_ids_remain_component_local_in_real_report(): @@ -301,17 +308,26 @@ def test_duplicate_evaluation_ids_remain_component_local_in_real_report(): _create_calibration_curve_list(probs, reals), metadata ), ) - report = _report_spec_from_components( - [{"spec": table}, {"spec": roc}, {"spec": calibration}] + report = _build_report_spec_v11( + [ + { + "id": "sec-1", + "components": [ + {"id": "performance-table", "spec": table}, + {"id": "roc", "spec": roc}, + {"id": "calibration", "spec": calibration}, + ], + } + ] ) assert table["evaluations"][0]["id"] == "evaluation-1" assert roc["evaluations"][0]["id"] == "evaluation-1" assert calibration["evaluations"][0]["id"] == "evaluation-1" assert "evaluations" not in report - assert report["components"][0]["spec"] is table - assert report["components"][1]["spec"] is roc - assert report["components"][2]["spec"] is calibration + assert report["sections"][0]["items"][0]["spec"] is table + assert report["sections"][0]["items"][1]["spec"] is roc + assert report["sections"][0]["items"][2]["spec"] is calibration def test_existing_v1_calibration_adapter_and_public_plotly_behavior_are_unchanged(): diff --git a/tests/test_report_browser.py b/tests/test_report_browser.py index 5874a3bc..ca41d2e5 100644 --- a/tests/test_report_browser.py +++ b/tests/test_report_browser.py @@ -8,7 +8,7 @@ _performance_table_times_spec_from_performance_data, ) from rtichoke._report_browser import RtichokeBrowserReport -from rtichoke._report_spec import _report_spec_from_components +from rtichoke._report_spec import _build_report_spec_v11 from rtichoke._viz_spec_v2 import ( _gains_v2_spec_from_performance_data, _roc_v2_spec_from_performance_data, @@ -36,11 +36,16 @@ def test_browser_report_uses_real_producers_and_only_shared_render_report(tmp_pa table = _performance_table_spec_from_performance_data(performance_data, metadata) roc = _roc_v2_spec_from_performance_data(performance_data, metadata) gains = _gains_v2_spec_from_performance_data(performance_data, metadata) - report = _report_spec_from_components( + report = _build_report_spec_v11( [ - {"title": "Performance", "spec": table}, - {"title": "ROC", "spec": roc}, - {"title": "Gains", "spec": gains}, + { + "id": "sec-1", + "components": [ + {"id": "performance-table", "title": "Performance", "spec": table}, + {"id": "roc", "title": "ROC", "spec": roc}, + {"id": "gains", "title": "Gains", "spec": gains}, + ], + } ], title="Canonical report", ) @@ -53,9 +58,10 @@ def test_browser_report_uses_real_producers_and_only_shared_render_report(tmp_pa assert 'import { renderReport } from "./rtichoke-viz.js";' not in html assert viz_js in html - assert "append(renderReport(spec))" in html + assert 'sectionGroupPresentation: "tabs"' in html + assert 'groupPresentation: "stacked"' in html assert _embedded_report(html) == report - assert [component["id"] for component in report["components"]] == [ + assert [item["id"] for item in report["sections"][0]["items"]] == [ "performance-table", "roc", "gains", @@ -93,12 +99,21 @@ def test_browser_report_preserves_component_local_evaluation_ids_and_time_contex static_data, _build_evaluation_metadata(probs, reals, np.array([])), ) - report = _report_spec_from_components( - [{"spec": time_table}, {"spec": roc}, {"spec": roc}] + report = _build_report_spec_v11( + [ + { + "id": "sec-1", + "components": [ + {"id": "performance-table", "spec": time_table}, + {"id": "roc", "spec": roc}, + {"id": "roc-2", "spec": roc}, + ], + } + ] ) assert "horizon" not in report - assert [component["id"] for component in report["components"]] == [ + assert [item["id"] for item in report["sections"][0]["items"]] == [ "performance-table", "roc", "roc-2", diff --git a/tests/test_report_spec.py b/tests/test_report_spec.py index 3ba52b0a..efb78e99 100644 --- a/tests/test_report_spec.py +++ b/tests/test_report_spec.py @@ -4,7 +4,7 @@ import pytest -from rtichoke._report_spec import _report_spec_from_components +from rtichoke._report_spec import _build_report_spec_v11 from rtichoke.summary_report import summary_report as legacy_summary_report @@ -26,7 +26,6 @@ def _curve_spec( chart_type: str, *, evaluations: list[dict[str, object]] | None = None, - horizon: float | None = None, ) -> dict[str, Any]: evaluations = evaluations or [ _evaluation("evaluation-1", "population-a", "model-a") @@ -41,8 +40,6 @@ def _curve_spec( "evaluationId": "evaluation-1", "display": display, } - if horizon is not None: - series["horizon"] = horizon return { "schemaVersion": "2.0", "type": chart_type, @@ -57,204 +54,87 @@ def _curve_spec( } -def _performance_table_spec(*, time_dependent: bool = False) -> dict[str, Any]: - row: dict[str, object] = { - "evaluationId": "evaluation-1", - "operatingPoint": { - "type": "probability_threshold", - "value": 0.5, - }, - "values": [ - { - "metricId": "sensitivity", - "estimate": 0.8, - } - ], - } - if time_dependent: - row["horizon"] = 365.0 - row["context"] = { - "censoringHeuristic": "include", - "competingEventHeuristic": "exclude", - } +def _summary_metrics_spec(metric_type: str) -> dict[str, Any]: return { - "schemaVersion": "2.0", - "type": "performance_table", - "evaluations": [_evaluation("evaluation-1", "population-a", "model-a")], + "schemaVersion": "1.0", + "type": "summary_metrics", + "title": "Summary", + "evaluations": [], + "populations": [{"id": "population-1", "label": "Population"}], "metrics": [ { - "id": "sensitivity", - "label": "Sensitivity", + "metric": metric_type, + "owner": {"type": "population", "populationId": "population-1"}, + "estimate": 0.25, } ], - "rows": [row], } -def test_core_composition_and_order() -> None: - performance_table = _performance_table_spec() - roc = _curve_spec("roc") - calibration = _curve_spec("calibration") +def test_build_report_spec_v11_structure() -> None: + prev_spec = _summary_metrics_spec("prevalence") + roc_spec = _curve_spec("roc") - report = _report_spec_from_components( - [ - { - "spec": performance_table, - "title": "Performance", - }, - {"spec": roc}, - { - "spec": calibration, - "title": "Calibration", - }, - ], - title="Model report", - ) - - assert report["schemaVersion"] == "1.0" - assert report["type"] == "report" - assert report["title"] == "Model report" - component_ids = [component["id"] for component in report["components"]] - component_types = [component["spec"]["type"] for component in report["components"]] - assert component_ids == [ - "performance-table", - "roc", - "calibration", - ] - assert component_types == [ - "performance_table", - "roc", - "calibration", - ] - - -def test_component_ids_are_deterministic_and_unique() -> None: - first_roc = _curve_spec("roc") - second_roc = _curve_spec("roc") - inputs = [ - {"spec": first_roc}, - {"spec": second_roc}, - {"spec": _curve_spec("lift")}, + sections = [ + { + "id": "prevalence", + "title": "Prevalence", + "components": [ + {"id": "prevalence-summary", "title": "Summary", "spec": prev_spec} + ], + }, + { + "id": "discrimination", + "title": "Discrimination", + "groups": [ + { + "id": "discrimination-probability-threshold", + "title": "By Threshold", + "components": [{"id": "roc", "title": "ROC", "spec": roc_spec}], + } + ], + }, ] - first = _report_spec_from_components(inputs) - second = _report_spec_from_components(inputs) - - ids = [component["id"] for component in first["components"]] - second_ids = [component["id"] for component in second["components"]] - assert ids == ["roc", "roc-2", "lift"] - assert ids == second_ids - assert len(ids) == len(set(ids)) - assert "series-1" not in ids - - -def test_specs_remain_complete_and_component_local() -> None: - roc = _curve_spec("roc") - calibration = _curve_spec("calibration") - - report = _report_spec_from_components( - [ - {"spec": roc}, - {"spec": calibration}, - ] - ) - - assert report["components"][0]["spec"] is roc - assert report["components"][1]["spec"] is calibration - assert roc["evaluations"] == calibration["evaluations"] - assert roc["evaluations"][0]["id"] == "evaluation-1" - assert calibration["evaluations"][0]["id"] == "evaluation-1" - - -def test_semantics_pass_through_unchanged() -> None: - known = _curve_spec( - "roc", - evaluations=[ - _evaluation("evaluation-1", "population-a", "model-a"), - _evaluation("evaluation-2", "population-b", "model-b"), - ], - ) - unknown = _curve_spec( - "calibration", - evaluations=[_evaluation("evaluation-1", "population-c")], - ) - - report = _report_spec_from_components( - [ - {"spec": known}, - {"spec": unknown}, - ] - ) - - assert report["components"][0]["spec"] is known - assert report["components"][1]["spec"] is unknown - assert known["evaluations"][0]["model"] == "model-a" - populations = {item["population"] for item in known["evaluations"]} - assert populations == { - "population-a", - "population-b", - } - assert "model" not in unknown["evaluations"][0] - assert unknown["evaluations"][0]["population"] == "population-c" - - -def test_time_dependent_specs_pass_through_unchanged() -> None: - table = _performance_table_spec(time_dependent=True) - gains = _curve_spec("gains", horizon=365.0) - - report = _report_spec_from_components( - [ - {"spec": table}, - {"spec": gains}, - ] + report = _build_report_spec_v11(sections, title="Test Report") + assert report["schemaVersion"] == "1.1" + assert report["type"] == "report" + assert report["title"] == "Test Report" + assert len(report["sections"]) == 2 + assert report["sections"][0]["id"] == "prevalence" + assert report["sections"][0]["items"][0]["id"] == "prevalence-summary" + assert report["sections"][1]["id"] == "discrimination" + assert ( + report["sections"][1]["items"][0]["id"] + == "discrimination-probability-threshold" ) + assert report["sections"][1]["items"][0]["components"][0]["id"] == "roc" - assert report["components"][0]["spec"] is table - assert report["components"][1]["spec"] is gains - assert table["rows"][0]["horizon"] == 365.0 - assert gains["series"][0]["horizon"] == 365.0 +def test_type_aware_schema_version_validation() -> None: + bad_v1_spec = _summary_metrics_spec("prevalence") + bad_v1_spec["schemaVersion"] = "2.0" # Invalid: summary_metrics must be 1.0 -def test_first_report_component_types_are_supported() -> None: - specs = [ - _performance_table_spec(), - _curve_spec("roc"), - _curve_spec("calibration"), - _curve_spec("precision_recall"), - _curve_spec("gains"), - _curve_spec("lift"), + sections = [ + { + "id": "prevalence", + "components": [{"id": "prevalence-summary", "spec": bad_v1_spec}], + } ] + with pytest.raises(ValueError, match="requires schemaVersion '1.0'"): + _build_report_spec_v11(sections) - report = _report_spec_from_components([{"spec": spec} for spec in specs]) + bad_v2_spec = _curve_spec("roc") + bad_v2_spec["schemaVersion"] = "1.0" # Invalid: roc must be 2.0 - component_ids = [component["id"] for component in report["components"]] - assert component_ids == [ - "performance-table", - "roc", - "calibration", - "precision-recall", - "gains", - "lift", + sections_v2 = [ + { + "id": "discrimination", + "components": [{"id": "roc", "spec": bad_v2_spec}], + } ] - - -def test_invalid_report_components_are_rejected() -> None: - with pytest.raises(ValueError, match="at least one component"): - _report_spec_from_components([]) - - with pytest.raises( - ValueError, - match="Unsupported ReportSpec component type", - ): - _report_spec_from_components( - [ - { - "spec": { - "type": "decision_curve", - } - } - ] - ) + with pytest.raises(ValueError, match="requires schemaVersion '2.0'"): + _build_report_spec_v11(sections_v2) def test_existing_summary_report_still_uses_r_backend( diff --git a/tests/test_rtichoke_viz_vendor.py b/tests/test_rtichoke_viz_vendor.py index 1c8c6cc4..43cf75fa 100644 --- a/tests/test_rtichoke_viz_vendor.py +++ b/tests/test_rtichoke_viz_vendor.py @@ -3,19 +3,19 @@ from pathlib import Path _VENDOR = Path(__file__).parents[1] / "src" / "rtichoke" / "_vendor" / "rtichoke_viz" -_RELEASE_DIR = "rtichoke-viz-0.10.0" -_SHA256 = "030a9e58c6367147b4904d73cf641d8ef3990d95e70b66022a99d6c8d37b3233" -_SOURCE_COMMIT = "b65b903e9456b5eb323dbe0bac823e9ff0c1bd01" +_RELEASE_DIR = "rtichoke-viz-0.14.0" +_SHA256 = "b7c30d12db4b3f8008ef035bd4f7e04c09d599ced5bc8606a4a4141c5cdf48ee" +_SOURCE_COMMIT = "ec3a382656ce5b1c735175d5a8fd1ceb4f153eaf" -def test_vendored_rtichoke_viz_v0100_provenance_archive_and_schemas(): +def test_vendored_rtichoke_viz_v0140_provenance_archive_and_schemas(): provenance = (_VENDOR / "VENDORED_FROM").read_text() - assert "release=v0.10.0" in provenance + assert "release=v0.14.0" in provenance assert f"source_commit={_SOURCE_COMMIT}" in provenance - assert "archive=rtichoke-viz-0.10.0.tar.gz" in provenance + assert "archive=rtichoke-viz-0.14.0.tar.gz" in provenance assert f"sha256={_SHA256}" in provenance - archive = _VENDOR / "rtichoke-viz-0.10.0.tar.gz" + archive = _VENDOR / "rtichoke-viz-0.14.0.tar.gz" assert hashlib.sha256(archive.read_bytes()).hexdigest() == _SHA256 with tarfile.open(archive, "r:gz") as release: assert set(release.getnames()) == { @@ -25,35 +25,40 @@ def test_vendored_rtichoke_viz_v0100_provenance_archive_and_schemas(): f"{_RELEASE_DIR}/rtichoke-viz.js", f"{_RELEASE_DIR}/rtichoke-viz.schema.json", f"{_RELEASE_DIR}/rtichoke-viz-v2.schema.json", + f"{_RELEASE_DIR}/rtichoke-viz-report.schema.json", } manifest = release.extractfile(f"{_RELEASE_DIR}/MANIFEST") assert manifest is not None assert manifest.read().decode() == ( - f"version=0.10.0\ncommit={_SOURCE_COMMIT}\n" + f"version=0.14.0\ncommit={_SOURCE_COMMIT}\n" ) for filename in ( "rtichoke-viz.css", "rtichoke-viz.js", "rtichoke-viz.schema.json", "rtichoke-viz-v2.schema.json", + "rtichoke-viz-report.schema.json", ): packaged = release.extractfile(f"{_RELEASE_DIR}/{filename}") assert packaged is not None assert (_VENDOR / filename).read_bytes() == packaged.read() - assert not (_VENDOR / "rtichoke-viz-0.9.0.tar.gz").exists() + assert not (_VENDOR / "rtichoke-viz-0.10.0.tar.gz").exists() assert (_VENDOR / "rtichoke-viz.js").stat().st_size > 0 assert (_VENDOR / "rtichoke-viz.css").stat().st_size > 0 v1_schema = (_VENDOR / "rtichoke-viz.schema.json").read_text() v2_schema = (_VENDOR / "rtichoke-viz-v2.schema.json").read_text() + report_schema = (_VENDOR / "rtichoke-viz-report.schema.json").read_text() assert '"$id": "https://rtichoke.dev/schema/viz/1.0.json"' in v1_schema assert '"$id": "https://rtichoke.dev/schema/viz/2.0.json"' in v2_schema + assert '"$id": "https://rtichoke.dev/schema/viz/report.json"' in report_schema assert '"decision_curve"' in v2_schema assert '"interventions_avoided"' in v2_schema + assert '"summary_metrics"' in report_schema -def test_v0100_bundle_keeps_existing_exports_and_time_dependent_surfaces(): +def test_v0140_bundle_keeps_existing_exports_and_time_dependent_surfaces(): bundle = (_VENDOR / "rtichoke-viz.js").read_text(encoding="utf-8") for export_name in ( "renderRoc", @@ -70,6 +75,7 @@ def test_v0100_bundle_keeps_existing_exports_and_time_dependent_surfaces(): "RtichokeChartSpecV2Schema", "renderPerformanceTable", "renderReport", + "SummaryMetricsSpecSchema", ): assert export_name in bundle diff --git a/tests/test_summary_metrics_spec.py b/tests/test_summary_metrics_spec.py new file mode 100644 index 00000000..b2776868 --- /dev/null +++ b/tests/test_summary_metrics_spec.py @@ -0,0 +1,74 @@ +import numpy as np +import pytest +from sklearn.metrics import roc_auc_score + +from rtichoke._summary_metrics_spec import ( + _auroc_summary_metrics_spec, + _compute_auroc_proc_compatible, + _prevalence_summary_metrics_spec, +) +from rtichoke.performance_data.performance_data import prepare_performance_data +from rtichoke.processing.evaluation_semantics import _build_evaluation_metadata + + +def test_auroc_proc_compatible_direction(): + # Normal orientation: median(controls) <= median(cases) + reals = np.array([0, 0, 0, 1, 1, 1]) + probs = np.array([0.1, 0.2, 0.3, 0.7, 0.8, 0.9]) + score = _compute_auroc_proc_compatible(reals, probs) + assert score == pytest.approx(1.0) + assert score == pytest.approx(roc_auc_score(reals, probs)) + + # Reversed orientation: median(controls) > median(cases) + # pROC auto-direction flips -probs + reals_rev = np.array([0, 0, 0, 1, 1, 1]) + probs_rev = np.array([0.9, 0.8, 0.7, 0.3, 0.2, 0.1]) + score_rev = _compute_auroc_proc_compatible(reals_rev, probs_rev) + assert score_rev == pytest.approx(1.0) + # Standard sklearn without reversing gives 0.0, but pROC auto-direction gives 1.0! + assert roc_auc_score(reals_rev, probs_rev) == pytest.approx(0.0) + assert score_rev == pytest.approx(roc_auc_score(reals_rev, -probs_rev)) + + +def test_auroc_single_class_returns_null(): + reals_all_zeros = np.array([0, 0, 0, 0]) + probs = np.array([0.1, 0.2, 0.3, 0.4]) + assert _compute_auroc_proc_compatible(reals_all_zeros, probs) is None + + reals_all_ones = np.array([1, 1, 1, 1]) + assert _compute_auroc_proc_compatible(reals_all_ones, probs) is None + + +def test_auroc_ties(): + reals = np.array([0, 0, 1, 1]) + probs = np.array([0.5, 0.5, 0.5, 0.5]) + assert _compute_auroc_proc_compatible(reals, probs) == pytest.approx(0.5) + + +def test_summary_metrics_spec_structure(): + probs = {"Model A": np.array([0.8, 0.7, 0.2, 0.1])} + reals = np.array([1, 1, 0, 0]) + perf_data = prepare_performance_data(probs, reals) + metadata = _build_evaluation_metadata(probs, reals, np.array([])) + + prev_spec = _prevalence_summary_metrics_spec(perf_data, metadata) + assert prev_spec["schemaVersion"] == "1.0" + assert prev_spec["type"] == "summary_metrics" + assert prev_spec["title"] == "Prevalence summary" + assert prev_spec["evaluations"] == [] + assert len(prev_spec["populations"]) == 1 + assert prev_spec["populations"][0]["id"] == "population-1" + assert prev_spec["metrics"][0]["owner"]["type"] == "population" + assert prev_spec["metrics"][0]["owner"]["populationId"] == "population-1" + assert prev_spec["metrics"][0]["estimate"] == pytest.approx(0.5) + + auroc_spec = _auroc_summary_metrics_spec(probs, reals, metadata) + assert auroc_spec["schemaVersion"] == "1.0" + assert auroc_spec["type"] == "summary_metrics" + assert auroc_spec["title"] == "AUROC" + assert auroc_spec["populations"] == [] + assert len(auroc_spec["evaluations"]) == 1 + assert auroc_spec["evaluations"][0]["id"] == "evaluation-1" + assert auroc_spec["metrics"][0]["owner"]["type"] == "evaluation" + assert auroc_spec["metrics"][0]["owner"]["evaluationId"] == "evaluation-1" + assert auroc_spec["metrics"][0]["estimate"] == pytest.approx(1.0) diff --git a/tests/test_summary_report_browser.py b/tests/test_summary_report_browser.py index 27096ce8..12c69c2f 100644 --- a/tests/test_summary_report_browser.py +++ b/tests/test_summary_report_browser.py @@ -102,9 +102,11 @@ def _assert_report_rendered(browser: subprocess.CompletedProcess[str]) -> None: assert browser.returncode == 0, browser.stderr assert "INFO:CONSOLE" not in browser.stderr, browser.stderr rendered = _rendered_report_html(browser.stdout) - assert "Performance" in rendered, browser.stderr - assert "ROC" in rendered + assert "Prevalence" in rendered, browser.stderr assert "Calibration" in rendered + assert "Discrimination" in rendered + assert "Utility" in rendered + assert "Performance Table" in rendered assert "= 2 @@ -167,21 +169,19 @@ def test_browser_summary_report_is_opt_in_and_uses_real_canonical_components( html = output.read_text(encoding="utf-8") report = _embedded_report(html) - assert [component["id"] for component in report["components"]] == [ - "performance-table", - "roc", - "calibration", - ] - assert [component["spec"]["type"] for component in report["components"]] == [ - "performance_table", - "roc", + assert report["schemaVersion"] == "1.1" + assert report["type"] == "report" + section_ids = [section["id"] for section in report["sections"]] + assert section_ids == [ + "prevalence", "calibration", + "discrimination", + "utility", + "performance-table", ] - assert report["components"][1]["spec"]["schemaVersion"] == "2.0" - assert report["components"][2]["spec"]["schemaVersion"] == "2.0" assert 'import { renderReport } from "./rtichoke-viz.js";' not in html assert viz_js_path.read_text(encoding="utf-8") in html - assert "append(renderReport(spec))" in html + assert 'sectionGroupPresentation: "tabs"' in html def test_browser_summary_report_executes_when_opened_directly(tmp_path): @@ -239,19 +239,18 @@ def test_browser_summary_report_preserves_component_local_identity(tmp_path): assert "populations" not in report assert "horizon" not in report - table, roc, calibration = [component["spec"] for component in report["components"]] - assert table["evaluations"][0]["id"] == "evaluation-1" - assert roc["evaluations"][0]["id"] == "evaluation-1" - assert calibration["evaluations"][0]["id"] == "evaluation-1" - assert [item["population"] for item in calibration["evaluations"]] == [ - "Population A", - "Population B", - ] - assert all("model" not in item for item in calibration["evaluations"]) - assert [item["display"]["role"] for item in calibration["series"]] == [ - "population", - "population", - ] + prev_spec = report["sections"][0]["items"][0]["spec"] + calib_smooth_spec = report["sections"][1]["items"][0]["spec"] + calib_discrete_spec = report["sections"][1]["items"][1]["spec"] + + assert prev_spec["schemaVersion"] == "1.0" + assert prev_spec["type"] == "summary_metrics" + assert len(prev_spec["populations"]) == 2 + assert ( + "evaluations" not in calib_smooth_spec["yAxis"] + ) # check omit yAxis.domain on smooth + assert calib_smooth_spec["yAxis"].get("domain") is None + assert calib_discrete_spec["yAxis"]["domain"] == [0, 1] def test_browser_summary_report_rejects_unknown_renderer(): diff --git a/uv.lock b/uv.lock index d921c5a3..28e2e333 100644 --- a/uv.lock +++ b/uv.lock @@ -2583,6 +2583,7 @@ dependencies = [ { name = "polars" }, { name = "polarstate" }, { name = "reactable" }, + { name = "scikit-learn" }, { name = "smoothstate" }, ] @@ -2602,7 +2603,6 @@ dev = [ { name = "pytest" }, { name = "pytest-cov" }, { name = "ruff" }, - { name = "scikit-learn" }, { name = "ty" }, { name = "uv" }, ] @@ -2618,6 +2618,7 @@ requires-dist = [ { name = "polars", specifier = ">=1.31.0" }, { name = "polarstate", specifier = "==0.1.8" }, { name = "reactable", specifier = ">=0.1.5" }, + { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "smoothstate", specifier = ">=0.1.1" }, ] provides-extras = ["matplotlib"] @@ -2633,7 +2634,6 @@ dev = [ { name = "pytest", specifier = ">=7.3.0,<8.0.0" }, { name = "pytest-cov", specifier = ">=4.0.0,<5.0.0" }, { name = "ruff", specifier = ">=0.11.0" }, - { name = "scikit-learn", specifier = ">=1.6.1" }, { name = "ty", specifier = ">=0.0.1a12" }, { name = "uv", specifier = ">=0.6.11" }, ] From 5f5d5b7b831389f06f4e6a6eedb5cd9a401a438c Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 29 Aug 2026 05:02:41 +0000 Subject: [PATCH 2/5] Restore static browser summary report parity Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- .github/workflows/python-package.yml | 5 +++-- tests/test_quarto_summary_report_browser.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 67890a85..af257bb4 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -52,14 +52,15 @@ jobs: prefix = "rtichoke/_vendor/rtichoke_viz/" required = { f"{prefix}VENDORED_FROM", - f"{prefix}rtichoke-viz-0.10.0.tar.gz", + f"{prefix}rtichoke-viz-0.14.0.tar.gz", f"{prefix}rtichoke-viz.js", f"{prefix}rtichoke-viz.css", f"{prefix}rtichoke-viz.schema.json", f"{prefix}rtichoke-viz-v2.schema.json", + f"{prefix}rtichoke-viz-report.schema.json", } assert required <= names - assert f"{prefix}rtichoke-viz-0.9.0.tar.gz" not in names + assert f"{prefix}rtichoke-viz-0.10.0.tar.gz" not in names PY - name: Run tests diff --git a/tests/test_quarto_summary_report_browser.py b/tests/test_quarto_summary_report_browser.py index 3878798f..b5a68849 100644 --- a/tests/test_quarto_summary_report_browser.py +++ b/tests/test_quarto_summary_report_browser.py @@ -137,7 +137,7 @@ def test_quarto_single_browser_summary_report(tmp_path): assert "ROC" in frame.content() assert "Calibration" in frame.content() - tbl_text = frame.locator("table").inner_text() + tbl_text = frame.locator("table").first.inner_text() assert "Model" in tbl_text or "True Positives" in tbl_text assert frame.locator("svg").count() >= 2 assert len(errors) == 0, f"Console errors found: {errors}" @@ -230,7 +230,7 @@ def test_quarto_two_browser_summary_reports(tmp_path): assert "ROC" in frame.content() assert "Calibration" in frame.content() - tbl_text = frame.locator("table").inner_text() + tbl_text = frame.locator("table").first.inner_text() assert "Model" in tbl_text or "True Positives" in tbl_text assert frame.locator("svg").count() >= 2 From 7984e925200e086d1fa392b2584cb87173dc3801 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 29 Aug 2026 05:06:16 +0000 Subject: [PATCH 3/5] Restore static browser summary report parity Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- tests/test_quarto_summary_report_browser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_quarto_summary_report_browser.py b/tests/test_quarto_summary_report_browser.py index b5a68849..54600475 100644 --- a/tests/test_quarto_summary_report_browser.py +++ b/tests/test_quarto_summary_report_browser.py @@ -137,7 +137,7 @@ def test_quarto_single_browser_summary_report(tmp_path): assert "ROC" in frame.content() assert "Calibration" in frame.content() - tbl_text = frame.locator("table").first.inner_text() + tbl_text = frame.locator(".rtichoke-performance-table__table").inner_text() assert "Model" in tbl_text or "True Positives" in tbl_text assert frame.locator("svg").count() >= 2 assert len(errors) == 0, f"Console errors found: {errors}" @@ -230,7 +230,7 @@ def test_quarto_two_browser_summary_reports(tmp_path): assert "ROC" in frame.content() assert "Calibration" in frame.content() - tbl_text = frame.locator("table").first.inner_text() + tbl_text = frame.locator(".rtichoke-performance-table__table").first.inner_text() assert "Model" in tbl_text or "True Positives" in tbl_text assert frame.locator("svg").count() >= 2 From b4b9ef79b0676cbee6461492c0f14af23bbad1ff Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 29 Aug 2026 05:11:08 +0000 Subject: [PATCH 4/5] Restore static browser summary report parity Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- tests/test_quarto_summary_report_browser.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/test_quarto_summary_report_browser.py b/tests/test_quarto_summary_report_browser.py index 54600475..daa80e23 100644 --- a/tests/test_quarto_summary_report_browser.py +++ b/tests/test_quarto_summary_report_browser.py @@ -137,7 +137,9 @@ def test_quarto_single_browser_summary_report(tmp_path): assert "ROC" in frame.content() assert "Calibration" in frame.content() - tbl_text = frame.locator(".rtichoke-performance-table__table").inner_text() + tbl_text = frame.locator( + ".rtichoke-performance-table__table" + ).first.inner_text() assert "Model" in tbl_text or "True Positives" in tbl_text assert frame.locator("svg").count() >= 2 assert len(errors) == 0, f"Console errors found: {errors}" @@ -230,7 +232,9 @@ def test_quarto_two_browser_summary_reports(tmp_path): assert "ROC" in frame.content() assert "Calibration" in frame.content() - tbl_text = frame.locator(".rtichoke-performance-table__table").first.inner_text() + tbl_text = frame.locator( + ".rtichoke-performance-table__table" + ).first.inner_text() assert "Model" in tbl_text or "True Positives" in tbl_text assert frame.locator("svg").count() >= 2 From f9aeb989f3af6489451fd5b6324044b1fc466045 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 29 Aug 2026 05:24:49 +0000 Subject: [PATCH 5/5] Restore static browser summary report parity Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- src/rtichoke/_summary_metrics_spec.py | 42 ++++++++++++---------- tests/test_summary_metrics_spec.py | 51 ++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 19 deletions(-) diff --git a/src/rtichoke/_summary_metrics_spec.py b/src/rtichoke/_summary_metrics_spec.py index d39dccc1..589c53f1 100644 --- a/src/rtichoke/_summary_metrics_spec.py +++ b/src/rtichoke/_summary_metrics_spec.py @@ -93,13 +93,10 @@ def _compute_auroc_proc_compatible( scores = probs_arr if med_controls <= med_cases else -probs_arr - try: - score_val = float(roc_auc_score(reals_arr, scores)) - if math.isnan(score_val) or not math.isfinite(score_val): - return None - return score_val - except Exception: + score_val = float(roc_auc_score(reals_arr, scores)) + if math.isnan(score_val) or not math.isfinite(score_val): return None + return score_val def _prevalence_summary_metrics_spec( @@ -110,17 +107,23 @@ def _prevalence_summary_metrics_spec( populations_list: list[_PopulationSpec] = [] metrics_list: list[dict[str, Any]] = [] - seen_populations: dict[str, str] = {} + seen_populations: dict[tuple[str, str], str] = {} pop_counter = 1 - for metadata in evaluation_metadata.values(): + for group, metadata in evaluation_metadata.items(): pop_name = metadata.population - if pop_name not in seen_populations: + label = "Population" if pop_name == _SHARED_POPULATION else pop_name + # Keep distinct populations with identical display labels distinct by keying on (group, pop_name) or pop_name + pop_key = ( + (group, pop_name) + if pop_name != _SHARED_POPULATION + and list(evaluation_metadata.values())[0].model is None + else (pop_name, pop_name) + ) + if pop_key not in seen_populations: pop_id = f"population-{pop_counter}" pop_counter += 1 - seen_populations[pop_name] = pop_id - - label = "Population" if pop_name == _SHARED_POPULATION else pop_name + seen_populations[pop_key] = pop_id populations_list.append({"id": pop_id, "label": label}) # Compute population prevalence from performance data @@ -138,18 +141,21 @@ def _prevalence_summary_metrics_spec( if prev_val is not None and math.isfinite(float(prev_val)): group_prevalence[group] = float(prev_val) - pop_estimates: dict[str, set[float]] = {} + pop_estimates: dict[tuple[str, str], set[float]] = {} for group, metadata in evaluation_metadata.items(): if group in group_prevalence: - pop_estimates.setdefault(metadata.population, set()).add( - group_prevalence[group] + pop_name = metadata.population + pop_key = ( + (group, pop_name) + if pop_name != _SHARED_POPULATION and metadata.model is None + else (pop_name, pop_name) ) + pop_estimates.setdefault(pop_key, set()).add(group_prevalence[group]) for pop_spec in populations_list: pop_id = pop_spec["id"] - # Find corresponding population name - pop_name = next(name for name, pid in seen_populations.items() if pid == pop_id) - estimates = pop_estimates.get(pop_name, set()) + pop_key = next(key for key, pid in seen_populations.items() if pid == pop_id) + estimates = pop_estimates.get(pop_key, set()) estimate: float | None = next(iter(estimates)) if len(estimates) == 1 else None metric_item: _PrevalenceMetric = { diff --git a/tests/test_summary_metrics_spec.py b/tests/test_summary_metrics_spec.py index b2776868..1de69cd2 100644 --- a/tests/test_summary_metrics_spec.py +++ b/tests/test_summary_metrics_spec.py @@ -8,7 +8,10 @@ _prevalence_summary_metrics_spec, ) from rtichoke.performance_data.performance_data import prepare_performance_data -from rtichoke.processing.evaluation_semantics import _build_evaluation_metadata +from rtichoke.processing.evaluation_semantics import ( + _EvaluationMetadata, + _build_evaluation_metadata, +) def test_auroc_proc_compatible_direction(): @@ -72,3 +75,49 @@ def test_summary_metrics_spec_structure(): assert auroc_spec["metrics"][0]["owner"]["type"] == "evaluation" assert auroc_spec["metrics"][0]["owner"]["evaluationId"] == "evaluation-1" assert auroc_spec["metrics"][0]["estimate"] == pytest.approx(1.0) + + +def test_prevalence_summary_metrics_spec_distinct_populations_same_label(): + probs = { + "Cohort 1": np.array([0.1, 0.2, 0.8, 0.9]), + "Cohort 2": np.array([0.2, 0.3, 0.7, 0.8]), + } + reals = { + "Cohort 1": np.array([0, 0, 1, 1]), + "Cohort 2": np.array([0, 1, 1, 1]), + } + perf_data = prepare_performance_data(probs, reals) + metadata = _build_evaluation_metadata(probs, reals, np.array([])) + + prev_spec = _prevalence_summary_metrics_spec(perf_data, metadata) + assert len(prev_spec["populations"]) == 2 + assert prev_spec["populations"][0]["id"] == "population-1" + assert prev_spec["populations"][1]["id"] == "population-2" + assert prev_spec["populations"][0]["label"] == "Cohort 1" + assert prev_spec["populations"][1]["label"] == "Cohort 2" + + # Distinct evaluation populations sharing identical display string ("Shared Label") + metadata_shared_label = { + "group-1": _EvaluationMetadata( + reference_group="group-1", + evaluation="group-1", + model=None, + population="Shared Label", + ), + "group-2": _EvaluationMetadata( + reference_group="group-2", + evaluation="group-2", + model=None, + population="Shared Label", + ), + } + + # Distinct populations remain distinct even if their display labels are identical + prev_spec_shared = _prevalence_summary_metrics_spec( + perf_data, metadata_shared_label + ) + assert len(prev_spec_shared["populations"]) == 2 + assert prev_spec_shared["populations"][0]["id"] == "population-1" + assert prev_spec_shared["populations"][1]["id"] == "population-2" + assert prev_spec_shared["populations"][0]["label"] == "Shared Label" + assert prev_spec_shared["populations"][1]["label"] == "Shared Label"