AnsatzBlock
class AnsatzBlock(params)
Bases : Gate
Bloc d'Ansatz.
Il s'agit de la classe de base de tous les blocs renvoyés par generate_ansatz_from_circuit().
Initialiser le bloc d'ansatz.
Paramètres
params (Sequence[Parameter]) – Séquence de paramètres.
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 Instruction.name soit un discriminant plus approprié dans la plupart des situations.
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 site 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 et traitement des arguments et de leur relation.
Par exemple, cx([q[0],q[1]], q[2]) signifie cx(q[0], q[2]); cx(q[1], q[2]). Cette méthode permet d'obtenir les arguments dans le bon groupe. Dans l'exemple donné :
in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
[q[1], q[2]], []Les règles générales de diffusion sont les suivantes :
Si len(qargs) == 1 :
[q[0], q[1]] -> [q[0]],[q[1]]Si len(qargs) == 2 :
[[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]] [[q[0]], [r[0], r[1]]] -> [q[0], r[0]], [q[0], r[1]] [[q[0], q[1]], [r[0]]] -> [q[0], r[0]], [q[1], r[0]]Si len(qargs) >= 3 :
[q[0], q[1]], [r[0], r[1]], ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
Paramètres
- qargs (
list) – Liste des arguments des bits quantiques. - cargs (
list) – Liste des arguments classiques en matière de bits.
Type de retour
Retours
Un tuple avec des arguments uniques.
Augmentations
CircuitError - Si l'entrée n'est pas valide. Par exemple, le nombre d'arguments ne correspond pas aux attentes de la porte.
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
Renvoie la version contrôlée de lui-même.
La porte contrôlée est mise en œuvre comme ControlledGate lorsque annotated est égal à False, et comme AnnotatedOperation lorsque annotated est égal à True.
qiskit.circuit.gate.Gate.control()L'argument annotated est obsolète depuis la version 2.3 de Qiskit. Elle sera supprimée dans la version 3.0 de Qiskit. La méthode Gate.control () n'accepte plus la valeur annotated=None. La nouvelle valeur par défaut est annotated=True, ce qui représente la porte contrôlée comme une « AnnotatedOperation » (à moins qu'une classe dédiée aux portes contrôlées n'existe déjà). Vous pouvez définir explicitement annotated=False pour conserver le comportement précédent. Il est toutefois recommandé d'utiliser annotated=True, car cela reporte la construction du circuit contrôlé au niveau du transpileur et permet en outre des optimisations supplémentaires au niveau des portes contrôlées (ce qui se traduit généralement par des circuits de meilleure qualité).
Paramètres
- num_ctrl_qubits (
int) – Nombre de contrôles à ajouter. Prend par défaut la valeur1. - label (
str|None) – Étiquette de portail (facultative). Prend par défaut la valeurNone. Ignoré si la porte contrôlée est implémentée sous la forme d'une opération annotée. - ctrl_state (
int|str|None) – L'état de commande de la porte, spécifié soit sous forme d'entier, soit sous forme de chaîne de bits (par exemple"110").2**num_ctrl_qubits - 1SiNone, la valeur par défaut est l'état « tout à 1 ». - annotated (
bool|None) – Indique si la porte contrôlée doit être implémentée en tant que porte contrôlée ou en tant qu'opération annotée. SiNone, on considère queFalse.
Retours
Une version contrôlée de cette porte.
Augmentations
QiskitError – invalide num_ctrl_qubits ou ctrl_state.
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 AnnotatedOperation, et 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 elle est réglée sur True, la sortie de la porte inverse sera renvoyée sous la forme AnnotatedOperation.
Retours
L'opération inverse.
Augmentations
CircuitError - si l'instruction n'est pas composite et qu'un inverse n'a pas été mis en œuvre pour elle.
is_parameterized
is_parameterized()
Retourne si le site Instruction contient des paramètres de compilation.
power
power(exponent, annotated=False)
Élevez cette porte au pouvoir de exponent.
Mise en œuvre sous la forme d'une porte unitaire (réf. UnitaryGate) ou en tant qu'opération annotée (réf. AnnotatedOperation). Dans le cas de plusieurs portes standard, telles que RXGate, lorsque la puissance d'une porte peut être exprimée en termes d'une autre porte standard, celle-ci est renvoyée directement.
Paramètres
- exponent (float) – le pouvoir d'élever la porte à
- annotated (bool) – indique si la porte de puissance peut être mise en œuvre en tant qu'opération annotée. Dans le cas de plusieurs portes standard, telles que
RXGate, cet argument est ignoré lorsque la puissance d'une porte peut être exprimée en termes d'une autre porte standard.
Retours
Une opération mettant en œuvre gate^exponent
Augmentations
CircuitError - Si la porte n'est pas unitaire
repeat
repeat(n)
self Crée une instruction 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.
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_matrix
to_matrix()
Retourne un Numpy.array pour la matrice unitaire de la porte.
Retours
si la sous-classe Gate possède une définition de matrice.
Type de retour
np.ndarray
Augmentations
CircuitError - Si une sous-classe de Gate n'implémente pas cette méthode, une exception sera levée lorsque la méthode de la classe de base sera appelée.
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)
Les paramètres de la porte doivent être de type int, float ou ParameterExpression