Skip to main content

NUScope-TOMO

Open FIB-SEM slice-and-view tomography — from raw slices to quantified, chemically resolved 3D microstructure.

Created by Roberto dos Reis (@rmsreis) · NUANCE Center, Northwestern University · NUANCE-IT/NUScope-TOMO

NUScope-TOMO is an open alternative to Thermo Fisher Avizo for FIB-SEM in materials science. It covers import, pre-processing (with a guided FIB-SEM wizard), AI segmentation, quantification, triple-phase boundaries, pore/particle networks, transport simulation, visualization/animation and recipes. It also adds correlative EDS chemistry. Everything is available as code, as reproducible YAML recipes and in a browser-based UI. PLAN.md maps each Avizo capability to its module.

Phase surfaces with cut-away Particles coloured by size

FIB-SEM sample 335 (812 slices, 20 × 5 × 5 nm voxels) processed by examples/fib_sem_335.yaml in under 5 minutes: dark phase with a grey-value cut-away (left) and 1 414 separated particles coloured by equivalent diameter (right).

Simulated diffusion through the grey phase Particle contact network

Materials analyses: steady-state diffusion through the matrix phase (left, tortuosity factor 1.4 along Z, 3.8–3.9 across) and the contact network of the dark-phase particles (right, mean coordination 3.0).

