Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
test_partitioned_channel_native_phase31_slice.py
Go to the documentation of this file.
1 """Phase 3.1 slice: channel-native runtime vs sequential reference (1q microcase)."""
2 
3 from __future__ import annotations
4 
5 from pathlib import Path
6 import sys
7 
8 import pytest
9 
10 REPO_ROOT = Path(__file__).resolve().parents[2]
11 if str(REPO_ROOT) not in sys.path:
12  sys.path.insert(0, str(REPO_ROOT))
13 
14 from squander.partitioning.noisy_planner import (
15  build_canonical_planner_surface_from_operation_specs,
16  build_partition_descriptor_set,
17 )
18 from squander.partitioning.noisy_runtime import (
19  PHASE31_FUSION_KIND_CHANNEL_NATIVE_MOTIF,
20  PHASE31_RUNTIME_PATH_CHANNEL_NATIVE,
21  execute_partitioned_density_channel_native,
22  execute_sequential_density_reference,
23 )
24 from squander.partitioning.noisy_validation_errors import NoisyRuntimeValidationError
26  PHASE3_RUNTIME_DENSITY_TOL,
27  build_initial_parameters,
28  build_density_comparison_metrics,
29 )
31  _u3,
32  build_phase31_microcase_descriptor_set,
33 )
34 
35 
38  "phase31_microcase_1q_u3_local_noise_chain"
39  )
40  parameters = build_initial_parameters(descriptor_set.parameter_count)
41  reference = execute_sequential_density_reference(descriptor_set, parameters)
42  result = execute_partitioned_density_channel_native(descriptor_set, parameters)
43 
44  assert result.runtime_path == PHASE31_RUNTIME_PATH_CHANNEL_NATIVE
45  assert result.requested_runtime_path == PHASE31_RUNTIME_PATH_CHANNEL_NATIVE
46  assert result.actual_fused_execution is True
47  assert result.fused_region_count == 1
48  assert len(result.fused_regions) == 1
49  assert (
50  result.fused_regions[0].candidate_kind == PHASE31_FUSION_KIND_CHANNEL_NATIVE_MOTIF
51  )
53  result.density_matrix, reference
54  )
55  assert metrics["frobenius_norm_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
56  assert metrics["max_abs_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
57  assert result.trace_deviation <= PHASE3_RUNTIME_DENSITY_TOL
58  assert result.rho_is_valid is True
59 
60 
62  """Out-of-range parametric noise rate is clamped like NoisyCircuit / noise_operation.cpp."""
64  qbit_num=1,
65  source_type="microcase_builder",
66  workload_id="slice_parametric_noise_clamp",
67  operation_specs=[
68  _u3(0),
69  {
70  "kind": "noise",
71  "name": "local_depolarizing",
72  "target_qbit": 0,
73  "source_gate_index": 0,
74  "param_count": 1,
75  },
76  ],
77  )
78  descriptor_set = build_partition_descriptor_set(surface)
79  parameters = build_initial_parameters(descriptor_set.parameter_count)
80  parameters[3] = 1.5
81  reference = execute_sequential_density_reference(descriptor_set, parameters)
82  result = execute_partitioned_density_channel_native(descriptor_set, parameters)
83  metrics = build_density_comparison_metrics(result.density_matrix, reference)
84  assert metrics["frobenius_norm_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
85  assert metrics["max_abs_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
86 
87 
90  qbit_num=1,
91  source_type="microcase_builder",
92  workload_id="slice_negative_pure_u3_only",
93  operation_specs=[_u3(0)],
94  )
95  descriptor_set = build_partition_descriptor_set(surface)
96  parameters = build_initial_parameters(descriptor_set.parameter_count)
97  with pytest.raises(NoisyRuntimeValidationError) as excinfo:
98  execute_partitioned_density_channel_native(descriptor_set, parameters)
99  assert excinfo.value.first_unsupported_condition == "channel_native_noise_presence"
def execute_sequential_density_reference
Execute a sequential density reference.
def execute_partitioned_density_channel_native
def build_density_comparison_metrics