Utils
qiskit_mitigation.utils
Outils de mitigation de Qiskit.
load_tasks_from_result
load_tasks_from_result(result, return_trex=False)
Charger les MitigationTask objets à partir d'un résultat d'exécution à l'aide des données « passthrough_data » enregistrées dans ce résultat.
Paramètres
- result (QuantumProgramResult) – L'objet « resul » à partir duquel charger les tâches.
- return_trex (bool) – Si la valeur est « True », inclure l'élément d'étalonnage TREX dans la liste renvoyée d'objets « MitigationTask ».
Retours
Liste des objets MitigationTask ayant permis d'obtenir le résultat indiqué.
Type de retour
liste [ MitigationTask ]
find_combined_unique_layers
find_combined_unique_layers(circuits, mitigation_types=None, custom_boxing_options=None, box_types='all')
Renvoie les couches « boxées » uniques présentes sur les circuits indiqués, en utilisant les options de « boxing » spécifiées.
La liste renvoyée contient une instance de chaque couche encadrée distincte (représentée par un CircuitInstruction) apparaissant dans les circuits d'entrée. Certaines méthodes d'atténuation imposent des options de boxing pertinentes. En spécifiant les méthodes d'atténuation souhaitées, ces options sont appliquées lors du regroupement des circuits afin d'identifier des couches uniques. Il est recommandé de fournir les méthodes d'atténuation requises afin de garantir que les couches spécifiques utilisées pour l'apprentissage correspondent à celles utilisées lors de l'exécution. Les boîtes renvoyées peuvent être filtrées de manière à n'afficher que celles contenant des mesures, uniquement celles contenant exclusivement des portes, ou tous les types de boîtes.
Paramètres
- circuits (list[QuantumCircuit]) – Le circuit permettant de déterminer les couches uniques pour lesquelles…
- mitigation_types (list[MitigationTask] | None) – Liste des classes d'atténuation créées qui seront utilisées pour atténuer les circuits. Chaque méthode d'atténuation peut imposer des options de « boxing » qui auront une incidence sur les différentes couches. Si elle est fournie, la liste doit avoir la même longueur que
circuits. - custom_boxing_options (dict |list[dict] | None) – Les options de cadrage personnalisées qui seront utilisées par la fonction
generate_boxing_pass_manager()pour identifier les couches uniques. Si un seul dictionnaire est fourni, la même option de « boxing » personnalisée sera utilisée pour toutes les tâches. SiNoneest spécifié, l'option de boxing par défaut sera utilisée. - box_types (Literal['gates', 'measurement', 'all']) – Il peut s'agir soit de
"gates", soit"measurements"de"all", ce qui correspond respectivement à des boîtes de filtrage ne comportant que des couches de porte, que des couches de mesure ou toutes les couches.
Retours
Couches « boxed » uniques détectées sur les circuits indiqués à l'aide des options de « boxing » fournies.
Type de retour
liste[CircuitInstruction]
executor_expectation_values
executor_expectation_values(bool_array, basis_mapping, /, meas_basis_axis=None, *, avg_axis=None, measurement_flips=None, pauli_signs=None, postselect_mask=None, gamma_factor=None, rescale_factors=None)
Calcule les valeurs attendues à partir des données de tir provenant de qiskit_ibm_runtime.Executor et des métadonnées.
Utilise les données contenues dans bool_array, acquises à l'aide des bases de mesure définies dans les clés de basis_mapping, pour calculer les observables codées dans les valeurs de basis_mapping.
Permet, si on le souhaite, de calculer une moyenne sur des axes supplémentaires de bool_array, comme lors d'une rotation.
Prend en charge, en option, le « twirling » des mesures, le PEC et la post-sélection.
Paramètres
-
bool_array (ndarray[tuple[int, ...], dtype[bool]]) – Tableau booléen, représentant vraisemblablement les données issues de qubits mesurés. Les deux derniers axes correspondent respectivement au nombre de prises et au nombre de bits classiques. On suppose que le bit le moins significatif se trouve à l'indice
0de l'axe des bits. Simeas_basis_axisest donné, cet axe debool_arrayindexe les bases de mesure, avec une longueur delen(basis_mapping). -
basis_mapping (dict[Pauli, list[SparsePauliOp | None]] |tuple[Sequence[SparsePauliOp], Sequence[str] | PauliList]) –
Les observables de Pauli et les bases associées qui ont été mesurées. Il peut s'agir d'un
tuple,(observables, msmt_bases), ou d'undict,{basis: commuting_observables}.- tuple : un tuple de type
length-2contenant(observables, msmt_bases), oùobservablesest une séquence deSparsePauliOpinstances pour lesquelles il faut calculer les valeurs d'espérance individuelles, etmsmt_basesest une séquence d'observables de Pauli.msmt_basesOn s'attend à ce que le eiPauli dans corresponde à la eitranche de le longbool_arraydemeas_basis_axis. - dict : La -ième
iclé correspond à une base de mesure supposée correspondre à lai-ième tranche de le longbool_arrayde l'axemeas_basis_axis. Les valeurs sont des listes d'observables (SparsePauliOp) dont la longueur est égale au nombre d'observables.NoneCes valeurs sont utilisées lorsqu'une observable ne commute pas, au niveau des qubits, avec la base. Cette méthode part du principe que chaque observable n'apparaît qu'une seule fois parmi les valeurs, même s'il commute avec plusieurs bases.
- tuple : un tuple de type
-
meas_basis_axis (int | None) – Axe de
bool\_arrayservant à indexer les bases de mesure. L'ordre doit correspondre à celui indiqué dansbasis_mapping. SiNone, alorslen(basis_mapping)doit être1, etbool_arrayon suppose que correspond à la seule base de mesure. -
avg_axis (int |tuple[int, ...] | None) – Axe(s) facultatif(s) de
bool_arraysur lequel (lesquels) effectuer la moyenne lors du calcul des valeurs attendues. En général, il s'agit de l'axe de « rotation ». Doit être non négatif. (L'axe des tirs, supposé se trouver à l'index-2dans le tableau booléen, est toujours pris en compte dans le calcul de la moyenne.) -
measurement_flips (ndarray[tuple[int, ...], dtype[bool]] | None) – Tableau de valeurs booléennes facultatif utilisé avec la rotation des mesures. Indique quels bits ont été acquis lors de mesures précédées de portes de inversion de bits. Le traitement des données utilisera le résultat de l'opération XOR entre ce tableau et
bool_array. Doit avoir la même forme quebool_array. -
pauli_signs (ndarray[tuple[int, ...], dtype[bool]] | None) – Tableau de valeurs booléennes facultatif utilisé avec l'annulation probabiliste des erreurs (PEC). On suppose que l'axe final répertorie toutes les boîtes présentant des anomalies dans le circuit. La valeur de
Trueindique que le signe global de-1doit être associé à la case « bruitée », généralement parce qu'un nombre impair d'erreurs de bruit inverse a été inséré dans cette case pour la randomisation du circuit spécifiée. L'axe final est immédiatement réduit à une somme modulo 2 afin d'obtenir le signe global associé à chaque randomisation de circuit. La forme restante doit êtrepauli_signs.shape[:-1] == bool_array.shape[:-2]. Notez que ce tableau ne comporte pas d'axe « shots ». -
postselect_mask (ndarray[tuple[int, ...], dtype[bool]] | None) – Tableau de valeurs booléennes facultatif utilisé pour la post-sélection.
True(False) indique qu'un plan a été accepté (ou rejeté) lors de la post-sélection. La forme doit êtrebool_array.shape[:-1]. -
gamma_factor (float | None) – Facteur de mise à l'échelle gamma à appliquer aux valeurs attendues corrigées par la méthode PEC. Dans ce cas
None, les facteurs de mise à l'échelle seront calculés en soustrayant le nombre d'échantillons négatifs du nombre d'échantillons positifs, soit1/(np.sum(~pauli_signs, axis=avg_axis) - np.sum(pauli_signs, axis=avg_axis)). Cette opération peut échouer en raison d'une division par zéro s'il y a autant d'échantillons positifs que négatifs. Notez également que cela redimensionne chaque valeur attendue selon un facteur différent. (À faire : permettre de spécifier un tableau de valeurs gamma). -
rescale_factors (dict[str, float] | None) – Facteur d'échelle pour chaque terme de Pauli distinct présent dans les observables calculées. Généralement utilisé pour les facteurs de correction visant à atténuer les erreurs de lecture (« TREX »). Dans ce cas
None, le facteur d'échelle ne sera pas appliqué.
Retours
Une liste de (par ex. (valeur, variance) : des tuples à deux éléments, un pour chaque grandeur observable souhaitée.
Remarque : les covariances entre les termes additionnés au sein de chaque variable observable ne sont actuellement pas prises en compte dans le
écarts constatés. # ACTION
Augmentations
- ValueError –
avg_axiscontient des valeurs négatives, des axes qui se répètent ou l'un des deux derniers axes (plans, bits). - ValueError – contient
avg_axismeas_basis_axis. - ValueError – est
meas_basis_axismaisNonelen(basis_mapping) != 1. - ValueError – est
meas_basis_axisnégatif ou correspond à l'un des deux derniers axes (tirs, bits) debool_array. - ValueError – Le nombre d'éléments de n'est
basis_mappingpas égal à la longueur de surbool_arraymeas_basis_axis. - ValueError – Une grandeur observable n'est pas couverte par les bases de mesure.
get_measurement_bases
get_measurement_bases(observables)
Choisissez les bases à échantillonner afin de calculer les valeurs attendues pour toutes les observables données.
Ici, le terme « base » désigne la mesure d'un opérateur de Pauli à poids complet ou à poids élevé, à partir de laquelle il est possible d'estimer plusieurs opérateurs de Pauli commutant au niveau des qubits.
Les bases sont choisies en regroupant les Paulis commutatifs selon les différentes observables.
Paramètres
observables (SparsePauliOp |list[SparsePauliOp]) – Les observables à calculer à l'aide de l'ordinateur quantique.
Retours
- Liste des bases de Pauli à échantillonner, codées sous la forme d'une liste de uint8 où 0=I,1=Z,2=X,3=Y.
- Dictionnaire qui associe chaque base mesurée aux états de Pauli correspondants et à leurs coefficients pour chaque observable. Les bases mesurées servant de clés, il existe, pour chaque observable, une « SparsePauliOp » qui la représente.
Type de retour
tuple [ ndarray [ tuple [ int, …], dtype[uint8]], dict [ Pauli, list [ SparsePauliOp ]]]
map_observable_isa_to_canonical
map_observable_isa_to_canonical(isa_observable, canonical_qubits)
Mettre en correspondance une observable définie par rapport au circuit transpilé avec l'ordre canonique des cases.
Dans l'ordre transpilé (ou ISA), les qubits sont indexés en fonction de leur disposition « physique » au sein du dispositif.
Pour plus d'informations sur les conventions d'ordre canoniques des qubits, consultez la documentation de Samplomatic.
Paramètres
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un objet de type Pauli, SparsePauliOp, ou SparseObservable.
- canonical_qubits (Sequence[int]) – Une séquence précisant le qubit physique correspondant à chaque qubit canonique.
Retours
Un opérateur mappé du même type que isa_observable
Type de retour
map_observable_virtual_to_canonical
map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)
Associer une observable dont l'ordre des qubits virtuels correspond à l'ordre canonique de la boîte.
Pour plus d'informations sur les conventions d'ordre canoniques des qubits, consultez la documentation de Samplomatic.
Paramètres
- virt_observable (Pauli |SparsePauliOp |SparseObservable) – Un objet de type Pauli, SparsePauliOp, ou SparseObservable.
- layout (Sequence[int]) – Liste des qubits physiques utilisés pour le circuit ISA.
- canonical_qubits (Sequence[int]) – Une séquence précisant le qubit physique correspondant à chaque qubit canonique.
Retours
Un opérateur mappé du même type que virt_observable
Type de retour
map_observable_isa_to_virtual
map_observable_isa_to_virtual(isa_observable, layout)
Mettre en correspondance un observable défini par rapport au circuit transpilé avec l'ordre virtuel.
Dans l'ordre transpilé (ou ISA), les qubits sont indexés en fonction de leur disposition « physique » au sein du dispositif.
Paramètres
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un objet de type Pauli, SparsePauliOp, ou SparseObservable.
- layout (Sequence[int]) – Liste des qubits physiques utilisés pour le circuit ISA.
Retours
Un opérateur mappé du même type que isa_observable
Type de retour