2 """Validation: required local-noise exact microcases. 4 Reuses the canonical micro-validation harness and adds required-local-noise 6 - required local-noise coverage, 7 - mixed required-noise sequence order, 8 - mandatory-baseline classification that keeps these cases milestone-defining, 9 - and one stable artifact bundle for the mandatory 1 to 3 qubit exact 10 micro-validation matrix. 13 python benchmarks/density_matrix/noise_support/required_local_noise_micro_validation.py 16 from __future__
import annotations
20 from pathlib
import Path
23 REPO_ROOT = Path(__file__).resolve().parents[3]
24 if str(REPO_ROOT)
not in sys.path:
25 sys.path.insert(0, str(REPO_ROOT))
27 from benchmarks.density_matrix.circuits
import MANDATORY_MICROCASES
28 from benchmarks.density_matrix.validate_squander_vs_qiskit
import (
31 build_software_metadata,
32 build_threshold_metadata,
33 run_validation
as run_required_local_noise_micro_validation,
35 from benchmarks.density_matrix.noise_support.support_tiers
import (
36 SUPPORT_TIER_VOCABULARY,
37 build_required_case_classification,
38 build_support_tier_summary,
41 SUITE_NAME =
"required_local_noise_micro_validation" 42 ARTIFACT_FILENAME =
"required_local_noise_micro_bundle.json" 43 DEFAULT_OUTPUT_DIR = (
44 REPO_ROOT /
"benchmarks" /
"density_matrix" /
"artifacts" /
"noise_support" 46 REQUIRED_LOCAL_NOISE_MODELS = (
51 ARTIFACT_CORE_FIELDS = (
65 individual_noise_cases = [
67 for case
in MANDATORY_MICROCASES
68 if case[
"case_kind"] ==
"individual_noise" 70 mixed_sequence_cases = [
72 for case
in MANDATORY_MICROCASES
73 if case[
"case_kind"] ==
"mixed_sequence" 76 "required_local_noise_models": list(REQUIRED_LOCAL_NOISE_MODELS),
77 "required_gate_families": [
"U3",
"CNOT"],
78 "support_tier_vocabulary": list(SUPPORT_TIER_VOCABULARY),
79 "mandatory_case_names": [case[
"case_name"]
for case
in MANDATORY_MICROCASES],
80 "individual_noise_case_names": individual_noise_cases,
81 "mixed_sequence_case_names": mixed_sequence_cases,
82 "microcase_qubits": sorted({case[
"qbit_num"]
for case
in MANDATORY_MICROCASES}),
83 "required_pass_rate": 1.0,
91 "required_noise_models",
97 "required_gate_coverage_pass",
98 "required_noise_model_coverage_pass",
99 "noise_sequence_match_pass",
100 "operation_audit_pass",
101 "noise_operation_sequence",
102 "required_local_noise_microcase_pass",
105 "counts_toward_mandatory_baseline",
107 missing_fields = [field
for field
in required_fields
if field
not in case]
110 "Required local-noise microcase payload is missing required fields: {}".format(
111 ", ".join(missing_fields)
118 for result
in results:
121 case[
"required_local_noise_microcase_pass"] =
bool(
122 case[
"status"] ==
"pass" 123 and case[
"energy_pass"]
124 and case[
"density_valid_pass"]
125 and case[
"trace_pass"]
126 and case[
"observable_pass"]
127 and case[
"required_gate_coverage_pass"]
128 and case[
"required_noise_model_coverage_pass"]
129 and case[
"noise_sequence_match_pass"]
130 and case[
"operation_audit_pass"]
135 total_cases = len(cases)
136 passed_cases = sum(case[
"required_local_noise_microcase_pass"]
for case
in cases)
137 exact_threshold_passed_cases = sum(
139 and case[
"density_valid_pass"]
140 and case[
"trace_pass"]
141 and case[
"observable_pass"]
144 operation_audit_passed_cases = sum(case[
"operation_audit_pass"]
for case
in cases)
145 mixed_sequence_case_count = sum(case[
"case_kind"] ==
"mixed_sequence" for case
in cases)
146 mixed_sequence_passed_cases = sum(
147 case[
"case_kind"] ==
"mixed_sequence" and case[
"mixed_sequence_order_pass"]
150 required_noise_models_covered = sorted(
154 for noise_model
in case[
"required_noise_models"]
157 pass_rate = 0.0
if total_cases == 0
else passed_cases / total_cases
161 "suite_name": SUITE_NAME,
163 if support_tier_summary[
"mandatory_baseline_completed"]
164 and passed_cases == total_cases
167 "backend": PRIMARY_BACKEND,
168 "reference_backend": REFERENCE_BACKEND,
173 "total_cases": total_cases,
174 "passed_cases": passed_cases,
175 "failed_cases": total_cases - passed_cases,
176 "pass_rate": pass_rate,
177 **support_tier_summary,
178 "exact_threshold_passed_cases": exact_threshold_passed_cases,
179 "operation_audit_passed_cases": operation_audit_passed_cases,
180 "mixed_sequence_case_count": mixed_sequence_case_count,
181 "mixed_sequence_passed_cases": mixed_sequence_passed_cases,
182 "required_noise_models_covered": required_noise_models_covered,
191 missing_fields = [field
for field
in ARTIFACT_CORE_FIELDS
if field
not in bundle]
194 "Required local-noise micro-validation bundle is missing required fields: {}".format(
195 ", ".join(missing_fields)
202 output_path.parent.mkdir(parents=
True, exist_ok=
True)
203 output_path.write_text(json.dumps(bundle, indent=2, sort_keys=
True) +
"\n", encoding=
"utf-8")
207 parser = argparse.ArgumentParser(description=__doc__)
211 default=DEFAULT_OUTPUT_DIR,
212 help=
"Directory for the required local-noise micro-validation JSON artifact bundle.",
217 help=
"Suppress per-case validation output.",
219 return parser.parse_args()
224 results = run_required_local_noise_micro_validation(verbose=
not args.quiet)
226 output_path = args.output_dir / ARTIFACT_FILENAME
229 "Wrote {} with status {} ({}/{})".format(
232 bundle[
"summary"][
"passed_cases"],
233 bundle[
"summary"][
"total_cases"],
236 if bundle[
"status"] !=
"pass":
240 if __name__ ==
"__main__":
def validate_case_payload(case)
def build_support_tier_summary(cases)
def validate_artifact_bundle(bundle)
def write_artifact_bundle
def build_required_case_classification()
def build_software_metadata()
def build_artifact_bundle(results)
def build_requirement_metadata()
def build_threshold_metadata()