Skip to main content
IBM Quantum Platform

qiskit_noise_learning.models.PauliLindbladModel

class qiskit_noise_learning.models.PauliLindbladModel(gate_set: GateSet, generators: dict[str, QubitSparsePauliList], noise_site: dict[str, str] | None = None)

GitHub

Bases : LinearMap[GeneratorIndex, FidelityIndex]

Une correspondance linéaire entre les taux des générateurs de Pauli-Lindblad et les log-fidélités.

Cette classe de modèles part du principe que chaque porte de l'ensemble de portes est soit une opération unitaire, soit une préparation pure (tous les qubits sont préparés et la partie unitaire est triviale), soit une mesure pure (tous les qubits sont mesurés et la partie unitaire est triviale). On suppose en outre qu'il existe au moins une porte de préparation et au moins une porte de mesure.

Dans ce cas, le modèle de bruit pour chaque porte est un canal de Pauli, paramétré en fonction des taux d'une décomposition de Pauli-Lindblad exp⁡(∑P∈PnrPL(P))\exp(\sum_{P \in \mathcal{P}_n} r_P L(P)), où rPr_P sont les taux, et L(P)=P⋅P−⋅L(P) = P \cdot P - \cdot. Dans le cas des portes unitaires, le bruit peut être modélisé comme survenant soit avant, soit après la porte unitaire idéale.

Paramètres

  • gate_set – L'ensemble de portes dont les fidélités sont modélisées. À convertir en un fichier ModelGateSet.
  • générateurs – Dictionnaire associant le nom d'une porte à l'ensemble des générateurs de Pauli-Lindblad correspondant au modèle de bruit de cette porte. Les générateurs associés à chaque porte doivent être uniques. Les générateurs destinés aux couches de préparation et de mesure doivent être constitués exclusivement de I et de X.
  • noise_site – Dictionnaire précisant, pour chaque nom de porte, si le modèle de bruit se produit avant ou après la porte, ce qui est indiqué par les chaînes et "before" "after". Toute valeur non spécifiée pour l'ensemble de portes sera remplacée par des valeurs par défaut : "after" pour les portes unitaires et les portes de préparation pure, et "before" pour la mesure pure. Une erreur sera générée si la valeur spécifiée pour la mesure pure ou la préparation diffère de la valeur par défaut.

Augmentations

ValueError : si l'ensemble de portes ne respecte pas le format requis ou s'il noise_site contient des valeurs non valides.

__init__

__init__(gate_set: GateSet, generators: dict[str, QubitSparsePauliList], noise_site: dict[str, str] | None = None)


Méthodes

Chronique « 1 »
Chronique « 2 »
__init__(gate_set, générateurs[, noise_site])
compose(extérieur)Post-composition : « self » associe I à O, « outer » associe O à C, et le résultat associe I à C.
k_local(gate_set[, k, gate_k, paulis, ...])Construire un modèle k-local.
k_partition_local(gate_set[, k, gate_k, ...])Construire un modèle k-local en fonction des partitions de qubits.
left_multiply(matrice)Multiplier à gauche par une matrice explicite.
pre_compose(intérieur)Précomposition : les applications internes A → I, les applications sur soi-même I → O, les applications de résultat A → O.
projected_output(output_indices, vecteur)Calculer la projection de la fonction appliquée à un vecteur.
rows(output_indices)Construisez la sous-matrice dont les lignes correspondent aux indices de fidélité donnés.
to_pauli_lindblad_maps(model_data[, ...])Renvoie un dictionnaire contenant PauliLindbladMap pour chaque porte du modèle.

Attributs

Chronique « 1 »
Chronique « 2 »
gate_setL'ensemble de portes dont les caractéristiques sont en cours de modélisation.
generatorsLes générateurs utilisés pour le modèle de bruit.
input_spaceL'espace d'entrée.
meas_namesLes noms des mesures dans ce modèle.
noise_siteSi chaque carte de bruit est générée avant ou après chaque porte.
output_spaceL'espace de sortie.
prep_namesLes noms des préparations figurant dans ce modèle.

gate_set

Type : ModelGateSet

L'ensemble de portes dont les caractéristiques sont en cours de modélisation.

generators

Type : dict[str, QubitSparsePauliList]

Les générateurs utilisés pour le modèle de bruit.

meas_names

Type : set[str]

Les noms des mesures dans ce modèle.

noise_site

Type : dict[str, str]

Si chaque carte de bruit est générée avant ou après chaque porte.

prep_names

Type : set[str]

Les noms des préparations figurant dans ce modèle.

rows

