def test_mitigated_execute_with_cdr(circuit_type, fit_function, kwargs, random_state): circuit = random_x_z_cnot_circuit( LineQubit.range(2), n_moments=5, random_state=random_state, ) circuit = convert_from_mitiq(circuit, circuit_type) obs = Observable(PauliString("XZ"), PauliString("YY")) true_value = obs.expectation(circuit, simulate) noisy_value = obs.expectation(circuit, execute) cdr_executor = mitigate_executor( executor=execute, observable=obs, simulator=simulate, num_training_circuits=20, fraction_non_clifford=0.5, fit_function=fit_function, random_state=random_state, **kwargs, ) cdr_mitigated = cdr_executor(circuit) assert abs(cdr_mitigated - true_value) <= abs(noisy_value - true_value)
def test_execute_with_variable_noise_cdr(circuit_type): circuit = random_x_z_cnot_circuit(LineQubit.range(2), n_moments=5, random_state=1) circuit = convert_from_mitiq(circuit, circuit_type) obs = Observable(PauliString("IZ"), PauliString("ZZ")) true_value = obs.expectation(circuit, simulate) noisy_value = obs.expectation(circuit, execute) vncdr_value = execute_with_cdr( circuit, execute, obs, simulator=simulate, num_training_circuits=10, fraction_non_clifford=0.5, scale_factors=[1, 3], random_state=1, ) assert abs(vncdr_value - true_value) <= abs(noisy_value - true_value)
def test_mitigate_executor_with_cdr_using_clifford_circuit(): a, b = cirq.LineQubit.range(2) clifCirc = cirq.Circuit( cirq.H.on(a), cirq.H.on(b), ) obs = Observable(PauliString("XZ"), PauliString("YY")) mitigated_executor = mitigate_executor(observable=obs, executor=execute, simulator=simulate) mitigated = mitigated_executor(clifCirc) assert obs.expectation(clifCirc, simulate) == mitigated
def test_execute_with_pec_with_observable(): circuit = twoq_circ obs = Observable(PauliString("ZZ")) executor = partial( mitiq_cirq.compute_density_matrix, noise_model=cirq.depolarize, noise_level=(BASE_NOISE, ), ) true_value = 1.0 noisy_value = obs.expectation(circuit, mitiq_cirq.compute_density_matrix) pec_value = execute_with_pec( circuit, executor, observable=obs, representations=pauli_representations, num_samples=100, force_run_all=False, random_state=101, ) assert abs(pec_value - true_value) < abs(noisy_value - true_value) assert np.isclose(pec_value, true_value, atol=0.1)