Skip to main content

rustpix

CI Documentation Crates.io PyPI DOI License: MIT

High-performance pixel detector data processing for neutron imaging. Supports Timepix3 (TPX3) with 96M+ hits/sec throughput. Features multiple clustering algorithms, centroid extraction, and Python bindings.

Features

  • Fast TPX3 Processing: Parallel packet parsing with memory-mapped I/O
  • Multiple Clustering Algorithms:
    • ABS (Adjacency-Based Search) - 8-connectivity clustering
    • DBSCAN - Density-based with spatial indexing
    • Graph - Union-find connected components
    • Grid - Parallel grid-based clustering
  • Streaming Architecture: Process files larger than RAM
  • Python Bindings: Thin wrappers with NumPy integration
  • CLI Tool: Command-line interface for batch processing
  • GUI Application: Interactive analysis with real-time visualization
  • Multiple Output Formats: HDF5, Arrow, CSV

Installation

Python (pip)

pip install rustpix

macOS (Homebrew)

brew tap ornlneutronimaging/rustpix
brew install --cask rustpix  # GUI app

Rust (cargo)

# CLI tool
cargo install rustpix-cli

# Library
cargo add rustpix-core rustpix-algorithms

From Source

# Using pixi (recommended)
git clone https://github.com/ornlneutronimaging/rustpix
cd rustpix
pixi install
pixi run build

# Or with cargo
cargo build --release --workspace

Quick Start

Python

import rustpix

# Process TPX3 file to neutron events
config = rustpix.ClusteringConfig(radius=5.0, temporal_window_ns=75.0)
neutrons = rustpix.process_tpx3_neutrons(
    "data.tpx3",
    clustering_config=config,
    algorithm="abs"
)

# Convert to NumPy
data = neutrons.to_numpy()
print(f"Found {len(data['x'])} neutron events")

Command Line

# Process file
rustpix process input.tpx3 -o output.h5

# Show file info
rustpix info input.tpx3

# Benchmark algorithms
rustpix benchmark input.tpx3

GUI Application

Launch the GUI for interactive analysis:

# macOS (Homebrew)
open -a Rustpix

# From source
pixi run gui
cargo run -p rustpix-gui --release

Workspace Structure

Crate Description
rustpix-core Core traits and types
rustpix-tpx TPX3 packet parser and hit types
rustpix-algorithms Clustering algorithms (ABS, DBSCAN, Graph, Grid)
rustpix-io File I/O with memory-mapped reading
rustpix-python Python bindings (PyO3)
rustpix-cli Command-line interface
rustpix-gui GUI application (egui)

Python API

Read Hits

import rustpix

# Read all hits
hits = rustpix.read_tpx3_hits("input.tpx3")
hits_np = hits.to_numpy()

# Stream hits in batches
for batch in rustpix.stream_tpx3_hits("input.tpx3"):
    process(batch.to_numpy())

Process Neutrons

# Configure clustering
clustering = rustpix.ClusteringConfig(
    radius=5.0,
    temporal_window_ns=75.0,
    min_cluster_size=1
)

# Configure centroid extraction
extraction = rustpix.ExtractionConfig(
    super_resolution_factor=8.0,
    weighted_by_tot=True,
    min_tot_threshold=10
)

# Stream processing (low memory)
for batch in rustpix.process_tpx3_neutrons(
    "input.tpx3",
    clustering_config=clustering,
    extraction_config=extraction,
    algorithm="abs"
):
    save_batch(batch.to_numpy())

# Batch processing (collect all)
neutrons = rustpix.process_tpx3_neutrons(
    "input.tpx3",
    clustering_config=clustering,
    extraction_config=extraction,
    algorithm="abs",
    collect=True
)

CLI Usage

# Process with custom parameters
rustpix process input.tpx3 -o output.csv \
    --algorithm dbscan \
    --spatial-epsilon 2.0 \
    --temporal-epsilon 500

# Show file information
rustpix info input.tpx3

# Benchmark different algorithms
rustpix benchmark input.tpx3 --iterations 5

# Convert formats
rustpix convert input.tpx3 -f hdf5 -o output.h5

