Speaker
Description
Most of the effort in working with in situ space plasma data is not spent on the data itself. Finding one product among the tens of thousands an archive offers is genuinely hard, and once it is found, making sense of it means reading metadata by hand, working out which attribute holds the fill value, what the units are, which axis carries energy. Neither should be the scientist's job, and what comes next, exploring the data and recording what was found in it, should not require leaving the tool. The SciQLop project addresses this as a set of separate, independently useful components rather than as a single monolithic application. This poster presents the resulting stack and why it is split the way it is.
AstraLint works the producer's side of that problem. It validates files against ISTP and PDS4 conformance suites, from the command line, in CI, or entirely in the browser, so that the metadata everything downstream depends on is correct before a file is published. CDFpp is a from-scratch, MIT-licensed, thread-safe C++20 CDF implementation with full read and write support and SIMD-accelerated epoch conversion, usable from C++, from Python as pycdfpp with zero-copy NumPy arrays and GIL-free I/O, and from JavaScript through a WebAssembly build with zero-copy typed arrays. Speasy presents AMDA, CDAWeb, SSCWeb, the Cluster Science Archive, CDPP's 3DView geometry service, HAPI servers and local archives behind one API, backed by a persistent on-disk cache and an optional server-side caching proxy; a SuperMAG ground-magnetometer provider is in progress. Everything it returns is a SpeasyVariable: values, a time axis, named axes, and the ISTP attributes that came with the data. That type is the stack's interface. Because FILLVAL, UNITS and the valid range travel with the array, a variable can clean itself, convert to a pandas dataframe or an astropy table, plot itself, and carry astropy units whenever the unit string is one astropy can parse. Every layer above speaks it, so nothing has to be converted between them. SciQLopPlots and its rendering engine draw multi-million-point time series and spectrograms on the GPU through Qt's RHI. jupyqt embeds JupyterLab inside a Qt application. tscat stores event catalogs locally, while cocat is a separate library that carries the same catalog model over Yjs CRDTs for real-time co-editing across institutions. SciQLop is the desktop application that composes them, adding a plugin system, an app store and a workspace model.
Every layer is used on its own, in notebooks, in mission pipelines and in other groups' tools, and that constraint shapes the design: no layer may depend on the application above it, and each ships independently to PyPI with its own test suite and release cadence. Two of them also run with no installation at all, compiled to WebAssembly.
We will show the architecture, where the standards actually bind, what the split costs, and the published studies produced with the stack. The poster is equally an invitation: tell us which layer would be useful to you without the rest.