- class qiskit.circuit.InstructionSet(*, resource_requester=None)#
Instruction collection, and their contexts.
New collection of instructions.
The context (
cargsthat each instruction is attached to) is also stored separately for each instruction.
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
Clbitinstances, and returns the concrete resource. If this is not given, specifying a condition with an index is forbidden, and all concrete
ClassicalRegisterresources will be assumed to be valid.
resource_requesteris 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.
Legacy getter for the cargs components of an instruction set. This does not support mutation.
Legacy getter for the instruction components of an instruction set. This does not support mutation.
Legacy getter for the qargs components of an instruction set. This does not support mutation.
- add(instruction, qargs=None, cargs=None)#
Add an instruction and its context (where it is attached).
- c_if(classical, val)#
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.
classical (Clbit | ClassicalRegister | int) – the classical resource the equality condition should be on. If this is given as an integer, it will be resolved into a
Clbitusing the same conventions as the circuit these instructions are attached to.
val (int) – the value the classical resource should be equal to.
This same instance of
InstructionSet, but now mutated to have the given equality condition.
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:
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')
Invert all instructions.