Skip to main content
IBM Quantum Platform

GateFolding

class GateFolding

GitHub

Bases: MitigationTask

Calcula los valores esperados de las magnitudes observables mediante la extrapolación sin ruido (ZNE) con el método de mitigación del pliegue de puertas.

Esta clase permite preparar un modelo de « QuantumProgram » con un circuito mitigado mediante ZNE y el método «gate folding», que puede ejecutarse en hardware utilizando 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 entradas en la función «prepare», y las variables pertinentes necesarias para el posprocesamiento se guardan internamente:

gf_task = GateFolding()
program = gf_task.prepare(circuit=circuit,
                       observables=observables,
                       parameters=parameter_values,
                       noise_factors=noise_factors_array,
                       extrapolator=extrapolators_list)
job = executor.run(program)
results = job.result()
mitigated_result = gf_task.postprocess(results)

Para calcular los valores esperados del resultado de un trabajo cargado, se puede crear una tarea de « GateFolding » 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 en el método estático compute_expectation_value . Ejemplo de cómo ejecutar el posprocesamiento de un resultado cargado:

gf_task = GateFolding()
program = gf_task.prepare(circuit=circuit,
                       observables=observables,
                       parameters=parameter_values,
                       noise_factors=noise_factors_array,
                       extrapolator=extrapolators_list)
job_id = executor.run(program).job_id

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

Crear una instancia de la tarea « GateFolding ».


Atributos

VERSIÓN

Valor predeterminado: '0.1'


Métodos

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)

GitHub

Valores esperados del proceso para el resultado de un único artículo.

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 medición 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 y param_shape observables.shape no pueden emitirse simultáneamente.

Tipo de retorno

PubResult

compute_expectation_value_gate_folding

static compute_expectation_value_gate_folding(item_results, observables, param_shape, param_basis_pairs, noise_factors, extrapolator, extrapolated_noise_factors=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None, custom_fit=None)

GitHub

Valores esperados del proceso para el resultado de un único artículo.

Esta función se puede utilizar para calcular los valores esperados de un resultado concreto de un elemento con mitigación de «gate_folding» sin necesidad de crear una nueva instancia de clase.

