def test_standard_reset0_error_100percent(self):
     """Test 100% Pauli error on id gates"""
     qr = QuantumRegister(1, 'qr')
     cr = ClassicalRegister(1, 'cr')
     circuit = QuantumCircuit(qr, cr)
     circuit.x(qr)
     circuit.barrier(qr)
     circuit.measure(qr, cr)
     backend = QasmSimulator()
     shots = 100
     # test noise model
     error = reset_error(1)
     noise_model = NoiseModel()
     noise_model.add_all_qubit_quantum_error(error, ['id', 'x'])
     # Execute
     target = {'0x0': shots}
     qobj = compile([circuit],
                    backend,
                    shots=shots,
                    basis_gates=noise_model.basis_gates)
     result = backend.run(qobj, noise_model=noise_model).result()
     self.is_completed(result)
     self.compare_counts(result, [circuit], [target], delta=0)
 def test_specific_qubit_pauli_error_reset_25percent(self):
     """Test 25% Pauli-X error on reset of qubit-1"""
     qr = QuantumRegister(2, 'qr')
     cr = ClassicalRegister(2, 'cr')
     circuit = QuantumCircuit(qr, cr)
     circuit.reset(qr)
     circuit.barrier(qr)
     circuit.measure(qr, cr)
     backend = QasmSimulator()
     shots = 2000
     # test noise model
     error = pauli_error([('X', 0.25), ('I', 0.75)])
     noise_model = NoiseModel()
     noise_model.add_quantum_error(error, 'reset', [1])
     # Execute
     target = {'0x0': 3 * shots / 4, '0x2': shots / 4}
     qobj = compile([circuit],
                    backend,
                    shots=shots,
                    basis_gates=noise_model.basis_gates)
     result = backend.run(qobj, noise_model=noise_model).result()
     self.is_completed(result)
     self.compare_counts(result, [circuit], [target], delta=0.05 * shots)
 def test_specific_qubit_pauli_error_gate_100percent(self):
     """Test 100% Pauli error on id gates on qubit-1"""
     qr = QuantumRegister(2, 'qr')
     cr = ClassicalRegister(2, 'cr')
     circuit = QuantumCircuit(qr, cr)
     circuit.iden(qr)
     circuit.barrier(qr)
     circuit.measure(qr, cr)
     backend = QasmSimulator()
     shots = 100
     # test noise model
     error = pauli_error([('X', 1)])
     noise_model = NoiseModel()
     noise_model.add_quantum_error(error, 'id', [1])
     # Execute
     target = {'0x2': shots}
     qobj = compile([circuit],
                    backend,
                    shots=shots,
                    basis_gates=noise_model.basis_gates)
     result = backend.run(qobj, noise_model=noise_model).result()
     self.is_completed(result)
     self.compare_counts(result, [circuit], [target], delta=0)
Beispiel #4
0
 def test_nonlocal_pauli_error_gate_25percent(self):
     """Test 100% non-local Pauli error on cx(0, 1) gate"""
     qr = QuantumRegister(3, 'qr')
     cr = ClassicalRegister(3, 'cr')
     circuit = QuantumCircuit(qr, cr)
     circuit.cx(qr[0], qr[1])
     circuit.barrier(qr)
     circuit.cx(qr[1], qr[0])
     circuit.barrier(qr)
     circuit.measure(qr, cr)
     backend = QasmSimulator()
     shots = 2000
     # test noise model
     error = pauli_error([('XII', 0.25), ('III', 0.75)])
     noise_model = NoiseModel()
     noise_model.add_nonlocal_quantum_error(error, 'cx', [0, 1], [0, 1, 2])
     # Execute
     target = {'0x0': 3 * shots / 4, '0x4': shots / 4}
     qobj = compile([circuit], backend, shots=shots,
                    basis_gates=noise_model.basis_gates)
     result = backend.run(qobj, noise_model=noise_model).result()
     self.is_completed(result)
     self.compare_counts(result, [circuit], [target], delta=0.05 * shots)
