PEC (qiskit_mitigation.pec)
Pec
class PEC
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)
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
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)
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_layerscon 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
0corresponde a la eliminación total del ruido aprendido. Un valor de corresponde1a que no se elimina el ruido aprendido. Un valor comprendido entre y01corresponde 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órmula1 - 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
postprocess
postprocess(results, measure_noise_data=None)
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_shapeyobservables.shapeno pueden emitirse simultáneamente, mientras quebroadcast_obs_and_paramsse estableció en duranteTruela preparación de la tarea.
Tipo de retorno
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)
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 éstaisección de los datos enitem_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_resulttiene ninguna clave'_meas'. - ValueError – Si
item_result['_meas']tiene un número de ejes no válido. - ValueError – Si no
item_resulttiene ninguna clave'pauli_signs'. - ValueError – Si y
param_shapeobservables.shapeno pueden emitirse simultáneamente.
Tipo de retorno
create_instance_from_passthrough_data
static create_instance_from_passthrough_data(passthrough, trex=None)
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
Noneen 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