コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
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 = 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)
コード例 #5
0
 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)
コード例 #6
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)
コード例 #7
0
 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)
コード例 #8
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)
コード例 #9
0
 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)
コード例 #10
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)
コード例 #11
0
 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)
コード例 #12
0
 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)
コード例 #13
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)
コード例 #14
0
 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)
コード例 #15
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)
コード例 #16
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)
コード例 #17
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)
コード例 #18
0
 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)
コード例 #19
0
 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)
コード例 #20
0
 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)
コード例 #23
0
 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)
コード例 #25
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)
コード例 #26
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)
コード例 #27
0
 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)
コード例 #28
0
 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)
コード例 #30
0
 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)