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

Generare dati di visualizzazione per i programmi dei circuiti programmati.

Deprecato dalla versione 1.3

Il parametro target deve essere specificato in Qiskit 2.0 per ottenere la durata delle istruzioni.

Deprecato dalla versione 1.1.0_pending

qiskit.visualization.timeline.interface.draw() show_barriers è in attesa di deprezzamento a partire da Qiskit. 1.1.0 Sarà contrassegnato come deprecato in una versione futura e quindi rimosso non prima di 3 mesi dalla data di rilascio. Si può invece utilizzare l'argomento plot_barriers, che si comporta in modo identico.

Deprecato dalla versione 1.1.0_pending

qiskit.visualization.timeline.interface.draw() show_idle è in attesa di deprezzamento a partire da Qiskit. 1.1.0 Sarà contrassegnato come deprecato in una versione futura e quindi rimosso non prima di 3 mesi dalla data di rilascio. Si può invece utilizzare l'argomento idle_wires, che si comporta in modo identico.

Parametri

  • program (QuantumCircuit) – Programma di visualizzazione. Questo programma dovrebbe essere un file “ QuantumCircuit ” (schema di gate), compilato con un metodo di scheduling_method, e quindi contenente informazioni sui tempi dei gate.

  • style (dict[str, Any] | None) – Opzioni del foglio di stile. Può trattarsi di classi di fogli di stile predefinite o presenti nel dizionario. Per ulteriori dettagli sui fogli di stile IQXDebugging predefiniti, consultare IQXStandard, IQXSimple, e. Per ulteriori dettagli sulle chiavi di configurazione, consultare anche la sezione dedicata ai fogli di stile.

  • time_range (tuple[int, int] | None) – Imposta il limite dell'asse orizzontale.

  • disable_bits (list[Bits] | None) – Elenco dei qubit e dei bit classici non riportati nell'immagine di output.

  • show_clbits (bool | None) – Una proprietà di controllo per mostrare i bit classici. Impostare Vero per mostrare i bit classici.

  • idle_wires (bool | None) – Una proprietà del controllo per mostrare la timeline inattiva. Impostare Vero per mostrare la timeline senza cancelli.

  • plot_barriers (bool | None) – Una proprietà del controllo per mostrare le istruzioni della barriera. Impostare True per mostrare le istruzioni della barriera.

  • show_delays (bool | None) – Una proprietà di controllo per mostrare le istruzioni di ritardo. Impostare Vero per mostrare le istruzioni di ritardo.

  • show_labels (bool) – Una proprietà di controllo per mostrare le annotazioni, cioè il nome, delle porte. Impostare Vero per mostrare le annotazioni.

  • plotter (str | None) –

    Nome dell'API del plotter per generare un'immagine di output. È necessario specificare una delle seguenti 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.

    i kwarg dell'asse e dello stile possono dipendere dal plotter.

  • axis (Any | None) – Oggetto arbitrario passato al plotter. Se questo oggetto viene fornito, il plotter utilizza l'asse indicato invece di inizializzare internamente un oggetto figura. Il formato dell'oggetto dipende dal plotter. Per maggiori dettagli, consultare la sezione dedicata ai plotter.

  • filename (str | None) – Se fornito, l'immagine di uscita viene scaricata in un file con il nome del file.

  • target (Target | None) – Il target del backend per cui viene generata la timeline.

  • show_idle (bool | None) – DEPRECATO.

  • show_barriers (bool | None) – DEPRECATO.

Risultati

Dati di output della visualizzazione.

Il tipo di dati restituiti dipende dal plotter. Se è stata specificata la famiglia matplotlib, si tratterà di dati matplotlib.pyplot.Figure. I dati restituiti sono generati dal metodo.get_image dell'API del plotter specificato.

Aumenti

Dettagli del dettato stilistico

Il foglio di stile kwarg contiene numerose opzioni che definiscono lo stile della visualizzazione della linea temporale in uscita. Le opzioni del foglio di stile possono essere classificate in formattatore, generatore e layout. Le opzioni disponibili nel foglio di stile sono definite di seguito:

Parametri

  • formatter.general.fig_width - Larghezza dell'immagine di uscita (valore predefinito 14).

  • formatter.general.fig_unit_height - Altezza dell'immagine di uscita per linea temporale. La somma di tutte le linee temporali diventa l'altezza dell'immagine di output (default 0.8 ).

  • formatter.general.dpi - Punti per pollice dell'immagine se è impostato il nome del file (valore predefinito 150).

  • formatter.margin.top - Margine dal limite superiore dell'area di disegno alla linea dello zero della prima fascia oraria (default 0.5 ).

  • formatter.margin.bottom – Margine dal bordo inferiore dell'area del grafico alla linea dello zero dell'ultimo intervallo temporale ( 0.5 e predefinito).

  • formatter.margin.left_percent - Margine dal limite sinistro dell'area di disegno al limite sinistro dell'asse orizzontale. Il valore è espresso in unità di percentuale dell'intera durata del programma. Se la durata è 100 e il valore di 0.5 è impostato, il margine sinistro viene mantenuto a 5 (default 0.02 ).

  • formatter.margin.right_percent - Margine dal limite destro dell'area di disegno al limite destro dell'asse orizzontale. Il valore è espresso in unità di percentuale dell'intera durata del programma. Se la durata è 100 e il valore di 0.5 è impostato, il margine destro viene mantenuto a 5 (default 0.02 ).

  • formatter.margin.link_interval_percent - Sovrapposizione consentita dei collegamenti del gate. Se all'interno di questo intervallo vengono disegnati più collegamenti di gate, i collegamenti vengono spostati orizzontalmente per non sovrapporsi l'uno all'altro. Il valore è espresso in unità di percentuale dell'intera durata del programma (default 0.01 ).

  • formatter.time_bucket.edge_dt - La lunghezza del bordo rotondo delle scatole del cancello. I riquadri del cancello vengono sfumati in modo uniforme dalla linea dello zero. Questo valore è espresso in unità del tempo di ciclo del sistema dt (valore predefinito 10).

  • formatter.margin.minimum_duration - Durata minima del circuito programmato. Se la durata del circuito di ingresso è inferiore a questo valore, il limite orizzontale viene impostato in base a questo valore. Questo valore è espresso in unità del tempo di ciclo del sistema dt (valore predefinito 50).

  • formatter.color.background - Codice del colore della faccia della tela (predefinito #FFFFFF).

  • formatter.color.timeslot - Colore della faccia del riquadro della fascia oraria (predefinito #DDDDDD).

  • formatter.color.gate_name - Colore del testo delle annotazioni del nome del cancello (predefinito #000000).

  • formatter.color.bit_name - Colore del testo delle annotazioni delle etichette dei bit (predefinito #000000).

  • formatter.color.barrier - Colore delle linee delle barriere (predefinito #222222).

  • formatter.color.gates

    Un dizionario dei colori delle caselle o dei simboli di gate da usare per ogni tipo di elemento nella visualizzazione di output. I valori predefiniti sono:

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

    È necessario specificare tutti i valori necessari. Se non viene specificato il nome di un cancello, viene applicato il colore in formatter.color.default_gate.

  • formatter.color.default_gate - Colore predefinito del cancello. Questo colore viene applicato quando il nome del gate da visualizzare non è contenuto nel dizionario di formatter.color.gates (default #BB8BFF ).

  • formatter.latex_symbol.gates

    Un dizionario di nomi di gate rappresentati in latex da usare per ogni tipo di elemento nella visualizzazione di output. I valori predefiniti sono:

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

    È necessario specificare tutti i valori necessari. Non è previsto il passaggio di un dettato incompleto.

  • formatter.latex_symbol.frame_change - Rappresentazione in Latex del simbolo di modifica della cornice (predefinito rcirclearrowleft).

  • formatter.unicode_symbol.frame_change - Rappresentazione Unicode del simbolo di cambio cornice (predefinito u’u21BA’ ).

  • formatter.box_height.gate - Altezza del box del cancello (valore predefinito 0.5 ).

  • formatter.box_height.timeslot - Altezza della fascia oraria (valore predefinito 0.6 ).

  • formatter.layer.gate - Indice dei livelli delle caselle di ingresso. Il numero più grande viene visualizzato nella parte anteriore dell'immagine di output (default 3).

  • formatter.layer.timeslot - Indice di livello delle fasce orarie. Il numero più grande viene visualizzato nella parte anteriore dell'immagine di output (valore predefinito 0).

  • formatter.layer.gate_name - Indice del livello delle annotazioni del nome della porta. Il numero più grande viene visualizzato nella parte anteriore dell'immagine di output (valore predefinito 5).

  • formatter.layer.bit_name - Indice del livello delle etichette dei bit. Il numero più grande viene visualizzato nella parte anteriore dell'immagine di output (valore predefinito 5).

  • formatter.layer.frame_change - Indice del livello dei simboli di cambio di frame. Il numero più grande viene visualizzato nella parte anteriore dell'immagine di output (default 4).

  • formatter.layer.barrier - Indice di strato delle linee di barriera. Il numero più grande viene visualizzato nella parte anteriore dell'immagine di output (valore predefinito 1).

  • formatter.layer.gate_link - Indice di livello delle linee di collegamento del gate. Il numero più grande viene visualizzato nella parte anteriore dell'immagine di output (default 2).

  • formatter.alpha.gate - Trasparenza delle scatole dei cancelli. Un valore nell'intervallo da 0 a 1. Il valore 0 dà scatole completamente trasparenti (default 1.0 ).

  • formatter.alpha.timeslot - Trasparenza delle fasce orarie. Un valore nell'intervallo da 0 a 1. Il valore 0 dà scatole completamente trasparenti (default 0.7 ).

  • formatter.alpha.barrier - Trasparenza delle linee di barriera. Un valore nell'intervallo da 0 a 1. Il valore 0 dà linee completamente trasparenti (default 0.5 ).

  • formatter.alpha.gate_link - Trasparenza delle linee di collegamento del cancello. Un valore nell'intervallo da 0 a 1. Il valore 0 dà linee completamente trasparenti (default 0.8 ).

  • formatter.line_width.gate - Larghezza della linea della frangia delle caselle di gate (valore predefinito 0).

  • formatter.line_width.timeslot - Larghezza della linea della frangia di fasce orarie (valore predefinito 0).

  • formatter.line_width.barrier - Larghezza delle linee di barriera (valore predefinito 3).

  • formatter.line_width.gate_link - Larghezza della linea dei collegamenti del cancello (valore predefinito 3).

  • formatter.line_style.barrier - Stile delle linee di barriera. È conforme alle specifiche di stile delle linee di matplotlib (default '-').

  • formatter.line_style.gate_link - Stile di linea delle linee di collegamento del cancello. È conforme alle specifiche di stile delle linee di matplotlib (default '-').

  • formatter.text_size.gate_name - Dimensione del testo delle annotazioni del nome del cancello (valore predefinito 12).

  • formatter.text_size.bit_name - Dimensione del testo delle etichette dei bit (valore predefinito 15).

  • formatter.text_size.frame_change - Dimensione del testo dei simboli di modifica della cornice (default 18).

  • formatter.text_size.axis_label - Dimensione del testo delle etichette degli assi (valore predefinito 13).

  • formatter.label_offset.frame_change - Offset delle annotazioni del nome del gate a durata zero dalla riga zero della fascia oraria (valore predefinito 0.25 ).

  • formatter.control.show_idle - Impostare True per mostrare le fasce orarie senza gate (valore predefinito True).

  • formatter.control.show_clbits - Impostare True per mostrare le fasce orarie dei bit classici (valore predefinito True).

  • formatter.control.show_barriers - Impostare True per mostrare le barriere (valore predefinito True).

  • formatter.control.show_delays - Impostare True per mostrare le caselle di ritardo (valore predefinito True).

  • generator.gates - Elenco delle funzioni di callback che generano disegni per le porte. Qui si possono impostare funzioni di callback arbitrarie che soddisfano il formato del generatore. Nel cassetto della timeline sono presenti alcuni generatori predefiniti. Per maggiori dettagli, consultare il sito generators . Non è impostato alcun generatore predefinito (default []).

  • generator.bits - Elenco delle funzioni di callback che generano disegni per le etichette dei bit e le fasce orarie. Qui si possono impostare funzioni di callback arbitrarie che soddisfano il formato del generatore. Nel cassetto della timeline sono presenti alcuni generatori predefiniti. Per maggiori dettagli, consultare il sito generators . Non è impostato alcun generatore predefinito (default []).

  • generator.barriers - Elenco delle funzioni di callback che generano disegni per le barriere. Qui si possono impostare funzioni di callback arbitrarie che soddisfano il formato del generatore. Nel cassetto della timeline sono presenti alcuni generatori predefiniti. Per maggiori dettagli, consultare il sito generators . Non è impostato alcun generatore predefinito (default []).

  • generator.gate_links - Elenco delle funzioni di callback che generano i disegni per i collegamenti delle porte. Qui si possono impostare funzioni di callback arbitrarie che soddisfano il formato del generatore. Nel cassetto della timeline sono presenti alcuni generatori predefiniti. Per maggiori dettagli, consultare il sito generators . Non è impostato alcun generatore predefinito (default []).

  • layout.bit_arrange - Funzione di callback che ordina i bit. Per maggiori dettagli, consultare il sito layouts . Non è impostato alcun layout predefinito. (valore predefinito Nessuno).

  • layout.time_axis_map - Funzione di callback che determina il layout delle etichette dell'asse orizzontale. Per maggiori dettagli, consultare il sito layouts . Non è impostato alcun layout predefinito. (valore predefinito Nessuno).

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

Esempi

Per visualizzare un programma di circuito programmato, è possibile chiamare questa funzione con una serie di argomenti di controllo. La maggior parte dell'aspetto dell'immagine di output può essere controllata dal foglio di stile.

Disegno con il foglio di stile predefinito.

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)
Output del codice precedente.

Disegnare con il foglio di stile semplice.

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)
Output del codice precedente.

Disegno con il foglio di stile adatto al debug del programma.

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)
Output del codice precedente.

È possibile personalizzare parzialmente un foglio di stile preimpostato quando lo si chiama:

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

# draw
draw(qc, style=style)

Come sopra, è possibile creare funzioni di generatore o di layout personalizzate e aggiornare il foglio di stile esistente con funzioni personalizzate. Questa funzione consente di controllare la maggior parte dell'aspetto dell'immagine di uscita senza modificare il codice del cassetto del circuito programmato.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.