2026-04-16 21:37:03 -07:00
2026-04-04 20:45:27 -07:00
2026-04-16 01:14:57 -07:00
2026-03-30 20:33:28 -07:00
2026-04-16 01:14:57 -07:00
2026-04-16 21:37:03 -07:00
2026-03-29 22:51:58 -07:00
2026-03-29 23:40:07 -07:00
2026-04-04 23:14:17 -07:00
2026-04-16 01:14:57 -07:00
2026-03-29 22:51:58 -07:00
2026-03-31 21:20:39 -07:00
2026-03-29 22:51:58 -07:00
2026-04-04 21:48:08 -07:00
2026-04-01 23:07:05 -07:00
2026-04-04 01:24:06 -07:00
2026-03-28 00:21:37 -07:00
2026-04-04 21:48:08 -07:00
2026-04-04 15:30:22 -07:00

Build Tests

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 dev:all   # one terminal — starts the Python backend and the Vite dev server together

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

Description
tono-spm.com
Readme GPL-2.0 114 MiB
Languages
Python 67.8%
TypeScript 24%
JavaScript 4.4%
CSS 3.5%
Shell 0.2%
Other 0.1%