Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
density_signal_validation.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 """Validation: Phase 3 planner-calibration density-aware signal surface.
3 
4 Builds a representative contrast matrix across supported span-budget planner
5 candidates, records state-vector-style proxy scores alongside benchmark-grounded
6 density-aware scores, and shows that explicit noise placement changes the
7 recorded density-aware score on real noisy mixed-state workloads.
8 
9 Run with:
10  python benchmarks/density_matrix/planner_calibration/density_signal_validation.py
11 """
12 
13 from __future__ import annotations
14 
15 import argparse
16 import json
17 import sys
18 from collections import defaultdict
19 from pathlib import Path
20 
21 REPO_ROOT = Path(__file__).resolve().parents[3]
22 if str(REPO_ROOT) not in sys.path:
23  sys.path.insert(0, str(REPO_ROOT))
24 
25 from benchmarks.density_matrix.partitioned_runtime.common import (
26  execute_partitioned_with_reference,
27 )
28 from benchmarks.density_matrix.planner_calibration.signals import (
29  PLANNER_CALIBRATION_DENSITY_AWARE_OBJECTIVE_NAME,
30  PLANNER_CALIBRATION_DENSITY_SIGNAL_SCHEMA_VERSION,
31  apply_density_scores_and_rankings,
32  build_density_signal_record,
33 )
34 from benchmarks.density_matrix.planner_calibration.case_selection import (
35  iter_density_signal_cases,
36 )
37 from benchmarks.density_matrix.planner_surface.common import build_software_metadata
38 from squander.partitioning.noisy_runtime import PHASE3_RUNTIME_PATH_BASELINE
39 
40 SUITE_NAME = "phase3_planner_calibration_density_signal"
41 ARTIFACT_FILENAME = "density_signal_bundle.json"
42 DEFAULT_OUTPUT_DIR = (
43  REPO_ROOT
44  / "benchmarks"
45  / "density_matrix"
46  / "artifacts"
47  / "planner_calibration"
48  / "density_signal"
49 )
50 ARTIFACT_CORE_FIELDS = (
51  "suite_name",
52  "status",
53  "signal_schema_version",
54  "software",
55  "summary",
56  "cases",
57 )
58 
59 
60 def _signal_case(metadata: dict, descriptor_set, parameters) -> dict:
61  runtime_result, _, density_metrics = execute_partitioned_with_reference(
62  descriptor_set, parameters, allow_fusion=False
63  )
65  metadata,
66  descriptor_set,
67  runtime_result,
68  density_metrics,
69  )
70 
71 
72 def _finalize_signal_records(records: list[dict]) -> list[dict]:
74  records, objective_name=PLANNER_CALIBRATION_DENSITY_AWARE_OBJECTIVE_NAME
75  )
76  for record in records:
77  record["density_signal_pass"] = (
78  record["signal_schema_version"] == PLANNER_CALIBRATION_DENSITY_SIGNAL_SCHEMA_VERSION
79  and record["runtime_path"] == PHASE3_RUNTIME_PATH_BASELINE
80  and record["partition_count"] > 0
81  and record["state_vector_proxy_score"] > 0.0
82  and record["density_aware_score"] > 0.0
83  and record["density_aware_rank"] >= 1
84  and record["state_vector_proxy_rank"] >= 1
85  )
86  return records
87 
88 
89 def _noise_sensitive_slice_count(records: list[dict]) -> int:
90  grouped_scores: dict[tuple[str, str, int], dict[str, float]] = defaultdict(dict)
91  for record in records:
92  if record["noise_pattern"] is None:
93  continue
94  key = (
95  record["candidate_id"],
96  record["family_name"] or record["workload_family"],
97  record["qbit_num"],
98  )
99  grouped_scores[key][record["noise_pattern"]] = record["density_aware_score"]
100 
101  return sum(
102  len(score_by_pattern) > 1
103  and len({round(score, 12) for score in score_by_pattern.values()}) > 1
104  for score_by_pattern in grouped_scores.values()
105  )
106 
107 
108 def build_cases() -> list[dict]:
109  records = [
110  _signal_case(metadata, descriptor_set, parameters)
111  for metadata, descriptor_set, parameters, _ in iter_density_signal_cases()
112  ]
113  return _finalize_signal_records(records)
114 
115 
116 def build_artifact_bundle(cases: list[dict]) -> dict:
117  density_signal_passes = sum(case["density_signal_pass"] for case in cases)
118  noise_sensitive_slices = _noise_sensitive_slice_count(cases)
119  bundle = {
120  "suite_name": SUITE_NAME,
121  "status": "pass"
122  if density_signal_passes == len(cases) and noise_sensitive_slices >= 1
123  else "fail",
124  "signal_schema_version": PLANNER_CALIBRATION_DENSITY_SIGNAL_SCHEMA_VERSION,
125  "software": build_software_metadata(),
126  "summary": {
127  "total_cases": len(cases),
128  "density_signal_passes": density_signal_passes,
129  "candidate_ids": sorted({case["candidate_id"] for case in cases}),
130  "workload_ids": sorted({case["workload_id"] for case in cases}),
131  "noise_patterns": sorted(
132  {case["noise_pattern"] for case in cases if case["noise_pattern"] is not None}
133  ),
134  "noise_sensitive_slices": noise_sensitive_slices,
135  "calibrated_memory_weight": cases[0]["calibrated_memory_weight"]
136  if cases
137  else 0.0,
138  },
139  "cases": cases,
140  }
141  missing = [field for field in ARTIFACT_CORE_FIELDS if field not in bundle]
142  if missing:
143  raise ValueError(
144  "Density-signal validation bundle missing required fields: {}".format(
145  ", ".join(missing)
146  )
147  )
148  return bundle
149 
150 
151 def write_artifact_bundle(bundle: dict, output_dir: Path = DEFAULT_OUTPUT_DIR) -> Path:
152  output_dir.mkdir(parents=True, exist_ok=True)
153  output_path = output_dir / ARTIFACT_FILENAME
154  output_path.write_text(json.dumps(bundle, indent=2, sort_keys=True) + "\n")
155  return output_path
156 
157 
158 def main(argv: list[str] | None = None) -> int:
159  parser = argparse.ArgumentParser(description=__doc__)
160  parser.add_argument(
161  "--output-dir",
162  type=Path,
163  default=DEFAULT_OUTPUT_DIR,
164  help="Directory to write the density-signal validation bundle into.",
165  )
166  parser.add_argument(
167  "--quiet",
168  action="store_true",
169  help="Suppress per-case console output.",
170  )
171  args = parser.parse_args(argv)
172 
173  cases = build_cases()
174  bundle = build_artifact_bundle(cases)
175  output_path = write_artifact_bundle(bundle, output_dir=args.output_dir)
176 
177  if not args.quiet:
178  for case in cases:
179  print(
180  "{workload_id} {candidate_id}: density_score={density_aware_score:.3f}, proxy_score={state_vector_proxy_score:.3f}, rank={density_aware_rank}".format(
181  **case
182  )
183  )
184  print("Wrote {}".format(output_path))
185 
186  return 0 if bundle["status"] == "pass" else 1
187 
188 
189 if __name__ == "__main__":
190  raise SystemExit(main())
def apply_density_scores_and_rankings
Definition: signals.py:100
def build_software_metadata()
def execute_partitioned_with_reference
def build_density_signal_record
Definition: signals.py:38