Parámetros

  • item_results (list[QuantumProgramItemResult]) – Lista de los resultados de los elementos: uno por cada factor de ruido.

  • 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.

  • noise_factors (list[float]) – Los factores de ruido que se utilizaron para amplificar el ruido.

  • extrapolated_noise_factors (float |int |list[float] | None) – Factores de ruido que se deben tener en cuenta para evaluar los ajustes.

  • extrapolator (list[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']]) –

    El modelo o modelos de extrapolación que se vayan a utilizar. Los modelos se probarán por orden de prioridad. Modelos compatibles (cada uno de ellos se ajusta a la función indicada del factor de ruido x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio de grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tasas limitadas a la desintegración)
    • "fallback": no se ajusta; el valor medido con el factor de ruido más bajo
    • custom: La función de extrapolación personalizada especificada en el parámetro custom_fit
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Una lista de las bases de Pauli medidas. El elemento -ésimo i es una base de medición que se supone que se corresponde con el -ésimo i segmento de los datos en cada uno de los item_results.

  • 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. Puede ser, bien un « PauliLindbladMap » de un modelo de ruido aprendido previamente, bien el resultado de un circuito de calibración.

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – Una función de ajuste personalizado que se utilizará para la extrapolación. Debe incluir una tupla con el siguiente formato: (function, p_0, bounds). La función debe tomar la variable independiente como primer argumento y los parámetros de ajuste como los demás argumentos, por separado. p_0 es una matriz que contiene los valores iniciales estimados para los parámetros, y «bounds» son los límites de dichos parámetros. Estos parámetros se enviarán como argumentos de la función scipy.optimize.curve_fit .

Devuelve

  • evs: valores esperados calculados en el punto de ruido cero.

  • std: las desviaciones estándar de los valores esperados extrapolados, evaluados en el punto de ruido cero.

  • evs_noise_factors: valores esperados calculados en los puntos de noise_factors.

  • stds_noise_factors: desviaciones estándar calculadas en los puntos de noise_factors.

  • stds_twirl_noise_factors: desviaciones estándar entre las distintas aleatorizaciones, calculadas en el

    puntos de factores de ruido.

  • evs_extrapolated: valores esperados calculados en los puntos extrapolated_noise_factors.

    Establecer en «None» si es extrapolated_noise_factors «None».

  • stds_extrapolated: desviaciones estándar calculadas en los puntos extrapolados de los factores de ruido.

    Establecer en «None» si es extrapolated_noise_factors «None».

El archivo « PubResult » también contendrá un campo selected_extrapolators en los metadatos que recoge los extrapoladores válidos utilizados para extrapolar los datos de cada término observable para el punto de extrapolación sin ruido.

Tipo de retorno

Un objeto « PubResult » que contiene los siguientes campos

Subidas

  • ValueError – Si uno de ellos no item_results tiene clave '_meas' .
  • ValueError – Si uno de los item_results datos '_meas' tiene un número de ejes no válido.
  • ValueError – Si y param_shape observables.shape no pueden emitirse simultáneamente.
  • ValueError – Si no noise_factors está suficientemente especificado para cualquier extrapolador.

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

Crear una instancia de GateFolding 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 « GateFolding ».

Tipo de retorno

GateFolding

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 ]

postprocess

postprocess(results, measure_noise_data=None, *, noise_factors=None, extrapolator=None, extrapolated_noise_factors=None, custom_fit=None)

GitHub

Valores esperados del proceso para el resultado de una única tarea de « GateFolding ».

Parámetros

  • results (list[QuantumProgramItemResult] | QuantumProgramResult) – Los resultados de la ejecución. Puede ser el objeto de resultados completo o los elementos de esta tarea en los que se ha mitigado el efecto «gate folding». 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.

  • noise_factors (Sequence[float] | None) – Los factores de ruido que se utilizaron para amplificar el ruido.

  • extrapolated_noise_factors (list[float] | None) – Factores de ruido que se deben tener en cuenta para evaluar los ajustes.

  • extrapolator (Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']] | None) –

    El modelo o modelos de extrapolación que se vayan a utilizar. Los modelos se probarán por orden de prioridad. Modelos compatibles (cada uno de ellos se ajusta a la función indicada del factor de ruido x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio de grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tasas limitadas a la desintegración)
    • "fallback": no se ajusta; el valor medido con el factor de ruido más bajo
    • custom: La función de extrapolación personalizada especificada en el parámetro custom_fit
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Datos de calibración del ruido de medición para la mitigación de TREX. Puede ser, bien un « PauliLindbladMap » de un modelo de ruido aprendido previamente, bien el resultado de un circuito de calibración.

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – Una función de ajuste personalizado que se utilizará para la extrapolación. Debe incluir una tupla con el siguiente formato: (function, p_0, bounds). La función debe tomar la variable independiente como primer argumento y los parámetros de ajuste como los demás argumentos, por separado. p_0 es una matriz que contiene los valores iniciales estimados para los parámetros, y «bounds» son los límites de dichos parámetros. Estos parámetros se enviarán como argumentos de la función scipy.optimize.curve_fit .

Devuelve

  • evs: valores esperados calculados en el punto de ruido cero.

  • std: las desviaciones estándar de los valores esperados extrapolados, evaluados en el punto de ruido cero.

  • evs_noise_factors: valores esperados calculados en los puntos de noise_factors.

  • stds_noise_factors: desviaciones estándar calculadas en los puntos de noise_factors.

  • stds_twirl_noise_factors: desviaciones estándar entre las distintas aleatorizaciones, calculadas en el

    puntos de factores de ruido.

  • evs_extrapolated: valores esperados calculados en los puntos extrapolated_noise_factors.

    Establecer en «None» si es extrapolated_noise_factors «None».

  • stds_extrapolated: desviaciones estándar calculadas en los puntos extrapolados de los factores de ruido.

    Establecer en «None» si es extrapolated_noise_factors «None».

El archivo « PubResult » también contendrá un campo selected_extrapolators en los metadatos que recoge los extrapoladores válidos utilizados para extrapolar los datos de cada término observable para el punto de extrapolación sin ruido.

Tipo de retorno

Un objeto « PubResult » que contiene los siguientes campos

Subidas

  • ValueError – Si uno de los resultados de la tarea no tiene '_meas' clave.
  • ValueError – Si alguno de los datos '_meas' de los resultados del elemento tiene un número de ejes no válido.
  • ValueError – Si y param_shape observables.shape no pueden emitirse simultáneamente.

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, *, folding_method='random', noise_factors=(1, 3, 5), extrapolator=None, extrapolated_noise_factors=None)

GitHub

Crea un elemento mitigado QuantumProgram con GateFolding para su ejecución mediante Executor.

Crea un elemento para un QuantumProgram, que se puede ejecutar mediante Executor y que se ha sometido a un procesamiento « GateFolding » (amplifica el ruido mediante técnicas de «gate folding» y extrapola hasta el punto de ruido cero). Si quantum_program se especifica un, el nuevo elemento se añadirá al programa existente; de lo 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, lo que permite 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 | 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.

  • folding_method (Literal['random', 'front', 'back']) –

    La técnica que hay que utilizar para combinar las puertas de 2 qubits con el fin de amplificar el ruido. Si el factor de ruido exige amplificar únicamente un subconjunto de las puertas, estas se seleccionan según el siguiente método:

    • "random" (por defecto): las puertas se eligen al azar.
    • "front": las puertas se seleccionan a partir de la parte delantera del circuito DAG ordenado topológicamente.
    • "back": las puertas se seleccionan a partir de la parte posterior del circuito DAG ordenado topológicamente.
  • noise_factors (Sequence[float |int]) – Los factores de ruido que hay que utilizar para amplificar el ruido.

  • extrapolator (Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']] | None) –

    El modelo o modelos de extrapolación que se prevé utilizar en el posprocesamiento. Se utiliza en la preparación para comprobar que existen suficientes factores de ruido que permitan un ajuste válido al utilizar estos extrapoladores. Si None, no se llevará a cabo la validación. Modelos compatibles (cada uno de ellos se ajusta a la función indicada del factor de ruido x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio de grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tasas limitadas a la desintegración)
    • "fallback": no se ajusta; el valor medido con el factor de ruido más bajo
  • extrapolated_noise_factors (list[float] | None) – Está previsto utilizar los factores de ruido para evaluar los ajustes en el posprocesamiento. Se utiliza para guardar los datos y facilitar su posterior procesamiento. Se puede sobrescribir en el posprocesado.

Devuelve

Un elemento mitigado con QuantumProgram « GateFolding » que se puede ejecutar mediante Executor.

Tipo de retorno

QuantumProgram

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