Skip to main content
IBM Quantum Platform

CircuitInstruction

class qiskit.circuit.CircuitInstruction(operation, qubits=None, clbits=None)

Bases : object

Une instruction unique dans un QuantumCircuit, composée du operation et de divers opérandes.

Remarque

Les noms de cette classe peuvent prêter à confusion, Instructionet Operationet l'attribut de cette classe operation. Nous préférons utiliser une terminologie analogue à celle des langages d'assemblage, où une "instruction" est composée d'une "opération" et de ses "opérandes".

Historiquement, Instruction celle-ci venait en premier et contenait à l'origine les qubits sur lesquels elle opérait ainsi que tous les paramètres; il s'agissait donc d'une véritable « instruction ». Au fil du temps, QuantumCircuit elle s'est chargée de suivre les qubits et les clbits, et cette classe a fini par être mieux définie comme une « opération ». Changer le nom d'un objet aussi fondamental entraînerait une rupture d'API très gênante pour les utilisateurs; c'est pourquoi nous l'avons conservé.

Cette classe a été créée afin de fournir un objet contextuel formel de type « instruction » dans QuantumCircuit.data, qui était depuis longtemps constitué de tuples créés au cas par cas. Compte tenu de cela, et de l'arrivée de l'interface Operation permettant d'ajouter des objets plus complexes aux circuits, nous en avons profité pour corriger la nomenclature historique. Pour l'instant, cela conduit à une situation délicate où CircuitInstruction.operation est souvent une Instruction instance de (quiInstruction implémente Operation l'interface ), mais à mesure que Operation l'interface sera de plus en plus utilisée, cette confusion devrait, espérons-le, s'atténuer.

Avertissement

Il s'agit d'une classe interne légère et la vérification des erreurs est minimale; vous devez respecter les indications de type lorsque vous l'utilisez. Il incombe à l'utilisateur de veiller à ce que les mutations directes de l'objet n'invalident pas les types, ni les restrictions imposées par son contexte. Typiquement, cela signifie, par exemple, que qubits doit être une séquence d'éléments distincts, sans doublons.


Attributs

clbits

Séquence de bits classiques que cette opération lit ou sur lesquels elle écrit.

label

matrix

name

Renvoie le nom de l'instruction correspondant à l'opération pour ce nœud

operation

L'opération logique dont cette instruction représente l'exécution.

params

qubits

Une séquence des qubits auxquels l'opération est appliquée.


Méthodes

copy

copy()

Renvoie une copie superficielle.

Retours

La copie superficielle.

Type de retour

CircuitInstruction

from_standard

static from_standard(standard, qubits, params, label=None)

is_control_flow

is_control_flow()

L'instruction Operation contenue dans cette instruction est-elle une opération de flux de contrôle (c'est-à-dire une instance de ControlFlowOp)?

is_controlled_gate

is_controlled_gate()

Est-ce que le Operation contenu dans cette instruction est une sous-classe de ControlledGate?

is_directive

is_directive()

L'élément Operation contenue dans ce nœud est-elle une directive?

is_parameterized

is_parameterized()

Cette instruction contient-elle des ParameterExpression paramètres?

is_standard_gate

is_standard_gate()

Est-ce que le Operation contenue dans cette instruction est-elle une porte standard Qiskit?

replace

replace(operation=None, qubits=None, clbits=None, params=None)

Crée une copie superficielle en remplaçant les champs indiqués.

Retours

Une nouvelle instance avec les champs donnés remplacés.

Type de retour

CircuitInstruction

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.