Skip to main content
IBM Quantum Platform

PEC (qiskit_mitigation.pec)

Pec

class PEC

GitHub

Bases: MitigationTask

Calcula los valores esperados de las magnitudes observables utilizando el método de mitigación denominado «cancelación probabilística de errores» (PEC).

Esta clase permite crear un objeto QuantumProgram con un circuito mitigado mediante el método PEC, que puede ejecutarse en hardware mediante el Executor, y procesar posteriormente los resultados para calcular los valores esperados mitigados de determinadas observables. Los parámetros de la tarea deben introducirse como datos de entrada en la función «prepare», y las variables pertinentes necesarias para el posprocesamiento se guardan internamente:

pec = PEC()
program = pec.prepare(circuit=circuit,
                      observables=observables,
                      parameters=parameter_valuesת
                      noise_maps=learned_noise)
job = executor.run(program)
results = job.result()
mitigated_result = pec.postprocess(results)

Para calcular los valores esperados del resultado de un trabajo cargado, se puede crear una tarea PEC a partir de los resultados del trabajo, con todas las variables internas necesarias para el posprocesamiento. Como alternativa, las variables necesarias para el posprocesamiento pueden introducirse directamente como parámetros del método estático compute_expectation_value . Ejemplo de cómo ejecutar el posprocesamiento de un resultado cargado:

pec = PEC()
program = pec.prepare(circuit=circuit,
                      observables=observables,
                      parameters=parameter_valuesת
                      noise_maps=learned_noise)
job_id = executor.run(program).job_id

job = service.job(job_id)
results = job.result()
pec = load_tasks_from_result(results)[0]
mitigated_result = pec.postprocess(results)

Crear una instancia de una tarea PEC.

Métodos

find_unique_layers

find_unique_layers(circuit, custom_boxing_options=None)

GitHub

Devuelve las capas empaquetadas únicas del circuito indicado utilizando las opciones de empaquetado especificadas.

Parámetros

  • circuit (QuantumCircuit) – El circuito que da lugar a sus capas únicas.
  • custom_boxing_options (dict | None) – Las opciones de encajado personalizadas que utilizará la función generate_boxing_pass_manager() .

Devuelve

Capas únicas en recuadros del circuito dado.

Tipo de retorno

lista [ CircuitInstruction ]

prepare

prepare(circuit, observables, parameters, custom_boxing_options=None, shots_per_randomization=64, num_randomizations=128, broadcast_obs_and_params=False, trex=None, quantum_program=None, *, noise_maps=None, scale_randomizations_by_gamma=True, noise_gain='auto', max_sampling_overhead=100)

GitHub

Crea un elemento QuantumProgram con mitigación de PEC para su ejecución a través de Executor.

Crea un elemento para un QuantumProgram, que puede ejecutarse mediante Executor y cuenta con mitigación PEC (inyecta ruido inverso para cancelar el ruido aprendido). Si se quantum_program especifica un a, el nuevo elemento se añadirá al programa existente; en caso contrario, se creará un nuevo programa que contendrá únicamente el elemento creado. Si el valor es broadcast_obs_and_params «True», los observables y los parámetros se distribuirán siguiendo las reglas de distribución de Samplomatic, para permitir asociar algunos de los parámetros a algunos de los observables. De lo contrario, cada parámetro se ejecutará para cada observable (producto exterior de los parámetros y los observables). Ten en cuenta que el posprocesamiento de un producto exterior suele ser más rápido.

Parámetros

  • circuit (QuantumCircuit) – El circuito cuántico.
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Las magnitudes observables para calcular sus valores esperados.
  • parameters (ndarray |BindingsArray | None) – Los parámetros de un circuito paramétrico.
  • custom_boxing_options (dict | None) – Las opciones de encajado personalizadas que utilizará la función generate_boxing_pass_manager() .
  • shots_per_randomization (int) – El número de inyecciones por aleatorización.
  • num_randomizations (int) – El número de aleatorizaciones.
  • broadcast_obs_and_params (bool) – Si se deben transmitir los observables y los parámetros.
  • trex (TREX | None) – Una instancia de mitigación de TREX que se utilizará para mitigar los errores de lectura.
  • quantum_program (QuantumProgram | None) – El programa de Quantum para añadir un artículo. Si es «None», se creará un nuevo programa.
  • noise_maps (dict[str, PauliLindbladMap] | None) – Una correspondencia entre la referencia de capa y un modelo de ruido que se utilizará para el método de mitigación PEC. El diccionario puede contener capas que no estén presentes en el circuito dado, pero debe contener todas las capas mitigadas. Se supone que las capas únicas utilizadas para el aprendizaje del ruido se extrajeron mediante el método find_unique_layers con las mismas opciones de «boxing» personalizadas.
  • scale_randomizations_by_gamma (bool) – Si se debe ajustar automáticamente el número de aleatorizaciones mediante gamma**2.
  • noise_gain (float |Literal['auto']) – La proporción de ruido que se debe conservar tras la mitigación. Un valor de 0 corresponde a la eliminación total del ruido aprendido. Un valor de corresponde 1 a que no se elimina el ruido aprendido. Un valor comprendido entre y 0 1 corresponde a la eliminación parcial del ruido aprendido. Un valor superior a uno equivale a amplificar el ruido aprendido. Si "auto", el valor del intervalo [0, 1] se seleccionará automáticamente mediante la fórmula 1 - log(max_overhead) / log(gamma^2).
  • max_sampling_overhead (float | None) – Si scale_randomizations_by_gamma es True, limita la relación multiplicativa del número de aleatorizaciones.

