Skip to main content
IBM Quantum Platform

Utils

qiskit_mitigation.utils

Herramientas de mitigación de Qiskit.

load_tasks_from_result

load_tasks_from_result(result, return_trex=False)

GitHub

Cargar MitigationTask objetos a partir de un resultado de ejecución utilizando los datos de «passthrough_data» guardados en el resultado.

Parámetros

  • result (QuantumProgramResult) – El objeto «resul» desde el que se cargan las tareas.
  • return_trex (bool) – Si el valor es «True», se incluirá el elemento de calibración TREX en la lista devuelta de objetos « MitigationTask ».

Devuelve

Lista de objetos MitigationTask que han generado el programa del resultado indicado.

Tipo de retorno

lista [ MitigationTask ]

find_combined_unique_layers

find_combined_unique_layers(circuits, mitigation_types=None, custom_boxing_options=None, box_types='all')

GitHub

Devuelve las capas empaquetadas únicas que se encuentran en los circuitos indicados, utilizando las opciones de empaquetado especificadas.

La lista resultante contiene una instancia de cada capa encajonada distinta (representada como un CircuitInstruction) que aparece en los circuitos de entrada. Algunos métodos de mitigación aplican opciones de encajonamiento pertinentes. Al especificar los métodos de mitigación deseados, estas opciones se aplican al agrupar los circuitos para identificar capas únicas. Se recomienda proporcionar los métodos de mitigación deseados para garantizar que las capas específicas utilizadas para el aprendizaje sean las mismas que las utilizadas en la ejecución. Las casillas devueltas se pueden filtrar para que solo se muestren las que contienen medidas, las que contienen únicamente puertas o todos los tipos de casillas.

Parámetros

  • circuits (list[QuantumCircuit]) – El circuito para determinar las capas únicas de.
  • mitigation_types (list[MitigationTask] | None) – Lista de clases de mitigación iniciadas con las que se mitigarán los circuitos. Cada método de mitigación podría aplicar opciones de «boxing» que afecten a las capas específicas. Si se proporciona, la lista debe tener la misma longitud que circuits.
  • custom_boxing_options (dict |list[dict] | None) – Las opciones de recuadro personalizadas que utilizará la función generate_boxing_pass_manager() para encontrar las capas únicas. Si se proporciona un único diccionario, se utilizará la misma opción de «boxing» personalizada para todas las tareas. Si None se especifica, se utilizará la opción de «boxing» predeterminada.
  • box_types (Literal['gates', 'measurement', 'all']) – Puede ser "gates", o "measurements" "all", lo que corresponde a cuadros de filtro con solo capas de puerta, solo capas de medición o todas las capas, respectivamente.

Devuelve

Capas en caja únicas encontradas en los circuitos indicados utilizando las opciones de encajado especificadas.

Tipo de retorno

