tono
tono is a node-based SPM image processing and analysis tool. The main focus is on topographical measurements.
It is heavily inspired by Gwyddion, one of my favorite scientific FOSS programs on the web.
Quick start
Install a local binary from the Releases section, or run locally:
# Installation
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[server,dev]"
npm install
# Running the servers
npm run backend # terminal 1 — Python server at http://127.0.0.1:8188
npm run dev # terminal 2 — Vite dev server, open the URL it prints
Self-hosting
git clone https://github.com/VIPQualityPost/tono.git && cd tono
python -m venv .venv && source .venv/bin/activate
pip install -e ".[server]"
cd frontend && npm ci && npm run build && cd ..
TONO_HOST=0.0.0.0 python -m backend.main
See Self-Hosting for reverse proxy setup, environment variables, and configuration.
Python library
tono's processing nodes can also be used as a standalone Python library — no server needed:
pip install -e .
import tono
fields = tono.load("scan.gwy")
leveled = tono.apply("PlaneLevelField", fields[0])
filtered = tono.apply("GaussianFilter", leveled, sigma=2.0)
See Library Usage for the full API and more examples.
Docs
- Building — setup, dev mode, web deployment, and native desktop builds for macOS, Linux, and Windows
- Self-Hosting — deploying tono on a server
- Library Usage — using tono as a Python signal processing library
- Plugins — writing and uploading custom node plugins
- Testing — running tests and writing new ones
Project plans
-
Please help with providing demo files for validating importers!
-
Please try making weird workflows to see what breaks or does not flow nicely
-
Adding support for force curves
-
Adding general support for spectroscopic data
-
Adding general support for spectroscopic volumes
-
Adding more generic numerical operations and visualisations