rows(output_indices: Iterable[FidelityIndex]) → IndexedMatrix[FidelityIndex, GeneratorIndex]

Construisez la sous-matrice dont les lignes correspondent aux indices de fidélité donnés.

Paramètres

output_indices – Les indices de fidélité identifiant les lignes souhaitées.

Retours

Un indexé IndexedMatrix par les indices de fidélité demandés (non nuls) et par les indices des générateurs figurant dans ces lignes.

Augmentations

ValueError : si un indice de fidélité identifie une porte qui ne figure pas dans le modèle.

k_partition_local

static k_partition_local(gate_set: GateSet, k: int = 2, gate_k: dict[str, int] | None = None, qubit_partitions: dict[str, list[set[int]]] | None = None, local_paulis: dict[str, list[QubitSparsePauliList]] | None = None, noise_site: dict[str, Literal['before', 'after']] | None = None) → Self

Construire un modèle k-local en fonction des partitions de qubits.

Notez que la partition par défaut pour cette méthode (décrite ci-dessous) entraîne un comportement par défaut différent de celui de PauliLindbladModel.k_local().

Cette méthode définit la k-localité en termes de partitions d’un ensemble de qubits de type « nn », généralisant ainsi la notion habituelle au-delà des qubits individuels. Une partition est un ensemble d'ensembles disjoints d'indices de qubits couvrant l' {0,...,n−1}\{0, ..., n - 1\}. Deux indices de qubits i,ji, j sont voisins si l'une des arêtes (i,j)(i, j) ou (j,i)(j, i) figure dans la carte de couplage, qui est extraite de gate_set ou, par défaut, correspond à la carte de couplage complète. Pour une partition PP, deux ensembles d'indices de qubits distincts B0,B1∈PB_0, B_1 \in P sont voisins s'il existe des indices i∈B0i \in B_0 et j∈B1j \in B_1 qui sont voisins. De même, deux B0,B1∈PB_0, B_1 \in P sont des voisins « d’un degré plus proche » s’il existe un B2∈PB_2 \in P distinct qui est voisin à la fois de B0B_0 et de B1B_1, et ainsi de suite.

Pour une porte donnée, le modèle local kk est construit de manière récursive à partir des termes locaux 11 définis dans l'argument local_paulis, avec des termes locaux 11 pour les sous-ensembles de taille m donnée par local_paulis[m]. Les termes locaux 22 sont construits par le produit tensoriel de termes locaux 11 entre des paires de sous-ensembles voisins. En général, les termes locaux de type kk sont construits à partir du produit tensoriel de termes locaux de type (k−1)(k - 1) et de termes locaux de type 11 sur des ensembles de kk ensembles connexes.

Si aucune valeur n'est qubit_partition fournie, on suppose qu'il s'agit d'une partition de singletons. Si aucune valeur n'est local_paulis fournie, on considère l'ensemble de tous les états de Pauli possibles sur le nombre donné de qubits.

Paramètres

  • gate_set – L'ensemble de portes modélisé. Doit contenir uniquement des couches « Clifford », de préparation pure et de mesure pure. À convertir en un fichier ModelGateSet. La carte de couplage est générée à partir de gate_set.model_gate_set.coupling_map, ou, si la valeur est None, la carte de couplage complète est utilisée par défaut.
  • k – Le degré de localité par défaut du modèle. S'applique à toutes les portes non mentionnées dans gate_k. La valeur par défaut est 2. Une valeur de ne donne 0 aucun générateur, c'est-à-dire que la porte est modélisée comme étant exempte de bruit.
  • gate_k – Dictionnaire associant les noms de portes à des valeurs de localité propres à chaque porte, qui remplacent celles définies pour k les portes spécifiées.
  • qubit_partitions – Un dictionnaire indiquant une partition de qubit pour chaque porte. Toute partition non spécifiée sera remplie par une valeur par défaut, selon laquelle les qubits sont regroupés s’ils sont reliés par des opérations de porte unitaire.
  • local_paulis – Dictionnaire indiquant les Paulis 1-locaux à utiliser pour chaque partition de qubit et pour chaque porte. I.e. len(local_paulis[gate_name]) doit être égal à la taille maximale de partition dans qubit_partitions[gate_name], et local_paulis[gate_name][k].num_qubits doit être égal à k. Pour les portes de Clifford, la valeur par défaut correspond local_paulis[gate_name][k] à tous les états de Pauli non identitaires possibles sur k qubits, et pour les mesures et les préparations, la valeur par défaut correspond à tous les états de Pauli constitués de {I,X}\{I, X\} s sur k qubits.
  • noise_site – Dictionnaire indiquant s’il faut modéliser le bruit de la grille comme "before" ou "after" la grille.

