Note

This is the documentation for the current state of the development branch of Qiskit Experiments. The documentation or APIs here can change prior to being released.

PulseBackend

class PulseBackend(static_hamiltonian, hamiltonian_operators, static_dissipators=None, dt=1.0000000000000002e-10, solver_method='RK23', seed=0, **kwargs)[source]

Abstract base class for pulse simulation backends in Qiskit Experiments.

This backend is designed for the tests in Qiskit Experiments as well as for the tutorials in Qiskit Experiments. The backend has a Qiskit Dynamics pulse simulator which allows it to simulate pulse schedules that are included in the calibrations attached to quantum circuits. In addition, sub-classes should implement a set of default schedules so that circuits that do not provide calibrations can also run, much like the hardware backends. In addition, the backends are also capable of simulating level- one (IQ data) and level-two (counts) data. Subclasses of these backends can have an optional disciminator so that they can produce counts based on sampled IQ data. If a discriminator is not provided then the counts will be produced from a statevector or density matrix.

Warning

Some of the functionality in this backend may move to Qiskit Dynamics and/or be refactored. These backends are not intended as a general pulse-simulator backend but rather to test the experiments and write short tutorials to demonstrate an experiment without having to run on hardware.

Initialize a backend with model information.

Parameters:
  • static_hamiltonian (ndarray) – Time-independent term in the Hamiltonian.

  • hamiltonian_operators (ndarray) – List of time-dependent operators

  • static_dissipators (Optional[ndarray]) – Constant dissipation operators. Defaults to None.

  • dt (float) – Sample rate for simulating pulse schedules. Defaults to 0.1*1e-9.

  • solver_method – Numerical solver method to use. Check qiskit_dynamics for available methods. Defaults to “RK23”.

  • seed (int) – An optional seed given to the random number generator. If this argument is not set then the seed defaults to 0.

Attributes

PulseBackend.coupling_map

Return the CouplingMap object

PulseBackend.default_pulse_unitaries

Return the default unitary matrices of the backend.

PulseBackend.discriminator

Return the discriminator for the IQ data.

PulseBackend.dt

Return the system time resolution of input signals

PulseBackend.dtm

Return the system time resolution of output signals

PulseBackend.instruction_durations

Return the InstructionDurations object.

PulseBackend.instruction_schedule_map

Return the InstructionScheduleMap for the instructions defined in this backend's target.

PulseBackend.instructions

A list of Instruction tuples on the backend of the form (instruction, (qubits)

PulseBackend.max_circuits

The maximum number of circuits (or Pulse schedules) that can be run in a single job.

PulseBackend.meas_map

Return the grouping of measurements which are multiplexed

PulseBackend.num_qubits

Return the number of qubits the backend has.

PulseBackend.operation_names

A list of instruction names that the backend supports.

PulseBackend.operations

A list of Instruction instances that the backend supports.

PulseBackend.options

Return the options for the backend

PulseBackend.provider

Return the backend Provider.

PulseBackend.target

Contains information for circuit transpilation.

PulseBackend.version

Methods

PulseBackend.acquire_channel(qubit)

Return the acquisition channel for the given qubit.

PulseBackend.control_channel(qubits)

Return the secondary drive channel for the given qubit

PulseBackend.defaults()

return backend pulse defaults

PulseBackend.drive_channel(qubit)

Return the drive channel for the given qubit.

PulseBackend.measure_channel(qubit)

Return the measure stimulus channel for the given qubit.

PulseBackend.qubit_properties(qubit)

Return QubitProperties for a given qubit.

PulseBackend.run(run_input, **run_options)

Run method takes circuits as input and returns FakeJob with IQ data or counts.

PulseBackend.set_options(**fields)

Set the options fields for the backend

PulseBackend.solve(schedule, qubits)

Solves for qubit dynamics under the action of a pulse instruction