def test_sparse_output_probabilities(self): """ Test a circuit for which the metropolis method fails. See Issue #306 for details. """ shots = 100 nqubits = 5 qreg = QuantumRegister(nqubits) creg = ClassicalRegister(nqubits) circ = QuantumCircuit(qreg, creg) circ.h(qreg[0]) circ.t(qreg[0]) circ.h(qreg[0]) for i in range(nqubits - 1): circ.cx(qreg[0], qreg[i + 1]) circ.measure(qreg, creg) target = { '0x0': shots * (0.5 + sqrt(2) / 4.), '0x1f': shots * (0.5 - sqrt(2) / 4.) } qobj = assemble([circ], QasmSimulator(), shots=shots) job = QasmSimulator().run(qobj, **self.BACKEND_OPTS_NE) result = job.result() self.assertSuccess(result) self.compare_counts(result, [circ], [target], delta=0.05 * shots)
def test_teleport_default_basis_gates(self): """Test teleport circuits compiling to backend default basis_gates.""" shots = 1000 circuits = ref_algorithms.teleport_circuit() qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_algorithms.teleport_counts(shots) job = QasmSimulator().run(qobj, **self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_teleport_default_basis_gates(self): """Test teleport circuits compiling to backend default basis_gates.""" shots = 2000 circuits = ref_algorithms.teleport_circuit() qobj = qiskit_compile(circuits, QasmSimulator(), shots=shots) targets = ref_algorithms.teleport_counts(shots) job = QasmSimulator().run(qobj, backend_options={"method": "ch"}) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_t_gate_deterministic_default_basis_gates(self): """Test t-gate circuits compiling to backend default basis_gates.""" shots = 100 circuits = ref_non_clifford.t_gate_circuits_deterministic( final_measure=True) qobj = qiskit_compile(circuits, QasmSimulator(), shots=shots) targets = ref_non_clifford.t_gate_counts_deterministic(shots) job = QasmSimulator().run(qobj, backend_options={"method": "ch"}) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_conditional_1bit(self): """Test conditional operations on 1-bit conditional register.""" shots = 100 circuits = ref_conditionals.conditional_circuits_1bit( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_conditionals.conditional_counts_1bit(shots) job = QasmSimulator().run(qobj, backend_options=self.BACKEND_OPTS_SAMPLING) result = job.result() self.assertTrue(getattr(result, 'success', False)) self.compare_counts(result, circuits, targets, delta=0)
def test_measure_nondeterministic_multi_qubit_without_sampling(self): """Test ExtendedStabilizer reset with non-deterministic counts""" shots = 4000 circuits = ref_measure.multiqubit_measure_circuits_nondeterministic( allow_sampling=False) targets = ref_measure.multiqubit_measure_counts_nondeterministic(shots) qobj = assemble(circuits, QasmSimulator(), shots=shots) job = QasmSimulator().run(qobj, **self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_conditional_2bit(self): """Test conditional operations on 2-bit conditional register.""" shots = 100 circuits = ref_conditionals.conditional_circuits_2bit( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_conditionals.conditional_counts_2bit(shots) job = QasmSimulator().run(qobj, **self.BACKEND_OPTS_SAMPLING) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0)
def test_t_gate_deterministic_default_basis_gates(self): """Test t-gate circuits compiling to backend default basis_gates.""" shots = 100 circuits = ref_non_clifford.t_gate_circuits_deterministic( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_non_clifford.t_gate_counts_deterministic(shots) job = QasmSimulator().run(qobj, **self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0.1 * shots)
def test_measure_deterministic_multi_qubit_with_sampling(self): """Test QasmSimulator multi-qubit measure with deterministic counts with sampling""" shots = 100 qobj = ref_measure.measure_circuits_qobj_deterministic(allow_sampling=True) qobj.config.shots = shots circuits = [experiment.header.name for experiment in qobj.experiments] targets = ref_measure.measure_counts_qobj_deterministic(shots) job = QasmSimulator().run(qobj) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_measure_nondeterministic_multi_qubit_with_sampling(self): """Test CHimulator reset with non-deterministic counts""" shots = 4000 circuits = ref_measure.multiqubit_measure_circuits_nondeterministic( allow_sampling=True) targets = ref_measure.multiqubit_measure_counts_nondeterministic(shots) qobj = assemble(circuits, QasmSimulator(), shots=shots) job = QasmSimulator().run(qobj, backend_options=self.BACKEND_OPTS_SAMPLING) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_swap_gate_nondeterministic_default_basis_gates(self): """Test swap-gate circuits compiling to backend default basis_gates.""" shots = 2000 circuits = ref_2q_clifford.swap_gate_circuits_nondeterministic( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_2q_clifford.swap_gate_counts_nondeterministic(shots) job = QasmSimulator().run(qobj, backend_options=self.BACKEND_OPTS_SAMPLING) result = job.result() self.assertTrue(getattr(result, 'success', False)) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_conditional_2bit(self): """Test conditional operations on 2-bit conditional register.""" shots = 100 circuits = ref_conditionals.conditional_circuits_2bit( final_measure=True) qobj = qiskit_compile(circuits, QasmSimulator(), shots=shots) targets = ref_conditionals.conditional_counts_2bit(shots) job = QasmSimulator().run(qobj, backend_options={"method": "ch"}) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_measure_nondeterministic_without_sampling(self): """Test CHimulator measure with non-deterministic counts without sampling""" shots = 4000 circuits = ref_measure.measure_circuits_nondeterministic( allow_sampling=False) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_measure.measure_counts_nondeterministic(shots) job = QasmSimulator().run(qobj, backend_options=self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_measure_deterministic_multi_qubit_without_sampling(self): """Test ExtendedStabilizer multi-qubit measure with deterministic counts without sampling""" shots = 100 circuits = ref_measure.multiqubit_measure_circuits_deterministic( allow_sampling=False) targets = ref_measure.multiqubit_measure_counts_deterministic(shots) qobj = assemble(circuits, QasmSimulator(), shots=shots) job = QasmSimulator().run(qobj, backend_options=self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0)
def test_measure_deterministic_with_sampling(self): """Test ExtendedStabilizer measure with deterministic counts with sampling""" shots = 100 circuits = ref_measure.measure_circuits_deterministic( allow_sampling=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_measure.measure_counts_deterministic(shots) job = QasmSimulator().run(qobj, **self.BACKEND_OPTS_SAMPLING) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0)
def test_unitary_gate_complex(self): """Test unitary qobj instruction with complex matrices.""" shots = 100 qobj = ref_unitary_gate.unitary_gate_circuits_complex_deterministic(final_measure=True) qobj.config.shots = shots circuits = [experiment.header.name for experiment in qobj.experiments] targets = ref_unitary_gate.unitary_gate_counts_complex_deterministic(shots) job = QasmSimulator().run(qobj) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_measure_nondeterministic_multi_qubit_without_sampling(self): """Test QasmSimulator reset with non-deterministic counts""" shots = 2000 qobj = ref_measure.measure_circuits_qobj_nondeterministic(allow_sampling=False) qobj.config.shots = shots circuits = [experiment.header.name for experiment in qobj.experiments] targets = ref_measure.measure_counts_qobj_nondeterministic(shots) job = QasmSimulator().run(qobj) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_sdg_gate_nondeterministic_default_basis_gates(self): shots = 4000 """Test sdg-gate circuits compiling to backend default basis_gates.""" circuits = ref_1q_clifford.sdg_gate_circuits_nondeterministic( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_1q_clifford.sdg_gate_counts_nondeterministic(shots) job = QasmSimulator().run(qobj, **self.BACKEND_OPTS_SAMPLING) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_measure_nondeterministic_without_sampling(self): """Test CHimulator measure with non-deterministic counts without sampling""" shots = 2000 circuits = ref_measure.measure_circuits_nondeterministic( allow_sampling=False) qobj = qiskit_compile(circuits, QasmSimulator(), shots=shots) targets = ref_measure.measure_counts_nondeterministic(shots) job = QasmSimulator().run(qobj, backend_options={"method": "ch"}) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_reset_deterministic(self): """Test CHSimulator reset with for circuits with deterministic counts""" # For statevector output we can combine deterministic and non-deterministic # count output circuits shots = 100 circuits = ref_reset.reset_circuits_deterministic(final_measure=True) qobj = qiskit_compile(circuits, QasmSimulator(), shots=shots) targets = ref_reset.reset_counts_deterministic(shots) job = QasmSimulator().run(qobj, backend_options={"method": "ch"}) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_measure_deterministic_without_sampling(self): """Test ExtendedStabilizer measure with deterministic counts without sampling""" shots = 100 circuits = ref_measure.measure_circuits_deterministic( allow_sampling=False) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_measure.measure_counts_deterministic(shots) job = QasmSimulator().run( qobj, backend_options={"method": "extended_stabilizer"}) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_measure_nondeterministic_multi_qubit_without_sampling(self): """Test CHimulator reset with non-deterministic counts""" shots = 2000 circuits = ref_measure.multiqubit_measure_circuits_nondeterministic( allow_sampling=False) targets = ref_measure.multiqubit_measure_counts_nondeterministic(shots) qobj = assemble(circuits, QasmSimulator(), shots=shots) job = QasmSimulator().run( qobj, backend_options={"method": "extended_stabilizer"}) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_reset_deterministic(self): """Test ExtendedStabilizer reset with for circuits with deterministic counts""" # For statevector output we can combine deterministic and non-deterministic # count output circuits shots = 100 circuits = ref_reset.reset_circuits_deterministic(final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_reset.reset_counts_deterministic(shots) job = QasmSimulator().run(qobj, **self.BACKEND_OPTS) result = job.result() self.assertSuccess(result) self.compare_counts(result, circuits, targets, delta=0)
def test_cz_gate_deterministic_default_basis_gates(self): """Test cz-gate circuits compiling to backend default basis_gates.""" shots = 100 circuits = ref_2q_clifford.cz_gate_circuits_deterministic( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_2q_clifford.cz_gate_counts_deterministic(shots) job = QasmSimulator().run(qobj, backend_options=self.BACKEND_OPTS_SAMPLING) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_measure_deterministic_multi_qubit_without_sampling(self): """Test ExtendedStabilizer multi-qubit measure with deterministic counts without sampling""" shots = 100 qobj = ref_measure.measure_circuits_qobj_deterministic( allow_sampling=False) qobj.config.shots = shots circuits = [experiment.header.name for experiment in qobj.experiments] targets = ref_measure.measure_counts_qobj_deterministic(shots) job = QasmSimulator().run( qobj, backend_options={"method": "extended_stabilizer"}) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)
def test_reset_nondeterministic(self): """Test ExtendedStabilizer reset with for circuits with non-deterministic counts""" # For statevector output we can combine deterministic and non-deterministic # count output circuits shots = 2000 circuits = ref_reset.reset_circuits_nondeterministic( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_reset.reset_counts_nondeterministic(shots) job = QasmSimulator().run(qobj, backend_options=self.BACKEND_OPTS_SAMPLING) result = job.result() self.assertTrue(getattr(result, 'success', False)) self.compare_counts(result, circuits, targets, delta=0.05 * shots)
def test_grovers_default_basis_gates(self): """Test grovers circuits compiling to backend default basis_gates.""" shots = 500 circuits = ref_algorithms.grovers_circuit(final_measure=True, allow_sampling=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_algorithms.grovers_counts(shots) opts = self.BACKEND_OPTS_SAMPLING.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.1 * shots)
def test_ccx_gate_nondeterministic_default_basis_gates(self): """Test ccx-gate circuits compiling to backend default basis_gates.""" shots = 500 circuits = ref_non_clifford.ccx_gate_circuits_nondeterministic( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_non_clifford.ccx_gate_counts_nondeterministic(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.10 * shots)
def test_tdg_gate_nondeterministic_default_basis_gates(self): """Test tdg-gate circuits compiling to backend default basis_gates.""" shots = 500 circuits = ref_non_clifford.tdg_gate_circuits_nondeterministic( final_measure=True) qobj = assemble(circuits, QasmSimulator(), shots=shots) targets = ref_non_clifford.tdg_gate_counts_nondeterministic(shots) opts = self.BACKEND_OPTS.copy() opts["extended_stabilizer_mixing_time"] = 50 job = QasmSimulator().run(qobj, backend_options=opts) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0.1 * shots)
def test_measure_deterministic_with_sampling(self): """Test CHSimulator measure with deterministic counts with sampling""" shots = 100 circuits = ref_measure.measure_circuits_deterministic(allow_sampling=True) qobj = qiskit_compile(circuits, QasmSimulator(), shots=shots) targets = ref_measure.measure_counts_deterministic(shots) job = QasmSimulator().run(qobj, backend_options={ "method": "ch", "disable_measurement_opt":False }) result = job.result() self.is_completed(result) self.compare_counts(result, circuits, targets, delta=0)