exp_vals
qiskit_addon_utils.exp_vals
Herramientas para calcular los valores de las expectativas.
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)
Calcula los valores esperados a partir de los datos de disparos y qiskit_ibm_runtime.Executor los metadatos.
Utiliza los datos de bool_array, obtenidos mediante las bases de medición especificadas en las claves de basis_dict, para calcular las magnitudes observables codificadas en los valores de basis_dict.
Permite, de forma opcional, calcular la media sobre ejes adicionales de bool_array, como ocurre al girar.
Opcionalmente admite giro de medición, PEC y postselección.
Parámetros
-
bool_array (ndarray[tuple[int, ...], dtype[bool]]) – Matriz booleana, que presumiblemente representa datos de qubits medidos. Los dos últimos ejes representan el número de disparos y el número de bits clásicos, respectivamente. Se supone que el bit menos significativo se encuentra en el índice
0del eje de bits. Simeas_basis_axisse da, ese eje debool_arrayindexa las bases de medida, con longitudlen(basis_mapping). -
basis_mapping (dict[Pauli, list[SparsePauliOp | None]] |tuple[Sequence[SparsePauliOp], Sequence[str] | PauliList]) –
Los observables de Pauli y las bases asociadas que se midieron. Puede ser un
tuple,(observables, msmt_bases), o undict,{basis: commuting_observables}.- tupla : Una tupla de tipo « length-2 » que contiene
(observables, msmt_bases), dondeobservableses una secuencia deSparsePauliOpinstancias para las que deben calcularse los valores de esperanza individuales, ymsmt_baseses una secuencia de observables de Pauli. Se espera que eli-ésimo Pauli enmsmt_basescorresponda a lai-ésima sección debool_arraya lo largo demeas_basis_axis. - dict : La
iclave -ésima es un sistema de referencia de medida que se supone que corresponde ali-ésimo segmento debool_arraya lo largo delmeas_basis_axiseje. Los valores son listas de observables (SparsePauliOp) cuya longitud es igual al número de observables.NoneLos valores se utilizan cuando un observable no conmuta, a nivel de qubit, con la base. Este método parte de la base de que cada observable aparece solo una vez entre los valores, aunque conmute con más de una base.
- tupla : Una tupla de tipo « length-2 » que contiene
-
meas_basis_axis (int | None) – Eje de
bool\_arrayque indexa las bases de medida. El orden debe coincidir con el orden enbasis_mapping. SiNone, entonceslen(basis_mapping)debe ser1, ybool_arrayse supone que corresponde a la única base de medición. -
avg_axis (int |tuple[int, ...] | None) – Eje o ejes opcionales de
bool\_arraysobre los que se calculará la media al obtener los valores esperados. Normalmente, este es el eje de «giro». Debe ser un número no negativo. (El eje de los disparos, que se supone que se encuentra en el índice-2de la matriz booleana, siempre se promedia). -
measurement_flips (ndarray[tuple[int, ...], dtype[bool]] | None) – Matriz booleana opcional que se utiliza con la rotación de medidas. Indica qué bits se han adquirido mediante mediciones precedidas de puertas de inversión de bits. El procesamiento de datos utilizará el resultado de aplicar la operación XOR a esta matriz con
bool_array. Debe tener la misma forma quebool_array. -
pauli_signs (ndarray[tuple[int, ...], dtype[bool]] | None) – Matriz booleana opcional que se utiliza con la cancelación probabilística de errores (PEC). Se supone que el eje final indexa todas las cajas con interferencias del circuito. El valor de
Trueindica que el signo general de-1debería estar asociado a la casilla con ruido, normalmente porque se insertó un número impar de errores de ruido inverso en dicha casilla para la aleatorización del circuito especificada. El último eje se reduce inmediatamente a una suma módulo 2 para obtener el signo global asociado a cada aleatorización del circuito. La forma restante debe serpauli_signs.shape[:-1] == bool_array.shape[:-2]. Ten en cuenta que este array no tiene un eje «shots». -
postselect_mask (ndarray[tuple[int, ...], dtype[bool]] | None) – Matriz booleana opcional utilizada para la poselección.
True(False) indica una toma aceptada (rechazada) por la poselección. La forma debe serbool_array.shape[:-1]. -
gamma_factor (float | None) – Factor de reescalado gamma que se aplicará a los valores esperados mitigados mediante PEC.
NoneEn ese caso, los factores de reescalado se calcularán como el número de muestras positivas menos el número de muestras negativas, calculado como1/(np.sum(~pauli_signs, axis=avg_axis) - np.sum(pauli_signs, axis=avg_axis)). Esto puede dar error por división por cero si hay el mismo número de muestras positivas que negativas. Ten en cuenta también que esto reescala cada valor esperado por un factor diferente. (TODO: permitir especificar una matriz de valores gamma). -
basis_mappingrescale_factors (Sequence[Sequence[Sequence[float]]] | None) – Factor de escala para cada término de Pauli en cada observable en cada base en el dado. Se utiliza habitualmente para los factores de corrección destinados a mitigar los errores de lectura («TREX»). Cada elemento de la lista corresponde a una base diferente y contiene una lista de listas de factores para cada término de cada magnitud observable relacionada con dicha base. El orden de las bases y de los observables dentro de cada base debe ser el mismo que enbasis_mapping. En el caso de los observables vacíos de algunas de las bases, mantén una lista vacía.NoneEn ese caso, no se aplicará el factor de escala.
Devuelve
Una lista de (exp. val, variance) 2-tuplas, una para cada observable deseado.
Nota: Las covarianzas entre los términos sumados de cada observable no se tienen en cuenta actualmente en el
desviaciones devueltas. # PENDIENTE
Eleva
- ValueError –
avg_axiscontiene valores negativos. - ValueError –
meas_basis_axisesNoneperolen(basis_mapping) != 1. - ValueError – El número de entradas en
basis_mappingno es igual a la longitud debool_arraya lo largo demeas_basis_axis. - ValueError – Una magnitud observable no está contemplada en las bases de medición.
get_measurement_bases
get_measurement_bases(observables, bases_in_int_format=True)
Elija las bases de muestreo para calcular los valores de expectativa de todos los observables dados.
En este caso, una "base" se refiere a la medición de un Pauli de peso completo o de peso alto, a partir del cual se pueden estimar múltiples Paulis de conmutación entre qubits.
Las bases se eligen agrupando Paulis conmutantes en los distintos observables.
Parámetros
- observables (SparsePauliOp |list[SparsePauliOp]) – Los observables a calcular con el ordenador cuántico.
- bases_in_int_format (bool) – Si es cierto, devuelve las bases como una matriz de enteros, siguiendo la convención de Samplomatic: I=0, Z=1, X=2, Y=3. El orden de los números enteros se determinará según el índice de cada Pauli en la cadena. Por ejemplo, la base «IXYZ» se mostraría como [1, 3, 2, 0]. Si el valor es falso, devuelve las bases como una matriz de cadenas.
Devuelve
- Lista de bases de Pauli para el muestreo, codificadas en una lista de « uint8 », donde « 0=I,1=Z,2=X,3=Y » o una lista de cadenas (según el parámetro «bases_in_int_format»).
- Dict que mapea cada base medida a los Paulis relevantes y sus coeficientes para cada observable. Con las bases medidas como claves, para cada observable existe un SparsePauliOp que lo representa.
Tipo de retorno
tupla [ lista [ ndarray [ tupla [ entero, …], d[* type uint8*] ]], diccionario [ Pauli, lista [ SparsePauliOp ]]] | tupla [ lista [ str ], diccionario [ Pauli, lista [ SparsePauliOp ]]]
map_observable_isa_to_canonical
map_observable_isa_to_canonical(isa_observable, canonical_qubits)
Asigna un observable definido en relación con el circuito transpilado al orden de caja canónico.
En la ordenación transpilada (o ISA), los qubits se indexan en función de la disposición "física" de los qubits en el dispositivo.
Para más información sobre las convenciones canónicas de ordenación de qubits, consulte la documentación de Samplomatic ).
Parámetros
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un objeto Pauli, SparsePauliOp, o SparseObservable.
- canonical_qubits (Sequence[int]) – Una secuencia que especifica el qubit físico para cada qubit canónico.
Devuelve
Un operador mapeado del mismo tipo que isa_observable
Tipo de retorno
map_observable_virtual_to_canonical
map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)
Mapear un observable con ordenación virtual de qubits a ordenación canónica de cajas.
Para más información sobre las convenciones canónicas de ordenación de qubits, consulte la documentación de Samplomatic ).
Parámetros
- virt_observable (Pauli |SparsePauliOp |SparseObservable) – Un objeto Pauli, SparsePauliOp, o SparseObservable.
- layout (Sequence[int]) – La lista de qubits físicos utilizados para el circuito isa.
- canonical_qubits (Sequence[int]) – Un diccionario que asigna qubits canónicos dentro de una caja a qubits físicos dentro de la disposición.
Devuelve
Un operador mapeado del mismo tipo que virt_observable
map_observable_isa_to_virtual
map_observable_isa_to_virtual(isa_observable, layout)
Asigna un observable definido en relación con el circuito transpilado al orden virtual.
En la ordenación transpilada (o ISA), los qubits se indexan en función de la disposición "física" de los qubits en el dispositivo.
Parámetros
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un objeto Pauli, SparsePauliOp, o SparseObservable.
- layout (Sequence[int]) – La lista de qubits físicos utilizados para el circuito isa.
Devuelve
Un operador mapeado del mismo tipo que isa_observable
Tipo de retorno