Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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')
Example #5
0
    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)
Example #7
0
 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)
Example #10
0
 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)
Example #11
0
 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)
Example #13
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")
Example #14
0
 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)
Example #16
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)
Example #18
0
 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)
Example #21
0
    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")
Example #22
0
    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")
Example #23
0
    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)