Files
rustytorch/demos/ui
Omar Sobh 16161bb9df deps: align all 56 per-crate Cargo.toml files to thiserror v2
The workspace root was upgraded to thiserror = "2" in an earlier commit,
but 56 per-crate Cargo.toml files still independently declared "1.0".
These crates do not use workspace.dependencies inheritance for thiserror.
All updated to thiserror = "2" for complete fleet alignment.

Includes: rtx-backend, rtx-tensor, rtx-losses, rtx-backend-cuda/rocm/metal,
all training crates (rtx-auto, rtx-rl, rtx-distributed, rtx-federated, etc.),
specialized crates (rtx-science, rtx-platform, rtx-nmf, rtx-neuro-*),
production crates (rtx-streaming, rtx-serving-api), and all demo crates.

cargo check --workspace: PASSES.
2026-04-26 11:45:14 -07:00
..
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00
2026-03-04 00:08:42 +00:00

RustyTorch++ Demo UI

React + TypeScript + Tauri frontend for the RustyTorch++ demo platform. Features 18 interactive demos with GPU-accelerated backends.

Stack

  • React 19 - UI framework
  • TypeScript 5.6 - Type safety
  • Three.js - WebGL 3D/2D visualization (via @react-three/fiber)
  • Recharts - Data visualization and charts
  • Tauri 2.x - Desktop app framework
  • Vite 6 - Build tooling
  • Vitest - Testing framework

Development

# Install dependencies
pnpm install

# Development server (React only)
pnpm dev

# Development with Tauri backend
pnpm tauri dev

# Production build
pnpm tauri build

Testing

# Run all tests
pnpm test

# Watch mode
pnpm test:watch

# Coverage report
pnpm test:coverage

Project Structure

