Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
phase31_correctness_bundle_validation.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 """Stage-A Phase 3.1 correctness package bundle (six positives + negative boundary).
3 
4 Run with:
5  python benchmarks/density_matrix/correctness_evidence/phase31_correctness_bundle_validation.py
6 """
7 
8 from __future__ import annotations
9 
10 import argparse
11 from pathlib import Path
12 
13 from benchmarks.density_matrix.correctness_evidence.bundle import (
14  build_phase31_correctness_package_payload,
15 )
16 from benchmarks.density_matrix.correctness_evidence.common import (
17  CORRECTNESS_EVIDENCE_PHASE31_PACKAGE_SCHEMA_VERSION,
18  build_package_software_metadata,
19  phase31_correctness_evidence_output_dir,
20  write_artifact_bundle,
21 )
22 from benchmarks.density_matrix.correctness_evidence.records import counted_supported_case
23 from benchmarks.density_matrix.validation_scaffold import require_bundle_fields
24 
25 SUITE_NAME = "correctness_evidence_phase31_correctness_package"
26 ARTIFACT_FILENAME = "phase31_correctness_package_bundle.json"
27 DEFAULT_OUTPUT_DIR = phase31_correctness_evidence_output_dir("correctness_package")
28 ARTIFACT_CORE_FIELDS = (
29  "suite_name",
30  "status",
31  "schema_version",
32  "software",
33  "selected_candidate",
34  "summary",
35  "cases",
36  "negative_cases",
37 )
38 
39 
40 def build_cases() -> list[dict]:
42 
43 
44 def build_artifact_bundle() -> dict:
46  cases = payload["cases"]
47  negative_cases = payload["negative_cases"]
48  counted_supported_cases = sum(counted_supported_case(case) for case in cases)
49  bundle = {
50  "suite_name": SUITE_NAME,
51  "status": "pass"
52  if len(cases) == 6
53  and counted_supported_cases == len(cases)
54  and len(negative_cases) > 0
55  and all(case["status"] == "unsupported" for case in negative_cases)
56  else "fail",
57  "schema_version": CORRECTNESS_EVIDENCE_PHASE31_PACKAGE_SCHEMA_VERSION,
58  "software": build_package_software_metadata(),
59  "selected_candidate": payload["selected_candidate"],
60  "summary": payload["summary"],
61  "cases": cases,
62  "negative_cases": negative_cases,
63  }
64  require_bundle_fields(bundle, ARTIFACT_CORE_FIELDS, "Phase 3.1 correctness package bundle")
65  return bundle
66 
67 
68 def main(argv: list[str] | None = None) -> int:
69  parser = argparse.ArgumentParser(description=__doc__)
70  parser.add_argument(
71  "--output-dir",
72  type=Path,
73  default=DEFAULT_OUTPUT_DIR,
74  help="Directory to write the Phase 3.1 correctness package bundle into.",
75  )
76  parser.add_argument(
77  "--quiet",
78  action="store_true",
79  help="Suppress console output.",
80  )
81  args = parser.parse_args(argv)
82 
83  bundle = build_artifact_bundle()
84  output_path = write_artifact_bundle(bundle, args.output_dir, ARTIFACT_FILENAME)
85 
86  if not args.quiet:
87  print(
88  "status={status}, total_cases={total_cases}, counted_supported_cases={counted_supported_cases}".format(
89  status=bundle["status"],
90  total_cases=bundle["summary"]["total_cases"],
91  counted_supported_cases=bundle["summary"]["counted_supported_cases"],
92  )
93  )
94  print("Wrote {}".format(output_path))
95 
96  return 0 if bundle["status"] == "pass" else 1
97 
98 
99 if __name__ == "__main__":
100  raise SystemExit(main())
def build_package_software_metadata()
def phase31_correctness_evidence_output_dir
def build_phase31_correctness_package_payload()
def counted_supported_case