Skip to main content

Isotopic and paleoecological data standardisation middleware

Project description

IsoMap

Isotopic and paleoecological data standardisation middleware.

IsoMap is an open-source desktop application that automates the standardisation, validation, and export of legacy isotopic and paleoecological datasets for submission to centralised repositories (Neotoma, IsoArcH, PANGAEA, NOAA NCEI, LiPD).

📖 User Guide — full walkthrough with screenshots, workflow steps, and troubleshooting. 📋 Changelog — version history and release notes.

Features

IsoMap provides a 6-tab wizard interface backed by 8 processing engines:

  • Import Engine: CSV and Excel spreadsheets with automatic encoding detection and type inference.
  • Column Mapping Engine: 6-stage fallback pipeline (exact → preferences → fuzzy → semantic embeddings → Valentine ensemble → distribution profiling) to accurately map source columns to 5 target repository schemas.
  • Chronology Engine: Auto-detects and normalises uncalibrated/calibrated dates to cal_BP with 1950 CE anchor.
  • Spatial Verification Engine: Cleans coordinates, displays on interactive Leaflet map, exports bounding box.
  • Validation Engine: Pandera constraint checking with row-level error tracking against schema definitions.
  • Export Engine: 9 output formats — CSV, Excel, GeoJSON (Neotoma), IsoArcH JSON, LiPD, PANGAEA, NOAA NCEI, RO-Crate, LaTeX data paper.
  • Provenance Engine: PROV-O traceability for reproducible data lineage.
  • Automated Data Papers: Jinja2 ESSD-compliant LaTeX manuscript generation.

Technology Stack

Layer Technology
Desktop shell Tauri v2 (Rust)
Frontend React 19, Vite 7, TypeScript, Leaflet
Backend (sidecar) Python 3.12+, Pandas, Pandera, GeoPandas
ML/NLP SciBERT ONNX (Optimum), RapidFuzz, Valentine
Testing Pytest (backend), Playwright (E2E)

Getting Started

Prerequisites

  • Rust 1.70+rustup.rs
  • Python 3.12+pip install -e ".[dev]"
  • Node.js 20+ with npm

Development

cd ui && npm install        # Frontend dependencies
npm run tauri dev           # Full desktop app with hot-reload
npm run dev                 # Vite frontend only (no Tauri)
cd src-tauri && cargo build # Rust backend only

Testing

pytest tests/               # Python backend (36 tests)
cd ui && npx playwright test # E2E browser tests (6 tests)

Production Build

./scripts/build-sidecar.sh  # PyInstaller standalone binary
cd ui && npm run tauri build # Full desktop app bundle

Bundles output to ui/src-tauri/target/release/bundle/.

Supported Repositories

Schema Repository Fields Required Fields
neotoma_v2 Neotoma 11 SiteName, Latitude, Longitude, TaxonName, Value
isoarch_v1 IsoArcH 10 site_name, latitude, longitude, sample_id, material, d13c
pangaea PANGAEA 20 Event, Latitude, Longitude, Parameter, Value, Unit
noaa NOAA NCEI 24 SiteName, Latitude, Longitude, Proxy, Proxy_Value, Proxy_Unit
lipd LiPD v1.3 24 dataSetName, SiteName, Latitude, Longitude, PaleoData_VariableName, PaleoData_Value, PaleoData_Unit

Add custom schemas in data/schemas/ following the JSON Schema format.

Architecture

React invoke() → Rust Tauri commands → sidecar_rpc() → shell wrapper → Python JSON-RPC

The Rust layer (ui/src-tauri/src/lib.rs) exposes 9 Tauri commands that serialise parameters to JSON-RPC and forward them to the Python sidecar (src/isomap/main.py) via stdin/stdout. The sidecar processes the request and returns a JSON-RPC response.

Key Files

File Purpose
ui/src-tauri/src/lib.rs 9 Tauri commands + sidecar_rpc() JSON-RPC helper
ui/src-tauri/tauri.conf.json App config, window, sidecar external binary
ui/src-tauri/binaries/isomap-sidecar* Platform-specific sidecar wrappers
src/isomap/main.py Python JSON-RPC server (stdin/stdout or CLI mode)
ui/src/api/sidecar.ts Frontend API layer (invoke() calls)
ui/src/App.tsx Main React app with shared wizard state
data/schemas/*.json Repository schema definitions
scripts/build-sidecar.sh PyInstaller sidecar binary builder

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

isomap_desktop-0.2.0.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isomap_desktop-0.2.0-py3-none-any.whl (30.0 kB view details)

Uploaded Python 3

File details

Details for the file isomap_desktop-0.2.0.tar.gz.

File metadata

  • Download URL: isomap_desktop-0.2.0.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for isomap_desktop-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2410bf47a2c28f89f6a538bb398cf70bb751683da0127b4fdd7841d707db8157
MD5 8382610622dd4a3f3aff96f7d19f476c
BLAKE2b-256 d038958323ad956c09cef7bf340c516e6f7e225b8c2e7e3746b4d3163ef1cac9

See more details on using hashes here.

Provenance

The following attestation bundles were made for isomap_desktop-0.2.0.tar.gz:

Publisher: release.yml on mabo-du/IsoMap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file isomap_desktop-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: isomap_desktop-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 30.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for isomap_desktop-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 349055d8aef354b8f1b4eed94dea6382abf0150b5e66010513b4b856a596756f
MD5 3094d762d9a0d3c388e8a363342f4a09
BLAKE2b-256 9734336f0d3911745895cea2d0e3956c1526d511924c2d4d926c3e29d7f7f7de

See more details on using hashes here.

Provenance

The following attestation bundles were made for isomap_desktop-0.2.0-py3-none-any.whl:

Publisher: release.yml on mabo-du/IsoMap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page