A bridge to the external GraXpert application for AI gradient removal and denoising. SASpro hands your image to GraXpert's command-line interface, then reads the result back and applies it as an undoable step — your original header and WCS are preserved.
graxpert.com) with its own authors and licence. SASpro does not
include or reimplement it — it drives the GraXpert program you install, and
the gradient-removal and denoise algorithms are entirely GraXpert's.Choose an operation, set its one parameter, and click OK. The run is non-modal and streams GraXpert's own log into a progress window; Cancel stops it. The first time you run it, SASpro asks you to locate the GraXpert executable and remembers it afterward.
| Control | What it does |
|---|---|
| Remove gradient | Runs GraXpert's background extraction to model and remove the sky gradient. |
| Denoise | Runs GraXpert's AI denoiser. |
| Smoothing (0–1) | Shown for Remove gradient (default 0.10) — how smooth/loose the background model is. |
| Strength (0–1) | Shown for Denoise (default 0.50) — how aggressively noise is suppressed. |
| Denoise model | Enabled for Denoise only: Latest (auto) lets GraXpert pick, or pin a specific AI version for reproducibility. |
| Use GPU acceleration | Toggles GPU vs CPU; remembered between sessions. |
| Grip (bottom-left) | Drag to the canvas to mint a GraXpert shortcut with the operation, parameter, model and GPU setting, or drop on an image to run it headlessly. |
.app bundle and SASpro
resolves the binary inside it.SASpro acts as a front-end to the GraXpert CLI: it exports your image, runs the program, and imports the result — without letting GraXpert's file header overwrite your calibration.
On OK, SASpro writes the active image to a temporary 32-bit float TIFF
(clipped to [0,1]), runs GraXpert on it, then reads back the
…_GraXpert.{fits|tif|tiff|png} output and applies it to the
document. If the primary loader can't read GraXpert's output, a fallback reader
recovers the pixels and normalises them to float32 [0,1].
The invocation mirrors GraXpert's documented CLI — background extraction vs denoising, with the matching parameter:
-ai_version is sent only when you pin a model (omitted for
“Latest”), and -batch_size is 4 on GPU, 1 on CPU. The
process runs with a cleaned environment (SASpro's bundled-Python variables are
stripped) so GraXpert launches against its own runtime.
paths/graxpert) if it exists; on macOS a
.app bundle is resolved to its inner binary and the execute bit
is ensured.GraXpert.exe on PATH.graxpert_header) rather than
replacing yours, so astrometry and calibration metadata survive.{op, gpu, smoothing | strength, ai_version}) for the workflow
and grip/headless paths.