Devuelve

Un elemento con QuantumProgram mitigación PEC que se puede ejecutar mediante Executor.

Tipo de retorno

QuantumProgram

postprocess

postprocess(results, measure_noise_data=None)

GitHub

Valores esperados del proceso para el resultado de un único elemento con mitigación PEC.

Parámetros

  • results (QuantumProgramItemResult |QuantumProgramResult) – Resultados de la ejecución. Puede ser tanto el objeto de resultados completo como el resultado del elemento «mitigado» de esta tarea. Si se añade la tarea de calibración TREX al programa cuántico, sus resultados se utilizarán para calcular los datos de ruido de medición, siempre que se facilite el objeto de resultados completo.
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Los datos de ruido de medición obtenidos que se utilizarán para la mitigación de TREX. Si se especifica «None» y hay una tarea de calibración en el programa cuántico, el ruido de medición se calculará a partir de los resultados de la tarea de calibración, siempre que se facilite el objeto de resultados completo.

Devuelve

Un « PubResult » que contiene y evs std como campos en sus datos, donde evs son valores esperados y std son las desviaciones estándar de los valores esperados. Si broadcast_obs_and_params se establece en «True», los datos contendrán también un campo twirl_stds que representa la desviación estándar entre las diferentes aleatorizaciones.

Subidas

  • ValueError – Si el resultado de la tarea no tiene ninguna '_meas' clave.
  • ValueError – Si los datos '_meas' del resultado del elemento tienen un número de ejes no válido.
  • ValueError – Si param_shape y observables.shape no pueden emitirse simultáneamente, mientras que broadcast_obs_and_params se estableció en durante True la preparación de la tarea.

Tipo de retorno

PubResult

compute_expectation_value_pec

static compute_expectation_value_pec(item_result, observables, gamma, param_shape=None, param_basis_pairs=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None)

GitHub

Valores esperados del proceso para el resultado de un único elemento con mitigación PEC.

Esta función se puede utilizar para calcular los valores esperados de un resultado concreto de un elemento mitigado por PEC sin necesidad de crear una nueva instancia de la clase.

Parámetros

  • item_result (QuantumProgramItemResult) – El resultado del artículo.
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Las variables observables para las que se van a calcular los valores esperados.
  • gamma (float) – El factor gamma del modelo de ruido aprendido para el circuito ejecutado.
  • param_shape (tuple[int, ...] | None) – El formato de los valores de los parámetros.
  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – La correspondencia entre los parámetros y los índices para medir la base.
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Una lista de las bases de Pauli medidas. El elemento i éste es una base de medida que se supone que corresponde a la ésta i sección de los datos en item_result.
  • broadcast_obs_and_params (bool) – Si se deben transmitir los observables y los valores de los parámetros.
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Datos de calibración del ruido de medición para la mitigación de TREX.

Devuelve

Un « PubResult » que contiene y evs std como campos en sus datos, donde evs son valores esperados y std son las desviaciones estándar de los valores esperados. Si broadcast_obs_and_params se establece en «True», los datos contendrán también un campo twirl_stds que representa la desviación estándar entre las diferentes aleatorizaciones.

Subidas

  • ValueError – Si no item_result tiene ninguna clave '_meas' .
  • ValueError – Si item_result['_meas'] tiene un número de ejes no válido.
  • ValueError – Si no item_result tiene ninguna clave 'pauli_signs' .
  • ValueError – Si y param_shape observables.shape no pueden emitirse simultáneamente.

Tipo de retorno

PubResult

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

Crear una instancia de PEC a partir de un diccionario de paso cargado desde el resultado de la ejecución de un programa cuántico.

Parámetros

  • passthrough (dict[str, Any]) – Diccionario «Passthrough_data» cargado a partir del resultado de la ejecución de un programa cuántico.
  • trex (TREX | None) – Una instancia de TREX que contiene un circuito de calibración se ejecuta en el mismo programa cuántico. Debe mantenerse None en caso de que no se haya utilizado la mitigación TREX o no se haya ejecutado una calibración TREX como parte del mismo programa cuántico.

Devuelve

Una instancia de PEC.

Tipo de retorno

PEC

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