lista[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

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_mapping, para calcular las magnitudes observables codificadas en los valores de basis_mapping.

Permite, de forma opcional, calcular la media sobre ejes adicionales de bool_array, como ocurre al girar.

Admite, de forma opcional, el «twirling» de mediciones, el PEC y la 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 0 del eje de bits. Si meas_basis_axis se da, ese eje de bool_array indexa las bases de medida, con longitud len(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 un dict, {basis: commuting_observables}.

    • tupla : Una tupla de tipo « length-2 » que contiene (observables, msmt_bases), donde observables es una secuencia de SparsePauliOp instancias para las que deben calcularse los valores de esperanza individuales, y msmt_bases es una secuencia de observables de Pauli. msmt_bases Se espera que el -ésimo i Pauli en corresponda a la -ésima i sección de bool_array a lo largo de meas_basis_axis.
    • dict : La clave -ésima i es una base de medida que se supone que corresponde al i -ésimo segmento de bool_array a lo largo del eje meas_basis_axis . Los valores son listas de observables (SparsePauliOp) cuya longitud es igual al número de observables. None Los 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.
  • meas_basis_axis (int | None) – Eje de bool_array que indexa las bases de medida. El orden debe coincidir con el orden en basis_mapping. Si None, entonces len(basis_mapping) debe ser 1, y bool_array se supone que corresponde a la única base de medición.

  • avg_axis (int |tuple[int, ...] | None) – Eje o ejes opcionales de bool\_array sobre 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 -2 de 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 mediciones. 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 que bool_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 ruido del circuito. El valor de True indica que el signo general de -1 deberí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 ser pauli_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 ser bool_array.shape[:-1].

  • gamma_factor (float | None) – Factor de reescalado gamma que se aplicará a los valores esperados mitigados mediante PEC. Si None, los factores de reescalado se calcularán como el número de muestras positivas menos el número de muestras negativas, calculado como 1/(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).

  • rescale_factors (dict[str, float] | None) – Factor de escala para cada término de Pauli único encontrado en las magnitudes observables calculadas. Se utiliza habitualmente para los factores de corrección destinados a mitigar los errores de lectura («TREX»). Si None, no se aplicará el factor de escala.

Devuelve

Una lista de (p. ej., (val, varianza) pares de dos elementos, uno para cada magnitud observable deseada.

Nota: Actualmente no se tienen en cuenta las covarianzas entre los términos sumados de cada variable observable en el

desviaciones devueltas. # PENDIENTE

Subidas

  • ValueError – contiene avg_axis valores negativos, ejes repetidos o uno de los dos últimos ejes (tomas, bits).
  • ValueError – contiene avg_axis meas_basis_axis.
  • ValueError – es meas_basis_axis pero None len(basis_mapping) != 1.
  • ValueError – es meas_basis_axis negativo o indica uno de los dos últimos ejes (tomas, fragmentos) de bool_array.
  • ValueError – El número de entradas en no basis_mapping es igual a la longitud de bool_array a lo largo de meas_basis_axis.
  • ValueError – Una magnitud observable no está incluida en las bases de medición.

get_measurement_bases

get_measurement_bases(observables)

GitHub

Elige las bases que deseas muestrear para calcular los valores esperados de todas las magnitudes observables dadas.

En este contexto, el término «base» se refiere a la medición de un operador de Pauli de peso completo o de alto peso, a partir de la cual se pueden estimar múltiples operadores de Pauli que conmutan entre sí a nivel de qubit.

Las bases se eligen agrupando los estados de Pauli que se anulan entre sí en las diferentes magnitudes observables.

Parámetros

observables (SparsePauliOp |list[SparsePauliOp]) – Las magnitudes observables que hay que calcular mediante el ordenador cuántico.

Devuelve

  • Lista de bases de Pauli para el muestreo codificadas en una lista de uint8, donde 0=I,1=Z,2=X,3=Y.
  • Dict que asigne cada base medida a los Paulis correspondientes y a sus coeficientes para cada observable. Con las bases medidas como claves, para cada observable existe un SparsePauliOp que lo representa.

Tipo de retorno

tupla [ ndarray [ tupla [ int, …], dtype[uint8]], dict [ Pauli, lista [ SparsePauliOp ]]]

map_observable_isa_to_canonical

map_observable_isa_to_canonical(isa_observable, canonical_qubits)

GitHub

Asigna a un observable definido en relación con el circuito transpilado el orden canónico de las casillas.

En el orden transpilado (o ISA), los qubits se indexan según la disposición «física» de los qubits en el dispositivo.

Para obtener información sobre las convenciones canónicas de ordenación de qubits, consulta la documentación de Samplomatic.

Parámetros

  • isa_observable (Pauli |SparsePauliOp |SparseObservable) – Un objeto de tipo Pauli, SparsePauliOp, o SparseObservable.
  • canonical_qubits (Sequence[int]) – Una secuencia que especifica el qubit físico correspondiente a cada qubit canónico.

Devuelve

Un operador mapeado del mismo tipo que isa_observable

Tipo de retorno

Pauli | SparsePauliOp | SparseObservable

map_observable_virtual_to_canonical

map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)

GitHub

Asignar una observable con ordenación de qubits virtuales al orden canónico de caja.

Para obtener información sobre las convenciones canónicas de ordenación de qubits, consulta la documentación de Samplomatic.

Parámetros

  • virt_observable (Pauli |SparsePauliOp |SparseObservable) – Un objeto de tipo Pauli, SparsePauliOp, o SparseObservable.
  • layout (Sequence[int]) – La lista de qubits físicos utilizados para el circuito ISA.
  • canonical_qubits (Sequence[int]) – Una secuencia que especifica el qubit físico correspondiente a cada qubit canónico.

Devuelve

Un operador mapeado del mismo tipo que virt_observable

Tipo de retorno

Pauli | SparsePauliOp | SparseObservable

map_observable_isa_to_virtual

map_observable_isa_to_virtual(isa_observable, layout)

GitHub

Asigna un observable definido en relación con el circuito transpilado a un orden virtual.

En el orden transpilado (o ISA), los qubits se indexan según la disposición «física» de los qubits en el dispositivo.

Parámetros

Devuelve

Un operador mapeado del mismo tipo que isa_observable

Tipo de retorno

Pauli | SparsePauliOp | SparseObservable

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.