Skip to main content
IBM Quantum Platform

exp_vals

qiskit_addon_utils.exp_vals

Outils de calcul des valeurs attendues.

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 et qiskit_ibm_runtime.Executor 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_dict, pour calculer les observables codées dans les valeurs de basis_dict.

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, la rotation des mesures, le PEC et la postsé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 len(basis_mapping)de.

  • 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 convient de calculer les valeurs d'espérance individuelles, et msmt_bases est une séquence d'observables de Pauli. On s'attend à ce que le i e Pauli dans msmt_bases corresponde à la i e tranche de bool_array le long de meas_basis_axis.
    • dict : La i -ième clé correspond à une base de mesure supposée correspondre à la i -ième tranche de bool_array le long de meas_basis_axis l'axe. 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, fait toujours l'objet d'un calcul de 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 effectuée sur ce tableau avec 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 la compensation 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 « noisy », 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. Si None, les facteurs de mise à l'échelle seront calculés comme étant le nombre d'échantillons positifs moins le nombre d'échantillons négatifs, 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 (Sequence[Sequence[Sequence[float]]] | None) – Facteur d'échelle pour chaque terme de Pauli dans chaque observable, pour chaque base, dans le basis_mapping. Généralement utilisé pour les facteurs de correction visant à atténuer les erreurs de lecture (« TREX »). Chaque élément de la liste correspond à une base différente et contient une liste de listes de facteurs pour chaque terme de chaque grandeur observable liée à cette base. L'ordre des bases et des observables au sein de chaque base doit être le même que dans basis_mapping. Pour les observables vides correspondant à certaines bases, conservez une liste vide. NoneDans ce cas, le facteur d'échelle ne sera pas appliqué.

Retours

Une liste de (exp. val, variance) 2 tuples, un pour chaque observable souhaité.

Note : Les covariances entre les termes additionnés dans chaque observable ne sont pas actuellement prises en compte dans le modèle de la

écarts constatés. # ACTION

Augmentations

  • ValueErroravg_axis contient des valeurs négatives.
  • ValueErrormeas_basis_axis est None mais len(basis_mapping) != 1.
  • ValueError – Le nombre d'entrées dans basis_mapping n'est pas égal à la longueur de bool_array sur meas_basis_axis.
  • ValueError – Une grandeur observable n'est pas couverte par les bases de mesure.

get_measurement_bases

get_measurement_bases(observables, bases_in_int_format=True)

GitHub

Choisir les bases à échantillonner afin de calculer les valeurs d'espérance pour toutes les observables données.

Ici, une "base" fait référence à la mesure d'un Pauli de poids total ou de poids élevé, à partir duquel plusieurs Paulis de commutation de qubits peuvent être estimés.

Les bases sont choisies en regroupant les Paulis commutés entre les différentes observables.

Paramètres

  • observables (SparsePauliOp |list[SparsePauliOp]) – Les observables à calculer à l'aide de l'ordinateur quantique.
  • bases_in_int_format (bool) – Si la condition est vraie, renvoie les bases sous forme de tableau d'entiers, en respectant la convention « samplomatic » suivante : I=0, Z=1, X=2, Y=3. L'ordre des entiers correspondra à l'indice de chaque Pauli dans la chaîne. Par exemple, la base « IXYZ » donnerait les résultats suivants : [1, 3, 2, 0]. Si la valeur est fausse, renvoie les bases sous la forme d'un tableau de chaînes de caractères.

Retours

  • Liste des bases de Pauli à échantillonner, codées sous la forme d'une liste de chaînes de caractères de type « uint8 » où 0=I,1=Z,2=X,3=Y, ou d'une liste de chaînes de caractères (en fonction du paramètre « bases_in_int_format »).
  • Dict qui associe chaque base mesurée aux Paulis pertinents et à leurs coefficients pour chaque observable. Avec les bases mesurées comme clés, chaque observable est représenté par un site SparsePauliOp.

Type de retour

tuple [ list [ ndarray [ tuple [ int, …], d[* type uint8*] ]], dict [ Pauli, list [ SparsePauliOp ]]] | tuple [ list [ str ], dict [ Pauli, list [ SparsePauliOp ]]]

map_observable_isa_to_canonical

map_observable_isa_to_canonical(isa_observable, canonical_qubits)

GitHub

Mapper une observable définie par rapport au circuit transposé à l'ordre des boîtes canoniques.

Dans l'ordre transpilé (ou ISA), les qubits sont indexés sur la base de la disposition "physique" des qubits dans le dispositif.

Pour plus d'informations sur les conventions d'ordonnancement canonique des qubits, voir la documentation de Samplomatic ).

Paramètres

  • isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un objet de Pauli, SparsePauliOp, ou SparseObservable.
  • canonical_qubits (Sequence[int]) – Une séquence spécifiant le qubit physique pour 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

Faire correspondre une observable avec l'ordre des qubits virtuels à l'ordre des boîtes canoniques.

Pour plus d'informations sur les conventions d'ordonnancement canonique des qubits, voir la documentation de Samplomatic ).

Paramètres

  • virt_observable (Pauli |SparsePauliOp |SparseObservable) – Un objet de Pauli, SparsePauliOp, ou SparseObservable.
  • layout (Sequence[int]) – La liste des qubits physiques utilisés pour le circuit isa.
  • canonical_qubits (Sequence[int]) – Un dictionnaire établissant la correspondance entre les qubits canoniques d'une boîte et les qubits physiques de la disposition.

Retours

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

map_observable_isa_to_virtual

map_observable_isa_to_virtual(isa_observable, layout)

GitHub

Mapper un observable défini par rapport au circuit transposé à l'ordre virtuel.

Dans l'ordre transpilé (ou ISA), les qubits sont indexés sur la base de la disposition "physique" des qubits dans le 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.