MitigationTask (qiskit_mitigation.mitigation_task)
MitigationTask
class MitigationTask
Bases: object
Calcula los valores esperados de las magnitudes observables utilizando el ejecutor.
Esta clase es la clase base para todos los métodos de mitigación. Permite preparar un « QuantumProgram » que se puede ejecutar en el hardware mediante el Executor y procesar posteriormente los resultados para calcular los valores esperados de determinadas magnitudes 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:
task = MitigationTask()
program = task.prepare(circuit=circuit,
observables=observables,
parameters=parameter_values)
job = executor.run(program)
results = job.result()
mitigated_result = task.postprocess(results)Para calcular los valores esperados del resultado de un trabajo cargado, se puede crear una tarea 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:
task = MitigationTask()
program = task.prepare(circuit=circuit,
observables=observables,
parameters=parameter_values)
job_id = executor.run(program).job_id
job = service.job(job_id)
results = job.result()
task = load_tasks_from_result(results)[0]
mitigated_result = task.postprocess(results)Crear una instancia de MitigationTask.
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 le confiere sus capas únicas.
- custom_boxing_options (dict | None) – Las opciones de agrupación 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)
Crea un QuantumProgram para ejecutarlo mediante Executor.
Crea un elemento para un QuantumProgram, que se puede ejecutar mediante Executor. Si se quantum_program especifica un a, el nuevo elemento se añadirá al programa existente; de lo contrario, se creará un nuevo programa que contenga únicamente el elemento creado. La opción básica crea un elemento sin aplicar ningún método de mitigación al circuito. 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, se ejecutará cada parámetro 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 agrupación 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.
Devuelve
Un QuantumProgram 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.
Parámetros
- results (QuantumProgramItemResult |QuantumProgramResult) – Resultados de la ejecución. Puede ser tanto el objeto de resultados completo como el resultado concreto 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 incluirá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 clave
'_meas'. - 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
static compute_expectation_value(item_result, observables, 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.
Esta función se puede utilizar para calcular los valores esperados de un resultado de un elemento concreto sin mitigar, 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.
- 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 incluirá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 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 MitigationTask 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 « MitigationTask ».
Tipo de retorno