Skip to main content
IBM Quantum Platform

Utils

qiskit_mitigation.utils

Outils de mitigation de Qiskit.

load_tasks_from_result

load_tasks_from_result(result, return_trex=False)

GitHub

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')

GitHub

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. Si None est 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)

GitHub

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 0 de l'axe des bits. Si meas_basis_axis est donné, cet axe de bool_array indexe les bases de mesure, avec une longueur de len(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'un dict, {basis: commuting_observables}.

    • tuple : un tuple de type length-2 contenant (observables, msmt_bases), où observables est une séquence de SparsePauliOp instances pour lesquelles il faut calculer les valeurs d'espérance individuelles, et msmt_bases est une séquence d'observables de Pauli. msmt_bases On s'attend à ce que le e i Pauli dans corresponde à la e i tranche de le long bool_array de meas_basis_axis.
    • dict : La -ième i clé correspond à une base de mesure supposée correspondre à la i -ième tranche de le long bool_array de l'axe meas_basis_axis . Les valeurs sont des listes d'observables (SparsePauliOp) dont la longueur est égale au nombre d'observables. None Ces 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.
  • meas_basis_axis (int | None) – Axe de bool\_array servant à indexer les bases de mesure. L'ordre doit correspondre à celui indiqué dans basis_mapping. Si None, alors len(basis_mapping) doit être 1, et bool_array on suppose que correspond à la seule base de mesure.

  • avg_axis (int |tuple[int, ...] | None) – Axe(s) facultatif(s) de bool_array sur 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 -2 dans 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 que bool_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 True indique que le signe global de -1 doit ê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 être pauli_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 être bool_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, soit 1/(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_axis contient des valeurs négatives, des axes qui se répètent ou l'un des deux derniers axes (plans, bits).
  • ValueError – contient avg_axis meas_basis_axis.
  • ValueError – est meas_basis_axis mais None len(basis_mapping) != 1.
  • ValueError – est meas_basis_axis négatif ou correspond à l'un des deux derniers axes (tirs, bits) de bool_array.
  • ValueError – Le nombre d'éléments de n'est basis_mapping pas égal à la longueur de sur bool_array meas_basis_axis.
  • ValueError – Une grandeur observable n'est pas couverte par les bases de mesure.

get_measurement_bases

get_measurement_bases(observables)

GitHub

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)

GitHub

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

Pauli | SparsePauliOp | SparseObservable

map_observable_virtual_to_canonical

map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)

GitHub

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

Pauli | SparsePauliOp | SparseObservable

map_observable_isa_to_virtual

map_observable_isa_to_virtual(isa_observable, layout)

GitHub

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

Retours

Un opérateur mappé du même type que isa_observable

Type de retour

Pauli | SparsePauliOp | SparseObservable

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