Performance

  • Throughput: 96M+ hits/sec on modern hardware
  • Memory: Streaming architecture processes files larger than RAM
  • Parallel: Multi-threaded clustering with rayon
  • Optimized: SIMD-friendly data layouts (SoA)

Development

# Install dependencies with pixi
pixi install

# Run tests
pixi run test

# Format and lint
pixi run lint

# Build documentation
pixi run docs

# Run GUI in debug mode
pixi run gui-debug

Documentation

Citation

If you use rustpix in your research, please cite:

@software{rustpix2026,
  title = {rustpix: High-performance pixel detector data processing},
  author = {{ORNL Neutron Imaging Team}},
  year = {2026},
  url = {https://github.com/ornlneutronimaging/rustpix},
  doi = {10.5281/zenodo.18496370}
}

License

MIT License - see LICENSE for details.

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

Acknowledgments

Developed by the Neutron Imaging Team at Oak Ridge National Laboratory.

Download files

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

Source Distribution

rustpix-1.2.1.tar.gz (140.0 kB view details)

Uploaded Source

Built Distributions

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

rustpix-1.2.1-cp311-abi3-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.11+Windows x86-64

rustpix-1.2.1-cp311-abi3-manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ x86-64

rustpix-1.2.1-cp311-abi3-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

rustpix-1.2.1-cp311-abi3-macosx_10_12_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

Details for the file rustpix-1.2.1.tar.gz.

File metadata

  • Download URL: rustpix-1.2.1.tar.gz
  • Upload date:
  • Size: 140.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for rustpix-1.2.1.tar.gz
Algorithm Hash digest
SHA256 551c77195ad79a4303eaba0a881e805e926e7b79f51c146c55391a0b3c52f895
MD5 be1223d9b9828472f7b4b0972a75a2e6
BLAKE2b-256 e321b6fd303d7de8af2dce0a13ae0529d34ba26fdde7e77b6f6c9e0da532fe80

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.2.1.tar.gz:

Publisher: release.yml on ornlneutronimaging/rustpix

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

File details

Details for the file rustpix-1.2.1-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: rustpix-1.2.1-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for rustpix-1.2.1-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cb08738c44491387689ff33b770e56c4fc69d377724a32a79288e286be5b7e1e
MD5 5881b28302e584aeac44f2978c26f421
BLAKE2b-256 35425fbf046d9010343f497f92a97ab70219a717f83da1ae17957fcd6c316b6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.2.1-cp311-abi3-win_amd64.whl:

Publisher: release.yml on ornlneutronimaging/rustpix

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

File details

Details for the file rustpix-1.2.1-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rustpix-1.2.1-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a77585eed851f562fcba4770df3996f5b97312dcae405fa624765311e74ff68d
MD5 be77dde893c0ef80b38dea48eda036f5
BLAKE2b-256 a5fe8304b4953235fe7a41e7f4b2a8debd859d679f7cad1f6567441db71cdef8

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.2.1-cp311-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on ornlneutronimaging/rustpix

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

File details

Details for the file rustpix-1.2.1-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustpix-1.2.1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dda2d98d12c6f76200994c6afbe23ca788153ba9467fafb227712bcccc13bd22
MD5 b7bb3994f4588d734ad01c5d699caa0e
BLAKE2b-256 d06bdb991e18360d79b03467101cbe3b8217fe1520f56da84fea9503b696fba8

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.2.1-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on ornlneutronimaging/rustpix

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

File details

Details for the file rustpix-1.2.1-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rustpix-1.2.1-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a941be4b85cc805958be844402b32a781833b6bda94a989556fc27032234172b
MD5 69ad3d1c3687b19c633c573e5ca1de26
BLAKE2b-256 8782692938478b84df5aeced5ff17195be39b9ced6093dff88705fd4810e7146

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.2.1-cp311-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on ornlneutronimaging/rustpix

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

Release history Release notifications | RSS feed

This release

1.2.1 This release

5 files

1.2.0

5 files

1.1.3

5 files

1.1.2

5 files

1.1.1

5 files

1.1.0

5 files

1.0.5

5 files

1.0.4

5 files

1.0.3

5 files

1.0.2

5 files

1.0.1

4 files

0.1.0

2 files

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