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)
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 , où sont les taux, et . 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_set | L'ensemble de portes dont les caractéristiques sont en cours de modélisation. |
generators | Les générateurs utilisés pour le modèle de bruit. |
input_space | L'espace d'entrée. |
meas_names | Les noms des mesures dans ce modèle. |
noise_site | Si chaque carte de bruit est générée avant ou après chaque porte. |
output_space | L'espace de sortie. |
prep_names | Les 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
noise_site
prep_names
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 « », 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' . Deux indices de qubits sont voisins si l'une des arêtes ou 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 , deux ensembles d'indices de qubits distincts sont voisins s'il existe des indices et qui sont voisins. De même, deux sont des voisins « d’un degré plus proche » s’il existe un distinct qui est voisin à la fois de et de , et ainsi de suite.
Pour une porte donnée, le modèle local est construit de manière récursive à partir des termes locaux définis dans l'argument local_paulis, avec des termes locaux pour les sous-ensembles de taille m donnée par local_paulis[m]. Les termes locaux sont construits par le produit tensoriel de termes locaux entre des paires de sous-ensembles voisins. En général, les termes locaux de type sont construits à partir du produit tensoriel de termes locaux de type et de termes locaux de type sur des ensembles de 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 degate_set.model_gate_set.coupling_map, ou, si la valeur estNone, 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 est2. Une valeur de ne donne0aucun 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
kles 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 dansqubit_partitions[gate_name], etlocal_paulis[gate_name][k].num_qubitsdoit être égal àk. Pour les portes de Clifford, la valeur par défaut correspondlocal_paulis[gate_name][k]à tous les états de Pauli non identitaires possibles surkqubits, et pour les mesures et les préparations, la valeur par défaut correspond à tous les états de Pauli constitués de s surkqubits. - 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
kquelconque dépasselen(gate_set.qubit_subset). - ValueError : si une valeur
kquelconque est négative. - ValueError : si
gate_kcontient des noms qui ne figurent pas dans l'ensemble des portes. - ValueError : le nom ne figure pas dans et
gate_setest utilisé dans un autre dictionnaire. - ValueError : une partition est mal formée.
- ValueError –
local_paulisne 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 est2. Une valeur de ne donne0aucun 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
kles 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 à « ».
- 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_spamTrue. Pour les couches SPAM, le bruit ne peut être spécifié qu’avec des Paulis de type I et X. Dans ce casFalse, 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 casTrue, 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
idxdans la table renvoyée correspond au qubit physiquesorted(gate.qubit_idxs)[idx]. SiFalse, chaque carte renvoyée s'applique à tous les qubitsgate_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.