Beispiel #5
0
    def test_readout_error_qubit1(self):
        """Test readout error on qubit 1 for bell state"""

        # Test circuit: ideal bell state
        qr = QuantumRegister(2, 'qr')
        cr = ClassicalRegister(2, 'cr')
        circuit = QuantumCircuit(qr, cr)
        circuit.h(qr[0])
        circuit.cx(qr[0], qr[1])
        # Ensure qubit 0 is measured before qubit 1
        circuit.barrier(qr)
        circuit.measure(qr[0], cr[0])
        circuit.barrier(qr)
        circuit.measure(qr[1], cr[1])
        backend = QasmSimulator()

        # Asymetric readout error on qubit-0 only
        probs_given0 = [0.9, 0.1]
        probs_given1 = [0.3, 0.7]
        noise_model = NoiseModel()
        noise_model.add_readout_error([probs_given0, probs_given1], [1])

        shots = 2000
        target = {
            '0x0': probs_given0[0] * shots / 2,
            '0x1': probs_given1[0] * shots / 2,
            '0x2': probs_given0[1] * shots / 2,
            '0x3': probs_given1[1] * shots / 2
        }
        qobj = compile([circuit],
                       backend,
                       shots=shots,
                       basis_gates=noise_model.basis_gates)
        result = backend.run(qobj, noise_model=noise_model).result()
        self.is_completed(result)
        self.compare_counts(result, [circuit], [target], delta=0.05 * shots)
Beispiel #6
0
 def test_nonlocal_pauli_error_measure_25percent(self):
     """Test 25% Pauli-X error on qubit-1 when measuring qubit 0"""
     qr = QuantumRegister(2, 'qr')
     cr = ClassicalRegister(2, 'cr')
     circuit = QuantumCircuit(qr, cr)
     # use barrier to ensure measure qubit 0 is before qubit 1
     circuit.measure(qr[0], cr[0])
     circuit.barrier(qr)
     circuit.measure(qr[1], cr[1])
     backend = QasmSimulator()
     shots = 1000
     # test noise model
     error = pauli_error([('X', 0.25), ('I', 0.75)])
     noise_model = NoiseModel()
     noise_model.add_nonlocal_quantum_error(error, 'measure', [0], [1])
     # Execute
     target = {'0x0': 3 * shots / 4, '0x2': shots / 4}
     qobj = compile([circuit],
                    backend,
                    shots=shots,
                    basis_gates=noise_model.basis_gates)
     result = backend.run(qobj, noise_model=noise_model).result()
     self.is_completed(result)
     self.compare_counts(result, [circuit], [target], delta=0.05 * shots)
Beispiel #7
0
 def test_all_qubit_pauli_error_measure_25percent(self):
     """Test 25% Pauli-X error on measure"""
     qr = QuantumRegister(2, 'qr')
     cr = ClassicalRegister(2, 'cr')
     circuit = QuantumCircuit(qr, cr)
     circuit.measure(qr, cr)
     backend = QasmSimulator()
     shots = 2000
     # test noise model
     error = pauli_error([('X', 0.25), ('I', 0.75)])
     noise_model = NoiseModel()
     noise_model.add_all_qubit_quantum_error(error, 'measure')
     # Execute
     target = {
         '0x0': 9 * shots / 16,
         '0x1': 3 * shots / 16,
         '0x2': 3 * shots / 16,
         '0x3': shots / 16
     }
     circuit = transpile(circuit, basis_gates=noise_model.basis_gates)
     qobj = assemble([circuit], backend, shots=shots)
     result = backend.run(qobj, noise_model=noise_model).result()
     self.is_completed(result)
     self.compare_counts(result, [circuit], [target], delta=0.05 * shots)
