Skip to main content
IBM Quantum Platform

qiskit.visualization.timeline_drawer

qiskit.visualization.timeline_drawer(program, style=None, time_range=None, disable_bits=None, show_clbits=None, idle_wires=None, plot_barriers=None, show_delays=None, show_labels=True, plotter='mpl', axis=None, filename=None, target=None, *, show_idle=None, show_barriers=None)

GitHub

Generar datos de visualización para programas de circuitos programados.

Obsoleto desde la versión 1.3

Es necesario especificar el parámetro target en Qiskit 2.0 para obtener las duraciones de las instrucciones.

Obsoleto desde la versión 1.1.0_pending

qiskit.visualization.timeline.interface.draw() show_barriers está pendiente de desaprobación a partir de Qiskit. 1.1.0 Se marcará como obsoleto en una futura versión, y se eliminará no antes de 3 meses después de la fecha de lanzamiento. En su lugar, utilice el argumento plot_barriers, que se comporta de forma idéntica.

Obsoleto desde la versión 1.1.0_pending

qiskit.visualization.timeline.interface.draw() show_idle está pendiente de desaprobación a partir de Qiskit. 1.1.0 Se marcará como obsoleto en una futura versión, y se eliminará no antes de 3 meses después de la fecha de lanzamiento. En su lugar, utilice el argumento idle_wires, que se comporta de forma idéntica.

Parámetros

  • program (QuantumCircuit) – Programa para visualizar. Este programa debe ser un QuantumCircuit que se transpila con un scheduling_method, por lo que contiene información de tiempo de compuerta.

  • style (dict[str, Any] | None) – Opciones de la hoja de estilo. Pueden ser clases de diccionario o de hojas de estilo predefinidas. Consulte IQXStandard, IQXSimple, y IQXDebugging para obtener más información sobre las hojas de estilo predefinidas. Consulte también la sección sobre hojas de estilo para obtener más información sobre las claves de configuración.

  • time_range (tuple[int, int] | None) – Establecer el límite del eje horizontal.

  • disable_bits (list[Bits] | None) – Lista de qubits y bits clásicos que no aparecen en la imagen de salida.

  • show_clbits (bool | None) – Una propiedad de control para mostrar bits clásicos. Establece True para mostrar los bits clásicos.

  • idle_wires (bool | None) – Una propiedad de control para mostrar la línea de tiempo inactiva. Establece True para mostrar la línea de tiempo sin puertas.

  • plot_barriers (bool | None) – Una propiedad de control para mostrar instrucciones de barrera. Establece True para mostrar las instrucciones de barrera.

  • show_delays (bool | None) – Una propiedad de control para mostrar instrucciones de retardo. Establece True para mostrar instrucciones de retardo.

  • show_labels (bool) – Una propiedad de control para mostrar las anotaciones, es decir, el nombre, de las puertas. Establece True para mostrar las anotaciones.

  • plotter (str | None) –

    Nombre de la API del plóter para generar una imagen de salida. Debe especificarse una de las siguientes API:

    mpl: Matplotlib API
        Matplotlib API to generate 2D image. Timelines are placed along y axis with
        vertical offset. This API takes matplotlib.axes.Axes as `axis` input.

    los kwargs de eje y estilo pueden depender del trazador.

  • axis (Any | None) – Objeto arbitrario pasado al trazador. Si se proporciona este objeto, los trazadores utilizan el eje dado en lugar de inicializar internamente un objeto figura. Este formato de objeto depende del plóter. Consulte la sección de plóteres para obtener más información.

  • filename (str | None) – Si se proporciona, la imagen de salida se vuelca en un archivo con el nombre de archivo.

  • target (Target | None) – El objetivo para el backend para el que se está generando la línea de tiempo.

  • show_idle (bool | None) – DEPREDADO.

  • show_barriers (bool | None) – DEPREDADO.

Devuelve

Datos de salida de la visualización.

El tipo de datos devueltos depende del plóter. Si se especifica la familia matplotlib, será un dato de matplotlib.pyplot.Figure. Los datos devueltos son generados por el método.get_image de la API de trazador especificada.

Eleva

Detalles del Dictado de Estilo

La hoja de estilos kwarg contiene numerosas opciones que definen el estilo de la visualización de la línea de tiempo de salida. Las opciones de la hoja de estilo pueden clasificarse en formateador, generador y diseño. A continuación se definen las opciones disponibles en la hoja de estilo:

Parámetros

  • formatter.general.fig_width - Anchura de la imagen de salida (por defecto 14).

  • formatter.general.fig_unit_height - Altura de la imagen de salida por línea de tiempo. La suma de todas las líneas de tiempo se convierte en la altura de la imagen de salida (por defecto 0.8 ).

  • formatter.general.dpi - Puntos por pulgada de la imagen si se establece el nombre del archivo (por defecto 150).

  • formatter.margin.top - Margen desde el límite superior del lienzo de la figura hasta la línea cero de la primera franja horaria (por defecto 0.5 ).

  • formatter.margin.bottom – Margen desde el borde inferior del lienzo de la figura hasta la línea del cero del último intervalo de tiempo (por defecto, 0.5 ).

  • formatter.margin.left_percent - Margen desde el límite izquierdo del lienzo de la figura hasta el límite izquierdo del eje horizontal. El valor está en unidades de porcentaje de la duración total del programa. Si la duración es 100 y se fija el valor de 0.5, se mantiene un margen izquierdo de 5 (por defecto 0.02 ).

  • formatter.margin.right_percent - Margen desde el límite derecho del lienzo de la figura hasta el límite derecho del eje horizontal. El valor está en unidades de porcentaje de la duración total del programa. Si la duración es 100 y se fija el valor de 0.5, se mantiene un margen derecho de 5 (por defecto 0.02 ).

  • formatter.margin.link_interval_percent - Solapamiento permitido de los enlaces de puerta. Si se dibujan varios enlaces de puerta dentro de este intervalo, los enlaces se desplazan horizontalmente para no solaparse entre sí. El valor está en unidades de porcentaje de la duración total del programa (por defecto 0.01 ).

  • formatter.time_bucket.edge_dt - La longitud del borde redondo de las cajas de la puerta. Las casillas de la puerta se desvanecen suavemente hacia dentro y hacia fuera de la línea cero. Este valor está en unidades del tiempo de ciclo del sistema dt (por defecto 10).

  • formatter.margin.minimum_duration - Duración mínima del circuito programado. Si la duración del circuito de entrada es inferior a este valor, se establece un límite horizontal basado en este valor. Este valor está en unidades del tiempo de ciclo del sistema dt (por defecto 50).

  • formatter.color.background - Código del color de la cara del lienzo (por defecto #FFFFFF).

  • formatter.color.timeslot - Color de la cara del cuadro de franja horaria (por defecto #DDDDDD).

  • formatter.color.gate_name - Color del texto de las anotaciones del nombre de la puerta (por defecto #000000).

  • formatter.color.bit_name - Color del texto de las anotaciones de la etiqueta de bits (por defecto #000000).

  • formatter.color.barrier - Color de línea de las barreras (por defecto #222222).

  • formatter.color.gates

    Un diccionario de los colores de la caja de la puerta o del símbolo de la puerta a utilizar para cada tipo de elemento en la visualización de salida. Los valores predeterminados son:

    {
        'u0': '#FA74A6',
        'u1': '#000000',
        'u2': '#FA74A6',
        'u3': '#FA74A6',
        'id': '#05BAB6',
        'sx': '#FA74A6',
        'sxdg': '#FA74A6',
        'x': '#05BAB6',
        'y': '#05BAB6',
        'z': '#05BAB6',
        'h': '#6FA4FF',
        'cx': '#6FA4FF',
        'cy': '#6FA4FF',
        'cz': '#6FA4FF',
        'swap': '#6FA4FF',
        's': '#6FA4FF',
        'sdg': '#6FA4FF',
        'dcx': '#6FA4FF',
        'iswap': '#6FA4FF',
        't': '#BB8BFF',
        'tdg': '#BB8BFF',
        'r': '#BB8BFF',
        'rx': '#BB8BFF',
        'ry': '#BB8BFF',
        'rz': '#000000',
        'reset': '#808080',
        'measure': '#808080'
    }

    Debe especificar todos los valores necesarios si utiliza esta opción. Si no se especifica un nombre de puerta, se aplica el color en formatter.color.default_gate.

  • formatter.color.default_gate - Color de la puerta por defecto. Este color se aplica cuando un nombre de puerta a visualizar no está contenido en el diccionario de formatter.color.gates (por defecto #BB8BFF ).

  • formatter.latex_symbol.gates

    Un diccionario de representación en látex de los nombres de las puertas a utilizar para cada tipo de elemento en la visualización de salida. Los valores predeterminados son:

    {
        'u0': r'{\rm U}_0',
        'u1': r'{\rm U}_1',
        'u2': r'{\rm U}_2',
        'u3': r'{\rm U}_3',
        'id': r'{\rm Id}',
        'x': r'{\rm X}',
        'y': r'{\rm Y}',
        'z': r'{\rm Z}',
        'h': r'{\rm H}',
        'cx': r'{\rm CX}',
        'cy': r'{\rm CY}',
        'cz': r'{\rm CZ}',
        'swap': r'{\rm SWAP}',
        's': r'{\rm S}',
        'sdg': r'{\rm S}^\dagger',
        'sx': r'{\rm √X}',
        'sxdg': r'{\rm √X}^\dagger',
        'dcx': r'{\rm DCX}',
        'iswap': r'{\rm iSWAP}',
        't': r'{\rm T}',
        'tdg': r'{\rm T}^\dagger',
        'r': r'{\rm R}',
        'rx': r'{\rm R}_x',
        'ry': r'{\rm R}_y',
        'rz': r'{\rm R}_z',
        'reset': r'|0\rangle',
        'measure': r'{\rm Measure}'
    }

    Debe especificar todos los valores necesarios si utiliza esta opción. No está previsto que se apruebe un dictado incompleto.

  • formatter.latex_symbol.frame_change - Representación Latex del símbolo de cambio de marco (por defecto r`circlearrowleft`).

  • formatter.unicode_symbol.frame_change - Representación Unicode del símbolo de cambio de trama (por defecto u’u21BA’ ).

  • formatter.box_height.gate - Altura de la caja de la puerta (por defecto 0.5 ).

  • formatter.box_height.timeslot - Altura de la franja horaria (por defecto 0.6 ).

  • formatter.layer.gate - Índice de capas de las cajas de compuerta. El número más grande aparece en la parte frontal de la imagen de salida (por defecto 3).

  • formatter.layer.timeslot - Índice de capas de franjas horarias. Mayor número aparece en la parte frontal de la imagen de salida (por defecto 0).

  • formatter.layer.gate_name - Índice de capas de anotaciones de nombres de puertas. El número más grande aparece en la parte frontal de la imagen de salida (por defecto 5).

  • formatter.layer.bit_name - Índice de capa de etiquetas de bits. El número más grande aparece en la parte frontal de la imagen de salida (por defecto 5).

  • formatter.layer.frame_change - Índice de capa de los símbolos de cambio de trama. El número más grande aparece en la parte frontal de la imagen de salida (por defecto 4).

  • formatter.layer.barrier - Índice de capa de las líneas de barrera. El número más grande aparece en la parte frontal de la imagen de salida (por defecto 1).

  • formatter.layer.gate_link - Índice de capa de las líneas de enlace de la puerta. El número más grande aparece en la parte frontal de la imagen de salida (por defecto 2).

  • formatter.alpha.gate - Transparencia de las cajas de las puertas. Valor comprendido entre 0 y 1. El valor 0 da cajas completamente transparentes (por defecto 1.0 ).

  • formatter.alpha.timeslot - Transparencia de las franjas horarias. Valor comprendido entre 0 y 1. El valor 0 da cajas completamente transparentes (por defecto 0.7 ).

  • formatter.alpha.barrier - Transparencia de las líneas de barrera. Valor comprendido entre 0 y 1. El valor 0 da líneas completamente transparentes (por defecto 0.5 ).

  • formatter.alpha.gate_link - Transparencia de las líneas de enlace de la puerta. Valor comprendido entre 0 y 1. El valor 0 da líneas completamente transparentes (por defecto 0.8 ).

  • formatter.line_width.gate - Ancho de línea de la franja de las cajas de compuerta (por defecto 0).

  • formatter.line_width.timeslot - Ancho de línea de la franja de las franjas horarias (por defecto 0).

  • formatter.line_width.barrier - Ancho de línea de las líneas de barrera (por defecto 3).

  • formatter.line_width.gate_link - Ancho de línea de los enlaces de la puerta (por defecto 3).

  • formatter.line_style.barrier - Estilo de línea de las líneas de barrera. Se ajusta a la especificación de estilo de línea de matplotlib (por defecto '-').

  • formatter.line_style.gate_link - Estilo de línea de las líneas de enlace de la puerta. Se ajusta a la especificación de estilo de línea de matplotlib (por defecto '-').

  • formatter.text_size.gate_name - Tamaño del texto de las anotaciones del nombre de la puerta (por defecto 12).

  • formatter.text_size.bit_name - Tamaño del texto de las etiquetas de bits (por defecto 15).

  • formatter.text_size.frame_change - Tamaño del texto de los símbolos de cambio de marco (por defecto 18).

  • formatter.text_size.axis_label - Tamaño del texto de las etiquetas de los ejes (por defecto 13).

  • formatter.label_offset.frame_change - Desplazamiento de las anotaciones del nombre de la puerta de duración cero desde la línea cero de la franja horaria (por defecto 0.25 ).

  • formatter.control.show_idle - Establezca True para mostrar franjas horarias sin puerta (por defecto True).

  • formatter.control.show_clbits - Establece True para mostrar las franjas horarias de los bits clásicos (por defecto True).

  • formatter.control.show_barriers - Establece True para mostrar las barreras (por defecto True).

  • formatter.control.show_delays - Establece True para mostrar los cuadros de retardo (por defecto True).

  • generator.gates - Lista de funciones callback que generan dibujos para las compuertas. Aquí se pueden establecer funciones de devolución de llamada arbitrarias que satisfagan el formato del generador. Hay algunos generadores predeterminados en el cajón de la línea de tiempo. Consulte generators para obtener más detalles. No se establece ningún generador por defecto (por defecto []).

  • generator.bits - Lista de funciones de devolución de llamada que generan dibujos para etiquetas de bits y franjas horarias. Aquí se pueden establecer funciones de devolución de llamada arbitrarias que satisfagan el formato del generador. Hay algunos generadores predeterminados en el cajón de la línea de tiempo. Consulte generators para obtener más detalles. No se establece ningún generador por defecto (por defecto []).

  • generator.barriers - Lista de funciones callback que generan dibujos para las barreras. Aquí se pueden establecer funciones de devolución de llamada arbitrarias que satisfagan el formato del generador. Hay algunos generadores predeterminados en el cajón de la línea de tiempo. Consulte generators para obtener más detalles. No se establece ningún generador por defecto (por defecto []).

  • generator.gate_links - Lista de funciones de devolución de llamada que generan dibujos para enlaces de compuerta. Aquí se pueden establecer funciones de devolución de llamada arbitrarias que satisfagan el formato del generador. Hay algunos generadores predeterminados en el cajón de la línea de tiempo. Consulte generators para obtener más detalles. No se establece ningún generador por defecto (por defecto []).

  • layout.bit_arrange - Función callback que ordena los bits. Consulte layouts para obtener más detalles. No se establece ningún diseño por defecto. (por defecto Ninguno).

  • layout.time_axis_map - Función de callback que determina la disposición de las etiquetas de los ejes horizontales. Consulte layouts para obtener más detalles. No se establece ningún diseño por defecto. (por defecto Ninguno).

  • program (QuantumCircuit)

  • style (dict[str, Any] | None)

  • time_range (tuple[int, int] | None)

  • disable_bits (list[Bits] | None)

  • show_clbits (bool | None)

  • idle_wires (bool | None)

  • plot_barriers (bool | None)

  • show_delays (bool | None)

  • show_labels (bool)

  • plotter (str | None)

  • axis (Any | None)

  • filename (str | None)

  • target (Target | None)

  • show_idle (bool | None)

  • show_barriers (bool | None)

Ejemplos

Para visualizar un programa de circuito programado, puede llamar a esta función con un conjunto de argumentos de control. La mayor parte de la apariencia de la imagen de salida puede ser controlada por la hoja de estilos.

Dibujo con la hoja de estilos por defecto.

from qiskit import QuantumCircuit, transpile
from qiskit.visualization.timeline import draw
from qiskit.providers.fake_provider import GenericBackendV2

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)

backend = GenericBackendV2(5)

qc = transpile(qc, backend, scheduling_method='alap', layout_method='trivial')
draw(qc, target=backend.target)
Salida del código anterior.

Dibujo con la hoja de estilo simple.

from qiskit import QuantumCircuit, transpile
from qiskit.visualization.timeline import draw, IQXSimple
from qiskit.providers.fake_provider import GenericBackendV2

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)

backend = GenericBackendV2(5)

qc = transpile(qc, backend, scheduling_method='alap', layout_method='trivial')
draw(qc, style=IQXSimple(), target=backend.target)
Salida del código anterior.

Dibujo con la hoja de estilo adecuada para la depuración de programas.

from qiskit import QuantumCircuit, transpile
from qiskit.visualization.timeline import draw, IQXDebugging
from qiskit.providers.fake_provider import GenericBackendV2

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)

backend = GenericBackendV2(5)
qc = transpile(qc, backend, scheduling_method='alap', layout_method='trivial')
draw(qc, style=IQXDebugging(), target=backend.target)
Salida del código anterior.

Puede personalizar parcialmente una hoja de estilo predefinida cuando la llame:

my_style = {
    'formatter.general.fig_width': 16,
    'formatter.general.fig_unit_height': 1
}
style = IQXStandard(**my_style)

# draw
draw(qc, style=style)

Del mismo modo que en el caso anterior, puede crear funciones de generador o de diseño personalizadas y actualizar la hoja de estilo existente con funciones personalizadas. Esta función le permite controlar la mayor parte del aspecto de la imagen de salida sin modificar el código base del cajón de circuito programado.

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