Skip to main contentIBM Quantum Documentation
This page is from the dev version of Qiskit SDK. Go to the stable version

Circuit and Schedule Assembler

qiskit.assembler


Functions

assemble_circuits

qiskit.assembler.assemble_circuits(circuits, run_config, qobj_id, qobj_header)

GitHub

Assembles a list of circuits into a qobj that can be run on the backend.

Deprecated since version 1.2

The function qiskit.assembler.assemble_circuits.assemble_circuits() is deprecated as of Qiskit 1.2. It will be removed in the 2.0 release. The Qobj class and related functionality are part of the deprecated BackendV1 workflow, and no longer necessary for BackendV2. If a user workflow requires Qobj it likely relies on deprecated functionality and should be updated to use BackendV2.

Parameters

  • circuits (List[QuantumCircuit]) – circuit(s) to assemble
  • run_config (RunConfig) – configuration of the runtime environment
  • qobj_id (int) – identifier for the generated qobj
  • qobj_header (QobjHeader) – header to pass to the results

Returns

The qobj to be run on the backends

Return type

QasmQobj

Examples

from qiskit.circuit import QuantumRegister, ClassicalRegister, QuantumCircuit
from qiskit.assembler import assemble_circuits
from qiskit.assembler.run_config import RunConfig
# Build a circuit to convert into a Qobj
q = QuantumRegister(2)
c = ClassicalRegister(2)
qc = QuantumCircuit(q, c)
qc.h(q[0])
qc.cx(q[0], q[1])
qc.measure(q, c)
# Assemble a Qobj from the input circuit
qobj = assemble_circuits(circuits=[qc],
                         qobj_id="custom-id",
                         qobj_header=[],
                         run_config=RunConfig(shots=2000, memory=True, init_qubits=True))

assemble_schedules

qiskit.assembler.assemble_schedules(schedules, qobj_id, qobj_header, run_config)

GitHub

Assembles a list of schedules into a qobj that can be run on the backend.

Deprecated since version 1.3

The function qiskit.assembler.assemble_schedules.assemble_schedules() is deprecated as of Qiskit 1.3. It will be removed in Qiskit 2.0. The entire Qiskit Pulse package is being deprecated and will be moved to the Qiskit Dynamics repository: https://github.com/qiskit-community/qiskit-dynamics. Note that once removed, qiskit.assembler.assemble_schedules.assemble_schedules() will have no alternative in Qiskit.

Parameters

Returns

The Qobj to be run on the backends.

Raises

QiskitError – when frequency settings are not supplied.

Return type

PulseQobj

Examples

from qiskit import pulse
from qiskit.assembler import assemble_schedules
from qiskit.assembler.run_config import RunConfig
# Construct a Qobj header for the output Qobj
header = {"backend_name": "FakeOpenPulse2Q", "backend_version": "0.0.0"}
# Build a configuration object for the output Qobj
config = RunConfig(shots=1024,
                   memory=False,
                   meas_level=1,
                   meas_return='avg',
                   memory_slot_size=100,
                   parametric_pulses=[],
                   init_qubits=True,
                   qubit_lo_freq=[4900000000.0, 5000000000.0],
                   meas_lo_freq=[6500000000.0, 6600000000.0],
                   schedule_los=[])
# Build a Pulse schedule to assemble into a Qobj
schedule = pulse.Schedule()
schedule += pulse.Play(pulse.Waveform([0.1] * 16, name="test0"),
                       pulse.DriveChannel(0),
                       name="test1")
schedule += pulse.Play(pulse.Waveform([0.1] * 16, name="test1"),
                       pulse.DriveChannel(0),
                       name="test2")
schedule += pulse.Play(pulse.Waveform([0.5] * 16, name="test0"),
                       pulse.DriveChannel(0),
                       name="test1")
# Assemble a Qobj from the schedule.
pulseQobj = assemble_schedules(schedules=[schedule],
                               qobj_id="custom-id",
                               qobj_header=header,
                               run_config=config)

disassemble

qiskit.assembler.disassemble(qobj)

GitHub

Disassemble a qobj and return the circuits or pulse schedules, run_config, and user header.

Note

disassemble(assemble(qc)) is not guaranteed to produce an exactly equal circuit to the input, due to limitations in the QasmQobj format that need to be maintained for backend system compatibility. This is most likely to be the case when using newer features of QuantumCircuit. In most cases, the output should be equivalent, if not quite equal.

Deprecated since version 1.2

The function qiskit.assembler.disassemble.disassemble() is deprecated as of Qiskit 1.2. It will be removed in the 2.0 release. The Qobj class and related functionality are part of the deprecated BackendV1 workflow, and no longer necessary for BackendV2. If a user workflow requires Qobj it likely relies on deprecated functionality and should be updated to use BackendV2.

Parameters

qobj (Qobj) – The input qobj object to disassemble

Returns

The disassembled program which consists of:

  • programs: A list of quantum circuits or pulse schedules
  • run_config: The dict of the run config
  • user_qobj_header: The dict of any user headers in the qobj

Return type

Union[CircuitModule, PulseModule]

Examples

from qiskit.circuit import QuantumRegister, ClassicalRegister, QuantumCircuit
from qiskit.compiler.assembler import assemble
from qiskit.assembler.disassemble import disassemble
# Create a circuit to assemble into a qobj
q = QuantumRegister(2)
c = ClassicalRegister(2)
qc = QuantumCircuit(q, c)
qc.h(q[0])
qc.cx(q[0], q[1])
qc.measure(q, c)
# Assemble the circuit into a Qobj
qobj = assemble(qc, shots=2000, memory=True)
# Disassemble the qobj back into a circuit
circuits, run_config_out, headers = disassemble(qobj)

Classes

RunConfig([shots, seed_simulator, memory, ...])Class for Run Configuration.
Was this page helpful?
Report a bug or request content on GitHub.