Skip to main content
IBM Quantum Platform

PauliList

class qiskit.quantum_info.PauliList(data)

GitHub

Bases : BasePauli, LinearMixin, GroupMixin

Liste des opérateurs de Pauli pour N-qubits.

Cette classe est une représentation efficace d'une liste d'opérateurs Pauli opérateurs. Il supporte 1D l'indexation des tableaux numpy en retournant un Pauli pour les index entiers ou un PauliList pour les index de type "slice" ou "list".

Initialisation

Un objet PauliList peut être initialisé de plusieurs façons.

PauliList(list[str])

où les chaînes sont représentées de la même manière que Pauli.

PauliList(Pauli) and PauliList(list[Pauli])

où Pauli est Pauli.

PauliList.from_symplectic(z, x, phase)

z et x sont des booléens à 2 dimensions numpy.ndarrays et phase est un entier dans [0, 1, 2, 3].

Exemple :

import numpy as np

from qiskit.quantum_info import Pauli, PauliList

# 1. init from list[str]
pauli_list = PauliList(["II", "+ZI", "-iYY"])
print("1. ", pauli_list)

pauli1 = Pauli("iXI")
pauli2 = Pauli("iZZ")

# 2. init from Pauli
print("2. ", PauliList(pauli1))

# 3. init from list[Pauli]
print("3. ", PauliList([pauli1, pauli2]))

# 4. init from np.ndarray
z = np.array([[True, True], [False, False]])
x = np.array([[False, True], [True, False]])
phase = np.array([0, 1])
pauli_list = PauliList.from_symplectic(z, x, phase)
print("4. ", pauli_list)
1.  ['II', 'ZI', '-iYY']
2.  ['iXI']
3.  ['iXI', 'iZZ']
4.  ['YZ', '-iIX']

Accès aux données

Il est possible d'accéder aux différents Paulis et de les mettre à jour à l'aide de l'opérateur [] qui accepte des entiers, des listes ou des tranches pour sélectionner des sous-ensembles de PauliList. Si un nombre entier est donné, il renvoie Pauli et non PauliList.

pauli_list = PauliList(["XX", "ZZ", "IZ"])
print("Integer: ", repr(pauli_list[1]))
print("List: ", repr(pauli_list[[0, 2]]))
print("Slice: ", repr(pauli_list[0:2]))
Integer:  Pauli('ZZ')
List:  PauliList(['XX', 'IZ'])
Slice:  PauliList(['XX', 'ZZ'])

Itération

Les lignes du tableau de Pauli peuvent être parcourues comme une liste. L'itération peut également être effectuée en utilisant l'étiquette ou la représentation matricielle de chaque ligne à l'aide des commandes label_iter() et matrix_iter() pour chaque ligne.

Initialiser le site PauliList.

Paramètres

data (Pauli orlist) – les données d'entrée pour Paulis. Si l'entrée est une liste, chaque élément de la liste doit être un objet Pauli ou une chaîne Pauli.

Augmentations

QiskitError – si le tableau d'entrée présente une forme non valide.

Renseignements supplémentaires :

Le tableau d'entrée n'est pas copié, de sorte que plusieurs tables de Pauli peuvent partager le même tableau sous-jacent.


Attributs

dim

