GUI Reference Guide

RheoJAX provides an optional graphical user interface (GUI) built with PySide6/Qt6 for interactive rheological analysis workflows.

Overview

The RheoJAX GUI provides a visual interface for:

  • Data Loading: Import rheological data from CSV, Excel, TRIOS, and other formats

  • Model Fitting: Interactive NLSQ curve fitting with real-time visualization

  • Bayesian Inference: MCMC sampling with ArviZ diagnostics plots

  • Transforms: Apply mastercurve, FFT, and derivative transforms

  • Exporting: Save results, figures, and reports in various formats

Installation

The GUI dependencies are included in the standard install:

uv sync

Launching the GUI

From the command line:

rheojax-gui

Or from Python:

from rheojax.gui import main
main()

Architecture

The GUI follows a modern architecture pattern:

  • State Management: Redux-like centralized state store with undo/redo

  • Service Layer: Business logic abstraction via services (ModelService, etc.)

  • Background Workers: Non-blocking NLSQ/MCMC execution using QThreadPool

  • Signal-Slot: Qt’s reactive signal/slot pattern for UI updates

Key Components

Pages (Main Views):

  • DataPage: Data import and preview

  • FitPage: Model selection and NLSQ fitting

  • BayesianPage: MCMC configuration and sampling

  • DiagnosticsPage: MCMC diagnostics and ArviZ plots

  • TransformPage: Data transformation workflows

  • ExportPage: Results export and report generation

Widgets (Reusable Components):

  • PlotCanvas: Interactive matplotlib plotting with zoom/pan

  • ParameterTable: Model parameter editing with bounds

  • ModelBrowser: Hierarchical model selection tree

  • ArvizCanvas: ArviZ diagnostic plot integration

  • ResidualsPanel: Residual analysis visualizations

  • MultiView: Multi-panel comparison layouts

Performance

The GUI is optimized for responsive interactions:

  • Service operations: <100ms

  • Model listing: <50ms

  • Plot rendering: <500ms for 1000 points

  • State updates: <5ms

Background workers ensure long-running MCMC operations don’t freeze the UI.