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)
Gerar dados de visualização para programas de circuitos programados.
O parâmetro target precisa ser especificado no Qiskit 2.0 para obter as durações das instruções.
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.
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, eIQXDebuggingpara 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
- MissingOptionalLibraryError - Quando o pacote de visualização necessário não estiver instalado.
- VisualizationError - Quando é especificada uma API de plotter inválida.
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
generatorspara 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
generatorspara 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
generatorspara 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
generatorspara obter mais detalhes. Nenhum gerador padrão é definido (padrão []). -
layout.bit_arrange - Função de retorno de chamada que classifica os bits. Consulte
layoutspara 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
layoutspara obter mais detalhes. Nenhum layout padrão é definido. (padrão None). -
program (QuantumCircuit)
-
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)
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)
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)
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.