Retourne un tuple (forme_d'entrée, forme_de_sortie).

num_qubits

Renvoie le nombre de qubits s'il s'agit d'un opérateur à N qubits ou None dans le cas contraire.

phase

Retourne l'exposant de phase de PauliList.

qargs

Retourne les qargs de l'opérateur.

settings

Paramètres de retour.

shape

La forme complète de la array()

size

Le nombre de lignes de Pauli dans le tableau.

x

Le tableau x pour la représentation symplectique.

z

Le tableau z pour la représentation symplectique.


Méthodes

adjoint

adjoint()

GitHub

Retourne l'adjoint de chaque Pauli de la liste.

anticommutes

anticommutes(other, qargs=None)

GitHub

Renvoie True si l'autre opérateur de Pauli anticommute avec celui-ci.

Paramètres

  • other (PauliList) – un autre opérateur PauliList.
  • qargs (list) – qubits auxquels appliquer le produit de points (par défaut : None).

Retours

True si les Paulis ne font pas la navette, False s'ils font la navette.

Type de retour

booléen

anticommutes_with_all

anticommutes_with_all(other)

GitHub

Renvoie les indices des lignes qui anticommutent avec l'autre liste de Pauli.

Si other est une liste de Pauli à plusieurs rangs, le vecteur renvoyé indexe les rangs de la liste actuelle PauliList qui sont anti-commutatoires avec tous les Paulis de l'autre liste. Si aucune ligne ne remplit la condition, le tableau retourné sera vide.

Paramètres

other (PauliList) – un seul Pauli ou plusieurs rangs PauliList.

Retours

tableau d'index des lignes anti-travail.

Type de retour

Tableau

argsort

argsort(weight=False, phase=False)

GitHub

Renvoie des indices permettant de trier les lignes du tableau.

La méthode de tri par défaut est le tri lexicographique par numéro de qubit. En utilisant le poids kwarg, la sortie peut également être triée en fonction du nombre de termes non identiques dans le Pauli, où l'ensemble de tous les Paulis d'un poids donné est toujours ordonné lexicographiquement.

Paramètres

  • weight (bool) – Optionnellement, trier par poids si True (par défaut : False).
  • phase (bool) – Il est possible de trier par phase avant le poids ou par ordre (par défaut : False).

Retours

les indices permettant de trier le tableau.

Type de retour

Tableau

commutes

commutes(other, qargs=None)

GitHub

Retourne True pour chaque Pauli qui commute avec les autres.

Paramètres

  • other (PauliList) – un autre opérateur PauliList.
  • qargs (list) – qubits auxquels appliquer le produit de points (par défaut : None).

Retours

True si les Paulis font la navette, False s'ils font l'inverse.

Type de retour

booléen

commutes_with_all

commutes_with_all(other)

GitHub

Retourne les index des lignes qui commuent other.

Si other est une liste de Pauli à plusieurs rangs, le vecteur renvoyé indexe les rangs de la liste actuelle PauliList qui commuent avec tous les Paulis des autres listes. Si aucune ligne ne remplit la condition, le tableau retourné sera vide.

Paramètres

other (PauliList) – un seul Pauli ou plusieurs rangs PauliList.

Retours

tableau d'indices des lignes de commutation.

Type de retour

Tableau

compose

compose(other, qargs=None, front=False, inplace=False)

GitHub

Retourne la composition self∘other pour chaque Pauli de la liste.

Paramètres

  • other (PauliList) – un autre PauliList.
  • qargs (None or list) – qubits auxquels appliquer le produit de points (par défaut : None).
  • front (bool) – Si True, utiliser la méthode de composition par points [. Valeur par défaut : False].
  • inplace (bool) – Si True , mise à jour sur place (par défaut : False).

Retours

la liste des Paulis composés.

Type de retour

PauliList

Augmentations

qargsQiskitError – si l’autre ne peut pas être convertie en une « PauliList, » : soit elle ne contient pas 1 ou le même nombre de Paulis que la liste actuelle, soit elle comporte un nombre incorrect de qubits pour la valeur spécifiée.

conjugate

conjugate()

GitHub

Retourne le conjugué de chaque Pauli de la liste.

copy

copy()

GitHub

Effectuer une copie intégrale de l'opérateur actuel.

delete

delete(ind, qubit=False)

GitHub

Renvoie une copie avec les lignes Pauli supprimées de la table.

Lors de la suppression de qubits, l'indice du qubit est le même que l'indice de la colonne des tableaux sous-jacents X et Z .

Paramètres

  • ind (int orlist) – index à supprimer.
  • qubit (bool) – si True supprimer les colonnes de qubits, sinon supprimer les lignes de Pauli (par défaut : False).

Retours

le tableau résultant avec les entrées supprimées.

Type de retour

PauliList

Augmentations

QiskitError – si ind est hors limites par rapport à la taille du tableau ou au nombre de qubits.

dot

dot(other, qargs=None, inplace=False)

GitHub

Retourne la composition other∘self pour chaque Pauli de la liste.

Paramètres

  • other (PauliList) – un autre PauliList.
  • qargs (None or list) – qubits auxquels appliquer le produit de points (par défaut : None).
  • inplace (bool) – Si True, mise à jour sur place (par défaut : False).

Retours

la liste des Paulis composés.

Type de retour

PauliList

Augmentations

qargsQiskitError – si l’autre ne peut pas être convertie en une « PauliList, » : soit elle ne contient pas 1 ou le même nombre de Paulis que la liste actuelle, soit elle comporte un nombre incorrect de qubits pour la valeur spécifiée.

equiv

equiv(other)

GitHub

Comparaison de l'équivalence de Pauli jusqu'à la phase globale.

Paramètres

other (PauliList orPauli) – un objet de comparaison.

Retours

Un tableau de True ou False pour l'équivalence d'entrée

du tableau actuel.

Type de retour

np.ndarray

evolve

evolve(other, qargs=None, frame='h')

GitHub

Effectue l'évolution de l'image de Heisenberg (par défaut) ou de Schrödinger de Pauli par un Clifford et renvoie le Pauli évolué.

L'évolution de l'image de Schrödinger peut être choisie en passant le paramètre frame='s'. Cette option permet un calcul plus rapide.

L'image de Heisenberg fait évoluer le Pauli vers P=C.P.CP^\prime = C^\dagger.P.C.

L'image de Schrödinger fait évoluer l'image de Pauli vers P=C.P.CP^\prime = C.P.C^\dagger.

Paramètres

  • other (Pauli orClifford orQuantumCircuit) – L'opérateur de Clifford à partir duquel évoluer.
  • qargs (list) – une liste de qubits auxquels appliquer le Clifford.
  • frame (string) – 'h' pour Heisenberg (par défaut) ou 's' pour le cadre de Schrödinger.

Retours

le Pauli C.P.CC^\dagger.P.C (image de Heisenberg) ou le Pauli C.P.CC.P.C^\dagger (image de Schrödinger).

Type de retour

PauliList

Augmentations

QiskitError – si le nombre de qubits et de qargs selon Clifford ne correspondent pas.

expand

expand(other)

GitHub

Renvoie le produit d'expansion de chaque Pauli de la liste.

Paramètres

other (PauliList) – un autre PauliList.

Retours

la liste des produits tensoriels de Paulis.

Type de retour

PauliList

Augmentations

QiskitError – si « other » ne peut pas être converti en « PauliList, », c'est-à-dire qu'il ne contient ni 1, ni le même nombre de Paulis que la liste actuelle.

from_symplectic

classmethod from_symplectic(z, x, phase=0)

GitHub

Construire un PauliList à partir d'une donnée symplectique.

Paramètres

  • z (np.ndarray) – 2D booléen Numpy array.
  • x (np.ndarray) – 2D booléen Numpy array.
  • phase (np.ndarray or None) – 1D tableau d'entiers tiré de Z_4.

Retours

le site construit PauliList.

Type de retour

PauliList

group_commuting

group_commuting(qubit_wise=False)

GitHub

Partitionner un site PauliList en ensembles de cordes de Pauli commutées.

Paramètres

qubit_wise (bool) –

si la règle de commutation est appliquée à l'ensemble de l'opérateur ou à chaque qubit. Par exemple :

>>> from qiskit.quantum_info import PauliList
>>> op = PauliList(["XX", "YY", "IZ", "ZZ"])
>>> op.group_commuting()
[PauliList(['XX', 'YY']), PauliList(['IZ', 'ZZ'])]
>>> op.group_commuting(qubit_wise=True)
[PauliList(['XX']), PauliList(['YY']), PauliList(['IZ', 'ZZ'])]

Retours

Liste de PauliLists où chaque PauliList contient des opérateurs de Pauli commutatifs.

Type de retour

liste [ PauliList ]

group_qubit_wise_commuting

group_qubit_wise_commuting()

GitHub

Partitionner un site PauliList en ensembles de cordes de Pauli commutant mutuellement dans le sens des qubits.

Retours

Liste de PauliLists où chaque PauliList contient des opérateurs de Pauli commuables.

Type de retour

liste [ PauliList ]

input_dims

input_dims(qargs=None)

GitHub

Retourne un ensemble de dimensions d'entrée pour les sous-systèmes spécifiés.

insert

insert(ind, value, qubit=False)

GitHub

Insérer Paulis dans le tableau.

Lors de l'insertion de qubits, l'indice du qubit est le même que l'indice de la colonne des tableaux sous-jacents X et Z .

Paramètres

  • ind (int) – l'index à utiliser pour l'insertion.
  • value (PauliList) – les valeurs à insérer.
  • qubit (bool) – si True insérer les colonnes de qubits, sinon insérer les lignes de Pauli (par défaut : False).

Retours

le tableau résultant avec les entrées insérées.

Type de retour

PauliList

Augmentations

QiskitError – si l'index d'insertion n'est pas valide.

inverse

inverse()

GitHub

Renvoie l'inverse de chaque Pauli de la liste.

label_iter

label_iter()

GitHub

Renvoie un itérateur de représentation des étiquettes.

Il s'agit d'un itérateur paresseux qui convertit chaque ligne en une chaîne de caractères au fur et à mesure de son utilisation. Pour convertir l'ensemble du tableau en étiquettes, utilisez la méthode to_labels() méthode.

Retours

objet itérateur d'étiquettes pour le site PauliList.

Type de retour

LabelIterator

matrix_iter

matrix_iter(sparse=False)

GitHub

Retourne un itérateur de représentation de la matrice.

Il s'agit d'un itérateur paresseux qui convertit chaque ligne dans la représentation de la matrice de Pauli au fur et à mesure de son utilisation. Pour convertir l'ensemble du tableau en matrices, utilisez la méthode to_matrix() méthode.

Paramètres

sparse (bool) – renvoie éventuellement des matrices CSR creuses si True, sinon renvoie des matrices sous forme de tableaux Numpy (par défaut : False)

Retours

objet itérateur de matrice pour PauliList.

Type de retour

MatrixIterator

noncommutation_graph

noncommutation_graph(qubit_wise)

GitHub

Créez le graphe de non-commutation de cette PauliList.

Cela transforme le problème de regroupement des opérateurs de mesure en un problème de coloration de graphe. Le graphe construit contient un nœud pour chaque Pauli. Les nœuds seront connectés pour tout terme de Pauli qui ne commute pas.

Paramètres

qubit_wise (bool) – si la règle de commutation est appliquée à l'ensemble de l'opérateur ou à chaque qubit.

Retours

le graphe de non-commutation avec des nœuds pour chaque Pauli et des arêtes

indiquant une relation de non-commutation. Chaque nœud contient l'indice du terme de Pauli auquel il correspond dans ses données. Les bords du graphique ne contiennent aucune donnée.

Type de retour

rustworkx.PyGraph

output_dims

output_dims(qargs=None)

GitHub

Retourne un tuple de dimensions de sortie pour les sous-systèmes spécifiés.

power

power(n)

GitHub

Renvoie le résultat de la composition d'un opérateur avec lui-même n fois.

Paramètres

n (int) – le nombre de fois où l'on compose avec soi-même ( n>0 ).

Retours

l'opérateur composé n fois.

Type de retour

Clifford

Augmentations

QiskitError – si les dimensions d'entrée et de sortie de l'opérateur ne sont pas égales, ou si la puissance n'est pas un nombre entier positif.

reshape

reshape(input_dims=None, output_dims=None, num_qubits=None)

GitHub

Renvoyer une copie peu profonde avec les dimensions des sous-systèmes d'entrée et de sortie remodelées.

Paramètres

  • input_dims (None or tuple) – les nouvelles dimensions d'entrée du sous-système. Si aucun, les gradations d'entrée d'origine seront conservées. [Par défaut : Aucun].
  • output_dims (None or tuple) – les nouvelles dimensions de sortie du sous-système. Si aucun, les gradations de sortie d'origine seront conservées. [Par défaut : Aucun].
  • num_qubits (None or int) – transformer en un opérateur N-qubit [Défaut : Aucun].

Retours

renvoie l'utilisateur avec les dimensions d'entrée et de sortie remodelées.

Type de retour

BaseOperator

Augmentations

QiskitError – si la somme des dimensions d'entrée ou de sortie de tous les sous-systèmes n'est pas constante.

sort

sort(weight=False, phase=False)

GitHub

Trier les lignes du tableau.

La méthode de tri par défaut est le tri lexicographique par numéro de qubit. En utilisant le poids kwarg, la sortie peut également être triée en fonction du nombre de termes non identiques dans le Pauli, où l'ensemble de tous les Paulis d'un poids donné est toujours ordonné lexicographiquement.

Exemple

Considérons le tri de tous les Paulis à 2 qubits dans un ordre aléatoire

from numpy.random import shuffle
from qiskit.quantum_info.operators import PauliList

# 2-qubit labels
labels = ['II', 'IX', 'IY', 'IZ', 'XI', 'XX', 'XY', 'XZ',
          'YI', 'YX', 'YY', 'YZ', 'ZI', 'ZX', 'ZY', 'ZZ']
# Shuffle Labels
shuffle(labels)
pt = PauliList(labels)
print('Initial Ordering')
print(pt)

# Lexicographic Ordering
srt = pt.sort()
print('Lexicographically sorted')
print(srt)

# Weight Ordering
srt = pt.sort(weight=True)
print('Weight sorted')
print(srt)
Initial Ordering
['YX', 'ZZ', 'XZ', 'YI', 'YZ', 'II', 'XX', 'XI', 'XY', 'YY', 'IX', 'IZ',
 'ZY', 'ZI', 'ZX', 'IY']
Lexicographically sorted
['II', 'IX', 'IY', 'IZ', 'XI', 'XX', 'XY', 'XZ', 'YI', 'YX', 'YY', 'YZ',
 'ZI', 'ZX', 'ZY', 'ZZ']
Weight sorted
['II', 'IX', 'IY', 'IZ', 'XI', 'YI', 'ZI', 'XX', 'XY', 'XZ', 'YX', 'YY',
 'YZ', 'ZX', 'ZY', 'ZZ']

Paramètres

  • weight (bool) – trier éventuellement par poids si True (par défaut : False).
  • phase (bool) – Il est possible de trier par phase avant le poids ou par ordre (par défaut : False).

Retours

une copie triée du tableau original.

Type de retour

PauliList

tensor

tensor(other)

GitHub

Retourne le produit tensoriel avec chaque Pauli de la liste.

Paramètres

other (PauliList) – un autre PauliList.

Retours

la liste des produits tensoriels de Paulis.

Type de retour

PauliList

Augmentations

QiskitError – si « other » ne peut pas être converti en « PauliList, », c'est-à-dire qu'il ne contient ni 1, ni le même nombre de Paulis que la liste actuelle.

to_labels

to_labels(array=False)

GitHub

Convertit une adresse PauliList en une liste d'étiquettes de chaînes de Pauli.

Pour les grands sites PauliLists, la conversion à l'aide de array=True kwarg sera plus efficace car elle alloue à l'avance de la mémoire pour le tableau Numpy complet des étiquettes.

Libellé
Symplectique
Matrice
"I"[0,0][0, 0][1001]\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}
"X"[1,0][1, 0][0110]\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}
"Y"[1,1][1, 1][0ii0]\begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}
"Z"[0,1][0, 1][1001]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}

