SciQLop — the in-situ space physics IDE
What Is SciQLop?
SciQLop (SCIentific Qt application for Learning from Observations of Plasmas) is a powerful and user-friendly tool designed for the visualization and analysis of in-situ space plasma data: browse, plot, label, script, and extend — all in one tool.
Using SciQLop will let you:
- have super easy access to tens of thousands of products from the top main data archives in the world — MMS, THEMIS/ARTEMIS, Cluster, Solar Orbiter, Parker Solar Probe, Wind, ACE and many more, served by AMDA, NASA CDAWeb, ESA CSA and SSCWeb,
- explore multivariate time series effortlessly, with lightning-fast and transparent downloads as you scroll, zoom in, and zoom out,
- visualize custom products with simple Python code executed on-the-fly,
- easily label time intervals and make or edit catalogs of events graphically and rapidly,
- collaborate on catalog editing in real time with other users,
- analyze your data in Jupyter notebooks side by side with interactive plots,
- extend SciQLop with community plugins from the built-in App Store,
- get help from an AI assistant that can plot products, fetch data, and inspect your workspace.
Heliophysicists now benefit from decades of space exploration through many spacecraft missions. Exploring this massive amount of data to find events of interest, build catalogs, and conduct statistical multi-mission data analysis can be a daunting task without the right tool.
SciQLop aims at being this tool! A simple lightweight yet powerful graphical interface coupled to the limitless options brought by the Jupyter notebook integration, that focuses on providing users with the easiest possible way to explore, label and analyze huge amounts of data. SciQLop is also the right tool for teaching space physics and in-situ spacecraft data handling to students effortlessly — a built-in guided tour walks new users through their first plot.
Try It Now
Grab a ready-to-run build from the latest release page:
- Windows — installer
- macOS — app bundle (ARM64 for Apple silicon, x86_64 for Intel)
- Linux — AppImage
See How to Install SciQLop for details.
Main Features
Interactive and Responsive Plotting
SciQLop can handle millions of data points without compromising on interactivity. Users can scroll, zoom, move, and export plots with ease.
Data Access Made Easy
Accessing data in SciQLop is as simple as a drag and drop from the tens of thousands of products readily available. New empty panels show a built-in search overlay where you can type to find any product instantly, or drop one from the product tree. The sidebar smart search goes further: it combines full-text and semantic ranking, so "magnetic field mms burst" finds the right products even when your words don't match the catalog naming exactly.
Jupyter Notebook Integration
SciQLop embeds a full IPython kernel and can launch a JupyterLab server connected to it. Create and manipulate plots, define virtual products, and manage catalogs directly from your notebooks. Dedicated IPython magics make common operations one-liners:
%plot <product>— fuzzy-search and plot any product%%vp— define a virtual product from a cell function%timerange— get or set the time range of a panel%install <packages>— install packages into the workspace venv%workspace— inspect and manage the current workspace%job— submit, inspect, and cancel background jobs
Catalogs
SciQLop provides a powerful catalog system for labeling and browsing events in your data:
- Multiple providers: local catalogs (tscat/SQLite), collaborative catalogs (cocat), and read-only speasy catalogs all appear in a unified tree browser
- Visual overlays: catalogs are displayed as color-coded vertical spans on your plots
- Color mapping: color events by any metadata column (categorical or continuous with matplotlib colormaps)
- Graphical editing: Shift+drag to create new events, drag span edges to resize, click to jump to an event
- Full API from notebooks:
catalogs.list(),catalogs.get(),catalogs.create(),catalogs.save(),catalogs.add_events(),catalogs.remove_events()
Collaborative Catalog Editing
Multiple users can co-edit catalogs in real time via cocat (CRDT-based synchronization over WebSocket). Create, edit and delete events simultaneously — all changes are merged conflict-free across all connected clients.
AI Assistant
SciQLop ships an agent chat dock with pluggable AI backends — Claude Code, GitHub Copilot, OpenCode, and Albert — installable from the App Store. The assistant has access to dedicated tools: it can plot products, fetch and describe data, run notebook cells, and inspect your workspace, all under your control.
Command Palette
Press Ctrl+K (Cmd+K on macOS) to open the command palette. It fuzzy-searches all available actions and supports multi-step argument chains (e.g., select "Plot product" then pick the product). An LRU history boosts your most-used commands.
Workspaces
SciQLop organizes your work into workspaces, each with its own isolated Python environment (managed by
uv), installed packages, enabled plugins, and examples. Workspaces are described
by .sciqlop TOML manifests and managed from the welcome page.
App Store
Browse and install community plugins directly from within SciQLop. The built-in App Store fetches a live registry, shows descriptions, tags, and GitHub stars, and handles installation and updates via uv. Plugins are hot-loaded into the running application without restart.
Virtual Products
Define custom products with simple Python functions. Virtual products behave exactly like built-in products — they
respond to scroll and zoom with on-the-fly computation. The %%vp cell magic lets you define them right from a
notebook cell with type annotations for automatic axis configuration.
import numpy as np
from SciQLop.user_api.virtual_products import create_virtual_product, VirtualProductType
import speasy as spz
def ace_b_magnitude(start: float, stop: float) -> spz.SpeasyVariable:
b_gse = spz.get_data(spz.inventories.tree.amda.Parameters.ACE.MFI.ace_imf_all.imf, start, stop)
return np.sqrt(b_gse["bx"] ** 2 + b_gse["by"] ** 2 + b_gse["bz"] ** 2)
ace_b_magnitude_virtual_prod = create_virtual_product(
path='my_virtual_products/ace_b_magnitude',
product_type=VirtualProductType.Scalar,
callback=ace_b_magnitude,
labels=["|b|"]
)
Panel Templates
Save and restore complete plot layouts (time range, products, axis settings, markers) as templates. Templates are stored as YAML files and can be shared, imported, or instantiated from the welcome page with one click.
Theming
SciQLop ships with four built-in palettes (light, dark, neutral, space) that can be switched at runtime from the settings panel. Icons automatically adapt to the current background color.
Speasy Plot Backend
SciQLop registers as a speasy plot backend, so calling speasy.plot() from
any notebook renders directly into SciQLop panels.
Learn SciQLop
- Guided tour: on first use, SciQLop walks you through creating your first plot.
- Tutorials: step-by-step tutorials (basic plotting, catalogs, virtual products, plot templates, Python user API) are available on the SciQLop website.
- Bundled examples: a growing list of Jupyter notebooks demonstrating common tasks, browsable from the welcome page and installed into your workspace on first use — see the examples folder.
- Workshlop: our annual hands-on training workshop — see the Workshlop 2026 page (3rd edition, Sept 15–17, Paris).
How to Install SciQLop
Windows Users
Download the installer from the latest release page and run it.
Mac Users
Since SciQLop 0.7.1 we produce a Mac App Bundle that you can download from the latest release page — pick the right architecture for your Mac (ARM64 for Apple M1/2/3/4 chips and x86_64 for Intel).
Linux Users
Download the AppImage from the latest release and run it (after making it executable).
A Flatpak manifest is also maintained (not yet published on Flathub).
From Sources (for developers)
The installers and AppImages above are the recommended way to use SciQLop. If you want to work on SciQLop itself, clone the repository and run it with uv, which handles the virtualenv and dependencies automatically:
git clone https://github.com/SciQLop/SciQLop
cd SciQLop
uv run sciqlop
Python User API Examples
SciQLop has a public API that allows users to create custom products and plots from the embedded Jupyter console or any connected notebook.
- Creating plot panels:
from SciQLop.user_api import TimeRange
from SciQLop.user_api.plot import create_plot_panel
from datetime import datetime
# all plots are stacked
p = create_plot_panel()
p.time_range = TimeRange(datetime(2015, 10, 22, 6, 4, 30), datetime(2015, 10, 22, 6, 6, 0))
p.plot("speasy/cda/MMS/MMS1/FGM/MMS1_FGM_BRST_L2/mms1_fgm_b_gsm_brst_l2")
p.plot("speasy/cda/MMS/MMS1/DIS/MMS1_FPI_BRST_L2_DIS_MOMS/mms1_dis_bulkv_gse_brst")
p.plot("speasy/cda/MMS/MMS1/DIS/MMS1_FPI_BRST_L2_DIS_MOMS/mms1_dis_energyspectr_omni_brst")
# tha_peif_sc_pot and tha_peif_en_eflux will share the same plot
p2 = create_plot_panel()
p2.plot("speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_en_eflux")
p2.plots[0].plot("speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_sc_pot")
p2.plot("speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_velocity_dsl")
NOTE: An easy way to get product paths is to drag a product from the Products Tree to any text zone or even your Python terminal.
- Using IPython magics (shorter):
# Plot a product by fuzzy name
%plot mms1_fgm_b_gsm_brst
# Define a virtual product from a cell
%%vp --path my_products/b_magnitude
def b_mag(start: float, stop: float) -> "Scalar":
import speasy as spz
import numpy as np
b = spz.get_data("amda/imf", start, stop)
return np.sqrt(b["bx"]**2 + b["by"]**2 + b["bz"]**2)
- Working with catalogs from the console:
from datetime import datetime, timezone
from SciQLop.user_api.catalogs import catalogs
# Create a new catalog with events
catalogs.create("My Catalogs//my_events", [
(datetime(2015, 10, 22, 6, 0, tzinfo=timezone.utc),
datetime(2015, 10, 22, 7, 0, tzinfo=timezone.utc),
{"type": "magnetopause_crossing"}),
])
# List all catalogs
for c in catalogs.list():
print(c)
# Get the catalog back
cat = catalogs.get("My Catalogs//my_events")
More examples can be found in the examples folder — they are also available from the welcome screen.
SciQLop Ecosystem
SciQLop is built on top of several libraries developed within the SciQLop GitHub organization:
SciQLop
├── SciQLopPlots — Scientific plotting widgets with Python bindings
│ └── NeoQCP — C++ Qt6 rendering engine (QCustomPlot fork)
├── Speasy — Space physics data access (AMDA, CDAWeb, CSA, SSCWeb)
│ ├── CDFpp — High-performance CDF file reader (C++)
│ ├── SciQLop-cache — High-performance caching backend
│ └── speasy_proxy — Caching proxy server for shared Speasy data access
├── cocat — Collaborative catalogs via CRDT
├── tscat — Time series catalog Python library
└── tscat_gui — Qt GUI components for tscat catalogs
| Repository | Description | Language |
|---|---|---|
| SciQLopPlots | High-level plotting widgets with Shiboken6/PySide6 bindings | C++/Python |
| NeoQCP | Low-level rendering engine, QCustomPlot fork with QRhi GPU backend | C++ |
| Speasy | Unified access to space physics data archives | Python |
| CDFpp | Fast CDF (Common Data Format) reader/writer | C++ |
| SciQLop-cache | High-performance caching layer for data requests | C++/Python |
| speasy_proxy | Caching proxy server for shared Speasy data access | Python |
| cocat | Collaborative catalog editing via CRDT/WebSocket | Python |
| tscat | Time series catalog library (events, catalogs, attributes) | Python |
| tscat_gui | Qt GUI components for browsing and editing tscat catalogs | Python |
Citing SciQLop
If you use SciQLop in your research, please cite it via its Zenodo DOI (10.5281/zenodo.7379012, covering all versions):
@software{sciqlop,
author = {Jeandet, Alexis and Aunai, Nicolas and Renard, Benjamin and Génot, Vincent and André, Nicolas},
title = {SciQLop},
publisher = {Zenodo},
doi = {10.5281/zenodo.7379012},
url = {https://doi.org/10.5281/zenodo.7379012}
}
Citation metadata is also available in CITATION.cff (GitHub's "Cite this repository" button).
Getting Help
- Bug reports and feature requests: GitHub issues
- Contact: see the contact page on the website
How to Contribute
Fork the repository, make your changes and submit a pull request. We will be happy to review and merge your changes. Reports of bugs and feature requests are also welcome. Do not forget to star the project if you like it!
License
SciQLop is free software, released under the GNU General Public License v3.0.
Credits
The development of SciQLop is supported by the CDPP.
We acknowledge support from the federation Plas@Par
Thanks
We would like to thank the developers of the following libraries that SciQLop depends on:
- PySide6 for the GUI framework and Qt bindings.
- QCustomPlot for providing the plotting library.
- uv for fast, reliable Python package management.
- The Jupyter project for providing the Jupyter notebook integration.
- NumPy for providing a fast Python array library.
Metadata
Release files for SciQLop 0.13.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sciqlop-0.13.0.tar.gz | 9.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sciqlop-0.13.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.4 MB
Release files / sciqlop-0.13.0.tar.gz
| Download URL | sciqlop-0.13.0.tar.gz |
|---|---|
| Size | 9.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9320cbbfaeec76b0f7cbf85e4cd3e1d30876cbe36b086d13652027c2f96f49db
|
|
BLAKE2b-256 checksum How to use checksums |
fe76a07cb50558cf68f140ec2c24da73ba2fb225e3c125efed3c3b925cd78f13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / sciqlop-0.13.0-py3-none-any.whl
| Download URL | sciqlop-0.13.0-py3-none-any.whl |
|---|---|
| Size | 5.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d71f064e5d10cd8dee55bef71333ae676c76142ce592eb6950bd11afc4be6ee9
|
|
BLAKE2b-256 checksum How to use checksums |
9cd556e188e486296db742518bb62cd6c631c04a6314d201c9b5509007c4e35f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|