pathotypr includes a native desktop application built with Tauri.
- All five workflows: train, predict, classify, split-fastq, match
- Drag-and-drop file selection
- Interactive result tables with sorting and filtering
- Real-time progress bars with cancellation support
- Training summary card (accuracy, OOB, CV metrics, model size)
- Live CPU/RAM usage indicator
- Light and dark themes
- Excel export toggle per workflow
- Configurable parameters with sensible defaults and reset buttons
-
Rust stable toolchain
-
tauri-cli:
cargo install tauri-cli --version "^2" -
System dependencies (varies by platform):
Linux (Debian/Ubuntu):
sudo apt install libgtk-3-dev libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev
macOS: Xcode command line tools (usually pre-installed)
Windows: WebView2 runtime (usually pre-installed on Windows 10+)
cargo tauri devOpens the app in development mode with hot-reload for the frontend.
cargo tauri buildProduces a distributable binary:
- macOS:
.dmginsrc-tauri/target/release/bundle/dmg/ - Linux:
.deband.AppImageinsrc-tauri/target/release/bundle/ - Windows:
.msiinsrc-tauri/target/release/bundle/msi/
src-tauri/
├── src/
│ ├── main.rs # Tauri app setup
│ ├── commands.rs # Tauri command handlers (bridge GUI → core)
│ ├── state.rs # Task state management + cancellation
│ └── util.rs # Progress events + helpers
├── Cargo.toml
└── tauri.conf.json
frontend/
├── index.html # Main page layout
├── styles.css # Styling
├── app.js # App bootstrap
└── js/
├── main.js # Initialization
├── forms.js # Form submission handlers
├── results.js # Result table rendering
├── visualization.js # Charts + summary cards
├── progress.js # Progress bars + cancellation
├── config.js # Default parameters
├── state.js # Run state management
├── navigation.js # Tab navigation
├── dropzone.js # Drag-and-drop file handling
├── console.js # Log console drawer
├── tauri.js # Tauri API wrappers
├── theme.js # Light/dark theme toggle
└── utils.js # Shared utilities
- Frontend collects form parameters and sends them to Tauri via
invoke() commands.rsdeserializes parameters and callspathotypr_corefunctions- Core library runs the workflow, emitting progress events back to the frontend
- Results are displayed in interactive tables and summary cards
- Cancellation token allows stopping any running workflow via the UI