Skip to content

feat: Add quantum circuit visualization and 6 tutorial examples#2

Open
FlagQuantum wants to merge 7 commits into
mainfrom
dev
Open

feat: Add quantum circuit visualization and 6 tutorial examples#2
FlagQuantum wants to merge 7 commits into
mainfrom
dev

Conversation

@FlagQuantum
Copy link
Copy Markdown
Collaborator

🎯 Overview

This PR adds professional quantum circuit visualization capabilities to FlagQuantum,
along with 6 tutorial examples to help users get started quickly.

✨ New Features

Circuit Visualization

  • OpHistoryVisualizer: Parse qdev.op_history to generate circuit diagrams
  • Text Mode (draw_text): Unicode-based circuit representation (PennyLane style)
    • Supports ╭╰├│ grouping symbols for multi-qubit gates
    • Auto line-wrapping with max_length parameter
    • Configurable decimal precision for parameters
  • MPL Mode (draw_mpl): Matplotlib-based publication-quality figures
    • Professional color scheme:
      • Fixed gates (H, X, Y, Z): soft blue #7B9EC2
      • Rotation gates (RX, RY, RZ): red #E15759
      • Phase gates (P): plum purple #DDA0DD
      • CPhase: teal #76B7B2
      • CRX/CRY/CRZ: orange #F28E2B
      • RXX/RYY/RZZ: light pink #FFB6C1 (box layout, no control points)
      • SWAP: teal #76B7B2
    • Layer-based layout algorithm (same-column gates share x-coordinate)
    • Supports Toffoli (CCX), Fredkin (CSWAP), multi-qubit gates
    • Initial state display (|0⟩) and measurement symbols

Tutorial Examples (6 notebooks)

  1. 00_understanding_states.ipynb - Understanding quantum state representations
  2. 01_basic_operations.ipynb - Basic single-qubit and two-qubit gates
  3. 02_measurement.ipynb - Quantum measurement and expectation values
  4. 03_parameterized_gates.ipynb - Parameterized gates (RX, RY, RZ, Phase, CPhase, CRX/CRY/CRZ)
  5. 04_quantum_circuit_builder.ipynb - Building and visualizing circuits from op_history
  6. 05_quantum_machine_learning.ipynb - End-to-end QML training with visualization

📁 File Changes

New Files

  • flagquantum/drawer/__init__.py - Visualization submodule
  • flagquantum/drawer/text_drawer.py - Text-based circuit drawer
  • flagquantum/drawer/mpl_drawer.py - Matplotlib circuit drawer
  • flagquantum/drawer/style.py - Plotting style management
  • examples/tutorials/00_understanding_states.ipynb
  • examples/tutorials/01_basic_operations.ipynb
  • examples/tutorials/02_measurement.ipynb
  • examples/tutorials/03_parameterized_gates.ipynb
  • examples/tutorials/04_quantum_circuit_builder.ipynb
  • examples/tutorials/05_quantum_machine_learning.ipynb

Modified Files

  • flagquantum/__init__.py - Export visualization functions

🚀 Usage

import flagquantum as fq
import torch

# After running a circuit
qdev = fq.DistributedQuantumDevice(n_wires=4, bsz=1, record_op=True)
# ... apply gates ...

# Text visualization
print(fq.draw(qdev, format="text", decimals=3, show_all_wires=True, show_initial_state=True))

# MPL visualization
fig, ax = fq.draw(qdev, show_initial_state=True, format="mpl", style="flagquantum")
c4ebb3728ed2df8419f264a277442a96 f1e62d8d63416dee44809d10d9ee198c

OpHistoryVisualizer for parsing qdev.op_history

Text mode: Unicode circuit diagrams

MPL mode: Publication-quality figures with professional color scheme

Supports all gate types: H/X/Y/Z, RX/RY/RZ, CNOT/CY/CZ, SWAP, CPhase,
CRX/CRY/CRZ, RXX/RYY/RZZ, Toffoli, CSWAP...

6 tutorial notebooks from basic gates to QML training visualization
@FlagQuantum FlagQuantum requested a review from aoyulong May 11, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant