The GIOVA web edition.

The original analysis code

Filtering and spectral analysis now import GIOVA’s original Python files: core/spectral.py, core/processing.py and pipeline/filters.py. These files are copied without edits and recorded with SHA-256 hashes. Pyodide runs them locally with NumPy and SciPy in a browser worker. The former JavaScript numerical reimplementation has been removed.

The browser adapter reads a signal, passes it to those functions, and formats the results for display. Absolute band powers use GIOVA’s exact-edge integration; relative percentages divide those powers by their sum from 1–40 Hz.

Run native / browser numerical comparisons ↗

What is available

The current web interface supports a recording, configurable filtering, Welch PSD and band powers. Filter settings include cutoffs, order, mains frequency and Butterworth, Chebyshev I/II, elliptic or ideal FFT design. Welch window and overlap are configurable. The first launch downloads Python, NumPy and SciPy; later launches can use the browser cache.

What has not been imported

This is not the complete desktop application. PySide6 widgets, live BrainFlow device acquisition, arbitrary pipeline editing, ICA, classifiers, all desktop file formats, batch analyses and desktop reports are not available in this web interface yet. The offline configuration adapter provides the constants needed by the imported numerical modules; it does not emulate connected hardware.

Layout and themes

The original GIOVA logos, Inter and JetBrains Mono fonts, dark/light colour values, icon rail and single shared side panel follow the supplied desktop source. Choose Dark or Light in Settings. Clicking the active Projects, Blocks or Library icon folds that panel away. Selecting a block opens its Inspector. The lower-right controls zoom and fit; the bottom strip opens Results and Log.

Open a recording

Start with synthetic EEG or open a comma- or semicolon-separated CSV with one numeric channel per column and an optional header row. Values are interpreted as µV. Remove timestamps and non-signal columns. Decimal points are supported; quoted CSV fields are not. Set the actual sample rate, between 100 and 2,048 Hz.

Current import limits are 32 MB, 128 channels, two million numeric values and at least 128 samples per channel. The first five seconds are plotted; the spectrum uses the selected channel’s entire recording.

Run and export

After changing settings, press the blue Run icon or F5. The same button becomes Stop during execution. Export saves JSON with the engine, settings, band powers and spectrum. Save settings produces browser settings JSON; it is not a desktop pipeline file and re-import is not implemented.

Data and release status

Recordings are processed locally and are not uploaded. Runtime libraries are downloaded from the Pyodide distribution CDN; the site does not send recording values there. No account is needed by the analysis code, although this private review publication may require the owner’s sign-in. A public source repository, main software license and desktop release link will be added after they are published.

Open Workbench ↗