def test_backend_method_nonclifford_circuit_and_unitary_noise(self): """Test statevector method is used for Clifford circuit""" # Noise Model error = pauli_error([['XX', 0.5], ['II', 0.5]], standard_gates=False) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error(error, ['cz', 'cx']) # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) qobj = assemble(circuits, self.SIMULATOR, shots=shots) def get_result(): return self.SIMULATOR.run(qobj, backend_options=self.BACKEND_OPTS, noise_model=noise_model).result() # Check simulation method method = self.BACKEND_OPTS.get('method', 'automatic') if method == 'stabilizer': self.assertRaises(AerError, get_result) else: result = get_result() self.is_completed(result) if method == 'automatic': target_method = 'density_matrix' else: target_method = method self.compare_result_metadata(result, circuits, 'method', target_method)
def test_backend_method_nonclifford_circuits(self): """Test statevector method is used for Clifford circuit""" # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) qobj = assemble(circuits, self.SIMULATOR, shots=shots) def get_result(): return self.SIMULATOR.run( qobj, backend_options=self.BACKEND_OPTS).result() # Check simulation method method = self.BACKEND_OPTS.get('method', 'automatic') if method == 'stabilizer': self.assertRaises(AerError, get_result) else: result = get_result() self.is_completed(result) if method == 'automatic': target_method = 'statevector' else: target_method = method self.compare_result_metadata(result, circuits, 'method', target_method)
def test_backend_method_nonclifford_circuit_and_kraus_noise(self): """Test statevector method is used for Clifford circuit""" # Noise Model error = amplitude_damping_error(0.5) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error( error, ['id', 'x', 'y', 'z', 'h', 's', 'sdg']) # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) qobj = assemble(circuits, self.SIMULATOR, shots=shots) result = self.SIMULATOR.run(qobj, backend_options=self.BACKEND_OPTS, noise_model=noise_model).result() success = getattr(result, 'success', False) # Check simulation method method = self.BACKEND_OPTS.get('method', 'automatic') if method == 'stabilizer': self.assertFalse(success) else: self.assertTrue(success) if method == 'automatic': target_method = 'density_matrix' else: target_method = method self.compare_result_metadata(result, circuits, 'method', target_method)
def test_backend_method_nonclifford_circuit_and_kraus_noise(self): """Test statevector method is used for Clifford circuit""" # Noise Model error = amplitude_damping_error(0.5) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error( error, ['id', 'x', 'y', 'z', 'h', 's', 'sdg']) # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) qobj = compile(circuits, self.SIMULATOR, shots=shots) def get_result(): return self.SIMULATOR.run( qobj, backend_options=self.BACKEND_OPTS, noise_model=noise_model).result() # Check simulation method method = self.BACKEND_OPTS.get('method') if method == 'stabilizer': self.assertRaises(AerError, get_result) else: result = get_result() self.is_completed(result) self.compare_result_metadata(result, circuits, 'method', 'statevector')
def test_auto_method_nonclifford_circuit_and_reset_noise(self): """Test statevector method is used for Clifford circuit""" # Test noise model noise_circs = [[{ "name": "reset", "qubits": [0] }], [{ "name": "id", "qubits": [0] }]] noise_probs = [0.5, 0.5] error = QuantumError(zip(noise_circs, noise_probs)) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error( error, ['id', 'x', 'y', 'z', 'h', 's', 'sdg']) backend = self.backend(noise_model=noise_model) # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) result = backend.run(circuits, shots=shots).result() success = getattr(result, 'success', False) self.compare_result_metadata(result, circuits, 'method', "density_matrix")
def test_ccx_gate_deterministic_default_basis_gates(self): """Test ccx-gate circuits compiling to backend default basis_gates.""" circuits = ref_non_clifford.ccx_gate_circuits_deterministic(final_measure=False) targets = ref_non_clifford.ccx_gate_unitary_deterministic() job = execute(circuits, UnitarySimulator(), shots=1) result = job.result() self.is_completed(result) self.compare_unitary(result, circuits, targets)
def test_ccx_gate_deterministic_minimal_basis_gates(self): """Test ccx-gate gate circuits compiling to u3,cx""" circuits = ref_non_clifford.ccx_gate_circuits_deterministic(final_measure=False) targets = ref_non_clifford.ccx_gate_statevector_deterministic() job = execute(circuits, StatevectorSimulator(), shots=1, basis_gates=['u3', 'cx']) result = job.result() self.is_completed(result) self.compare_statevector(result, circuits, targets)
def test_ccx_gate_deterministic_minimal_basis_gates(self): """Test ccx-gate gate circuits compiling to u3,cx""" circuits = ref_non_clifford.ccx_gate_circuits_deterministic(final_measure=False) targets = ref_non_clifford.ccx_gate_unitary_deterministic() job = execute(circuits, UnitarySimulator(), shots=1, basis_gates=['u3', 'cx']) result = job.result() self.assertTrue(getattr(result, 'success', False)) self.compare_unitary(result, circuits, targets)
def test_ccx_gate_deterministic_waltz_basis_gates(self): """Test ccx-gate gate circuits compiling to u1,u2,u3,cx""" circuits = ref_non_clifford.ccx_gate_circuits_deterministic(final_measure=False) targets = ref_non_clifford.ccx_gate_unitary_deterministic() job = execute(circuits, UnitarySimulator(), shots=1, basis_gates=['u1', 'u2', 'u3', 'cx']) result = job.result() self.is_completed(result) self.compare_unitary(result, circuits, targets)
def test_ccx_gate_deterministic_default_basis_gates(self): """Test ccx-gate circuits compiling to backend default basis_gates.""" circuits = ref_non_clifford.ccx_gate_circuits_deterministic(final_measure=False) targets = ref_non_clifford.ccx_gate_statevector_deterministic() job = execute(circuits, StatevectorSimulator(), shots=1) result = job.result() self.assertTrue(getattr(result, 'success', False)) self.compare_statevector(result, circuits, targets)
def test_ccx_gate_deterministic_default_basis_gates(self): """Test ccx-gate circuits compiling to backend default basis_gates.""" circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=False) targets = ref_non_clifford.ccx_gate_unitary_deterministic() job = execute(circuits, self.SIMULATOR, shots=1, **self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_unitary(result, circuits, targets)
def test_ccx_gate_deterministic_default_basis_gates(self): """Test ccx-gate circuits compiling to backend default basis_gates.""" shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) targets = ref_non_clifford.ccx_gate_counts_deterministic(shots) job = execute(circuits, self.SIMULATOR, shots=shots) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_auto_method_nonclifford_circuits(self): """Test statevector method is used for Clifford circuit""" backend = self.backend() # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) result = backend.run(circuits, shots=shots).result() success = getattr(result, 'success', False) self.compare_result_metadata(result, circuits, 'method', "statevector")
def test_ccx_gate_deterministic_minimal_basis_gates(self): """Test ccx-gate gate circuits compiling to u3,cx""" shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) targets = ref_non_clifford.ccx_gate_counts_deterministic(shots) job = execute(circuits, self.SIMULATOR, shots=shots, basis_gates=['u3', 'cx']) result = job.result() self.assertTrue(getattr(result, 'success', False)) self.compare_counts(result, circuits, targets, delta=0)
def test_ccx_gate_deterministic_waltz_basis_gates(self): """Test ccx-gate gate circuits compiling to u1,u2,u3,cx""" shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) targets = ref_non_clifford.ccx_gate_counts_deterministic(shots) job = execute(circuits, self.SIMULATOR, shots=shots, basis_gates=['u1', 'u2', 'u3', 'cx']) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_ccx_gate_deterministic_default_basis_gates(self): """Test ccx-gate circuits compiling to backend default basis_gates.""" shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_non_clifford.ccx_gate_counts_deterministic(shots) opts = self.BACKEND_OPTS.copy() opts["extended_stabilizer_metropolis_mixing_time"] = 100 job = QasmSimulator().run(qobj, **opts) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_ccx_gate_deterministic_default_basis_gates(self, method, device): """Test ccx-gate circuits compiling to backend default basis_gates.""" backend = self.backend(method=method, device=device, extended_stabilizer_metropolis_mixing_time=100) shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) circuits = transpile(circuits, backend, optimization_level=0) result = backend.run(circuits, shots=shots).result() targets = ref_non_clifford.ccx_gate_counts_deterministic(shots) self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_ccx_gate_deterministic_waltz_basis_gates(self): """Test ccx-gate gate circuits compiling to u1,u2,u3,cx""" circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=False) targets = ref_non_clifford.ccx_gate_unitary_deterministic() job = execute(circuits, self.SIMULATOR, shots=1, basis_gates=['u1', 'u2', 'u3', 'cx'], **self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_unitary(result, circuits, targets)
def test_ccx_gate_deterministic_minimal_basis_gates(self): """Test ccx-gate gate circuits compiling to u3,cx""" shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) targets = ref_non_clifford.ccx_gate_counts_deterministic(shots) job = execute(circuits, self.SIMULATOR, shots=shots, basis_gates=['u3', 'cx'], backend_options=self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0)
def test_ccx_gate_deterministic_default_basis_gates(self): """Test ccx-gate circuits compiling to backend default basis_gates.""" shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic(final_measure=True) qobj = qiskit_compile(circuits, QasmSimulator(), shots=shots) targets = ref_non_clifford.ccx_gate_counts_deterministic(shots) job = QasmSimulator().run(qobj, backend_options={ "method": "extended_stabilizer", "extended_stabilizer_mixing_time": 100 }) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_auto_method_nonclifford_circuit_and_unitary_noise(self): """Test statevector method is used for Clifford circuit""" # Noise Model error = pauli_error([['XX', 0.5], ['II', 0.5]], standard_gates=False) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error(error, ['cz', 'cx']) backend = self.backend(noise_model=noise_model) # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) result = backend.run(circuits, shots=shots).result() success = getattr(result, 'success', False) self.compare_result_metadata(result, circuits, 'method', "density_matrix")
def test_auto_method_nonclifford_circuit_and_kraus_noise(self): """Test statevector method is used for Clifford circuit""" # Noise Model error = amplitude_damping_error(0.5) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error( error, ['id', 'x', 'y', 'z', 'h', 's', 'sdg']) backend = self.backend(noise_model=noise_model) # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) result = backend.run(circuits, shots=shots).result() success = getattr(result, 'success', False) self.compare_result_metadata(result, circuits, 'method', "density_matrix")
def test_backend_method_nonclifford_circuit_and_reset_noise(self): """Test statevector method is used for Clifford circuit""" # Test noise model noise_circs = [[{ "name": "reset", "qubits": [0] }], [{ "name": "id", "qubits": [0] }]] noise_probs = [0.5, 0.5] error = QuantumError(zip(noise_circs, noise_probs)) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error( error, ['id', 'x', 'y', 'z', 'h', 's', 'sdg']) # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) qobj = assemble(circuits, self.SIMULATOR, shots=shots) def get_result(): return self.SIMULATOR.run(qobj, backend_options=self.BACKEND_OPTS, noise_model=noise_model).result() # Check simulation method method = self.BACKEND_OPTS.get('method', 'automatic') if method == 'stabilizer': self.assertRaises(AerError, get_result) else: result = get_result() self.is_completed(result) if method == 'automatic': target_method = 'density_matrix' else: target_method = method self.compare_result_metadata(result, circuits, 'method', target_method)
def test_backend_method_nonclifford_circuits(self): """Test statevector method is used for Clifford circuit""" # Test circuits shots = 100 circuits = ref_non_clifford.ccx_gate_circuits_deterministic( final_measure=True) qobj = assemble(circuits, self.SIMULATOR, shots=shots) result = self.SIMULATOR.run(qobj, **self.BACKEND_OPTS).result() success = getattr(result, 'success', False) # Check simulation method method = self.BACKEND_OPTS.get('method', 'automatic') if method == 'stabilizer': self.assertFalse(success) else: self.assertTrue(success) if method == 'automatic': target_method = 'statevector' else: target_method = method self.compare_result_metadata(result, circuits, 'method', target_method)