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.1.3.tar.gz (131.7 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.1.3-cp311-abi3-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.11+Windows x86-64

rustpix-1.1.3-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.1.3-cp311-abi3-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

rustpix-1.1.3-cp311-abi3-macosx_10_12_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for rustpix-1.1.3.tar.gz
Algorithm Hash digest
SHA256 ec33803b1cf604fa4479d7ab834bdf79f4785f044481017d1f17b13592774912
MD5 eb9720fa4836b3000fd49cd286e8954c
BLAKE2b-256 95d219922ce165a625ea14390e730739f0de84d513bd1a722da74bfff285fc11

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.1.3.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.1.3-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: rustpix-1.1.3-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.1.3-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e69b5ac1452e14790745f670167bd20ebbc6df4e181a9dd3c158d43e93116233
MD5 19c46b74f08cdd9a0805eeb43d255a4d
BLAKE2b-256 fcb6be6bf60490b4076fdad351d3eff8434a7b9ceb27e104cdd8231d8e599d4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.1.3-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.1.3-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rustpix-1.1.3-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fee485d3e0bac52cd179b425141d2dad704f709184c146934b0301e8db918dbe
MD5 83c74cb1d621f9a8d3d4e1d6e02d4e1b
BLAKE2b-256 8826c3314c2db34a21b9eede143199a04fab650ad43aa91daa5eabba1d625104

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.1.3-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.1.3-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rustpix-1.1.3-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 201c85fb432dbdb44b63117583f3964660efff0b4d1caab3471cdfbd56572e7b
MD5 a7a44dea67125856ef2546e211b3fe93
BLAKE2b-256 e6d5191665cd88eef41b9f08edd94fd450c68f71c8f2238af2d201593e889766

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.1.3-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.1.3-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rustpix-1.1.3-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0e2ee3806d95b451cbe2ae4223c5cdb850c480c322d889f793f698e8c42cf038
MD5 1b05300d54ed786d43f1eee96c80bc45
BLAKE2b-256 a590729a4b09fa1c11bd0b3e5c3dd8e662561e9a87277ca85dbc92cc1a9bc128

See more details on using hashes here.

Provenance

The following attestation bundles were made for rustpix-1.1.3-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

1.2.1

5 files

1.2.0

5 files

This release

1.1.3 This release

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