2 """Sensitivity matrix validation for performance evidence. 4 Records bounded sensitivity across planner-setting identity, noise placement, and 5 workload identity through one machine-reviewable benchmark surface. 8 python benchmarks/density_matrix/performance_evidence/sensitivity_matrix_validation.py 11 from __future__
import annotations
14 from collections
import defaultdict
15 from pathlib
import Path
17 REPO_ROOT = Path(__file__).resolve().parents[3]
18 if str(REPO_ROOT)
not in sys.path:
19 sys.path.insert(0, str(REPO_ROOT))
21 from benchmarks.density_matrix.performance_evidence.common
import (
22 performance_evidence_output_dir,
24 from benchmarks.density_matrix.performance_evidence.records
import (
25 build_performance_evidence_core_benchmark_records,
27 from benchmarks.density_matrix.performance_evidence.validation_support
import (
28 assemble_record_schema_case_bundle,
30 from benchmarks.density_matrix.validation_scaffold
import (
31 require_bundle_fields,
35 SUITE_NAME =
"performance_evidence_sensitivity_matrix" 36 ARTIFACT_FILENAME =
"sensitivity_matrix_bundle.json" 38 ARTIFACT_CORE_FIELDS = (
41 "record_schema_version",
53 if case[
"case_kind"] ==
"structured_family" 58 grouped: dict[str, list[dict]] = defaultdict(list)
60 grouped[case[
"review_group_id"]].append(case)
62 full_noise_groups = sum(
63 {entry[
"noise_pattern"]
for entry
in entries} == {
"sparse",
"periodic",
"dense"}
64 for entries
in grouped.values()
66 full_seed_groups = sum(
67 len({entry[
"seed"]
for entry
in entries}) >= 3
for entries
in grouped.values()
69 sensitivity_surface_pass = all(
70 len({entry[
"seed"]
for entry
in entries}) >= 3
71 and {entry[
"noise_pattern"]
for entry
in entries} == {
"sparse",
"periodic",
"dense"}
72 for entries
in grouped.values()
74 status =
"pass" if sensitivity_surface_pass
and len(cases) > 0
else "fail" 76 "total_cases": len(cases),
77 "review_groups": sorted(grouped),
78 "full_noise_groups": full_noise_groups,
79 "full_seed_groups": full_seed_groups,
80 "family_names": sorted({case[
"family_name"]
for case
in cases}),
81 "structured_qbits": sorted({case[
"qbit_num"]
for case
in cases}),
88 def main(argv: list[str] |
None =
None) -> int:
91 build_cases=build_sensitivity_matrix_cases,
92 build_artifact_bundle=build_sensitivity_matrix_bundle,
93 artifact_filename=ARTIFACT_FILENAME,
94 default_output_dir=DEFAULT_OUTPUT_DIR,
95 description=__doc__
or "",
96 output_dir_help=
"Directory to write the sensitivity matrix bundle into.",
97 quiet_report=
lambda b: print(
98 "full_noise_groups={full_noise_groups}, full_seed_groups={full_seed_groups}".format(
105 if __name__ ==
"__main__":
106 raise SystemExit(
main())
def build_sensitivity_matrix_cases()
def build_sensitivity_matrix_bundle
def performance_evidence_output_dir
def assemble_record_schema_case_bundle
def build_performance_evidence_core_benchmark_records()
def require_bundle_fields