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)
Générer des données de visualisation pour les programmes de circuits programmés.
Le paramètre target doit être spécifié dans Qiskit 2.0 afin d'obtenir les durées d'instruction.
qiskit.visualization.timeline.interface.draw()l'argument de show_barriers est en attente de dépréciation depuis Qiskit 1.1.0. Il sera marqué comme obsolète dans une prochaine version, puis supprimé au plus tôt 3 mois après la date de publication. Au lieu de cela, utilisez l'argument plot_barriers, qui se comporte de manière identique.
qiskit.visualization.timeline.interface.draw()l'argument de show_idle est en attente de dépréciation depuis Qiskit 1.1.0. Il sera marqué comme obsolète dans une prochaine version, puis supprimé au plus tôt 3 mois après la date de publication. Au lieu de cela, utilisez l'argument idle_wires, qui se comporte de manière identique.
Paramètres
-
program (QuantumCircuit) – Programme de visualisation. Ce programme doit être un fichier « QuantumCircuit » compilé à l'aide d'une méthode de planification (« scheduling_method »), et contenant donc des informations sur les temps de porte.
-
style (dict[str, Any] | None) – Options de feuille de style. Il peut s'agir de classes de dictionnaire ou de feuilles de style prédéfinies. Voir
IQXStandard,IQXSimple, etIQXDebuggingpour plus de détails sur les feuilles de style prédéfinies. Voir également la section consacrée aux feuilles de style pour plus de détails sur les clés de configuration. -
time_range (tuple[int, int] | None) – Définir la limite de l'axe horizontal.
-
disable_bits (list[Bits] | None) – Liste des qubits et des bits classiques qui n'apparaissent pas sur l'image de sortie.
-
show_clbits (bool | None) – Une propriété de contrôle pour afficher les bits classiques. Le paramètre True permet d'afficher les bits classiques.
-
idle_wires (bool | None) – Propriété de contrôle permettant d'afficher la ligne de temps au ralenti. Définir True pour afficher la ligne de temps sans les portes.
-
plot_barriers (bool | None) – Propriété de contrôle permettant d'afficher les instructions relatives aux barrières. Définir True pour afficher les instructions relatives aux barrières.
-
show_delays (bool | None) – Propriété de contrôle permettant d'afficher les instructions de retard. Définir True pour afficher les instructions de retard.
-
show_labels (bool) – Une propriété de contrôle pour afficher les annotations, c'est-à-dire le nom, des portes. Définir True pour afficher les annotations.
-
plotter (str | None) –
Nom de l'API du traceur pour générer une image de sortie. L'une des API suivantes doit être spécifiée :
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.les kwargs d'axe et de style peuvent dépendre du traceur.
-
axis (Any | None) – Objet arbitraire transmis au traceur. Si cet objet est fourni, le traceur utilise l'axe donné au lieu d'initialiser en interne un objet figure. Ce format d'objet dépend du traceur. Voir la section sur les traceurs pour plus de détails.
-
filename (str | None) – Si cette option est fournie, l'image de sortie est transférée dans un fichier sous le nom de fichier.
-
target (Target | None) – La cible du backend pour lequel la ligne du temps est générée.
-
show_idle (bool | None) – DÉCRYPTÉ.
-
show_barriers (bool | None) – DÉCRYPTÉ.
Retours
Visualisation des données de sortie.
Le type de données renvoyées dépend du traceur. Si la famille matplotlib est spécifiée, il s'agira de données matplotlib.pyplot.Figure. Les données renvoyées sont générées par la méthode.get_image de l'API du traceur spécifié.
Augmentations
- MissingOptionalLibraryError – Lorsque le module de visualisation requis n'est pas installé.
- VisualizationError – Lorsqu'une API de traceur non valide est spécifiée.
Style Dict Details
La feuille de style kwarg contient de nombreuses options qui définissent le style de la visualisation de la ligne de temps en sortie. Les options de la feuille de style peuvent être classées en formateur, générateur et disposition. Les options disponibles dans la feuille de style sont définies ci-dessous :
Paramètres
-
formatter.general.fig_width - Largeur de l'image de sortie (14 par défaut).
-
formatter.general.fig_unit_height - Hauteur de l'image de sortie par ligne de temps. La somme de toutes les lignes de temps devient la hauteur de l'image de sortie (par défaut 0.8 ).
-
formatter.general.dpi - Points par pouce de l'image si le nom de fichier est défini (par défaut 150).
-
formatter.margin.top - Marge entre la limite supérieure du canevas de la figure et la ligne zéro du premier intervalle de temps (par défaut 0.5 ).
-
formatter.margin.bottom – Marge entre le bord inférieur de la zone de dessin et la ligne zéro du dernier intervalle de temps ( 0.5 par défaut).
-
formatter.margin.left_percent - Marge entre la limite gauche du canevas de la figure et la limite gauche de l'axe horizontal. La valeur est exprimée en pourcentage de la durée totale du programme. Si la durée est de 100 et que la valeur de 0.5 est définie, la marge de gauche est de 5 (valeur par défaut : 0.02 ).
-
formatter.margin.right_percent - Marge entre la limite droite du canevas de la figure et la limite droite de l'axe horizontal. La valeur est exprimée en pourcentage de la durée totale du programme. Si la durée est de 100 et que la valeur de 0.5 est définie, la marge de droite est de 5 (valeur par défaut : 0.02 ).
-
formatter.margin.link_interval_percent - Chevauchement autorisé des liens de la porte. Si plusieurs liens de porte sont dessinés dans cette plage, les liens sont décalés horizontalement pour ne pas se chevaucher. La valeur est exprimée en pourcentage de la durée totale du programme (par défaut 0.01 ).
-
formatter.time_bucket.edge_dt - La longueur du bord arrondi des boîtes de la porte. Les cases de la porte sont introduites et retirées en douceur à partir de la ligne zéro. Cette valeur est exprimée en unités de temps de cycle du système dt (10 par défaut).
-
formatter.margin.minimum_duration - Durée minimale du circuit programmé. Si la durée du circuit d'entrée est inférieure à cette valeur, la limite horizontale est fixée sur la base de cette valeur. Cette valeur est exprimée en unités de temps de cycle du système dt (par défaut 50).
-
formatter.color.background - Code couleur de la couleur de la face de la toile (par défaut #FFFFFF).
-
formatter.color.timeslot - Couleur de la face de la boîte du créneau horaire (par défaut #DDDDDD).
-
formatter.color.gate_name - Couleur du texte des annotations du nom de la porte (par défaut #000000).
-
formatter.color.bit_name - Couleur du texte des annotations de l'étiquette de bit (par défaut #000000).
-
formatter.color.barrier - Couleur de ligne des barrières (par défaut #222222).
-
formatter.color.gates –
Un dictionnaire des couleurs de la boîte ou du symbole de la porte à utiliser pour chaque type d'élément dans la visualisation de sortie. Les valeurs par défaut sont les suivantes :
{ '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' }Vous devez spécifier toutes les valeurs nécessaires si vous utilisez cette option. Si aucun nom de porte n'est spécifié, c'est la couleur de formatter.color.default_gate qui est appliquée.
-
formatter.color.default_gate - Couleur par défaut de la porte. Cette couleur est appliquée lorsque le nom de la porte à visualiser n'est pas contenu dans le dictionnaire de formatter.color.gates (par défaut #BB8BFF ).
-
formatter.latex_symbol.gates –
Un dictionnaire de représentations latex des noms de portes à utiliser pour chaque type d'élément dans la visualisation de sortie. Les valeurs par défaut sont les suivantes :
{ '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}' }Vous devez spécifier toutes les valeurs nécessaires si vous utilisez cette option. Il n'est pas prévu de faire passer une dictée incomplète.
-
formatter.latex_symbol.frame_change - Représentation Latex du symbole de changement de cadre (par défaut r\circlearrowleft`).
-
formatter.unicode_symbol.frame_change - Représentation Unicode du symbole de changement de cadre (par défaut u’u21BA’ ).
-
formatter.box_height.gate - Hauteur de la boîte de la porte (par défaut 0.5 ).
-
formatter.box_height.timeslot - Hauteur du créneau horaire (par défaut 0.6 ).
-
formatter.layer.gate - Index des couches des cases de la porte. Le nombre le plus élevé apparaît au premier plan de l'image de sortie (par défaut 3).
-
formatter.layer.timeslot - Indice de couche des intervalles de temps. Le nombre le plus élevé figure au début de l'image de sortie (valeur par défaut : 0).
-
formatter.layer.gate_name - Index des couches d'annotations de noms de portes. Le nombre le plus élevé apparaît au premier plan de l'image de sortie (par défaut 5).
-
formatter.layer.bit_name - Index de couche des étiquettes de bits. Le nombre le plus élevé apparaît au premier plan de l'image de sortie (par défaut 5).
-
formatter.layer.frame_change - Index de couche des symboles de changement de trame. Le nombre le plus élevé apparaît au premier plan de l'image de sortie (valeur par défaut : 4).
-
formatter.layer.barrier - Indice de couche des lignes de barrière. Le nombre le plus élevé apparaît au début de l'image de sortie (valeur par défaut : 1).
-
formatter.layer.gate_link - Indice de couche des lignes de liaison de la porte. Le nombre le plus élevé apparaît au premier plan de l'image de sortie (par défaut 2).
-
formatter.alpha.gate - Transparence des boîtes aux lettres. Une valeur comprise entre 0 et 1. La valeur 0 donne des boîtes complètement transparentes (par défaut 1.0 ).
-
formatter.alpha.timeslot - Transparence des créneaux horaires. Une valeur comprise entre 0 et 1. La valeur 0 donne des boîtes complètement transparentes (par défaut 0.7 ).
-
formatter.alpha.barrier - Transparence des lignes de démarcation. Une valeur comprise entre 0 et 1. La valeur 0 donne des lignes complètement transparentes (par défaut 0.5 ).
-
formatter.alpha.gate_link - Transparence des lignes de liaison de la porte. Une valeur comprise entre 0 et 1. La valeur 0 donne des lignes complètement transparentes (par défaut 0.8 ).
-
formatter.line_width.gate - Largeur de ligne de la frange des cases de la porte (par défaut 0).
-
formatter.line_width.timeslot - Largeur de ligne de la frange des créneaux horaires (par défaut 0).
-
formatter.line_width.barrier - Largeur des lignes de la barrière (3 par défaut).
-
formatter.line_width.gate_link - Largeur de ligne des liens de la porte (3 par défaut).
-
formatter.line_style.barrier - Style de ligne des lignes de barrière. Ceci est conforme à la spécification de style de ligne de matplotlib (par défaut '-').
-
formatter.line_style.gate_link - Style de ligne des lignes de liaison de la porte. Ceci est conforme à la spécification de style de ligne de matplotlib (par défaut '-').
-
formatter.text_size.gate_name - Taille du texte des annotations du nom de la porte (12 par défaut).
-
formatter.text_size.bit_name - Taille du texte des étiquettes de bits (par défaut 15).
-
formatter.text_size.frame_change - Taille du texte des symboles de changement de cadre (18 par défaut).
-
formatter.text_size.axis_label - Taille du texte des étiquettes d'axe (par défaut 13).
-
formatter.label_offset.frame_change - Décalage des annotations du nom de la porte de durée zéro par rapport à la ligne zéro du créneau horaire (par défaut 0.25 ).
-
formatter.control.show_idle - Régler True pour afficher les plages horaires sans porte (True par défaut).
-
formatter.control.show_clbits - Régler True pour afficher les créneaux horaires des bits classiques (True par défaut).
-
formatter.control.show_barriers - Définir True pour afficher les barrières (True par défaut).
-
formatter.control.show_delays - Définir True pour afficher les boîtes de délai (True par défaut).
-
generator.gates - Liste des fonctions de rappel qui génèrent des dessins pour les portes. Des fonctions de rappel arbitraires satisfaisant au format du générateur peuvent être définies ici. Le tiroir de la timeline contient des générateurs par défaut. Voir
generatorspour plus de détails. Aucun générateur par défaut n'est défini (défaut []). -
generator.bits - Liste des fonctions de rappel qui génèrent des dessins pour les étiquettes de bits et les créneaux horaires. Des fonctions de rappel arbitraires satisfaisant au format du générateur peuvent être définies ici. Le tiroir de la timeline contient des générateurs par défaut. Voir
generatorspour plus de détails. Aucun générateur par défaut n'est défini (défaut []). -
generator.barriers - Liste des fonctions de rappel qui génèrent des dessins pour les barrières. Des fonctions de rappel arbitraires satisfaisant au format du générateur peuvent être définies ici. Le tiroir de la timeline contient des générateurs par défaut. Voir
generatorspour plus de détails. Aucun générateur par défaut n'est défini (défaut []). -
generator.gate_links - Liste des fonctions de rappel qui génèrent des dessins pour les liens de porte. Des fonctions de rappel arbitraires satisfaisant au format du générateur peuvent être définies ici. Le tiroir de la timeline contient des générateurs par défaut. Voir
generatorspour plus de détails. Aucun générateur par défaut n'est défini (défaut []). -
layout.bit_arrange - Fonction de rappel qui trie les bits. Voir
layoutspour plus de détails. Aucune disposition par défaut n'est définie. (par défaut : aucun). -
layout.time_axis_map - Fonction de rappel qui détermine la disposition des étiquettes de l'axe horizontal. Voir
layoutspour plus de détails. Aucune disposition par défaut n'est définie. (par défaut : aucun). -
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)
Exemples
Pour visualiser un programme de circuit programmé, vous pouvez appeler cette fonction avec un ensemble d'arguments de contrôle. La plupart des aspects de l'image de sortie peuvent être contrôlés par la feuille de style.
Dessin avec la feuille de style par défaut.
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)
Dessin avec la feuille de style 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)
Dessin avec la feuille de style adaptée au débogage du programme.
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)
Vous pouvez personnaliser partiellement une feuille de style prédéfinie lorsque vous l'appelez :
my_style = {
'formatter.general.fig_width': 16,
'formatter.general.fig_unit_height': 1
}
style = IQXStandard(**my_style)
# draw
draw(qc, style=style)De la même manière que ci-dessus, vous pouvez créer des fonctions de générateur ou de mise en page personnalisées et mettre à jour les feuilles de style existantes avec des fonctions personnalisées. Cette fonction vous permet de contrôler la plupart des aspects de l'image de sortie sans modifier la base de code du tiroir de circuit programmé.