src/
├── App.tsx                          # Main router component
├── main.tsx                         # React entry point
├── index.css                        # Global styles
│
├── pages/
│   ├── Home.tsx                     # Demo gallery landing page
│   └── demos/
│       ├── HemodynamicsDemo.tsx     # Virtual Catheter
│       ├── MREDemo.tsx              # MRE Elastography
│       ├── BioheatDemo.tsx          # Thermal Ablation
│       ├── SlideScopeDemo.tsx       # SlideScope Pathology
│       ├── NeuroDemo.tsx            # RustyNeuro MEG/EEG
│       ├── NeuralOperatorDemo.tsx   # Neural Operator PDE
│       ├── PIDDMDemo.tsx            # Physics-Informed Diffusion
│       ├── DigitalTwinDemo.tsx      # Medical Digital Twin
│       ├── FNOBenchmarkDemo.tsx     # FNO Benchmark
│       ├── PINNBenchmarkDemo.tsx    # PINN Benchmark
│       ├── InferenceProfilerDemo.tsx # Inference Profiler
│       ├── ModelZooDemo.tsx         # Model Zoo
│       ├── PortfolioDemo.tsx        # Portfolio Optimizer
│       ├── RiskAnalyzerDemo.tsx     # Risk Analyzer
│       ├── TimeSeriesDemo.tsx       # Time Series Forecast
│       ├── ImageClassifierDemo.tsx  # Image Classifier
│       ├── ObjectDetectorDemo.tsx   # Object Detector
│       └── SegmentationDemo.tsx     # Segmentation
│
├── components/
│   ├── index.ts                     # Barrel exports
│   ├── DemoCard.tsx                 # Demo gallery card
│   ├── DemoLayout.tsx               # Common demo page layout
│   │
│   ├── hemodynamics/                # Virtual Catheter components
│   │   ├── VesselCanvas.tsx         # Three.js 2D vessel renderer
│   │   ├── ControlPanel.tsx         # Simulation parameters
│   │   ├── Colorbar.tsx             # Dynamic color legend
│   │   ├── PerformanceMonitor.tsx   # FPS/inference metrics
│   │   ├── GeometryTools.tsx        # Tool selection toolbar
│   │   ├── GeometryEditor.tsx       # Interactive canvas overlay
│   │   ├── PulsatileControls.tsx    # Cardiac cycle controls
│   │   └── ExportControls.tsx       # Screenshot/data export
│   │
│   ├── mre/                         # MRE Elastography components
│   │   ├── MRECanvas.tsx            # Wave field visualization
│   │   ├── MREControls.tsx          # Frequency/wavelength controls
│   │   └── StiffnessMap.tsx         # Stiffness colormap
│   │
│   ├── bioheat/                     # Thermal Ablation components
│   │   ├── TemperatureCanvas.tsx    # 3D temperature field
│   │   ├── HeatSourcePanel.tsx      # Source configuration
│   │   └── ThermalDoseDisplay.tsx   # CEM43 visualization
│   │
│   ├── slidescope/                  # SlideScope components
│   │   ├── SlideViewer.tsx          # Deep zoom tile viewer
│   │   ├── StainChannels.tsx        # Individual stain display
│   │   └── NMFProgress.tsx          # Processing progress
│   │
│   ├── neuro/                       # RustyNeuro components
│   │   ├── SignalViewer.tsx         # EEG/MEG signal display
│   │   ├── TopoMap.tsx              # Topographic mapping
│   │   └── ConnectivityMatrix.tsx   # Connectivity visualization
│   │
│   ├── neural-operator/             # Neural Operator components
│   │   ├── PDECanvas.tsx            # Interactive PDE canvas
│   │   ├── PDEControls.tsx          # PDE type selection
│   │   ├── TrainingProgress.tsx     # Training status
│   │   └── LossChart.tsx            # Loss curve visualization
│   │
│   ├── piddm/                       # PIDDM components
│   │   ├── DiffusionCanvas.tsx      # Diffusion process viz
│   │   ├── SamplingControls.tsx     # Sampling configuration
│   │   └── PhysicsLossChart.tsx     # Physics loss tracking
│   │
│   ├── digital-twin/                # Digital Twin components
│   │   ├── OrganViewer.tsx          # 3D organ visualization
│   │   ├── ProbePanel.tsx           # Probe placement
│   │   └── SimulationResults.tsx    # Simulation output
│   │
│   ├── benchmark/                   # Benchmark components
│   │   ├── BenchmarkChart.tsx       # Comparison charts
│   │   ├── MetricsTable.tsx         # Results table
│   │   └── ConfigPanel.tsx          # Benchmark configuration
│   │
│   ├── inference-profiler/          # Profiler components
│   │   ├── LatencyChart.tsx         # Latency distribution
│   │   ├── ThroughputChart.tsx      # Throughput over batch sizes
│   │   ├── MemoryChart.tsx          # Memory usage
│   │   └── ProfilerControls.tsx     # Model/device selection
│   │
│   ├── model-zoo/                   # Model Zoo components
│   │   ├── ModelGrid.tsx            # Model card grid
│   │   ├── ModelCard.tsx            # Individual model display
│   │   └── InferencePanel.tsx       # Run inference UI
│   │
│   ├── portfolio/                   # Portfolio components
│   │   ├── EfficientFrontier.tsx    # Frontier visualization
│   │   ├── AssetAllocation.tsx      # Pie chart allocation
│   │   └── CorrelationMatrix.tsx    # Asset correlations
│   │
│   ├── risk/                        # Risk Analyzer components
│   │   ├── VaRChart.tsx             # Value-at-Risk visualization
│   │   ├── StressScenarios.tsx      # Stress test results
│   │   └── RiskDecomposition.tsx    # Risk breakdown
│   │
│   ├── timeseries/                  # Time Series components
│   │   ├── ForecastChart.tsx        # Forecast visualization
│   │   ├── ModelSelector.tsx        # Model type selection
│   │   └── MetricsDisplay.tsx       # RMSE, MAE, MAPE
│   │
│   ├── vision/                      # Vision components (shared)
│   │   ├── ImageUploader.tsx        # Image upload/sample select
│   │   ├── ImageCanvas.tsx          # Base image canvas
│   │   └── SampleImages.tsx         # Sample image gallery
│   │
│   ├── image-classifier/            # Classifier components
│   │   ├── ClassificationResults.tsx # Top-K predictions
│   │   └── ConfidenceBar.tsx        # Confidence visualization
│   │
│   ├── object-detector/             # Detector components
│   │   ├── DetectionCanvas.tsx      # Bounding box overlay
│   │   ├── DetectionList.tsx        # Detection results list
│   │   └── DetectorControls.tsx     # Model/threshold controls
│   │
│   └── segmentation/                # Segmentation components
│       ├── MaskOverlay.tsx          # Segmentation mask display
│       ├── ClassLegend.tsx          # Class color legend
│       └── SegmentationControls.tsx # Model/class set controls
│
├── lib/
│   ├── types.ts                     # Common TypeScript types
│   ├── simulation.ts                # Hemodynamics IPC wrappers
│   ├── colors.ts                    # Colormap utilities
│   ├── mre-types.ts                 # MRE types
│   ├── bioheat-types.ts             # Bioheat types
│   ├── slidescope-types.ts          # SlideScope types
│   ├── neuro-types.ts               # RustyNeuro types
│   ├── neural-operator-types.ts     # Neural Operator types
│   ├── piddm-types.ts               # PIDDM types
│   ├── digital-twin-types.ts        # Digital Twin types
│   ├── benchmark-types.ts           # Benchmark types
│   ├── inference-profiler-types.ts  # Profiler types
│   ├── model-zoo-types.ts           # Model Zoo types
│   ├── portfolio-types.ts           # Portfolio types
│   ├── risk-types.ts                # Risk Analyzer types
│   ├── timeseries-types.ts          # Time Series types
│   ├── image-classifier-types.ts    # Image Classifier types
│   ├── object-detector-types.ts     # Object Detector types
│   └── segmentation-types.ts        # Segmentation types
│
└── data/
    └── demos.ts                     # Demo registry with metadata

