Código fuente para qiskit.providers.fake_provider.fake_openpulse_3q

# This code is part of Qiskit.
#
# (C) Copyright IBM 2019.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
#
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

"""
Fake backend supporting OpenPulse.
"""

from qiskit.providers.models import (
    GateConfig,
    PulseBackendConfiguration,
    PulseDefaults,
    Command,
    UchannelLO,
)
from qiskit.qobj import PulseQobjInstruction

from .fake_backend import FakeBackend


[documentos]class FakeOpenPulse3Q(FakeBackend): """Trivial extension of the FakeOpenPulse2Q.""" def __init__(self): configuration = PulseBackendConfiguration( backend_name="fake_openpulse_3q", backend_version="0.0.0", n_qubits=3, meas_levels=[0, 1, 2], basis_gates=["u1", "u2", "u3", "cx", "id"], simulator=False, local=True, conditional=True, open_pulse=True, memory=False, max_shots=65536, gates=[GateConfig(name="TODO", parameters=[], qasm_def="TODO")], coupling_map=[[0, 1], [1, 2]], n_registers=3, n_uchannels=3, u_channel_lo=[ [UchannelLO(q=0, scale=1.0 + 0.0j)], [UchannelLO(q=0, scale=-1.0 + 0.0j), UchannelLO(q=1, scale=1.0 + 0.0j)], [UchannelLO(q=0, scale=1.0 + 0.0j)], ], qubit_lo_range=[[4.5, 5.5], [4.5, 5.5], [4.5, 5.5]], meas_lo_range=[[6.0, 7.0], [6.0, 7.0], [6.0, 7.0]], dt=1.3333, dtm=10.5, rep_times=[100, 250, 500, 1000], meas_map=[[0, 1, 2]], channel_bandwidth=[ [-0.2, 0.4], [-0.3, 0.3], [-0.3, 0.3], [-0.02, 0.02], [-0.02, 0.02], [-0.02, 0.02], [-0.2, 0.4], [-0.3, 0.3], [-0.3, 0.3], ], meas_kernels=["kernel1"], discriminators=["max_1Q_fidelity"], acquisition_latency=[[100, 100], [100, 100], [100, 100]], conditional_latency=[ [100, 1000], [1000, 100], [100, 1000], [100, 1000], [1000, 100], [100, 1000], [1000, 100], [100, 1000], [1000, 100], ], channels={ "acquire0": {"type": "acquire", "purpose": "acquire", "operates": {"qubits": [0]}}, "acquire1": {"type": "acquire", "purpose": "acquire", "operates": {"qubits": [1]}}, "acquire2": {"type": "acquire", "purpose": "acquire", "operates": {"qubits": [2]}}, "d0": {"type": "drive", "purpose": "drive", "operates": {"qubits": [0]}}, "d1": {"type": "drive", "purpose": "drive", "operates": {"qubits": [1]}}, "d2": {"type": "drive", "purpose": "drive", "operates": {"qubits": [2]}}, "m0": {"type": "measure", "purpose": "measure", "operates": {"qubits": [0]}}, "m1": {"type": "measure", "purpose": "measure", "operates": {"qubits": [1]}}, "m2": {"type": "measure", "purpose": "measure", "operates": {"qubits": [2]}}, "u0": { "type": "control", "purpose": "cross-resonance", "operates": {"qubits": [0, 1]}, }, "u1": { "type": "control", "purpose": "cross-resonance", "operates": {"qubits": [1, 0]}, }, "u2": { "type": "control", "purpose": "cross-resonance", "operates": {"qubits": [2, 1]}, }, }, ) self._defaults = PulseDefaults.from_dict( { "qubit_freq_est": [4.9, 5.0, 4.8], "meas_freq_est": [6.5, 6.6, 6.4], "buffer": 10, "pulse_library": [ {"name": "x90p_d0", "samples": 2 * [0.1 + 0j]}, {"name": "x90p_d1", "samples": 2 * [0.1 + 0j]}, {"name": "x90p_d2", "samples": 2 * [0.1 + 0j]}, {"name": "x90m_d0", "samples": 2 * [-0.1 + 0j]}, {"name": "x90m_d1", "samples": 2 * [-0.1 + 0j]}, {"name": "x90m_d2", "samples": 2 * [-0.1 + 0j]}, {"name": "y90p_d0", "samples": 2 * [0.1j]}, {"name": "y90p_d1", "samples": 2 * [0.1j]}, {"name": "y90p_d2", "samples": 2 * [0.1j]}, {"name": "xp_d0", "samples": 2 * [0.2 + 0j]}, {"name": "ym_d0", "samples": 2 * [-0.2j]}, {"name": "xp_d1", "samples": 2 * [0.2 + 0j]}, {"name": "ym_d1", "samples": 2 * [-0.2j]}, {"name": "cr90p_u0", "samples": 9 * [0.1 + 0j]}, {"name": "cr90m_u0", "samples": 9 * [-0.1 + 0j]}, {"name": "cr90p_u1", "samples": 9 * [0.1 + 0j]}, {"name": "cr90m_u1", "samples": 9 * [-0.1 + 0j]}, {"name": "measure_m0", "samples": 10 * [0.1 + 0j]}, {"name": "measure_m1", "samples": 10 * [0.1 + 0j]}, {"name": "measure_m2", "samples": 10 * [0.1 + 0j]}, ], "cmd_def": [ Command.from_dict( { "name": "u1", "qubits": [0], "sequence": [ PulseQobjInstruction( name="fc", ch="d0", t0=0, phase="-P0" ).to_dict() ], } ).to_dict(), Command.from_dict( { "name": "u1", "qubits": [1], "sequence": [ PulseQobjInstruction( name="fc", ch="d1", t0=0, phase="-P0" ).to_dict() ], } ).to_dict(), Command.from_dict( { "name": "u1", "qubits": [2], "sequence": [ PulseQobjInstruction( name="fc", ch="d2", t0=0, phase="-P0" ).to_dict() ], } ).to_dict(), Command.from_dict( { "name": "u2", "qubits": [0], "sequence": [ PulseQobjInstruction( name="fc", ch="d0", t0=0, phase="-P1" ).to_dict(), PulseQobjInstruction(name="y90p_d0", ch="d0", t0=0).to_dict(), PulseQobjInstruction( name="fc", ch="d0", t0=2, phase="-P0" ).to_dict(), ], } ).to_dict(), Command.from_dict( { "name": "u2", "qubits": [1], "sequence": [ PulseQobjInstruction( name="fc", ch="d1", t0=0, phase="-P1" ).to_dict(), PulseQobjInstruction(name="y90p_d1", ch="d1", t0=0).to_dict(), PulseQobjInstruction( name="fc", ch="d1", t0=2, phase="-P0" ).to_dict(), ], } ).to_dict(), Command.from_dict( { "name": "u2", "qubits": [2], "sequence": [ PulseQobjInstruction( name="fc", ch="d2", t0=0, phase="-P1" ).to_dict(), PulseQobjInstruction(name="y90p_d2", ch="d2", t0=0).to_dict(), PulseQobjInstruction( name="fc", ch="d2", t0=2, phase="-P0" ).to_dict(), ], } ).to_dict(), Command.from_dict( { "name": "u3", "qubits": [0], "sequence": [ PulseQobjInstruction( name="fc", ch="d0", t0=0, phase="-P2" ).to_dict(), PulseQobjInstruction(name="x90p_d0", ch="d0", t0=0).to_dict(), PulseQobjInstruction( name="fc", ch="d0", t0=2, phase="-P0" ).to_dict(), PulseQobjInstruction(name="x90m_d0", ch="d0", t0=2).to_dict(), PulseQobjInstruction( name="fc", ch="d0", t0=4, phase="-P1" ).to_dict(), ], } ).to_dict(), Command.from_dict( { "name": "u3", "qubits": [1], "sequence": [ PulseQobjInstruction( name="fc", ch="d1", t0=0, phase="-P2" ).to_dict(), PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(), PulseQobjInstruction( name="fc", ch="d1", t0=2, phase="-P0" ).to_dict(), PulseQobjInstruction(name="x90m_d1", ch="d1", t0=2).to_dict(), PulseQobjInstruction( name="fc", ch="d1", t0=4, phase="-P1" ).to_dict(), ], } ).to_dict(), Command.from_dict( { "name": "u3", "qubits": [2], "sequence": [ PulseQobjInstruction( name="fc", ch="d2", t0=0, phase="-P2" ).to_dict(), PulseQobjInstruction(name="x90p_d2", ch="d2", t0=0).to_dict(), PulseQobjInstruction( name="fc", ch="d2", t0=2, phase="-P0" ).to_dict(), PulseQobjInstruction(name="x90m_d2", ch="d2", t0=2).to_dict(), PulseQobjInstruction( name="fc", ch="d2", t0=4, phase="-P1" ).to_dict(), ], } ).to_dict(), Command.from_dict( { "name": "cx", "qubits": [0, 1], "sequence": [ PulseQobjInstruction( name="fc", ch="d0", t0=0, phase=1.57 ).to_dict(), PulseQobjInstruction(name="ym_d0", ch="d0", t0=0).to_dict(), PulseQobjInstruction(name="xp_d0", ch="d0", t0=11).to_dict(), PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(), PulseQobjInstruction(name="cr90p_u0", ch="u0", t0=2).to_dict(), PulseQobjInstruction(name="cr90m_u0", ch="u0", t0=13).to_dict(), ], } ).to_dict(), Command.from_dict( { "name": "cx", "qubits": [1, 2], "sequence": [ PulseQobjInstruction( name="fc", ch="d1", t0=0, phase=1.57 ).to_dict(), PulseQobjInstruction(name="ym_d1", ch="d1", t0=0).to_dict(), PulseQobjInstruction(name="xp_d1", ch="d1", t0=11).to_dict(), PulseQobjInstruction(name="x90p_d2", ch="d2", t0=0).to_dict(), PulseQobjInstruction(name="cr90p_u1", ch="u1", t0=2).to_dict(), PulseQobjInstruction(name="cr90m_u1", ch="u1", t0=13).to_dict(), ], } ).to_dict(), Command.from_dict( { "name": "measure", "qubits": [0, 1, 2], "sequence": [ PulseQobjInstruction(name="measure_m0", ch="m0", t0=0).to_dict(), PulseQobjInstruction(name="measure_m1", ch="m1", t0=0).to_dict(), PulseQobjInstruction(name="measure_m2", ch="m2", t0=0).to_dict(), PulseQobjInstruction( name="acquire", duration=10, t0=0, qubits=[0, 1, 2], memory_slot=[0, 1, 2], ).to_dict(), ], } ).to_dict(), ], } ) super().__init__(configuration)
[documentos] def defaults(self): # pylint: disable=missing-function-docstring return self._defaults