Beispiel #8
0
def unitary_gate_circuits_real_deterministic(final_measure=True):
    """Unitary gate test circuits with deterministic count output."""

    final_qobj = _dummy_qobj()
    qr = QuantumRegister(2)
    if final_measure:
        cr = ClassicalRegister(2)
        regs = (qr, cr)
    else:
        regs = (qr, )
    x_mat = np.array([[0, 1], [1, 0]])
    cx_mat = np.array([[1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 1, 0, 0]])

    # CX01, |00> state
    circuit = QuantumCircuit(*regs)
    circuit.barrier(qr)
    qobj = assemble(circuit, QasmSimulator(), shots=1)
    append_instr(qobj, 0, unitary_instr(cx_mat, [0, 1]))
    if final_measure:
        append_instr(qobj, 0, measure_instr([0], [0]))
        append_instr(qobj, 0, measure_instr([1], [1]))
    final_qobj.experiments.append(qobj.experiments[0])

    # CX10, |00> state
    circuit = QuantumCircuit(*regs)
    circuit.barrier(qr)
    qobj = assemble(circuit, QasmSimulator(), shots=1)
    append_instr(qobj, 0, unitary_instr(cx_mat, [1, 0]))
    if final_measure:
        append_instr(qobj, 0, measure_instr([0], [0]))
        append_instr(qobj, 0, measure_instr([1], [1]))
    final_qobj.experiments.append(qobj.experiments[0])

    # CX01.(X^I), |10> state
    circuit = QuantumCircuit(*regs)
    circuit.barrier(qr)
    qobj = assemble(circuit, QasmSimulator(), shots=1)
    append_instr(qobj, 0, unitary_instr(x_mat, [1]))
    append_instr(qobj, 0, unitary_instr(cx_mat, [0, 1]))
    if final_measure:
        append_instr(qobj, 0, measure_instr([0], [0]))
        append_instr(qobj, 0, measure_instr([1], [1]))
    final_qobj.experiments.append(qobj.experiments[0])

    # CX10.(I^X), |01> state
    circuit = QuantumCircuit(*regs)
    circuit.barrier(qr)
    qobj = assemble(circuit, QasmSimulator(), shots=1)
    append_instr(qobj, 0, unitary_instr(x_mat, [0]))
    append_instr(qobj, 0, unitary_instr(cx_mat, [1, 0]))
    if final_measure:
        append_instr(qobj, 0, measure_instr([0], [0]))
        append_instr(qobj, 0, measure_instr([1], [1]))
    final_qobj.experiments.append(qobj.experiments[0])

    # CX01.(I^X), |11> state
    circuit = QuantumCircuit(*regs)
    circuit.barrier(qr)
    qobj = assemble(circuit, QasmSimulator(), shots=1)
    append_instr(qobj, 0, unitary_instr(x_mat, [0]))
    append_instr(qobj, 0, unitary_instr(cx_mat, [0, 1]))
    if final_measure:
        append_instr(qobj, 0, measure_instr([0], [0]))
        append_instr(qobj, 0, measure_instr([1], [1]))
    final_qobj.experiments.append(qobj.experiments[0])

    # CX10.(X^I), |11> state
    circuit = QuantumCircuit(*regs)
    circuit.barrier(qr)
    qobj = assemble(circuit, QasmSimulator(), shots=1)
    append_instr(qobj, 0, unitary_instr(x_mat, [1]))
    append_instr(qobj, 0, unitary_instr(cx_mat, [1, 0]))
    if final_measure:
        append_instr(qobj, 0, measure_instr([0], [0]))
        append_instr(qobj, 0, measure_instr([1], [1]))
    final_qobj.experiments.append(qobj.experiments[0])

    return final_qobj
Beispiel #9
0
 def test_mappable_qasm(self):
     """Test that the qasm controller can be mapped."""
     cfunc = qasm_controller_execute()
     sim = QasmSimulator()
     fqobj = self._create_qobj(sim)
     self._map_and_test(cfunc, fqobj)