Desktop GUI¶
pathotypr includes a native desktop application built with Tauri. It wraps the same pathotypr-core engine as the CLI, so every workflow produces identical results — just with drag-and-drop, live progress, and interactive tables.
You probably don't need to build this
Signed-format installers for macOS, Linux, and Windows are published for every release. Grab one from the Installation page and skip straight to using the app — the steps below are only for building from source.
Features¶
- 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
Building¶
Prerequisites¶
- Rust — a recent stable toolchain (install via rustup).
-
Tauri CLI v2:
Must be the 2.x CLI
pathotypr targets Tauri 2. A
tauri-clifrom the 1.x series already on yourPATHwill fail to build this project. Confirm your version withcargo tauri --versionbefore continuing. -
System dependencies — these vary by platform:
These are the 4.1 packages
Tauri 2 links against the 4.1 WebKitGTK / JavaScriptCore packages. The older
4.0variants (all that some distributions, e.g. Ubuntu 20.04, ship by default) will not work — use a newer release or a backport that provides the4.1packages.The Xcode Command Line Tools are usually pre-installed. If they are missing, install them with:
The WebView2 runtime is required. It is pre-installed on Windows 11 and most up-to-date Windows 10 machines. If it is missing, install the Evergreen runtime from Microsoft.
Development¶
Opens the app in development mode with hot-reload for the frontend.
First build is slow
The initial cargo tauri dev compiles the full Rust dependency tree and can
take several minutes. Subsequent runs are incremental and start quickly.
Production build¶
With targets: "all" (set in tauri.conf.json), this produces distributable
installers under src-tauri/target/release/bundle/:
- macOS:
.dmginbundle/dmg/(and the.appinbundle/macos/) - Linux:
.debinbundle/deb/,.rpminbundle/rpm/, and.AppImageinbundle/appimage/ - Windows:
.msiinbundle/msi/and the NSIS.exeinbundle/nsis/
Self-built apps are unsigned
Binaries you build yourself are not signed with a paid developer certificate, so macOS Gatekeeper and Windows SmartScreen will warn you the first time you open them. See the first-launch notes on the Installation page for how to get past the warning.
Architecture¶
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
How it works¶
- 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
See also¶
- Installation — pre-built desktop installers for macOS, Linux, and Windows
- Input formats — accepted assemblies, reads, and marker files
- Command references: train · predict · classify · split-fastq · match