SeqEyes — Interactive Pulseq MRI Sequence Viewer for Python
SeqEyes is a lightweight Python package that provides interactive
visualization of Pulseq text (.seq) and binary (.bseq) MRI sequences in Jupyter notebooks.
It works as a drop‑in replacement for pypulseq.Sequence.plot(),
rendering an interactive viewer directly in Jupyter notebook cell
output — just like Plotly.
Features
- 🎛️ Interactive waveform viewer — zoom, pan, per‑channel amplitude zoom
- 📍 Tooltip with block details (RF amplitude, gradient strength, ADC params)
- 🗺️ 3D k‑space trajectory viewer — rotate, zoom, depth‑sorted rendering
- 🎨 8 colour themes — system, light, dark, dracula, nord, and more
- 📏 Unit conversion — time (s / ms / µs), gradient (Hz/m / mT/m / G/cm)
- 📐 Minimap with TR/TE overlay and viewport indicator
- 💾 Export to standalone HTML — shareable, no Python needed
- 🔌 Drop‑in pypulseq integration —
seq.plot()just works
Installation
pip install seqeyes-python
For pypulseq integration:
pip install seqeyes-python[pypulseq]
Quick Start
import seqeyes
# Enable SeqEyes (once per session) — seq.plot() is now interactive
seqeyes.set(theme="dark", time_disp="ms")
# Build your sequence with pypulseq as usual
seq.plot() # interactive viewer in Jupyter
seq.plot(show_blocks=True) # per‑call overrides
seq.plot(time_range=(0, 0.05)) # zoom to first 50 ms
# Restore matplotlib at any time
seqeyes.reset()
In a plain .py script (no Jupyter), seq.plot() opens the viewer
in a desktop pop‑up window (requires pywebview) or falls back to
your default browser.
Using without pypulseq
from seqeyes import SeqEyesViewer
with open('my_sequence.seq') as f:
viewer = SeqEyesViewer(f.read(), theme="dark")
viewer # renders inline in Jupyter
Open either supported file format directly:
from seqeyes import SeqEyesViewer
SeqEyesViewer.from_file("my_sequence.seq", theme="dark")
SeqEyesViewer.from_file("my_sequence.bseq", theme="dark")
API Reference
| Function | Description |
|---|---|
seqeyes.set(**kwargs) |
Enable SeqEyes and set global defaults (theme, show_blocks, time_disp, grad_disp, time_range) |
seqeyes.reset() |
Restore matplotlib seq.plot() and clear all defaults |
SeqEyesViewer(source, ...) |
Low-level viewer for raw .seq text or .bseq bytes |
SeqEyesViewer.from_file(path, ...) |
Open a local .seq or .bseq file without pypulseq |
Viewer Controls
| Action | How |
|---|---|
| Zoom | Scroll wheel |
| Pan | Click + drag |
| Amplitude zoom (per channel) | Ctrl + scroll wheel |
| Tooltip | Hover over waveform |
| Toggle channels | Click legend labels |
| K‑Space viewer | Click "K‑Space" button |
| Rotate k‑space | Click + drag in panel |
| Minimap navigation | Click on minimap strip |
| Open another file | 📂 Open button |
Requirements
- Python ≥ 3.9
- numpy ≥ 1.21
- pypulseq ≥ 1.4 (optional, for
seq.plot()integration) - pywebview ≥ 5 (optional, for native desktop pop‑up windows)
License
MIT
Metadata
Release files for seqeyes-python 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| seqeyes_python-0.4.1.tar.gz | 747.7 kB | With provenance | Details for seqeyes_python-0.4.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| seqeyes_python-0.4.1-py3-none-any.whl | Python 3 | none | any | Details for seqeyes_python-0.4.1-py3-none-any.whl |
Total release size: 988.7 kB
Release files / seqeyes_python-0.4.1.tar.gz
| Download URL | seqeyes_python-0.4.1.tar.gz |
|---|---|
| Size | 747.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4962918c87d4709b571cd54bcb42a7666029f61705dda6a0fa55f4ea4401b898
|
|
BLAKE2b-256 checksum How to use checksums |
ac985816ea1cf64374197aa398be990174045bd1d15da9451ee48eb9dc6f4e42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / seqeyes_python-0.4.1-py3-none-any.whl
| Download URL | seqeyes_python-0.4.1-py3-none-any.whl |
|---|---|
| Size | 241.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bdfcaedd3e142c1d837fe7d0d4722dfedee4d178c64428cbd6d7c28be1291070
|
|
BLAKE2b-256 checksum How to use checksums |
6dbea5872ecc6fd99dcd780ad7b93c84d8adaf6eb52ddfff04a1b6ab05bc8bbb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logSecurity for seqeyes-python 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for seqeyes_python-0.4.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.