SwitchCaseOp
class qiskit.circuit.SwitchCaseOp(target, cases, *, label=None)
Bases : ControlFlowOp
Opération de circuit qui exécute un bloc de circuit donné en fonction de la correspondance entre une valeur donnée target et une liste ordonnée de valuesvaleurs. La valeur CASE_DEFAULT spéciale peut être utilisée pour représenter une condition par défaut.
Paramètres
- target (Clbit |ClassicalRegister |expr.Expr) – la valeur en temps réel à activer.
- cases (Iterable[tuple[Any, QuantumCircuit]]) – une liste ordonnée contenant la valeur correspondante de et le
targetbloc de circuit qui doit être exécuté en cas de correspondance. Il n'y a pas de passage automatique d'un bloc à l'autre, et l'ordre a son importance. - label (str | None) – Une étiquette facultative permettant d'identifier l'instruction.
Attributs
base_class
Obtenir la classe de base de cette instruction. Il est assuré de figurer dans l'arbre généalogique de self.
La "classe de base" d'une instruction est la classe la plus basse de son arbre d'héritage avec laquelle l'objet doit être considéré comme entièrement compatible pour les applications de circuit. Cela signifie généralement que la sous-classe est définie uniquement pour offrir une certaine commodité au programmeur par rapport à la classe de base, et que la classe de base est la "vraie" classe d'un point de vue comportemental. En particulier, vous ne devez pas outrepasser base_class si vous définissez une version personnalisée d'une instruction qui sera implémentée différemment par le matériel, comme une stratégie de mesure alternative, ou une version d'une porte paramétrée avec un ensemble particulier de paramètres dans le but de la distinguer dans un Target à partir de la porte entièrement paramétrée.
Ceci est souvent exactement équivalent à type(obj), sauf dans le cas d'instances uniques d'instructions de la bibliothèque standard. Ces instances singleton sont des sous-classes spéciales de leur classe de base, et cette propriété renverra cette base. Par exemple :
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
TrueEn général, il ne faut pas se fier à la classe précise d'une instruction; dans un circuit donné, on s'attend à ce que l'instruction Instruction.name devrait être un discriminant plus approprié dans la plupart des situations.
blocks
decompositions
Obtenir les décompositions de l'instruction à partir de SessionEquivalenceLibrary.
definition
Définition du retour en termes d'autres portes de base.
label
Étiquette d'instruction de retour
mutable
Cette instance est-elle une instance unique mutable ou non?
Si cet attribut est False , l'instance du portail est un singleton partagé et n'est pas mutable.
name
Renvoyer le nom.
num_clbits
Retourne le nombre de clbits.
num_qubits
Renvoie le nombre de qubits.
params
Les paramètres de ce Instruction. Idéalement, il s'agit d'angles de porte.
Méthodes
add_decomposition
add_decomposition(decomposition)
Ajouter une décomposition de l'instruction à l'adresse SessionEquivalenceLibrary.
broadcast_arguments
broadcast_arguments(qargs, cargs)
Validation des arguments.
Paramètres
- qargs (List) – Liste des arguments des bits quantiques.
- cargs (List) – Liste des arguments classiques en matière de bits.
Rendements
Tuple (List, List) - Un tuple avec des arguments simples.
Augmentations
CircuitError – Si la saisie n'est pas valide. Par exemple, le nombre d'arguments ne correspond pas à ce qu'on attend de la porte logique.
cases
cases()
Renvoie une table de correspondance entre les étiquettes des cas et le circuit qui serait exécuté dans ce cas. Cet objet n'est généralement pas adapté à la création d'un nouveau SwitchCaseOp car les clés qui pointent vers le même objet ne seront pas regroupées.
SwitchCaseOp.cases_specifier()
Une méthode alternative qui produit ses résultats dans un format adapté à la création de nouvelles instances SwitchCaseOp instances.
cases_specifier
cases_specifier()
Retourne un itérable dont chaque élément est un 2-tuple dont le premier élément est un tuple de valeurs de saut, et dont le second est le bloc de circuit unique associé à ces valeurs.
Il s'agit d'une spécification abstraite de la table de saut qui permet de créer de nouvelles instances SwitchCaseOp instances.
Créez une table de recherche que vous pourrez utiliser à vos propres fins pour passer des valeurs au circuit qui sera exécuté.
Type de retour
Iterable[ tuple [ tuple, QuantumCircuit ]]
copy
copy(name=None)
Copie de l'instruction.
Paramètres
name (str) – nom à donner au circuit copié, si None le nom reste le même.
Retours
une copie de l'instruction en cours, avec le nom mis à jour s'il a été fourni
Type de retour
inverse
inverse(annotated=False)
Inverser cette instruction.
Si l'annotation est False, l'instruction inverse est implémentée comme une nouvelle instruction avec la définition inversée récursivement.
Si annoté est Vrai, l'instruction inverse est implémentée comme AnnotatedOperationet correspond à l'instruction donnée annotée avec le "modificateur inverse".
Les instructions spéciales héritant de l'instruction peuvent implémenter leur propre inverse (par exemple T et Tdg, Barrière, etc.) En particulier, ils peuvent choisir comment gérer l'argument annotated , ce qui peut inclure de l'ignorer et de toujours renvoyer une classe de porte concrète si l'inverse est défini comme une porte standard.
Paramètres
annotated (bool) – si la valeur est True, la sortie de la porte inverse sera renvoyée sous forme de AnnotatedOperation.
Retours
L'opération inverse.
Augmentations
CircuitError – si l'instruction n'est pas composite et qu'aucune inverse n'a été implémentée pour celle-ci.
is_parameterized
is_parameterized()
Indique si la fonction Instruction contient des paramètres définis à la compilation.
iter_captured_stretches
iter_captured_stretches()
Obtenir un itérateur sur les variables d'étirement capturées uniques dans tous les blocs de cette construction.
Type de retour
Iterable [ expr.Stretch ]
iter_captured_vars
iter_captured_vars()
Obtenir un itérateur sur les variables uniques capturées dans tous les blocs de cette construction.
Type de retour
repeat
repeat(n)
Crée une instruction self répétée fois.
Paramètres
n (int) – Nombre de répétitions de l'instruction
Retours
Contenant la définition.
Type de retour
Augmentations
CircuitError – Si n < 1.
replace_blocks
replace_blocks(blocks)
Renvoyer une nouvelle version de cette opération de flux de contrôle avec les blocks sont remplacées par les nouvelles.
Cette fonction est généralement utilisée dans le cadre d'un flux de travail tel que :
existing_op = ...
def map_block(block: QuantumCircuit) -> QuantumCircuit:
new_block = block.copy_empty_like()
# ... do something to `new_block` ...
return new_block
new_op = existing_op.replace_blocks(
map_block(block) for block in existing_op.blocks
)Il incombe à l'appelant de s'assurer que les blocs mappés sont définis sur un ensemble unifié de ressources de circuit, de la même manière que l'on construit un circuit ControlFlowOp en utilisant son constructeur par défaut.
Paramètres
blocks (Iterable[QuantumCircuit]) – les nouveaux blocs de sous-circuits à utiliser.
Retours
Nouveau ControlFlowOp avec blocs remplacés.
Type de retour
reverse_ops
reverse_ops()
Pour une instruction composite, inverser l'ordre des sous-instructions.
Pour ce faire, toutes les sous-instructions sont inversées de manière récursive. Il n'inverse aucune porte.
Retours
une nouvelle instruction avec
les sous-instructions sont inversées.
Type de retour
soft_compare
soft_compare(other)
Comparaison en douceur entre les portes. Leurs noms, le nombre de qubits et les numéros de bits classiques doivent correspondre. Le nombre de paramètres doit correspondre. Chaque paramètre est comparé. Si l'on est sur ParameterExpression, cela n'est pas pris en compte.
Paramètres
other (instruction) – d'autres instructions.
Retours
sont égaux à soi et à l'autre jusqu'à l'expression des paramètres.
Type de retour
to_mutable
to_mutable()
Renvoie une copie mutable de cette porte.
Cette méthode renvoie une nouvelle copie mutable de cette instance de porte. Si une instance singleton est utilisée, il s'agit d'une nouvelle instance unique qui peut être modifiée. Si l'instance est déjà mutable, il s'agira d'une copie profonde de cette instance.
validate_parameter
validate_parameter(parameter)
Le paramètre d'instruction ne fait l'objet d'aucune validation ou normalisation.