Stage What you get
Import TIFF/PNG folders (natural sort), multipage TIFF, Thermo Fisher pixel-size tags, streamed into chunked Zarr v3, so stacks larger than RAM are fine
Pre-processing block-face auto-crop (Pt cap / trench / padding), multi-baseline drift solve with already-registered detection, wavelet–FFT curtain removal, shading flattening, slice brightness normalisation, NLM / TV / anisotropic 3D denoising, binning, isotropic resampling, 52° tilt calibration
Segmentation Otsu / multi-Otsu / hysteresis, random-forest classifier trained from a few scribbles (41 multi-scale features), majority smoothing, watershed separation of touching particles
Quantification per object: volume, surface area, equivalent diameter, sphericity, solidity, Feret, ellipsoid axes, elongation/flatness, orientation, nearest neighbour, intensity/element means. Per phase: volume fraction, specific surface, interface density, Euler number, percolation, geodesic tortuosity, continuous size distribution
Materials analyses triple-phase boundary length density (total / active), steady-state diffusion & conduction solver (D_eff/D₀, tortuosity factor, MacMullin number; Avizo XLab counterpart), pore- and particle-network model (throat/contact sizes, coordination numbers)
Beyond Avizo data-health inspector (per-slice SNR, sharpness, curtaining, drift, blank/duplicate slices, automatic slice-thickness check), uncertainty on every number (integral-range sampling error, ±1-voxel segmentation sensitivity, representative-volume size), live acquisition mode (nuscope-tomo watch: analyse while the FIB mills, tells you when precision is reached), self-supervised Noise2Void denoising and a 2.5D U-Net trained from scribbles (Apple MPS / CUDA). See docs/IDEAS.md
Acquisition & experiment design acquisition advisor (pixel size, slice thickness from feature sizes and an empirical "would coarser sampling change the answer?" test; depth / field of view for a target precision), cohort comparison (nuscope-tomo compare: sampling-aware statistics, Holm correction, minimum detectable difference, volume needed to detect it)
Sparse & fused chemistry context-driven sparse EDS by deep kernel learning (after Kalinin, Ziatdinov et al.) with SE and BSE context; coupled-NMF pan-sharpening of a coarse EDS map with physically linked high-resolution channels (BSE, Castaing's rule; after Borodinov, Kalinin, Ovchinnikova et al., npj Comput. Mater. 2019); benchmark with SE-invisible chemistry
Self-driving slice-and-view agent that refocuses, corrects drift, adapts dwell and slice thickness, takes sparse EDS and stops at the requested precision; Thermo Fisher AutoScript backend (dry-run by default, arming phrase, safety limits; not yet run on hardware), digital twin built from your own data, shadow mode that records the AutoScript calls an autonomous run would issue
Chemistry (EDS) element-map stacks → registration to SE → 3D composition → unsupervised chemical phases (k-means / GMM / NMF) → composition per SE phase or object; forward simulator for validation
Visualization GPU renders (volume, phase surfaces with cut-away, objects coloured by any measurement), turntable MP4s, figure panels with true aspect and scale bars
Studio NUScope-TOMO Studio, a browser application: project home with pipeline status and key results; viewer (linked XY/XZ/YZ + WebGL 3D, layouts, voxel/phase readout, keyboard shortcuts); FIB-SEM Wizard; scribble annotation → random forest or U-Net; Measure, Confidence, Chemistry and Acquire workspaces with interactive charts; self-driving twin runs with live charts and a stop button; ⌘K search over pages, data and operations; light and dark themes. Every action is recorded as a recipe
Recipes YAML pipelines, nuscope-tomo run; every step logged with parameters, timings and library versions in provenance.json

Install

pip install nuscope-tomo            # or "nuscope-tomo[ai]" for Noise2Void / U-Net (PyTorch)

For development, in a clone: uv pip install -e ".[dev]". With NUScope installed, the same commands are also available as nuscope tomo .... With NUANCE-MCP installed, NUScope-TOMO adds tools for tomography projects (tomo_project, tomo_table, tomo_volume, tomo_phase_fractions, tomo_ops, tomo_run, tomo_job).

Use

nuscope-tomo run examples/fib_sem_335.yaml          # full pipeline on a slice-and-view stack
nuscope-tomo studio projects/fib_sem_335            # open http://127.0.0.1:8765
nuscope-tomo ops                                    # list operations and parameters
nuscope-tomo watch /acq/folder -p projects/run --voxel 20 5 5 --model rf.pkl   # live mode
python examples/beyond_avizo.py                # data health, Noise2Void, U-Net, RVE
nuscope-tomo compare A=projects/a/run B=projects/b/run --out cohort
python examples/chemical_fusion.py             # sparse DKL vs pan-sharpening benchmark
python examples/self_driving.py agent          # autonomous run on the digital twin
python examples/showcase.py                    # figures, renders and animation

From Python:

from nuscope_tomo import Volume
from nuscope_tomo.preprocess import auto_crop, align, destripe, denoise_nlm
from nuscope_tomo.segment import random_forest
from nuscope_tomo.analyze import measure_objects

vol = Volume.from_zarr("raw.zarr")
vol = denoise_nlm(destripe(align(auto_crop(vol))["volume"]))
phases = random_forest(vol, scribbles="annotations.json", classes=3)["volume"]

Remote use: run nuscope-tomo studio --host 0.0.0.0 on the workstation that holds the data and open it from any laptop. The browser only receives slices and a downsampled 3D preview.

Design notes

  • Out-of-core first. Volumes are Dask arrays over Zarr; slice-wise operations stream. Connected components, watershed and surface meshing run in memory, on a binned volume or an ROI for very large data.
  • Anisotropy everywhere. FIB-SEM voxels are typically 5–10 nm in XY and 10–50 nm in Z. Distances, filters, surface areas and renders all use physical spacing.
  • Validated against ground truth. pytest runs 26 tests on synthetic phantoms. They cover drift recovery, stripe removal, sphere volume, area and sphericity (within 1–2 %), percolation and tortuosity, random-forest accuracy, watershed splitting, TPB length on a straight triple line, transport through a straight channel (τ = 1, D_eff = ε), the neck of two fused spheres, slice-thickness detection, integral-range error prediction, Noise2Void, U-Net, live ingestion, the advisor, cohort statistics, sparse DKL, pan-sharpening, the AutoScript dry-run and safety guards, the agent on a twin, EDS registration and phase recovery, the recipe engine and the Studio API.
  • Honest alignment. Correlation cannot separate stage drift from microstructure that is inclined to the milling axis, which is especially a problem with thick slices. align therefore detects stacks that are already registered and leaves them alone, and supports fiducial ROIs and a high-pass drift model.

Project layout

nuscope_tomo/
  core/        Volume, operation registry, recipes + provenance
  io/          slice import/export
  preprocess/  geometry, alignment, artifact correction, denoising
  segment/     thresholds, random-forest classifier, object separation
  analyze/     object morphometry, phase metrics
  chem/        EDS chemical tomography (+ simulator)
  viz/         GPU rendering, animation, figures
  studio/      FastAPI server + WebGL2 front-end
  cli.py       `nuscope` command
examples/      recipe for the sample dataset, showcase script
tests/         ground-truth tests

See PLAN.md for the Avizo feature map and roadmap: U-Net segmentation, Noise2Void, 3D multi-volume registration, permeability, native .h5oina / .bcf EDS readers.

Licence

MIT, see LICENSE. Copyright (c) 2026 Roberto dos Reis (@rmsreis).

Citation

If NUScope-TOMO helps your research, please cite it using CITATION.cff. Author: Roberto dos Reis (@rmsreis).

Metadata

Release files for nuscope-tomo 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nuscope-tomo 0.3.2
File Size Uploaded Provenance Actions
nuscope_tomo-0.3.2.tar.gz 149.0 kB With provenance Details for nuscope_tomo-0.3.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nuscope-tomo 0.3.2
File Interpreter ABI Platform Actions
nuscope_tomo-0.3.2-py3-none-any.whl Python 3 none any Details for nuscope_tomo-0.3.2-py3-none-any.whl

Total release size: 310.1 kB

Release files / nuscope_tomo-0.3.2.tar.gz

Download URL nuscope_tomo-0.3.2.tar.gz
Size 149.0 kB
Tags Source
SHA-256 checksum
How to use checksums
a9316f6a37c4ae5acfe8a89b98df5529ef86ea19f7b82678c19f9b40589795d7
BLAKE2b-256 checksum
How to use checksums
172961e96385bdece92a0085c4c0e434d27ce9f13ed9e4a1b12eb236d0be0fef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / nuscope_tomo-0.3.2-py3-none-any.whl

Download URL nuscope_tomo-0.3.2-py3-none-any.whl
Size 161.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
861d18cce21c55c299f81e0dcafa31c4246d8e012132d4c9cedb20c7c9f7b7a2
BLAKE2b-256 checksum
How to use checksums
31432df398da0529077159d04cf1aee0f59fb77cb7894ea678759f68f313d955
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Security for nuscope-tomo 0.3.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nuscope_tomo-0.3.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page