Skip to main contentIBM Quantum Documentation

InstructionSet

qiskit.circuit.InstructionSet(*, resource_requester=None) GitHub(opens in a new tab)

Bases: object(opens in a new tab)

Instruction collection, and their contexts.

New collection of instructions.

The context (qargs and cargs that each instruction is attached to) is also stored separately for each instruction.

Parameters

resource_requester (Callable[..., ClassicalRegister |Clbit] | None) –

A callable that takes in the classical resource used in the condition, verifies that it is present in the attached circuit, resolves any indices into concrete Clbit instances, and returns the concrete resource. If this is not given, specifying a condition with an index is forbidden, and all concrete Clbit and ClassicalRegister resources will be assumed to be valid.

Note

The callback resource_requester is called once for each call to c_if(), and assumes that a call implies that the resource will now be used. It may throw an error if the resource is not valid for usage.


Attributes

cargs

Legacy getter for the cargs components of an instruction set. This does not support mutation.

instructions

Legacy getter for the instruction components of an instruction set. This does not support mutation.

qargs

Legacy getter for the qargs components of an instruction set. This does not support mutation.


Methods

add

add(instruction, qargs=None, cargs=None)

Add an instruction and its context (where it is attached).

c_if

c_if(classical, val)

Set a classical equality condition on all the instructions in this set between the ClassicalRegister or Clbit classical and value val.

Note

This is a setter method, not an additive one. Calling this multiple times will silently override any previously set condition on any of the contained instructions; it does not stack.

Parameters

Returns

This same instance of InstructionSet, but now mutated to have the given equality condition.

Raises

CircuitError – if the passed classical resource is invalid, or otherwise not resolvable to a concrete resource that these instructions are permitted to access.

Return type

InstructionSet

Example

from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit
 
qr = QuantumRegister(2)
cr = ClassicalRegister(2)
qc = QuantumCircuit(qr, cr)
qc.h(range(2))
qc.measure(range(2), range(2))
 
# apply x gate if the classical register has the value 2 (10 in binary)
qc.x(0).c_if(cr, 2)
 
# apply y gate if bit 0 is set to 1
qc.y(1).c_if(0, 1)
 
qc.draw('mpl')
../_images/qiskit-circuit-InstructionSet-1.png

inverse

inverse(annotated=False)

Invert all instructions.

Was this page helpful?