Demo Pages

Medical / Science

Demo Components Features
Virtual Catheter VesselCanvas, GeometryEditor, PulsatileControls Three.js rendering, geometry editing, cardiac waveforms
MRE Elastography MRECanvas, StiffnessMap Wave field visualization, stiffness colormap
Thermal Ablation TemperatureCanvas, HeatSourcePanel 3D temperature field, thermal dose
SlideScope SlideViewer, StainChannels Deep zoom tiles, NMF stain separation
RustyNeuro SignalViewer, TopoMap, ConnectivityMatrix Multi-channel signals, source localization
Digital Twin OrganViewer, ProbePanel 3D organ mesh, interactive simulation

AI / ML

Demo Components Features
Neural Operator PDECanvas, TrainingProgress, LossChart Interactive boundary drawing, training UI
PIDDM DiffusionCanvas, SamplingControls Diffusion visualization, physics loss
FNO Benchmark BenchmarkChart, MetricsTable FNO vs FEM vs FDM comparison
PINN Benchmark BenchmarkChart, ConfigPanel Multi-PDE training comparison
Inference Profiler LatencyChart, ThroughputChart, MemoryChart Performance metrics, batch sweeps
Model Zoo ModelGrid, InferencePanel Model catalog, one-click inference

Finance

Demo Components Features
Portfolio Optimizer EfficientFrontier, CorrelationMatrix Markowitz frontier, asset allocation
Risk Analyzer VaRChart, StressScenarios VaR visualization, stress testing
Time Series ForecastChart, ModelSelector Multi-model forecasting

Vision

Demo Components Features
Image Classifier ClassificationResults, ConfidenceBar Top-K predictions
Object Detector DetectionCanvas, DetectionList Bounding boxes, NMS
Segmentation MaskOverlay, ClassLegend Pixel-wise masks, class colors

IPC Communication

Tauri commands are invoked via @tauri-apps/api/core:

import { invoke } from "@tauri-apps/api/core";

// Example: Initialize profiler
const status = await invoke<ProfilerResponse>("profiler_initialize", { config });

// Example: Run detection
const result = await invoke<DetectionResult>("detect_objects", { imageData });

// Example: Start training
const handle = await invoke<string>("neural_operator_start_training", { config });

All IPC types are defined in src/lib/*-types.ts and mirror the Rust shared crate definitions.

Styling

Components use CSS-in-JS with inline styles for encapsulation. Global styles in index.css.

Color Scheme:

  • Background: #0f0f23 (dark blue)
  • Panel background: #16213e
  • Accent: #3282b8 (cyan)
  • Text: #e4e4e4
  • Success: #4ade80
  • Warning: #f59e0b
  • Error: #ef4444

Build

# Type check
pnpm type-check

# Lint
pnpm lint

# Build for production
pnpm build

Output: dist/ (web assets), src-tauri/target/release/ (desktop app)

Test Summary

Category Test Files Tests
Hemodynamics 9 290
Neural Operator 4 85
Benchmark 2 45
Profiler 3 65
Vision 6 120
Finance 4 80
Total 28 685

Known Issues

  • Three.js chunk size warning (~600KB) - expected for WebGL library
  • "Not implemented: navigation" in tests - JSDOM limitation for download links
  • Canvas operations not fully testable in JSDOM - mock implementations used

Contributing

  1. Follow TDD: Write tests first
  2. Mirror Rust IPC types exactly in TypeScript
  3. Use existing component patterns
  4. Keep components focused and reusable