7 @functools.lru_cache(maxsize=1)
9 """Lazy import so test collection works without a full squander extension build.""" 10 from squander.partitioning.noisy_planner
import (
12 PLANNER_OP_KIND_NOISE,
15 return PLANNER_OP_KIND_GATE, PLANNER_OP_KIND_NOISE
18 sigmax = sp.sparse.csr_matrix(np.array([[0,1],
20 sigmay = sp.sparse.csr_matrix(np.array([[0,0+-1j],
22 sigmaz = sp.sparse.csr_matrix(np.array([[1,0],
28 Hamiltonian = sp.sparse.coo_matrix((2**n, 2**n), dtype=np.complex128)
31 lhs_1 = sp.sparse.eye(1,format=
'coo')
33 lhs_1 = sp.sparse.eye(2,format=
'coo')
34 for k
in range(i[0]-1):
35 lhs_1 = sp.sparse.kron(lhs_1,sp.sparse.eye(2,format=
'coo'),format=
'coo')
37 rhs_1 = sp.sparse.eye(1,format=
'coo')
39 rhs_1 = sp.sparse.eye(2,format=
'coo')
40 for k
in range(n-i[0]-2):
41 rhs_1 = sp.sparse.kron(rhs_1,sp.sparse.eye(2,format=
'coo'),format=
'coo')
43 lhs_2 = sp.sparse.eye(1,format=
'coo')
45 lhs_2 = sp.sparse.eye(2,format=
'coo')
46 for k
in range(i[1]-1):
47 lhs_2 = sp.sparse.kron(lhs_2,sp.sparse.eye(2,format=
'coo'),format=
'coo')
49 rhs_2 = sp.sparse.eye(1,format=
'coo')
51 rhs_2 = sp.sparse.eye(2,format=
'coo')
52 for k
in range(n-i[1]-2):
53 rhs_2 = sp.sparse.kron(rhs_2,sp.sparse.eye(2,format=
'coo'),format=
'coo')
54 Hamiltonian += -0.5*sp.sparse.kron(sp.sparse.kron(lhs_1,sigmax,format=
'coo'),rhs_1,format=
'coo')@sp.sparse.kron(sp.sparse.kron(lhs_2 ,sigmax,format=
'coo'),rhs_2 ,format=
'coo')
55 Hamiltonian += -0.5*sp.sparse.kron(sp.sparse.kron(lhs_1,sigmay,format=
'coo'),rhs_1,format=
'coo')@sp.sparse.kron(sp.sparse.kron(lhs_2 ,sigmay,format=
'coo'),rhs_2 ,format=
'coo')
56 Hamiltonian += -0.5*sp.sparse.kron(sp.sparse.kron(lhs_1,sigmaz,format=
'coo'),rhs_1,format=
'coo')@sp.sparse.kron(sp.sparse.kron(lhs_2 ,sigmaz,format=
'coo'),rhs_2 ,format=
'coo')
60 lhs_1 = sp.sparse.eye(1,format=
'coo')
62 lhs_1 = sp.sparse.eye(2,format=
'coo')
64 lhs_1 = sp.sparse.kron(lhs_1,sp.sparse.eye(2,format=
'coo'),format=
'coo')
66 rhs_1 = sp.sparse.eye(1,format=
'coo')
68 rhs_1 = sp.sparse.eye(2,format=
'coo')
69 for k
in range(n-i-2):
70 rhs_1 = sp.sparse.kron(rhs_1,sp.sparse.eye(2,format=
'coo'),format=
'coo')
71 Hamiltonian += -0.5*sp.sparse.kron(sp.sparse.kron(lhs_1,sigmaz,format=
'coo'),rhs_1,format=
'coo')
74 return Hamiltonian.tocsr()
87 qgd_Variational_Quantum_Eigensolver_Base
as Variational_Quantum_Eigensolver_Base,
89 return Variational_Quantum_Eigensolver_Base
90 except Exception
as exc:
91 pytest.skip(f
"VQE wrapper not available: {exc}")
96 "agent_lifetime": 500,
97 "optimization_tolerance": -7.1,
98 "max_inner_iterations": 10,
100 "learning_rate": 2e-1,
102 "agent_exploration_rate": 0.3,
103 "max_inner_iterations_adam": 50000,
109 "max_inner_iterations": 4,
111 "convergence_length": 2,
118 "channel":
"local_depolarizing",
120 "after_gate_index": 0,
124 "channel":
"amplitude_damping",
126 "after_gate_index": 2,
130 "channel":
"phase_damping",
132 "after_gate_index": 4,
141 "case_name":
"required_local_noise_4q_local_depolarizing_positive",
143 "requested_noise_channel":
"local_depolarizing",
144 "expected_target": 0,
145 "expected_after_gate_index": 0,
146 "expected_value": 0.1,
149 "channel":
"local_depolarizing",
151 "after_gate_index": 0,
157 "case_name":
"required_local_noise_4q_amplitude_damping_positive",
159 "requested_noise_channel":
"amplitude_damping",
160 "expected_target": 1,
161 "expected_after_gate_index": 2,
162 "expected_value": 0.05,
165 "channel":
"amplitude_damping",
167 "after_gate_index": 2,
173 "case_name":
"required_local_noise_4q_phase_damping_positive",
175 "requested_noise_channel":
"phase_damping",
176 "expected_target": 0,
177 "expected_after_gate_index": 4,
178 "expected_value": 0.07,
181 "channel":
"phase_damping",
183 "after_gate_index": 4,
191 if Hamiltonian
is None:
192 Hamiltonian = sp.sparse.eye(2**qbit_num, format=
"csr")
205 vqe.set_Ansatz(
"HEA")
206 vqe.Generate_Circuit(1, 1)
210 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
213 if density_noise
is None:
219 backend=
"density_matrix",
220 density_noise=density_noise,
222 if optimizer
is not None:
223 vqe.set_Optimizer(optimizer)
224 vqe.set_Ansatz(
"HEA")
225 vqe.Generate_Circuit(1, 1)
226 return vqe, Hamiltonian
229 self, qbit_num, *, omit_backend=False
231 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
236 kwargs[
"backend"] =
"state_vector" 243 vqe.set_Ansatz(
"HEA")
244 vqe.Generate_Circuit(1, 1)
245 return vqe, Hamiltonian
249 pytest.importorskip(
"qiskit")
250 pytest.importorskip(
"qiskit_aer")
252 from qiskit
import QuantumCircuit
253 from qiskit_aer.noise
import (
254 amplitude_damping_error,
259 noisy_circuit = QuantumCircuit(base_circuit.num_qubits)
261 for noise_spec
in density_noise:
262 noise_by_gate.setdefault(noise_spec[
"after_gate_index"], []).append(
266 for gate_index, instruction
in enumerate(base_circuit.data):
268 noisy_circuit.qubits[base_circuit.find_bit(qubit).index]
269 for qubit
in instruction.qubits
272 noisy_circuit.clbits[base_circuit.find_bit(clbit).index]
273 for clbit
in instruction.clbits
275 noisy_circuit.append(instruction.operation, qargs, cargs)
277 for noise_spec
in noise_by_gate.get(gate_index, []):
278 target = noise_spec[
"target"]
279 channel = noise_spec[
"channel"]
280 if channel ==
"local_depolarizing":
281 noisy_circuit.append(
282 depolarizing_error(noise_spec[
"error_rate"], 1),
283 [noisy_circuit.qubits[target]],
285 elif channel ==
"amplitude_damping":
286 noisy_circuit.append(
287 amplitude_damping_error(noise_spec[
"gamma"]),
288 [noisy_circuit.qubits[target]],
290 elif channel ==
"phase_damping":
291 noisy_circuit.append(
292 phase_damping_error(noise_spec[
"lambda"]),
293 [noisy_circuit.qubits[target]],
297 f
"Unsupported density-backend channel: {channel}" 300 noisy_circuit.save_density_matrix()
305 energy = np.trace(hamiltonian.dot(density_matrix))
306 return float(np.real(energy)), float(np.imag(energy))
309 pytest.importorskip(
"qiskit_aer")
311 from qiskit_aer
import AerSimulator
314 vqe.get_Qiskit_Circuit(),
317 simulator = AerSimulator(method=
"density_matrix")
318 result = simulator.run(noisy_qiskit_circuit, shots=1).
result()
319 aer_rho = np.asarray(result.data()[
"density_matrix"])
324 pytest.importorskip(
"qiskit")
328 base_circuit = vqe.get_Qiskit_Circuit()
330 for noise_spec
in vqe.density_noise:
331 noise_by_gate.setdefault(noise_spec[
"after_gate_index"], []).append(noise_spec)
335 for gate_index, instruction
in enumerate(base_circuit.data):
337 base_circuit.find_bit(qubit).index
for qubit
in instruction.qubits
339 gate_name = instruction.operation.name
344 "kind": planner_gate_kind,
347 "source_gate_index": gate_index,
348 "target_qbit": qubit_indices[0],
349 "control_qbit":
None,
351 "param_start": param_start,
356 elif gate_name
in {
"cx",
"cnot"}:
359 "kind": planner_gate_kind,
362 "source_gate_index": gate_index,
363 "target_qbit": qubit_indices[1],
364 "control_qbit": qubit_indices[0],
366 "param_start": param_start,
372 f
"Unsupported gate in expected bridge: {gate_name}" 375 for noise_spec
in noise_by_gate.get(gate_index, []):
378 "kind": planner_noise_kind,
379 "name": noise_spec[
"channel"],
381 "source_gate_index": gate_index,
382 "target_qbit": noise_spec[
"target"],
383 "control_qbit":
None,
385 "param_start": param_start,
386 "fixed_value": noise_spec[
"value"],
394 Hamiltonian = sp.sparse.eye(2**qbit_num, format=
"csr")
398 state_vector_vqe = VQE_cls(
402 backend=
"state_vector",
404 density_matrix_vqe = VQE_cls(
408 backend=
"density_matrix",
411 assert legacy_vqe.backend ==
"state_vector" 412 assert state_vector_vqe.backend ==
"state_vector" 413 assert density_matrix_vqe.backend ==
"density_matrix" 417 Hamiltonian = sp.sparse.eye(2**qbit_num, format=
"csr")
420 with pytest.raises(ValueError, match=
"Unsupported backend"):
425 backend=
"invalid_backend",
430 Hamiltonian = sp.sparse.eye(2**qbit_num, format=
"csr")
437 backend=
"density_matrix",
441 assert vqe.backend ==
"density_matrix" 442 assert vqe.density_noise == [
444 "channel":
"local_depolarizing",
446 "after_gate_index": 0,
450 "channel":
"amplitude_damping",
452 "after_gate_index": 2,
456 "channel":
"phase_damping",
458 "after_gate_index": 4,
463 @pytest.mark.parametrize(
"omit_backend", [
False,
True])
467 qbit_num, omit_backend=omit_backend
470 parameters = np.linspace(
472 0.05 * vqe.get_Parameter_Num(),
473 vqe.get_Parameter_Num(),
479 match=
"state_vector backend does not support density_matrix-only noise configuration",
481 vqe.Optimization_Problem(parameters)
485 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
492 backend=
"density_matrix",
495 vqe.set_Ansatz(
"HEA_ZYZ")
496 vqe.Generate_Circuit(1, 1)
498 parameters = np.linspace(
500 0.05 * vqe.get_Parameter_Num(),
501 vqe.get_Parameter_Num(),
505 with pytest.raises(Exception, match=
"only the HEA ansatz"):
506 vqe.Optimization_Problem(parameters)
510 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
517 backend=
"density_matrix",
521 with pytest.raises(Exception, match=
"requires a generated HEA circuit"):
522 vqe.Optimization_Problem(np.array([], dtype=np.float64))
526 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
533 backend=
"density_matrix",
536 "channel":
"local_depolarizing",
538 "after_gate_index": 999,
543 vqe.set_Ansatz(
"HEA")
544 vqe.Generate_Circuit(1, 1)
546 parameters = np.linspace(
548 0.05 * vqe.get_Parameter_Num(),
549 vqe.get_Parameter_Num(),
554 Exception, match=
"after_gate_index exceeds generated gate count" 556 vqe.Optimization_Problem(parameters)
562 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
569 backend=
"density_matrix",
571 custom_circuit = qgd_Circuit(qbit_num)
572 custom_circuit.add_H(0)
573 custom_circuit.add_CNOT(1, 0)
574 vqe.set_Gate_Structure(custom_circuit)
578 match=
"unsupported circuit source in density backend path: custom_gate_structure",
580 vqe.describe_density_bridge()
587 with pytest.raises(ValueError, match=
"Unsupported density-noise channel"):
592 backend=
"density_matrix",
595 "channel":
"readout_noise",
597 "after_gate_index": 0,
605 _normalize_density_noise_spec,
611 "channel":
"depolarizing",
613 "after_gate_index": 0,
617 "channel":
"dephasing",
619 "after_gate_index": 2,
625 assert [item[
"channel"]
for item
in normalized] == [
626 "local_depolarizing",
629 assert [item[
"target"]
for item
in normalized] == [0, 1]
630 assert [item[
"after_gate_index"]
for item
in normalized] == [0, 2]
631 assert [item[
"value"]
for item
in normalized] == pytest.approx([0.1, 0.05])
633 @pytest.mark.parametrize(
637 "correlated_multi_qubit_noise",
638 "calibration_aware_noise",
639 "non_markovian_noise",
649 match=
"Unsupported density-noise channel '{}'".format(channel),
655 backend=
"density_matrix",
660 "after_gate_index": 0,
668 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
672 with pytest.raises(Exception, match=
"after_gate_index must be non-negative"):
677 backend=
"density_matrix",
680 "channel":
"local_depolarizing",
682 "after_gate_index": -1,
690 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
694 with pytest.raises(Exception, match=
"target_qbit out of range"):
699 backend=
"density_matrix",
702 "channel":
"phase_damping",
704 "after_gate_index": 0,
712 topology = [(idx, idx + 1)
for idx
in range(qbit_num - 1)]
716 with pytest.raises(Exception, match=
"noise values must be in \\[0, 1\\]"):
721 backend=
"density_matrix",
724 "channel":
"amplitude_damping",
726 "after_gate_index": 0,
734 parameters = np.linspace(
736 0.05 * vqe.get_Parameter_Num(),
737 vqe.get_Parameter_Num(),
741 with pytest.raises(Exception, match=
"does not support gradient-based optimization"):
742 vqe.Optimization_Problem_Grad(parameters)
747 with pytest.raises(Exception, match=
"Unsupported optimizer"):
748 vqe.set_Optimizer(
"NOT_A_REAL_OPTIMIZER")
753 with pytest.raises(Exception, match=
"Unsupported ansatz"):
754 vqe.set_Ansatz(
"NOT_A_REAL_ANSATZ")
762 Hamiltonian=Hamiltonian,
763 backend=
"state_vector",
766 assert legacy_vqe.backend ==
"state_vector" 767 assert explicit_state_vector_vqe.backend ==
"state_vector" 768 assert legacy_vqe.get_Parameter_Num() == explicit_state_vector_vqe.get_Parameter_Num()
770 param_num = legacy_vqe.get_Parameter_Num()
773 parameters = np.linspace(0.05, 0.05 * param_num, param_num, dtype=np.float64)
774 legacy_energy = legacy_vqe.Optimization_Problem(parameters)
775 explicit_state_vector_energy = explicit_state_vector_vqe.Optimization_Problem(parameters)
777 assert np.isclose(legacy_energy, explicit_state_vector_energy, atol=1e-12)
779 @pytest.mark.parametrize(
"qbit_num", [4, 6, 8, 10])
783 state_vector_vqe = VQE_cls(
787 backend=
"state_vector",
789 state_vector_vqe.set_Ansatz(
"HEA")
790 state_vector_vqe.Generate_Circuit(1, 1)
792 param_num = density_vqe.get_Parameter_Num()
793 parameters = np.linspace(0.05, 0.05 * param_num, param_num, dtype=np.float64)
795 density_energy = density_vqe.Optimization_Problem(parameters)
796 state_vector_energy = state_vector_vqe.Optimization_Problem(parameters)
798 assert density_vqe.backend ==
"density_matrix" 799 assert np.isfinite(density_energy)
800 assert np.isfinite(state_vector_energy)
801 assert not np.isclose(density_energy, state_vector_energy, atol=1e-8)
803 @pytest.mark.parametrize(
"qbit_num", [4, 6])
807 pytest.importorskip(
"qiskit")
810 parameters = np.linspace(
812 0.05 * density_vqe.get_Parameter_Num(),
813 density_vqe.get_Parameter_Num(),
816 density_vqe.set_Optimized_Parameters(parameters)
817 bridge = density_vqe.describe_density_bridge()
820 assert bridge[
"backend"] ==
"density_matrix" 821 assert bridge[
"source_type"] ==
"generated_hea" 822 assert bridge[
"qbit_num"] == qbit_num
823 assert bridge[
"parameter_count"] == density_vqe.get_Parameter_Num()
824 assert bridge[
"gate_count"] == density_vqe.get_Qiskit_Circuit().size()
825 assert bridge[
"noise_count"] == len(density_vqe.density_noise)
826 assert bridge[
"operation_count"] == len(expected_operations)
827 assert len(bridge[
"operations"]) == len(expected_operations)
829 for actual, expected
in zip(bridge[
"operations"], expected_operations):
830 assert actual[
"kind"] == expected[
"kind"]
831 assert actual[
"name"] == expected[
"name"]
832 assert actual[
"is_unitary"] == expected[
"is_unitary"]
833 assert actual[
"source_gate_index"] == expected[
"source_gate_index"]
834 assert actual[
"target_qbit"] == expected[
"target_qbit"]
835 assert actual[
"control_qbit"] == expected[
"control_qbit"]
836 assert actual[
"param_count"] == expected[
"param_count"]
837 assert actual[
"param_start"] == expected[
"param_start"]
838 if expected[
"fixed_value"]
is None:
839 assert actual[
"fixed_value"]
is None 841 assert actual[
"fixed_value"] == pytest.approx(expected[
"fixed_value"])
844 pytest.importorskip(
"qiskit")
845 pytest.importorskip(
"qiskit_aer")
847 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import (
848 run_fixed_parameter_case,
853 assert artifact[
"status"] ==
"completed" 854 assert artifact[
"bridge_source_type"] ==
"generated_hea" 855 assert artifact[
"bridge_operation_count"] == len(artifact[
"bridge_operations"])
856 assert artifact[
"bridge_gate_count"] + artifact[
"bridge_noise_count"] == artifact[
"bridge_operation_count"]
857 assert artifact[
"bridge_noise_count"] == len(artifact[
"density_noise"])
858 assert artifact[
"bridge_parameter_count"] > 0
860 assert artifact[
"bridge_operations"][0][
"kind"] == gate_kind
862 op[
"kind"] == noise_kind
863 for op
in artifact[
"bridge_operations"]
870 density_noise=case[
"density_noise"],
872 parameters = np.linspace(
874 0.05 * density_vqe.get_Parameter_Num(),
875 density_vqe.get_Parameter_Num(),
879 density_vqe.set_Optimized_Parameters(parameters)
880 density_energy = density_vqe.Optimization_Problem(parameters)
881 bridge = density_vqe.describe_density_bridge()
885 for op
in bridge[
"operations"]
886 if op[
"kind"] == noise_kind
889 assert density_vqe.backend ==
"density_matrix" 890 assert np.isfinite(density_energy)
891 assert bridge[
"source_type"] ==
"generated_hea" 892 assert bridge[
"noise_count"] == 1
893 assert len(noise_ops) == 1
894 assert [op[
"name"]
for op
in noise_ops] == [case[
"requested_noise_channel"]]
895 assert all(op[
"name"] !=
"depolarizing" for op
in noise_ops)
896 assert [op[
"target_qbit"]
for op
in noise_ops] == [case[
"expected_target"]]
897 assert [op[
"source_gate_index"]
for op
in noise_ops] == [
898 case[
"expected_after_gate_index"]
900 assert [op[
"fixed_value"]
for op
in noise_ops] == pytest.approx(
901 [case[
"expected_value"]]
905 pytest.importorskip(
"qiskit")
906 pytest.importorskip(
"qiskit_aer")
908 from benchmarks.density_matrix.noise_support.required_local_noise_validation
import (
909 REQUIRED_LOCAL_NOISE_CASES,
910 REQUIRED_LOCAL_NOISE_MODELS,
911 build_artifact_bundle,
918 assert bundle[
"status"] ==
"pass" 919 assert bundle[
"backend"] ==
"density_matrix" 920 assert bundle[
"summary"][
"total_cases"] == len(REQUIRED_LOCAL_NOISE_CASES)
921 assert bundle[
"summary"][
"passed_cases"] == len(REQUIRED_LOCAL_NOISE_CASES)
922 assert bundle[
"summary"][
"pass_rate"] == 1.0
923 assert bundle[
"summary"][
"required_cases"] == len(REQUIRED_LOCAL_NOISE_CASES)
924 assert bundle[
"summary"][
"required_passed_cases"] == len(REQUIRED_LOCAL_NOISE_CASES)
925 assert bundle[
"summary"][
"required_pass_rate"] == 1.0
926 assert bundle[
"summary"][
"optional_cases"] == 0
927 assert bundle[
"summary"][
"optional_cases_count_toward_mandatory_baseline"] == 0
928 assert bundle[
"summary"][
"mandatory_baseline_completed"]
929 assert bundle[
"summary"][
"whole_register_substitute_failures"] == 0
930 assert set(bundle[
"requirements"][
"required_local_noise_models"]) == set(
931 REQUIRED_LOCAL_NOISE_MODELS
933 assert "required" in bundle[
"requirements"][
"support_tier_vocabulary"]
934 assert {case[
"requested_noise_channel"]
for case
in bundle[
"cases"]} == set(
935 REQUIRED_LOCAL_NOISE_MODELS
937 assert all(case[
"status"] ==
"pass" for case
in bundle[
"cases"])
938 assert all(case[
"positive_slice_pass"]
for case
in bundle[
"cases"])
939 assert all(case[
"support_tier"] ==
"required" for case
in bundle[
"cases"])
940 assert all(case[
"case_purpose"] ==
"mandatory_baseline" for case
in bundle[
"cases"])
941 assert all(case[
"counts_toward_mandatory_baseline"]
for case
in bundle[
"cases"])
943 case[
"bridge_noise_sequence"] == [case[
"requested_noise_channel"]]
944 for case
in bundle[
"cases"]
948 pytest.importorskip(
"qiskit")
949 pytest.importorskip(
"qiskit_aer")
951 from benchmarks.density_matrix.bridge_scope.bridge_validation
import (
952 MANDATORY_BRIDGE_MICROCASES,
953 validate_bridge_microcase,
958 for case
in MANDATORY_BRIDGE_MICROCASES
959 if case[
"case_name"] ==
"bridge_3q_mixed_local_noise_sequence" 963 assert result[
"status"] ==
"pass" 964 assert result[
"source_pass"]
965 assert result[
"gate_pass"]
966 assert result[
"noise_pass"]
967 assert result[
"operation_match_pass"]
968 assert result[
"execution_ready"]
969 assert result[
"bridge_source_type"] ==
"generated_hea" 970 assert result[
"bridge_noise_count"] == 3
973 op[
"name"] ==
"CNOT" and op[
"kind"] == gate_kind
974 for op
in result[
"bridge_operations"]
978 pytest.importorskip(
"qiskit")
979 pytest.importorskip(
"qiskit_aer")
981 from benchmarks.density_matrix.bridge_scope.bridge_validation
import (
982 MANDATORY_BRIDGE_MICROCASES,
983 build_artifact_bundle,
990 assert bundle[
"status"] ==
"pass" 991 assert bundle[
"backend"] ==
"density_matrix" 992 assert bundle[
"requirements"][
"source_type"] ==
"generated_hea" 993 assert bundle[
"summary"][
"total_cases"] == len(MANDATORY_BRIDGE_MICROCASES)
994 assert bundle[
"summary"][
"passed_cases"] == len(MANDATORY_BRIDGE_MICROCASES)
995 assert bundle[
"summary"][
"pass_rate"] == 1.0
996 assert {case[
"qbit_num"]
for case
in bundle[
"cases"]} == {1, 2, 3}
997 assert all(case[
"status"] ==
"pass" for case
in bundle[
"cases"])
998 assert all(
"bridge_operations" in case
for case
in bundle[
"cases"])
1001 from benchmarks.density_matrix.bridge_scope.unsupported_bridge_validation
import (
1002 UNSUPPORTED_CASE_BUILDERS,
1003 build_artifact_bundle,
1010 assert bundle[
"status"] ==
"pass" 1011 assert bundle[
"backend"] ==
"density_matrix" 1012 assert bundle[
"summary"][
"total_cases"] == len(UNSUPPORTED_CASE_BUILDERS)
1013 assert bundle[
"summary"][
"unsupported_cases"] == len(
1014 UNSUPPORTED_CASE_BUILDERS
1016 assert bundle[
"summary"][
"error_match_count"] == len(
1017 UNSUPPORTED_CASE_BUILDERS
1019 assert {case[
"unsupported_category"]
for case
in bundle[
"cases"]} == {
1025 assert all(case[
"status"] ==
"unsupported" for case
in bundle[
"cases"])
1026 assert all(case[
"error_match_pass"]
for case
in bundle[
"cases"])
1029 pytest.importorskip(
"qiskit")
1030 pytest.importorskip(
"qiskit_aer")
1032 from benchmarks.density_matrix.noise_support.unsupported_noise_validation
import (
1033 UNSUPPORTED_NOISE_BOUNDARY_CASES,
1034 build_artifact_bundle,
1041 assert bundle[
"status"] ==
"pass" 1042 assert bundle[
"backend"] ==
"density_matrix" 1043 assert bundle[
"summary"][
"total_cases"] == len(UNSUPPORTED_NOISE_BOUNDARY_CASES)
1044 assert bundle[
"summary"][
"unsupported_status_cases"] == len(
1045 UNSUPPORTED_NOISE_BOUNDARY_CASES
1047 assert bundle[
"summary"][
"error_match_count"] == len(
1048 UNSUPPORTED_NOISE_BOUNDARY_CASES
1050 assert bundle[
"summary"][
"pre_execution_failure_count"] == len(
1051 UNSUPPORTED_NOISE_BOUNDARY_CASES
1053 assert bundle[
"summary"][
"boundary_passed_cases"] == len(
1054 UNSUPPORTED_NOISE_BOUNDARY_CASES
1056 assert bundle[
"summary"][
"deferred_cases"] == 4
1057 assert bundle[
"summary"][
"unsupported_cases"] == 4
1058 assert bundle[
"summary"][
"support_tiers_present"] == [
1062 assert bundle[
"summary"][
"silent_substitution_failures"] == 0
1063 assert bundle[
"summary"][
"silent_fallback_failures"] == 0
1064 assert set(bundle[
"summary"][
"categories_present"]) == {
1070 assert set(bundle[
"summary"][
"boundary_classes_present"]) == {
1075 assert set(bundle[
"summary"][
"failure_stages_present"]) == {
1076 "cxx_noise_spec_validation",
1077 "density_anchor_preflight",
1078 "python_normalization",
1081 case[
"first_unsupported_condition"]
for case
in bundle[
"cases"]
1084 "correlated_multi_qubit_noise",
1085 "calibration_aware_noise",
1086 "non_markovian_noise",
1087 "after_gate_index_negative",
1088 "after_gate_index_exceeds_gate_count",
1089 "target_qbit_out_of_range",
1090 "noise_value_out_of_range",
1092 assert all(case[
"status"] ==
"unsupported" for case
in bundle[
"cases"])
1093 assert all(case[
"error_match_pass"]
for case
in bundle[
"cases"])
1094 assert all(case[
"unsupported_boundary_pass"]
for case
in bundle[
"cases"])
1096 not case[
"counts_toward_mandatory_baseline"]
for case
in bundle[
"cases"]
1100 pytest.importorskip(
"qiskit")
1101 pytest.importorskip(
"qiskit_aer")
1103 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import (
1104 build_exact_regime_parameter_sets,
1105 run_exact_regime_workflow_case,
1110 density_vqe.get_Parameter_Num(),
1115 parameter_set[
"parameter_set_id"],
1116 parameter_set[
"parameter_vector"],
1119 assert result[
"status"] ==
"pass" 1120 assert result[
"bridge_source_type"] ==
"generated_hea" 1121 assert result[
"source_pass"]
1122 assert result[
"gate_pass"]
1123 assert result[
"noise_pass"]
1124 assert result[
"execution_ready"]
1125 assert result[
"bridge_supported_pass"]
1126 assert result[
"bridge_gate_count"] > 0
1127 assert result[
"bridge_noise_count"] == len(result[
"density_noise"])
1128 assert "U3" in result[
"bridge_gate_sequence"]
1129 assert "CNOT" in result[
"bridge_gate_sequence"]
1130 assert set(result[
"bridge_noise_sequence"]) == {
1131 "local_depolarizing",
1132 "amplitude_damping",
1135 assert result[
"support_tier"] ==
"required" 1136 assert result[
"case_purpose"] ==
"mandatory_baseline" 1137 assert result[
"counts_toward_mandatory_baseline"]
is True 1140 pytest.importorskip(
"qiskit")
1141 pytest.importorskip(
"qiskit_aer")
1143 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import (
1144 build_exact_regime_parameter_sets,
1145 build_exact_regime_workflow_bundle,
1146 run_optimization_trace,
1147 run_exact_regime_workflow_case,
1152 density_vqe.get_Parameter_Num(),
1157 parameter_set[
"parameter_set_id"],
1158 parameter_set[
"parameter_vector"],
1164 parameter_set_count=1,
1165 trace_result=trace_result,
1168 assert result[
"status"] ==
"pass" 1169 assert result[
"workflow_completed"]
1170 assert result[
"energy_pass"]
1171 assert result[
"density_valid_pass"]
1172 assert result[
"trace_pass"]
1173 assert result[
"observable_pass"]
1174 assert result[
"qbit_num"] == 4
1175 assert bundle[
"status"] ==
"pass" 1176 assert bundle[
"summary"][
"total_cases"] == 1
1177 assert bundle[
"summary"][
"passed_cases"] == 1
1178 assert bundle[
"summary"][
"unsupported_cases"] == 0
1179 assert bundle[
"summary"][
"unsupported_status_cases"] == 0
1180 assert bundle[
"summary"][
"bridge_supported_cases"] == 1
1181 assert bundle[
"summary"][
"documented_10q_anchor_present"]
is False 1182 assert bundle[
"summary"][
"supported_trace_completed"]
is True 1183 assert bundle[
"summary"][
"supported_trace_case_name"] == trace_result.get(
1184 "case_name",
"optimization_trace_4q" 1186 assert bundle[
"summary"][
"required_cases"] == 1
1187 assert bundle[
"summary"][
"required_passed_cases"] == 1
1188 assert bundle[
"summary"][
"required_pass_rate"] == 1.0
1189 assert bundle[
"summary"][
"mandatory_baseline_case_count"] == 1
1190 assert bundle[
"summary"][
"mandatory_baseline_passed_cases"] == 1
1191 assert bundle[
"summary"][
"mandatory_baseline_completed"]
is True 1192 assert bundle[
"summary"][
"support_tiers_present"] == [
"required"]
1193 assert bundle[
"summary"][
"optional_cases_count_toward_mandatory_baseline"] == 0
1194 assert bundle[
"thresholds"][
"absolute_energy_error"] == 1e-8
1197 pytest.importorskip(
"qiskit")
1198 pytest.importorskip(
"qiskit_aer")
1200 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import (
1201 run_optimization_trace,
1206 assert artifact[
"status"] ==
"completed" 1207 assert artifact[
"bridge_source_type"] ==
"generated_hea" 1208 assert artifact[
"source_pass"]
1209 assert artifact[
"gate_pass"]
1210 assert artifact[
"noise_pass"]
1211 assert artifact[
"execution_ready"]
1212 assert artifact[
"bridge_supported_pass"]
1213 assert artifact[
"bridge_gate_count"] > 0
1214 assert artifact[
"bridge_noise_count"] == len(artifact[
"density_noise"])
1215 assert artifact[
"support_tier"] ==
"required" 1216 assert artifact[
"case_purpose"] ==
"mandatory_baseline" 1217 assert artifact[
"counts_toward_mandatory_baseline"]
is False 1218 assert artifact[
"required_validation_trace"]
is True 1221 pytest.importorskip(
"qiskit")
1222 pytest.importorskip(
"qiskit_aer")
1224 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import (
1225 run_optimization_trace,
1230 assert artifact[
"status"] ==
"completed" 1231 assert artifact[
"workflow_completed"]
is True 1232 assert artifact[
"trace_kind"] ==
"bounded_optimization_trace" 1233 assert artifact[
"optimizer"] ==
"COSINE" 1234 assert artifact[
"parameter_count"] == len(artifact[
"initial_parameters"])
1235 assert artifact[
"total_trace_runtime_ms"] >= 0.0
1236 assert artifact[
"process_peak_rss_kb"] > 0
1237 assert artifact[
"energy_improvement"] == (
1238 artifact[
"initial_energy"] - artifact[
"final_energy"]
1240 assert artifact[
"optimizer_config"][
"max_iterations"] == 1
1241 assert artifact[
"support_tier"] ==
"required" 1242 assert artifact[
"case_purpose"] ==
"mandatory_baseline" 1243 assert artifact[
"counts_toward_mandatory_baseline"]
is False 1244 assert artifact[
"required_validation_trace"]
is True 1247 pytest.importorskip(
"qiskit")
1248 pytest.importorskip(
"qiskit_aer")
1250 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import write_json
1251 from benchmarks.density_matrix.noise_support.required_local_noise_workflow_validation
import (
1252 TRACE_ARTIFACT_FILENAME,
1254 WORKFLOW_BUNDLE_FILENAME,
1255 build_artifact_bundle,
1257 write_artifact_bundle,
1262 parameter_set_count=1,
1269 parameter_set_count=1,
1272 tmp_path / WORKFLOW_BUNDLE_FILENAME,
1274 trace_result=trace_result,
1276 write_json(tmp_path / TRACE_ARTIFACT_FILENAME, trace_result)
1278 assert bundle[
"status"] ==
"pass" 1279 assert bundle[
"suite_name"] ==
"required_local_noise_workflow" 1280 assert bundle[
"summary"][
"required_cases"] == 1
1281 assert bundle[
"summary"][
"required_passed_cases"] == 1
1282 assert bundle[
"summary"][
"required_pass_rate"] == 1.0
1283 assert bundle[
"summary"][
"unsupported_status_cases"] == 0
1284 assert bundle[
"summary"][
"required_trace_case_name"] == TRACE_CASE_NAME
1285 assert bundle[
"summary"][
"required_trace_present"]
is True 1286 assert bundle[
"summary"][
"required_trace_completed"]
is True 1287 assert bundle[
"summary"][
"required_trace_bridge_supported"]
is True 1289 bundle[
"summary"][
"required_trace_counts_toward_mandatory_baseline"]
1292 assert trace_result[
"case_name"] == TRACE_CASE_NAME
1293 assert trace_result[
"support_tier"] ==
"required" 1294 assert (tmp_path / WORKFLOW_BUNDLE_FILENAME).exists()
1295 assert (tmp_path / TRACE_ARTIFACT_FILENAME).exists()
1298 pytest.importorskip(
"qiskit")
1299 pytest.importorskip(
"qiskit_aer")
1301 from benchmarks.density_matrix.validation_evidence.workflow_baseline_validation
import (
1307 parameter_set_count=1,
1311 assert exact_regime_workflow_bundle[
"status"] ==
"pass" 1312 assert bundle[
"status"] ==
"pass" 1313 assert bundle[
"suite_name"] ==
"workflow_baseline_validation" 1314 assert bundle[
"backend"] ==
"density_matrix" 1315 assert bundle[
"summary"][
"total_cases"] == 1
1316 assert bundle[
"summary"][
"passed_cases"] == 1
1317 assert bundle[
"summary"][
"unsupported_cases"] == 0
1318 assert bundle[
"summary"][
"required_cases"] == 1
1319 assert bundle[
"summary"][
"required_passed_cases"] == 1
1320 assert bundle[
"summary"][
"required_pass_rate"] == 1.0
1321 assert bundle[
"summary"][
"stable_case_ids_present"]
is True 1322 assert bundle[
"summary"][
"stable_parameter_set_ids_present"]
is True 1323 assert bundle[
"summary"][
"workflow_baseline_completed"]
is True 1324 assert bundle[
"summary"][
"documented_10q_anchor_present"]
is False 1325 assert bundle[
"required_artifacts"][
"exact_regime_workflow_reference"][
"status"] ==
"pass" 1326 assert len(bundle[
"cases"]) == 1
1327 assert bundle[
"cases"][0][
"parameter_set_id"] ==
"set_00" 1330 pytest.importorskip(
"qiskit")
1331 pytest.importorskip(
"qiskit_aer")
1335 from benchmarks.density_matrix.validation_evidence.workflow_baseline_validation
import (
1336 build_artifact_bundle,
1342 parameter_set_count=1,
1345 broken_workflow_results = copy.deepcopy(bundle[
"cases"])
1346 omitted_case = broken_workflow_results.pop()
1349 exact_regime_workflow_bundle,
1350 broken_workflow_results,
1352 parameter_set_count=1,
1355 assert broken_bundle[
"status"] ==
"fail" 1356 assert broken_bundle[
"summary"][
"stable_case_ids_present"]
is False 1357 assert broken_bundle[
"summary"][
"stable_parameter_set_ids_present"]
is False 1358 assert broken_bundle[
"summary"][
"workflow_baseline_completed"]
is False 1360 omitted_case[
"case_name"]
1361 in broken_bundle[
"summary"][
"missing_mandatory_case_names"]
1365 pytest.importorskip(
"qiskit")
1366 pytest.importorskip(
"qiskit_aer")
1368 from benchmarks.density_matrix.validation_evidence.trace_anchor_validation
import (
1374 parameter_set_count=1,
1378 assert workflow_baseline_bundle[
"status"] ==
"pass" 1379 assert trace_result[
"status"] ==
"completed" 1380 assert bundle[
"status"] ==
"pass" 1381 assert bundle[
"suite_name"] ==
"trace_anchor_validation" 1382 assert bundle[
"summary"][
"workflow_baseline_completed"]
is True 1383 assert bundle[
"summary"][
"documented_10q_anchor_present"]
is True 1384 assert bundle[
"summary"][
"required_trace_case_name"] ==
"optimization_trace_4q" 1385 assert bundle[
"summary"][
"required_trace_present"]
is True 1386 assert bundle[
"summary"][
"required_trace_completed"]
is True 1387 assert bundle[
"summary"][
"required_trace_bridge_supported"]
is True 1388 assert bundle[
"summary"][
"trace_and_anchor_gate_completed"]
is True 1389 assert bundle[
"required_artifacts"][
"workflow_baseline_reference"][
"status"] ==
"pass" 1390 assert bundle[
"trace_artifact"][
"case_name"] ==
"optimization_trace_4q" 1393 pytest.importorskip(
"qiskit")
1394 pytest.importorskip(
"qiskit_aer")
1398 from benchmarks.density_matrix.validation_evidence.trace_anchor_validation
import (
1399 build_artifact_bundle,
1405 parameter_set_count=1,
1408 broken_trace_result = copy.deepcopy(trace_result)
1409 broken_trace_result[
"required_validation_trace"] =
False 1412 workflow_baseline_bundle,
1413 broken_trace_result,
1415 parameter_set_count=1,
1418 assert bundle[
"status"] ==
"fail" 1419 assert bundle[
"summary"][
"required_trace_present"]
is False 1420 assert bundle[
"summary"][
"trace_and_anchor_gate_completed"]
is False 1423 pytest.importorskip(
"qiskit")
1424 pytest.importorskip(
"qiskit_aer")
1426 from benchmarks.density_matrix.validation_evidence.metric_completeness_validation
import (
1432 parameter_set_count=1,
1436 assert bundle[
"status"] ==
"pass" 1437 assert bundle[
"suite_name"] ==
"metric_completeness_validation" 1438 assert bundle[
"summary"][
"micro_cases_checked"] == 7
1439 assert bundle[
"summary"][
"workflow_cases_checked"] == 1
1440 assert bundle[
"summary"][
"trace_artifacts_checked"] == 1
1441 assert bundle[
"summary"][
"micro_cases_missing_required_metrics"] == 0
1442 assert bundle[
"summary"][
"workflow_cases_missing_required_metrics"] == 0
1443 assert bundle[
"summary"][
"trace_artifacts_missing_required_metrics"] == 0
1444 assert bundle[
"summary"][
"workflow_cases_with_stable_execution"] == 1
1445 assert bundle[
"summary"][
"trace_execution_stability_pass"]
is True 1446 assert bundle[
"summary"][
"metric_completeness_gate_completed"]
is True 1447 assert bundle[
"required_artifacts"][
"local_correctness_reference"][
"status"] ==
"pass" 1448 assert bundle[
"required_artifacts"][
"workflow_baseline_reference"][
"status"] ==
"pass" 1449 assert bundle[
"required_artifacts"][
"trace_anchor_reference"][
"status"] ==
"pass" 1452 pytest.importorskip(
"qiskit")
1453 pytest.importorskip(
"qiskit_aer")
1457 from benchmarks.density_matrix.validation_evidence.metric_completeness_validation
import (
1458 build_artifact_bundle,
1462 local_correctness_bundle, workflow_baseline_bundle, trace_anchor_bundle, _ =
run_validation(
1464 parameter_set_count=1,
1467 broken_workflow_baseline_bundle = copy.deepcopy(workflow_baseline_bundle)
1468 broken_case = broken_workflow_baseline_bundle[
"cases"][0]
1469 del broken_case[
"process_peak_rss_kb"]
1472 local_correctness_bundle,
1473 broken_workflow_baseline_bundle,
1474 trace_anchor_bundle,
1477 assert bundle[
"status"] ==
"fail" 1478 assert bundle[
"summary"][
"workflow_cases_missing_required_metrics"] == 1
1479 assert "process_peak_rss_kb" in bundle[
"summary"][
"missing_workflow_metric_fields_by_case"][
1480 broken_case[
"case_name"]
1482 assert bundle[
"summary"][
"metric_completeness_gate_completed"]
is False 1485 pytest.importorskip(
"qiskit")
1486 pytest.importorskip(
"qiskit_aer")
1488 from benchmarks.density_matrix.validation_evidence.interpretation_validation
import (
1492 metric_completeness_bundle, optional_bundle, unsupported_bundle, bundle =
run_validation(
1494 parameter_set_count=1,
1498 assert metric_completeness_bundle[
"status"] ==
"pass" 1499 assert optional_bundle[
"status"] ==
"pass" 1500 assert unsupported_bundle[
"status"] ==
"pass" 1501 assert bundle[
"status"] ==
"pass" 1502 assert bundle[
"suite_name"] ==
"validation_evidence_interpretation" 1503 assert bundle[
"summary"][
"mandatory_artifacts_complete"]
is True 1504 assert bundle[
"summary"][
"optional_evidence_supplemental"]
is True 1505 assert bundle[
"summary"][
"unsupported_evidence_negative_only"]
is True 1506 assert bundle[
"summary"][
"main_validation_claim_completed"]
is True 1507 assert bundle[
"summary"][
"incomplete_mandatory_artifacts"] == []
1508 assert bundle[
"required_artifacts"][
"metric_completeness_validation"][
"status"] ==
"pass" 1510 bundle[
"required_artifacts"][
"optional_noise_reference"][
"status"]
1513 assert bundle[
"required_artifacts"][
"unsupported_noise_reference"][
"status"] ==
"pass" 1516 pytest.importorskip(
"qiskit")
1517 pytest.importorskip(
"qiskit_aer")
1521 from benchmarks.density_matrix.validation_evidence.interpretation_validation
import (
1522 build_artifact_bundle,
1526 metric_completeness_bundle, optional_bundle, unsupported_bundle, _ =
run_validation(
1528 parameter_set_count=1,
1531 broken_metric_completeness_bundle = copy.deepcopy(metric_completeness_bundle)
1532 broken_metric_completeness_bundle[
"required_artifacts"][
"workflow_baseline_reference"][
1537 broken_metric_completeness_bundle,
1542 assert bundle[
"status"] ==
"fail" 1543 assert "workflow_baseline_reference" in bundle[
"summary"][
1544 "incomplete_mandatory_artifacts" 1546 assert bundle[
"summary"][
"mandatory_artifacts_complete"]
is False 1547 assert bundle[
"summary"][
"main_validation_claim_completed"]
is False 1550 pytest.importorskip(
"qiskit")
1551 pytest.importorskip(
"qiskit_aer")
1553 from benchmarks.density_matrix.validation_evidence.validation_evidence_publication_bundle
import (
1555 generate_validation_evidence_publication_bundle,
1561 parameter_set_count=1,
1565 assert bundle[
"status"] ==
"pass" 1566 assert bundle[
"suite_name"] ==
"validation_evidence_publication" 1567 assert bundle[
"summary"][
"mandatory_artifact_count"] == 6
1568 assert bundle[
"summary"][
"present_artifact_count"] == 6
1569 assert bundle[
"summary"][
"status_match_count"] == 6
1570 assert bundle[
"summary"][
"missing_artifact_count"] == 0
1571 assert bundle[
"summary"][
"mismatched_status_count"] == 0
1572 assert bundle[
"summary"][
"raw_trace_reference_pass"]
is True 1573 assert bundle[
"provenance"][
"git_revision"]
1574 assert {artifact[
"artifact_id"]
for artifact
in bundle[
"artifacts"]} == {
1575 "local_correctness_bundle",
1576 "workflow_baseline_bundle",
1577 "trace_anchor_bundle",
1578 "optimization_trace_4q",
1579 "metric_completeness_bundle",
1580 "interpretation_bundle",
1582 assert (tmp_path / ARTIFACT_FILENAME).exists()
1585 pytest.importorskip(
"qiskit")
1586 pytest.importorskip(
"qiskit_aer")
1588 from benchmarks.density_matrix.validation_evidence.validation_evidence_publication_bundle
import (
1589 TRACE_ARTIFACT_FILENAME,
1590 generate_validation_evidence_publication_bundle,
1591 validate_validation_evidence_publication_bundle,
1597 parameter_set_count=1,
1600 (tmp_path / TRACE_ARTIFACT_FILENAME).unlink()
1602 with pytest.raises(ValueError, match=
"missing artifact file"):
1606 pytest.importorskip(
"qiskit")
1607 pytest.importorskip(
"qiskit_aer")
1609 from benchmarks.density_matrix.noise_support.noise_support_publication_bundle
import (
1611 generate_noise_support_publication_bundle,
1617 parameter_set_count=1,
1621 assert bundle[
"status"] ==
"pass" 1622 assert bundle[
"suite_name"] ==
"noise_support_publication_evidence" 1623 assert bundle[
"summary"][
"mandatory_artifact_count"] == 6
1624 assert bundle[
"summary"][
"present_artifact_count"] == 6
1625 assert bundle[
"summary"][
"status_match_count"] == 6
1626 assert bundle[
"summary"][
"missing_artifact_count"] == 0
1627 assert bundle[
"summary"][
"mismatched_status_count"] == 0
1628 assert bundle[
"summary"][
"workflow_trace_reference_pass"]
is True 1629 assert bundle[
"provenance"][
"git_revision"]
1630 assert {artifact[
"artifact_id"]
for artifact
in bundle[
"artifacts"]} == {
1631 "required_local_noise_bundle",
1632 "required_local_noise_micro_bundle",
1633 "optional_noise_classification_bundle",
1634 "unsupported_noise_bundle",
1635 "required_local_noise_workflow_bundle",
1636 "required_local_noise_trace_4q",
1638 assert (tmp_path / ARTIFACT_FILENAME).exists()
1641 pytest.importorskip(
"qiskit")
1642 pytest.importorskip(
"qiskit_aer")
1644 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import (
1645 MICRO_VALIDATION_BUNDLE_FILENAME,
1646 EXACT_REGIME_WORKFLOW_BUNDLE_FILENAME,
1647 build_exact_density_validation_bundle,
1650 (tmp_path / MICRO_VALIDATION_BUNDLE_FILENAME).write_text(
"{}\n", encoding=
"utf-8")
1651 (tmp_path / EXACT_REGIME_WORKFLOW_BUNDLE_FILENAME).write_text(
1652 "{}\n", encoding=
"utf-8" 1654 (tmp_path /
"fixed_parameters_4q.json").write_text(
"{}\n", encoding=
"utf-8")
1655 (tmp_path /
"fixed_parameters_6q.json").write_text(
"{}\n", encoding=
"utf-8")
1656 (tmp_path /
"optimization_trace_4q.json").write_text(
"{}\n", encoding=
"utf-8")
1657 (tmp_path /
"unsupported_state_vector_density_noise.json").write_text(
1658 "{}\n", encoding=
"utf-8" 1663 "summary": {
"total_cases": 7,
"passed_cases": 7,
"pass_rate": 1.0},
1671 "documented_10q_anchor_present":
True,
1676 "status":
"completed",
1678 "absolute_energy_error": 1e-12,
1681 "status":
"completed",
1683 "absolute_energy_error": 1e-12,
1687 "status":
"completed",
1688 "optimizer":
"COSINE",
1689 "parameter_count": 18,
1690 "workflow_completed":
True,
1691 "initial_energy": 1.0,
1692 "final_energy": -1.0,
1694 unsupported_result = {
1695 "status":
"unsupported",
1696 "unsupported_category":
"phase2_support_matrix",
1697 "unsupported_reason":
"example",
1702 fixed_results=fixed_results,
1703 trace_result=trace_result,
1704 unsupported_result=unsupported_result,
1705 micro_bundle=micro_bundle,
1706 workflow_bundle=workflow_bundle,
1709 assert bundle[
"status"] ==
"pass" 1710 assert bundle[
"summary"][
"mandatory_artifact_count"] == 6
1711 assert bundle[
"summary"][
"present_artifact_count"] == 6
1712 assert bundle[
"summary"][
"status_match_count"] == 6
1713 assert bundle[
"provenance"][
"git_revision"]
1714 assert {artifact[
"artifact_id"]
for artifact
in bundle[
"artifacts"]} == {
1715 "micro_validation_bundle",
1716 "exact_regime_workflow_bundle",
1717 "fixed_parameters_4q",
1718 "fixed_parameters_6q",
1719 "optimization_trace_4q",
1720 "unsupported_state_vector_density_noise",
1724 from benchmarks.density_matrix.bridge_scope.bridge_publication_bundle
import (
1725 BRIDGE_MICRO_VALIDATION_BUNDLE_FILENAME,
1726 BRIDGE_PUBLICATION_BUNDLE_FILENAME,
1727 UNSUPPORTED_BRIDGE_BUNDLE_FILENAME,
1728 build_bridge_publication_bundle,
1730 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import (
1731 OPTIMIZATION_TRACE_ARTIFACT_FILENAME,
1732 EXACT_REGIME_WORKFLOW_BUNDLE_FILENAME,
1735 (tmp_path /
"fixed_parameters_4q.json").write_text(
"{}\n", encoding=
"utf-8")
1736 (tmp_path /
"fixed_parameters_6q.json").write_text(
"{}\n", encoding=
"utf-8")
1737 (tmp_path / OPTIMIZATION_TRACE_ARTIFACT_FILENAME).write_text(
1738 "{}\n", encoding=
"utf-8" 1740 (tmp_path / EXACT_REGIME_WORKFLOW_BUNDLE_FILENAME).write_text(
1741 "{}\n", encoding=
"utf-8" 1743 (tmp_path / BRIDGE_MICRO_VALIDATION_BUNDLE_FILENAME).write_text(
1744 "{}\n", encoding=
"utf-8" 1746 (tmp_path / UNSUPPORTED_BRIDGE_BUNDLE_FILENAME).write_text(
1747 "{}\n", encoding=
"utf-8" 1752 "status":
"completed",
1754 "absolute_energy_error": 1e-12,
1755 "bridge_source_type":
"generated_hea",
1756 "bridge_operation_count": 12,
1757 "bridge_noise_count": 3,
1760 "status":
"completed",
1762 "absolute_energy_error": 1e-12,
1763 "bridge_source_type":
"generated_hea",
1764 "bridge_operation_count": 18,
1765 "bridge_noise_count": 3,
1769 "status":
"completed",
1770 "case_name":
"optimization_trace_4q",
1771 "optimizer":
"COSINE",
1772 "parameter_count": 18,
1773 "workflow_completed":
True,
1774 "bridge_supported_pass":
True,
1775 "initial_energy": 1.0,
1776 "final_energy": -1.0,
1778 bridge_micro_validation_bundle = {
1780 "requirements": {
"microcase_qubits": [1, 2, 3]},
1781 "summary": {
"total_cases": 5,
"passed_cases": 5,
"pass_rate": 1.0},
1783 unsupported_bridge_bundle = {
1786 "required_categories": [
1795 "unsupported_cases": 4,
1796 "error_match_count": 4,
1797 "required_case_count": 4,
1806 "unsupported_cases": 0,
1807 "bridge_supported_cases": 40,
1808 "documented_10q_anchor_present":
True,
1809 "supported_trace_completed":
True,
1810 "supported_trace_case_name":
"optimization_trace_4q",
1816 fixed_results=fixed_results,
1817 trace_result=trace_result,
1818 bridge_micro_validation_bundle=bridge_micro_validation_bundle,
1819 unsupported_bridge_bundle=unsupported_bridge_bundle,
1820 workflow_bundle=workflow_bundle,
1823 assert bundle[
"status"] ==
"pass" 1824 assert bundle[
"summary"][
"mandatory_artifact_count"] == 6
1825 assert bundle[
"summary"][
"present_artifact_count"] == 6
1826 assert bundle[
"summary"][
"status_match_count"] == 6
1827 assert bundle[
"provenance"][
"git_revision"]
1828 assert {artifact[
"artifact_id"]
for artifact
in bundle[
"artifacts"]} == {
1829 "bridge_fixed_parameters_4q",
1830 "bridge_fixed_parameters_6q",
1831 "bridge_micro_validation_bundle",
1832 "bridge_exact_regime_workflow_bundle",
1833 "bridge_optimization_trace_4q",
1834 "unsupported_bridge_bundle",
1836 assert (tmp_path / BRIDGE_PUBLICATION_BUNDLE_FILENAME).name == BRIDGE_PUBLICATION_BUNDLE_FILENAME
1841 param_num = density_vqe.get_Parameter_Num()
1842 parameters = np.linspace(0.05, 0.05 * param_num, param_num, dtype=np.float64)
1843 density_vqe.set_Optimized_Parameters(parameters)
1845 density_energy = float(density_vqe.Optimization_Problem(parameters))
1847 density_vqe, Hamiltonian
1850 assert density_vqe.backend ==
"density_matrix" 1851 assert np.isfinite(density_energy)
1852 assert np.isclose(density_energy, aer_energy_real, atol=1e-12)
1853 assert abs(aer_energy_imag) <= 1e-12
1858 param_num = density_vqe.get_Parameter_Num()
1859 parameters = np.linspace(0.05, 0.05 * param_num, param_num, dtype=np.float64)
1860 density_vqe.set_Optimized_Parameters(parameters)
1862 initial_energy = density_vqe.Optimization_Problem(parameters)
1863 density_vqe.Start_Optimization()
1864 final_parameters = density_vqe.get_Optimized_Parameters()
1865 final_energy = density_vqe.Optimization_Problem(final_parameters)
1867 assert np.isfinite(initial_energy)
1868 assert np.isfinite(final_energy)
1869 assert final_parameters.shape == parameters.shape
1874 param_num = density_vqe.get_Parameter_Num()
1875 parameters = np.linspace(0.05, 0.05 * param_num, param_num, dtype=np.float64)
1876 density_vqe.set_Optimized_Parameters(parameters)
1880 match=
"supports only BAYES_OPT or COSINE optimization traces",
1882 density_vqe.Start_Optimization()
1889 Hamiltonian = sp.sparse.eye(2**qbit_num,format=
"csr")
1895 VQE_eye = VQE_cls(Hamiltonian, qbit_num, config)
1898 VQE_eye.set_Optimizer(
"GRAD_DESCEND")
1901 VQE_eye.set_Ansatz(
"HEA")
1904 VQE_eye.Generate_Circuit(layers, blocks)
1907 param_num = VQE_eye.get_Parameter_Num()
1908 parameters = np.random.random( (param_num,) )
1910 VQE_eye.set_Optimized_Parameters(parameters)
1913 VQE_eye.Start_Optimization()
1916 quantum_circuit = VQE_eye.get_Qiskit_Circuit()
1919 parameters = VQE_eye.get_Optimized_Parameters()
1922 Energy = VQE_eye.Optimization_Problem( parameters )
1925 assert (abs(Energy-1)<1e-4)
1934 for idx
in range(qbit_num-1):
1935 topology.append( (idx, idx+1) )
1939 config = {
"agent_lifetime":10,
1940 "max_inner_iterations":1000,
1941 "max_iterations":1000,
1943 "agent_exploration_rate":0.5,
1944 "max_inner_iterations_adam":500,
1945 "convergence_length": 300}
1949 VQE_Heisenberg = VQE_cls(Hamiltonian, qbit_num, config)
1952 VQE_Heisenberg.set_Optimizer(
"AGENTS")
1955 VQE_Heisenberg.set_Ansatz(
"HEA_ZYZ")
1958 VQE_Heisenberg.Generate_Circuit(layers, blocks)
1961 param_num = VQE_Heisenberg.get_Parameter_Num()
1962 parameters = np.random.random( (param_num,) )
1964 VQE_Heisenberg.set_Optimized_Parameters(parameters)
1967 VQE_Heisenberg.Start_Optimization()
1970 quantum_circuit = VQE_Heisenberg.get_Qiskit_Circuit()
1973 lambdas, vecs = sp.sparse.linalg.eigs(Hamiltonian)
1976 parameters = VQE_Heisenberg.get_Optimized_Parameters()
1979 Energy = VQE_Heisenberg.Optimization_Problem( parameters )
1981 print(
'Expected energy: ', np.real(lambdas[0]))
1982 print(
'Obtained energy: ', Energy)
1983 assert ((Energy - np.real(lambdas[0]))<1e-2)
def test_invalid_backend_rejected(self)
def test_unsupported_noise_bundle_schema(self)
def test_trace_anchor_bundle_schema(self)
def test_density_backend_rejects_invalid_after_gate_index(self)
def test_exact_density_validation_bundle_manifest_schema(self, tmp_path)
def test_trace_anchor_missing_trace_marker_blocks_closure(self)
def test_validation_evidence_publication_missing_trace_file_fails_bundle_validation(self, tmp_path)
def _build_state_vector_vqe_with_density_noise(self, qbit_num, omit_backend=False)
def build_exact_density_validation_bundle
def test_backend_argument_normalization(self)
def generate_hamiltonian(topology, n)
def test_density_backend_rejects_gradient_entrypoint(self)
def test_density_noise_aliases_normalize_to_required_local_models(self)
def _build_density_backend_vqe(self, qbit_num, optimizer=None, density_noise=None)
def _get_density_backend_config()
def test_density_backend_rejects_unsupported_optimizer_on_start(self)
def test_required_local_noise_bundle_schema(self)
def _build_identity_vqe(self, qbit_num=2, backend=None, Hamiltonian=None)
def test_density_matrix_backend_anchor_fixed_parameter_smoke(self, qbit_num)
def test_metric_completeness_bundle_schema(self)
def test_validation_evidence_publication_bundle_schema(self, tmp_path)
def run_fixed_parameter_case
def test_density_backend_rejects_unsupported_ansatz(self)
def build_artifact_bundle(results)
def _get_required_local_noise_cases()
def test_explicit_state_vector_matches_legacy_default(self)
def test_interpretation_bundle_schema(self)
def test_fixed_parameter_artifact_includes_bridge_metadata(self)
def validate_bridge_microcase(case, verbose=True)
def test_bridge_scope_bundle_schema(self)
def build_exact_regime_workflow_bundle
def _density_energy(hamiltonian, density_matrix)
def test_density_matrix_backend_anchor_fixed_parameter_matches_aer_reference(self)
def run_optimization_trace()
def test_density_backend_rejects_target_out_of_range(self)
def test_trace_artifact_includes_bridge_metadata(self)
def test_Heisenberg_XX(self)
def test_deferred_density_noise_families_fail_before_execution(self, channel)
def test_state_vector_rejects_density_noise(self, omit_backend)
def run_validation(verbose=True)
def test_invalid_ansatz_rejected(self)
def build_bridge_publication_bundle
def test_exact_regime_workflow_bundle_schema(self)
def test_density_matrix_bridge_metadata_matches_generated_anchor_circuit(self, qbit_num)
def test_bridge_publication_bundle_manifest_schema(self, tmp_path)
def generate_validation_evidence_publication_bundle
def _expected_bridge_operations(vqe)
def test_required_local_noise_validation_models_execute_on_supported_path(self)
def write_artifact_bundle
def _get_identity_config()
def _get_density_backend_noise()
def test_noise_support_publication_bundle_schema(self, tmp_path)
def test_density_backend_rejects_negative_after_gate_index(self)
def test_density_backend_rejects_custom_gate_structure_source(self)
def test_trace_artifact_schema(self)
def test_density_backend_rejects_noise_value_out_of_range(self)
def test_exact_regime_workflow_case_includes_bridge_metadata(self)
def test_metric_completeness_missing_workflow_metric_blocks_gate(self)
def test_density_backend_rejects_unsupported_density_noise_channel(self)
def test_density_noise_normalization(self)
def test_density_matrix_backend_bounded_optimization_trace(self)
def test_workflow_baseline_missing_case_blocks_closure(self)
def test_required_local_noise_workflow_bundle_schema(self, tmp_path)
def build_exact_regime_parameter_sets
def run_exact_regime_workflow_case
def test_workflow_baseline_bundle_schema(self)
def test_validation_interpretation_incomplete_mandatory_artifact_blocks_main_claim(self)
def _normalize_density_noise_spec(density_noise)
def test_VQE_Identity(self)
def _planner_operation_kind_tags()
def validate_validation_evidence_publication_bundle
def test_invalid_optimizer_rejected(self)
def _get_density_backend_aer_reference(self, vqe, Hamiltonian)
def _insert_reference_noise(base_circuit, density_noise)
def generate_noise_support_publication_bundle
def test_density_backend_requires_generated_hea_circuit(self)
def test_unsupported_bridge_bundle_schema(self)
def test_bridge_scope_mixed_bridge_case_passes(self)