Paramètres

array (bool) – renvoie un tableau Numpy si True, sinon renvoie une liste (par défaut : False).

Retours

Les lignes du site PauliList sous forme d'étiquettes.

Type de retour

liste ou tableau

to_matrix

to_matrix(sparse=False, array=False)

GitHub

Convertir en une liste ou un tableau de matrices de Pauli.

Pour les grandes PauliLists, l'utilisation du kwarg array=True sera plus efficace car il alloue à l'avance la mémoire d'un tableau Numpy rank-3 complet de matrices.

Libellé
Symplectique
Matrice
"I"[0,0][0, 0][1001]\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}
"X"[1,0][1, 0][0110]\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}
"Y"[1,1][1, 1][0ii0]\begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}
"Z"[0,1][0, 1][1001]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}

Paramètres

  • sparse (bool) – si True renvoie des matrices CSR peu denses, sinon renvoie des tableaux Numpy denses (par défaut : False).
  • array (bool) – renvoie comme rank-3 un tableau numpy si True, sinon renvoie une liste de tableaux Numpy (par défaut : False).

Retours

Une liste de matrices de Pauli denses si array=False et sparse=False. liste : Une liste de matrices de Pauli creuses si array=False et sparse=True. tableau : un tableau dense de matrices de Pauli de dimension rank-3, si array=True.

Type de retour

liste

transpose

transpose()

GitHub

Renvoie la transposition de chaque Pauli de la liste.

unique

unique(return_index=False, return_counts=False)

GitHub

Retourner l'unique Paulis de la table.

Exemple

from qiskit.quantum_info.operators import PauliList

pt = PauliList(['X', 'Y', '-X', 'I', 'I', 'Z', 'X', 'iZ'])
unique = pt.unique()
print(unique)
['X', 'Y', '-X', 'I', 'Z', 'iZ']

Paramètres

  • return_index (bool) – Si c'est le cas True, renvoie également les indices qui composent ce tableau unique. (Par défaut : False)
  • return_counts (bool) – Si True, indiquer également le nombre de fois que chaque élément unique apparaît dans le tableau.

Retours

// unique

le tableau des lignes uniques.

indices uniques : np.ndarray, optionnel

Les indices des premières occurrences des valeurs uniques dans le tableau original. Fourni uniquement si return_index est True.

unique_counts : np.array, optionnel

Le nombre de fois que chacune des valeurs uniques apparaît dans le tableau original. Fourni uniquement si return_counts est True.

Type de retour

PauliList

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