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

Gerar dados de visualização para programas de circuitos programados.

Descontinuado desde a versão 1.3

O parâmetro target precisa ser especificado no Qiskit 2.0 para obter as durações das instruções.

Descontinuado desde a versão 1.1.0_pending

qiskit.visualization.timeline.interface.draw() show_barriers está pendente de depreciação a partir do Qiskit. 1.1.0 Ele será marcado como obsoleto em uma versão futura e, em seguida, removido não antes de três meses após a data de lançamento. Em vez disso, use o argumento plot_barriers, que tem um comportamento idêntico.

Descontinuado desde a versão 1.1.0_pending

qiskit.visualization.timeline.interface.draw() show_idle está pendente de depreciação a partir do Qiskit. 1.1.0 Ele será marcado como obsoleto em uma versão futura e, em seguida, removido não antes de três meses após a data de lançamento. Em vez disso, use o argumento idle_wires, que tem um comportamento idêntico.

Parâmetros

  • program (QuantumCircuit) – Programa para visualização. Esse programa deve ser um QuantumCircuit que é transpilado com um método de agendamento, contendo, portanto, informações de tempo de porta.

  • style (dict[str, Any] | None) – Opções da folha de estilo. Podem ser classes de dicionário ou de folhas de estilo predefinidas. Consulte IQXStandard, IQXSimple, e IQXDebugging para obter detalhes sobre as folhas de estilo predefinidas. Consulte também a seção sobre folhas de estilo para obter detalhes sobre as chaves de configuração.

  • time_range (tuple[int, int] | None) – Definir o limite do eixo horizontal.

  • disable_bits (list[Bits] | None) – Lista de qubits e bits clássicos que não aparecem na imagem de saída.

  • show_clbits (bool | None) – Uma propriedade de controle para mostrar bits clássicos. Defina True para mostrar os bits clássicos.

  • idle_wires (bool | None) – Uma propriedade de controle para mostrar a linha do tempo ociosa. Defina True para mostrar a linha do tempo sem portões.

  • plot_barriers (bool | None) – Uma propriedade de controle para mostrar instruções de barreira. Defina True para mostrar instruções de barreira.

  • show_delays (bool | None) – Uma propriedade de controle para mostrar instruções de atraso. Defina True para mostrar instruções de atraso.

  • show_labels (bool) – Uma propriedade de controle para mostrar anotações, ou seja, nome, de portões. Defina True para mostrar anotações.

  • plotter (str | None) –

    Nome da API do plotter para gerar uma imagem de saída. Uma das seguintes APIs deve ser especificada:

    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.

    os kwargs de eixo e estilo podem depender do plotter.

  • axis (Any | None) – Objeto arbitrário passado para o plotter. Se esse objeto for fornecido, os plotters usarão o eixo fornecido em vez de inicializar internamente um objeto de figura. Esse formato de objeto depende da plotadora. Consulte a seção de plotters para obter detalhes.

  • filename (str | None) – Se fornecido, a imagem de saída será despejada em um arquivo com o nome de arquivo.

  • target (Target | None) – O destino do backend para o qual a linha do tempo está sendo gerada.

  • show_idle (bool | None) – DEPRECADO.

  • show_barriers (bool | None) – DEPRECADO.

Retorna

Visualização de dados de saída.

O tipo de dados retornado depende da plotadora. Se a família matplotlib for especificada, esses dados serão matplotlib.pyplot.Figure. Os dados retornados são gerados pelo método.get_image da API do plotter especificado.

Aumentos

Detalhes do Style Dict

A folha de estilo kwarg contém várias opções que definem o estilo da visualização da linha do tempo de saída. As opções de folha de estilo podem ser classificadas em formatador, gerador e layout. As opções disponíveis na folha de estilo são definidas abaixo:

Parâmetros

  • formatter.general.fig_width - Largura da imagem de saída (padrão 14).

  • formatter.general.fig_unit_height - Altura da imagem de saída por linha do tempo. A soma de todas as linhas de tempo torna-se a altura da imagem de saída (padrão: 0.8 ).

  • formatter.general.dpi - Ponto por polegada da imagem se o nome do arquivo estiver definido (padrão 150).

  • formatter.margin.top - Margem do limite superior da tela da figura até a linha zero do primeiro intervalo de tempo (padrão: 0.5 ).

  • formatter.margin.bottom – Margem entre o limite inferior da tela da figura e a linha zero do último intervalo de tempo (padrão: 0.5 ).

  • formatter.margin.left_percent - Margem do limite esquerdo da tela da figura até o limite esquerdo do eixo horizontal. O valor está em unidades de porcentagem da duração total do programa. Se a duração for 100 e o valor de 0.5 for definido, isso manterá a margem esquerda de 5 (padrão 0.02 ).

  • formatter.margin.right_percent - Margem do limite direito da tela da figura até o limite direito do eixo horizontal. O valor está em unidades de porcentagem da duração total do programa. Se a duração for 100 e o valor de 0.5 for definido, isso manterá a margem direita de 5 (padrão 0.02 ).

  • formatter.margin.link_interval_percent - Sobreposição permitida de links de porta. Se vários links de portais estiverem sendo desenhados dentro desse intervalo, os links serão deslocados horizontalmente para não se sobreporem uns aos outros. O valor está em unidades de porcentagem da duração total do programa (padrão: 0.01 ).

  • formatter.time_bucket.edge_dt - O comprimento da borda redonda das caixas de porta. As caixas de portões são suavemente esmaecidas para dentro e para fora da linha zero. Esse valor está em unidades do tempo de ciclo do sistema dt (padrão 10).

  • formatter.margin.minimum_duration - Duração mínima do circuito programado. Se a duração do circuito de entrada estiver abaixo desse valor, o limite horizontal será definido com base nesse valor. Esse valor está em unidades do tempo de ciclo do sistema dt (padrão 50).

  • formatter.color.background - Código de cor da cor da face da tela (padrão #FFFFFF).

  • formatter.color.timeslot - Cor da face da caixa do intervalo de tempo (padrão #DDDDDDDD).

  • formatter.color.gate_name - Cor do texto das anotações do nome do portão (padrão #000000).

  • formatter.color.bit_name - Cor do texto das anotações do rótulo de bit (padrão #000000).

  • formatter.color.barrier - Cor da linha das barreiras (padrão #222222).

  • formatter.color.gates

    Um dicionário das cores da caixa de porta ou do símbolo de porta a serem usadas para cada tipo de elemento na visualização de saída. Os valores padrões são:

    {
        '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'
    }

    Você deve especificar todos os valores necessários se estiver usando isso. Se um nome de portão não for especificado, a cor em formatter.color.default_gate será aplicada.

  • formatter.color.default_gate - Cor padrão do portão. Essa cor é aplicada quando um nome de portão a ser visualizado não está contido no dicionário de formatter.color.gates (padrão: #BB8BFF ).

  • formatter.latex_symbol.gates

    Um dicionário de representação em látex de nomes de portas a serem usados para cada tipo de elemento na visualização de saída. Os valores padrões são:

    {
        '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}'
    }

    Você deve especificar todos os valores necessários se estiver usando isso. Não há previsão para passar um ditado incompleto.

  • formatter.latex_symbol.frame_change - Representação em látex do símbolo de alteração de quadro (padrão r`circlearrowleft`).

  • formatter.unicode_symbol.frame_change - Representação Unicode do símbolo de mudança de quadro (padrão: u’u21BA’ ).

  • formatter.box_height.gate - Altura da caixa do portão (padrão: 0.5 ).

  • formatter.box_height.timeslot - Altura do intervalo de tempo (padrão 0.6 ).

  • formatter.layer.gate - Índice de camadas das caixas de porta. O número maior aparece na frente da imagem de saída (padrão 3).

  • formatter.layer.timeslot - Índice de camada de intervalos de tempo. O número maior aparece na frente da imagem de saída (padrão 0).

  • formatter.layer.gate_name - Índice de camada de anotações de nome de porta. O número maior aparece na frente da imagem de saída (padrão 5).

  • formatter.layer.bit_name - Índice de camada de rótulos de bits. O número maior aparece na frente da imagem de saída (padrão 5).

  • formatter.layer.frame_change - Índice de camada dos símbolos de mudança de quadro. O número maior aparece na frente da imagem de saída (padrão 4).

  • formatter.layer.barrier - Índice de camadas das linhas de barreira. O número maior aparece na frente da imagem de saída (padrão 1).

  • formatter.layer.gate_link - Índice de camada das linhas de gate link. O número maior aparece na frente da imagem de saída (padrão 2).

  • formatter.alpha.gate - Transparência das caixas de portão. Um valor no intervalo de 0 a 1. O valor 0 fornece caixas totalmente transparentes (padrão: 1.0 ).

  • formatter.alpha.timeslot - Transparência dos intervalos de tempo. Um valor no intervalo de 0 a 1. O valor 0 fornece caixas totalmente transparentes (padrão: 0.7 ).

  • formatter.alpha.barrier - Transparência das linhas de barreira. Um valor no intervalo de 0 a 1. O valor 0 fornece linhas completamente transparentes (padrão 0.5 ).

  • formatter.alpha.gate_link - Transparência das linhas de ligação do portão. Um valor no intervalo de 0 a 1. O valor 0 fornece linhas completamente transparentes (padrão 0.8 ).

  • formatter.line_width.gate - Largura da linha da franja das caixas de porta (padrão 0).

  • formatter.line_width.timeslot - Largura da linha da franja dos intervalos de tempo (padrão 0).

  • formatter.line_width.barrier - Largura da linha das linhas de barreira (padrão 3).

  • formatter.line_width.gate_link - Largura da linha dos links de porta (padrão 3).

  • formatter.line_style.barrier - Estilo de linha das linhas de barreira. Isso está em conformidade com a especificação de estilo de linha do matplotlib (padrão '-').

  • formatter.line_style.gate_link - Estilo de linha das linhas de ligação do portão. Isso está em conformidade com a especificação de estilo de linha do matplotlib (padrão '-').

  • formatter.text_size.gate_name - Tamanho do texto das anotações do nome do portão (padrão 12).

  • formatter.text_size.bit_name - Tamanho do texto dos rótulos de bits (padrão 15).

  • formatter.text_size.frame_change - Tamanho do texto dos símbolos de alteração de quadro (padrão 18).

  • formatter.text_size.axis_label - Tamanho do texto dos rótulos dos eixos (padrão 13).

  • formatter.label_offset.frame_change - Deslocamento das anotações do nome do portão de duração zero a partir da linha zero do intervalo de tempo (padrão: 0.25 ).

  • formatter.control.show_idle - Defina True para mostrar os intervalos de tempo sem portão (padrão True).

  • formatter.control.show_clbits - Defina True para mostrar os intervalos de tempo dos bits clássicos (padrão True).

  • formatter.control.show_barriers - Defina True para mostrar as barreiras (padrão True).

  • formatter.control.show_delays - Defina True para mostrar caixas de atraso (padrão True).

  • generator.gates - Lista de funções de retorno de chamada que gera desenhos para portões. Funções de retorno de chamada arbitrárias que satisfaçam o formato do gerador podem ser definidas aqui. Há alguns geradores padrão na gaveta da linha do tempo. Consulte generators para obter mais detalhes. Nenhum gerador padrão é definido (padrão []).

  • generator.bits - Lista de funções de retorno de chamada que gera desenhos para rótulos de bits e intervalos de tempo. Funções de retorno de chamada arbitrárias que satisfaçam o formato do gerador podem ser definidas aqui. Há alguns geradores padrão na gaveta da linha do tempo. Consulte generators para obter mais detalhes. Nenhum gerador padrão é definido (padrão []).

  • generator.barriers - Lista de funções de retorno de chamada que gera desenhos para barreiras. Funções de retorno de chamada arbitrárias que satisfaçam o formato do gerador podem ser definidas aqui. Há alguns geradores padrão na gaveta da linha do tempo. Consulte generators para obter mais detalhes. Nenhum gerador padrão é definido (padrão []).

  • generator.gate_links - Lista de funções de retorno de chamada que gera desenhos para links de porta. Funções de retorno de chamada arbitrárias que satisfaçam o formato do gerador podem ser definidas aqui. Há alguns geradores padrão na gaveta da linha do tempo. Consulte generators para obter mais detalhes. Nenhum gerador padrão é definido (padrão []).

  • layout.bit_arrange - Função de retorno de chamada que classifica os bits. Consulte layouts para obter mais detalhes. Nenhum layout padrão é definido. (padrão None).

  • layout.time_axis_map - Função de retorno de chamada que determina o layout dos rótulos do eixo horizontal. Consulte layouts para obter mais detalhes. Nenhum layout padrão é definido. (padrão None).

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

Exemplos

Para visualizar um programa de circuito programado, é possível chamar essa função com um conjunto de argumentos de controle. A maior parte da aparência da imagem de saída pode ser controlada pela folha de estilo.

Desenho com a folha de estilo padrão.

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)
Saída do código anterior.

Desenho com a folha de estilo simples.

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)
Saída do código anterior.

Desenho com a folha de estilo adequada para depuração 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)
Saída do código anterior.

Você pode personalizar parcialmente uma folha de estilo predefinida ao chamá-la:

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

# draw
draw(qc, style=style)

Da mesma forma que acima, você pode criar funções personalizadas de gerador ou layout e atualizar a folha de estilo existente com funções personalizadas. Esse recurso permite que você controle a maior parte da aparência da imagem de saída sem modificar a base de código da gaveta do circuito programado.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.