Retours

Une nouvelle instance PauliLindbladModel .

Augmentations

  • ValueError : si une valeur k quelconque dépasse len(gate_set.qubit_subset).
  • ValueError : si une valeur k quelconque est négative.
  • ValueError : si gate_k contient des noms qui ne figurent pas dans l'ensemble des portes.
  • ValueError : le nom ne figure pas dans et gate_set est utilisé dans un autre dictionnaire.
  • ValueError : une partition est mal formée.
  • ValueError – local_paulis ne respecte pas le format attendu.

k_local

static k_local(gate_set: GateSet, k: int = 2, gate_k: dict[str, int] | None = None, paulis: dict[str, QubitSparsePauliList] | None = None, noise_site: dict[str, Literal['before', 'after']] | None = None) → Self

Construire un modèle k-local.

Cela revient à appeler PauliLindbladModel.k_partition_local() en spécifiant, pour chaque porte, une partition composée de singletons.

Paramètres

  • gate_set – L'ensemble de portes modélisé. Doit contenir uniquement des couches « Clifford », de préparation pure et de mesure pure. À convertir en un fichier ModelGateSet.
  • k – Le degré de localité par défaut du modèle. S'applique à toutes les portes non mentionnées dans gate_k. La valeur par défaut est 2. Une valeur de ne donne 0 aucun générateur, c'est-à-dire que la porte est modélisée comme étant exempte de bruit.
  • gate_k – Dictionnaire associant les noms de portes à des valeurs de localité propres à chaque porte, qui remplacent celles définies pour k les portes spécifiées.
  • paulis – Dictionnaire indiquant les fonctions de Pauli à un qubit à utiliser dans le modèle k-local pour chaque porte. Pour les portes de Clifford, la valeur par défaut correspond à toutes les portées de Pauli à un seul qubit; pour les mesures et les préparations, la valeur par défaut correspond à « {I,X}\{I, X\} ».
  • noise_site – Dictionnaire indiquant s’il faut modéliser le bruit de la grille comme "before" ou "after" la grille.

Retours

Une nouvelle instance PauliFidelityModel .

to_pauli_lindblad_maps

to_pauli_lindblad_maps(model_data: ModelData, include_spam: bool = False, symmetrize_spam: bool = False, restrict_to_qubit_idxs: bool = False) → dict[str, PauliLindbladMap]

Renvoie un dictionnaire contenant PauliLindbladMap pour chaque porte du modèle.

Paramètres

  • model_data – Les paramètres du modèle ajusté.
  • include_spam – Indique s'il faut inclure les barrières anti-spam dans la sortie.
  • symmetrize_spam – Indique s’il faut symétriser les cartes de bruit de préparation et de mesure pour obtenir des cartes de dépolarisation généralisées entièrement spécifiées. N'a aucun effet sauf si est include_spam True. Pour les couches SPAM, le bruit ne peut être spécifié qu’avec des Paulis de type I et X. Dans ce cas False, cette méthode renvoie les cartes SPAM avec les générateurs tels qu'ils sont spécifiés : avec uniquement les Paulis I et X. Dans ce cas True, les cartes de bruit SPAM sont également fournies sous forme de cartes de dépolarisation généralisées; cela signifie que tous les générateurs présentant le même motif ont nécessairement le même taux. La fonction de dépolarisation généralisée est choisie de telle sorte que : (1) elle présente les mêmes fidélités sur les opérateurs de type Z que la fonction d'origine de type X, et (2) elle n'ajoute aucun nouveau motif maximal. Il convient de noter que le nombre de générateurs peut augmenter : la correspondance exige que les sous-ensembles de qubits spécifiés par les générateurs soient fermés par rapport à la prise de sous-ensembles, ce qui n'est généralement pas le cas pour les applications k-locales. Enfin, notez que cela peut entraîner l'apparition de taux négatifs qui n'existaient pas auparavant; dans ce cas, un message d'avertissement s'affiche.
  • restrict_to_qubit_idxs – Limite les applications de Pauli-Lindblad renvoyées aux seuls qubits sur lesquels chaque porte est définie. L'indice du qubit idx dans la table renvoyée correspond au qubit physique sorted(gate.qubit_idxs)[idx]. Si False, chaque carte renvoyée s'applique à tous les qubits gate_set.num_qubits , indexés par l'indice physique du qubit.

Retours

Un dictionnaire établissant une correspondance entre les noms des portes et les cartes de bruit associées.

Augmentations

ValueError : si model_data ne contient pas les paramètres corrects.

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