Skip to main content

A fast reader for SLD Jazelle files.

Project description

Jazelle Reader

Publish to PyPI PyPI version PyPI - Python Version PyPI - Downloads GitHub license

A modern, high-performance Python reader for SLD Jazelle files with multi-threaded parallel processing and conversion to modern data formats.

Jazelle reader resurrects legacy particle physics data from the Stanford Linear Collider Detector (SLD) experiment by translating the original java-based Jazelle format reader into a modern, efficient C++20 implementation with seamless Python integration. Built for performance and usability, it enables researchers to work with decades-old experimental data using contemporary analysis tools and workflows.

๐ŸŽฏ Motivation

The Stanford Linear Collider Detector (SLD) at SLAC produced invaluable particle physics data in a custom binary format called "Jazelle" during its operational years. As part of an effort to resurrect old experiments via LLM agents, we need to make this historical data accessible in modern formats like HDF5, Parquet, and Awkward Arrays for contemporary analysis pipelines.

The original Jazelle reader was written in Fortran (later translated to Java, see repository from Tony Johnson), posing challenges for integration with modern Python-based physics analysis ecosystems. This project bridges that gap by:

  • Modernizing the codebase: Complete rewrite in C++20 with modern best practices
  • Maximizing performance: Multi-threaded parallel processing with lock-free queues
  • Enabling interoperability: Native Python bindings via Cython for seamless integration
  • Supporting modern formats: Direct conversion to HDF5, Parquet, Feather, and more
  • Preserving data integrity: Faithful implementation of the original Jazelle format specification
  • Production-ready infrastructure: CI/CD pipeline with automated testing, benchmarking, and multi-platform wheel building

โœจ Key Features

๐Ÿš€ High Performance

  • Modern C++20 core with optimized binary I/O and VAX floating-point conversion
  • Multi-threaded parallel reading with configurable thread pools
  • Efficient batching system achieving high throughput at moderate batch sizes
  • Memory-efficient streaming for processing files larger than available RAM
  • Lock-free queues for thread-safe parallel event processing

๐Ÿ”„ Format Conversion

  • HDF5: Industry-standard hierarchical data format with compression
  • Parquet: Columnar storage for efficient analytics
  • Feather: Fast binary format for data frames
  • JSON: Human-readable interchange format
  • NumPy arrays: Direct memory mapping for analysis
  • Awkward Arrays: Jagged array support for variable-length data

๐Ÿ Pythonic API

  • Clean, intuitive interface following Python best practices
  • Rich display system with HTML rendering in Jupyter notebooks
  • Iterator protocol support for memory-efficient sequential processing
  • Random access with intuitive indexing: file[42]
  • Context managers for automatic resource cleanup
  • Type hints for better IDE support

๐Ÿ› ๏ธ Command-Line Interface

Powerful CLI tool accessible via jazelle command:

  • inspect: View file metadata and statistics
  • read: Examine specific events with wildcard filtering
  • convert: Multi-threaded export to modern formats

๐Ÿ”ง Modern Development Infrastructure

  • CI/CD Pipeline: Automated testing and deployment via GitHub Actions
  • Multi-platform Wheels: Pre-built binaries for Linux, macOS, and Windows
  • Comprehensive Testing: Unit tests for both C++ and Python codebases
  • Performance Benchmarks: Automated benchmarking suite for regression testing
  • Type Safety: Full type hints for Python API
  • Documentation: Inline docstrings and tutorial notebooks

๐Ÿ“Š Advanced Features

  • Comprehensive display system: HTML and ASCII rendering for events and families
  • Event slicing: Extract subsets with start and count parameters
  • Family filtering: Select specific detector banks for analysis
  • Flexible compression: Customizable compression levels for output formats

๐Ÿ“ฆ Installation

Quick Install from PyPI

pip install jazelle

With Optional Dependencies

# For HDF5 support
pip install jazelle h5py

# For Parquet support
pip install jazelle pyarrow

# For Awkward array support
pip install jazelle awkward

# For all format support
pip install jazelle h5py pyarrow awkward

From Source

Note: Building from source requires a C++20 compatible compiler (GCC โ‰ฅ 10, Clang โ‰ฅ 11, MSVC โ‰ฅ 19.29).

git clone https://github.com/AlkaidCheng/jazelle_reader.git
cd jazelle_reader
pip install -e .

Requirements

  • Python: โ‰ฅ 3.8
  • NumPy: โ‰ฅ 1.20
  • Optional: h5py (HDF5), pyarrow (Parquet), awkward (analysis)

For source builds only:

  • C++ Compiler: C++20 compatible (GCC โ‰ฅ 10, Clang โ‰ฅ 11, MSVC โ‰ฅ 19.29)

๐Ÿ“– Tutorials

We provide comprehensive Jupyter notebooks in the examples/ directory to help you get started:

  • T01_Quickstart.ipynb: The basics of opening files, iterating events, inspecting headers, and exporting data.

  • T02_Z_Boson_Reconstruction.ipynb: A simple physics analysis demo. Learn how to reconstruct the Z boson resonance peak from lepton pairs using awkward arrays with vector and visualize it with quickstats.

๐Ÿš€ Quick Start

Basic Reading

import jazelle

# Open a Jazelle file
with jazelle.open(filepath) as f:
    # Get file information
    print(f"Total events: {len(f)}")
    
    # Read first event
    event = f.read()
    print(f"Run: {event.ieventh.run}, Event: {event.ieventh.event}")
    
    # Access physics summary
    if event.phpsum.size > 0:
        print(f"  Particle charge: {event.phpsum[0].charge}")
        print(f"  Particle x-position: {event.phpsum[0].x:.3f}")
        print(f"  Particle momentum: {event.phpsum[0].getPTot()}")

Parallel Processing

# Read all events with multi-threading
with jazelle.open('data.jazelle') as f:
    events = f.read_batch(num_threads=8)
    print(f"Read {len(events)} events")

# Process in batches (memory efficient for large files)
with jazelle.open('data.jazelle') as f:
    for batch in f.iterate(batch_size=1000, num_threads=8):
        # Analyze batch
        total_charged = sum(len(evt.phchrg) for evt in batch)
        total_clusters = sum(len(evt.phklus) for evt in batch)
        print(f"Batch: {total_charged} charged tracks, {total_clusters} clusters")

Convert to Modern Formats

# Convert to HDF5
with jazelle.open('input.jazelle') as f:
    f.to_hdf5('output.h5', num_threads=8, compression='gzip', compression_opts=4)

# Convert to Parquet (fastest for analytics)
with jazelle.open('input.jazelle') as f:
    f.to_parquet('output.parquet', num_threads=8)

# Convert to Feather (fast binary format)
with jazelle.open('input.jazelle') as f:
    f.to_feather('output.feather', num_threads=8)

# Convert specific event range
with jazelle.open('input.jazelle') as f:
    f.to_hdf5('output.h5', start=0, count=1000, num_threads=16)

NumPy and Awkward Arrays

# Get data as flat NumPy arrays
with jazelle.open('data.jazelle') as f:
    data = f.to_dict()
    
    # Access PHCHRG (particle tracks) data as structured arrays
    charges = data['PHCHRG']['charge']  # 1D array
    charged_particles = data['PHCHRG']['hlxpar']       # 2D array (N, 6)
    pT  = 1 / data['PHCHRG']['hlxpar'][:, 1]
    nhits = data['PHCHRG']['nhit']      # Number of hits per track
    
    print(f"Total charged particles: {len(charges)}")
    print(f"Mean momentum magnitude: {pT.mean():.2f} GeV")
    pT_split_events = np.split(pT, data['PHCHRG']['_offsets'][1:-1])
    pT_mean_event = np.mean([np.sum(pT_event) for pT_event in pT_split_events])
    print(f"Mean of total momentum per event: {pT_mean_event:.2f} GeV")

# Get data as Awkward Arrays (for jagged data)
with jazelle.open('data.jazelle') as f:
    arrays = f.to_arrays()
    
    # Awkward arrays handle variable-length data naturally
    n_charged = ak.num(arrays['PHCHRG']['charge'])
    print(f"Events with >10 charged tracks: {ak.sum(n_charged > 10)}")

Random Access and Slicing

with jazelle.open('data.jazelle') as f:
    # Access specific event
    event = f[42]
    
    # Slice notation
    first_100 = f.read_batch(start=0, count=100)
    
    # Last 50 events
    last_50 = f.read_batch(start=len(f)-50, count=50)

๐Ÿ–ฅ๏ธ Command-Line Interface

Inspect File Metadata

# Show file summary with first 10 events
jazelle inspect data.jazelle

# Show first 20 events
jazelle inspect data.jazelle --lines 20

# Show last 5 events
jazelle inspect data.jazelle --lines 5 --tail

# Show specific bank counts in table
jazelle inspect data.jazelle --banks PHPSUM PHCHRG PHKLUS

# Use wildcard patterns for banks
jazelle inspect data.jazelle --banks "PH*"

Read and Display Events

# Read first event (index 0)
jazelle read data.jazelle

# Read specific event by index
jazelle read data.jazelle --index 42

# Read last event (negative indexing)
jazelle read data.jazelle --index -1

# Show specific bank families
jazelle read data.jazelle --index 0 --banks PHPSUM PHCHRG

# Use wildcard patterns
jazelle read data.jazelle --index 0 --banks "PH*"

# Limit output lines
jazelle read data.jazelle --index 0 --limit 100 --banks "*"

# Customize display
jazelle read data.jazelle --index 0  --banks "*" --display-options "max_rows=20,float_precision=2"

Convert Formats

# Convert to HDF5 (format inferred from extension)
jazelle convert -i data.jazelle -o output.h5 --threads 8

# Convert to Parquet
jazelle convert -i data.jazelle -o output.parquet --threads 8

# Convert to JSON
jazelle convert -i data.jazelle -o output.json

# Convert specific event range
jazelle convert -i data.jazelle -o output.h5 --start 100 --count 1000

# Optimize batch size for memory usage
jazelle convert -i data.jazelle -o output.h5 --batch-size 2000 --threads 16

# Convert all events (default)
jazelle convert -i data.jazelle -o output.parquet --threads 8

๐Ÿ“Š Performance Benchmarks

Benchmarks performed on a 16-core workstation with a 9,994-event Jazelle file (~130 MB).

Batch Size Impact (8 threads)

Batch Size Throughput (kHz) Speedup vs. Single
1 0.49 1.0ร—
100 31.26 63.3ร—
500 48.06 97.4ร—
1000 49.13 99.6ร—
5000 40.02 81.1ร—
9994 (all) 52.59 106.6ร—

Optimal batch size: 1000 events provides the best balance of throughput and memory usage.

Threading Scalability (batch size 1000)

Threads Throughput (kHz) Speedup vs. Single Thread
1 26.92 1.0ร—
2 42.14 1.57ร—
4 57.76 2.15ร—
8 67.43 2.50ร—
16 45.79 1.70ร—
32+ ~40-45 ~1.5-1.7ร—

Optimal thread count: 8 threads on this system. Performance degrades beyond this due to overhead and resource contention.

Format Conversion Performance

Format Throughput (kHz) Mean Time (s) Use Case
Iteration (Batched) 74.98 0.133 Internal processing
Iteration (Sequential) 63.75 0.157 Simple loops
Awkward Array 38.84 0.257 Jagged data analysis
To Dict (NumPy) 29.29 0.341 Array-based analysis
Feather 29.57 0.338 Fast binary I/O
Parquet 10.02 0.998 Columnar analytics
HDF5 3.65 2.736 Hierarchical data
JSON 0.28 35.24 Human-readable export

Key Insight: Parquet provides the best balance of performance and analytics capability, while JSON should only be used for small datasets or human inspection.

๐Ÿ—๏ธ Architecture

Design Philosophy

Jazelle_reader follows a layered architecture that separates concerns and maximizes performance:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      Python User API                        โ”‚
โ”‚  (JazelleFile, events, families, display, streaming)        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                      Cython Bindings                        โ”‚
โ”‚  (Type conversion, memory management, GIL handling)         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                  C++20 Core Engine                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚
โ”‚  โ”‚  JazelleFile: File management & parallel reading    โ”‚    โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”‚
โ”‚  โ”‚  JazelleEvent: Event container & bank access        โ”‚    โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”‚
โ”‚  โ”‚  Family<T>: Type-safe bank management               โ”‚    โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”‚
โ”‚  โ”‚  Banks: IEVENTH, MCPART, PHCHRG, ...                โ”‚    โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”‚
โ”‚  โ”‚  JazelleStream: Binary I/O & VAX conversion         โ”‚    โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค    โ”‚
โ”‚  โ”‚  Threading: Lock-free queues, thread pools          โ”‚    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Components

1. C++ Core Engine

  • JazelleFile: Main interface for file operations, handles multi-threading
  • JazelleEvent: Event container with lazy bank loading
  • JazelleStream: Low-level binary I/O with VAX floating-point support
  • Family: Template-based bank manager for type safety
  • Bank Classes: Concrete implementations (IEVENTH, MCPART, PHCHRG, etc.)

2. Python Bindings

  • Cython wrapper: Zero-copy data transfer where possible
  • Memory management: Automatic cleanup with context managers
  • NumPy integration: Direct buffer access for efficiency
  • Display system: Rich HTML and ASCII rendering

3. Format Streamers

  • Modular design: Each format has dedicated read/write streamer
  • Interoperability: Seamless conversion between formats
  • Optimization: Format-specific optimizations (e.g., columnar for Parquet)

Data Flow

Jazelle Binary File
       โ”‚
       โ”œโ”€โ†’ [C++ JazelleStream] โ”€โ†’ Binary parsing
       โ”‚                           VAX float conversion
       โ”‚
       โ”œโ”€โ†’ [C++ JazelleEvent] โ”€โ†’ Event construction
       โ”‚                          Bank instantiation
       โ”‚
       โ”œโ”€โ†’ [Cython Bindings] โ”€โ†’ Python object wrapping
       โ”‚                         Memory views
       โ”‚
       โ””โ”€โ†’ [Python API] โ”€โ†’ NumPy arrays
                          Awkward arrays
                          Pandas DataFrames
                          HDF5/Parquet/Feather

๐Ÿ“š Data Structure

Jazelle Format Overview

Jazelle files store event data in a binary format with logical and physical records:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Jazelle File                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Physical Record 1: [Header] [Logical Records...]       โ”‚
โ”‚  Physical Record 2: [Header] [Logical Records...]       โ”‚
โ”‚  ...                                                    โ”‚
โ”‚  Physical Record N: [Header] [Logical Records...]       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Each Event contains multiple Banks organized by Family:

Event
โ”œโ”€โ”€ IEVENTH (Event Header)
โ”‚   โ”œโ”€โ”€ run, event, evttime, trigger, ...
โ”‚
โ”œโ”€โ”€ PHBM (Beam Information)
โ”‚   โ”œโ”€โ”€ ecm (Center of mass energy)
โ”‚   โ”œโ”€โ”€ pol (Beam polarization)
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ MCHEAD & MCPART (Monte Carlo Truth)
โ”‚   โ”œโ”€โ”€ MCHEAD: origin, ipx, ipy, ipz
โ”‚   โ””โ”€โ”€ MCPART: p[3], e, ptype, charge, parent_id, ...
โ”‚
โ”œโ”€โ”€ PHCHRG (Charged Tracks)
โ”‚   โ”œโ”€โ”€ hlxpar[6] (Helix parameters)
โ”‚   โ”œโ”€โ”€ dhlxpar[15] (Error matrix)
โ”‚   โ”œโ”€โ”€ nhit, chi2, dedx, ...
โ”‚
โ”œโ”€โ”€ PHKLUS (Calorimeter Clusters)
โ”‚   โ”œโ”€โ”€ eraw (Raw energy)
โ”‚   โ”œโ”€โ”€ elayer[8] (Energy per layer)
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ PHCRID, PHWIC, PHKELID (Particle ID Subsystems)
โ”‚   โ”œโ”€โ”€ PHCRID: Cherenkov ring likelihoods
โ”‚   โ”œโ”€โ”€ PHWIC: Muon iron tracking
โ”‚   โ””โ”€โ”€ PHKELID: Electron calorimeter matching
โ”‚
โ””โ”€โ”€ Relational Tables
    โ”œโ”€โ”€ PHPOINT: Master pointers between sub-systems
    โ””โ”€โ”€ PHKCHRG: Track-to-Cluster matching kinematics

Available Bank Families and Field Descriptions

Comprehensive Bank Dictionary

Below is the definitive reference for all physics banks successfully extracted and exposed to the Python/NumPy API via the Cython bindings. All multi-dimensional arrays (like hlxpar[6]) are exposed as 2D NumPy arrays (N x D) in the batched outputs. Every bank automatically includes a unique id field (int32).

Bank Family Field Name Data Type Description
IEVENTH run / event int32 SLD Run number and Event number.
(Event Header) evttime int64 UTC Timestamp of the event creation.
evttype int32 Event generation type (0=PHYSICS, 1=TRUTH, 2=FASTMC, etc.).
trigger int32 Hardware trigger mask for the readout.
weight float32 Event weight (1.0 for real data).
header int32 Internal Jazelle pointer to the header bank.
PHBM ecm / decm float32 Center of mass energy (GeV) and its uncertainty.
(Beam Info) pol / dpol float32 Average Compton beam polarization magnitude and error.
pos / dpos float32[3,6] Interaction point (X, Y, Z) and symmetric error matrix.
PHPSUM px, py, pz float32 Total momentum vector summary.
(Physics Sum) x, y, z float32 Geometric event vertex summary.
charge float32 Total measured charge.
status int32 Reconstruction status flag.
ptot float64 Total scalar momentum magnitude.
MCHEAD ntot int32 Total number of final state particles generated.
(MC Header) origin int32 Origin process bitmask (e.g., Z -> uubar, Z -> mumu).
ipx, ipy, ipz float32 Simulated primary vertex momentum.
MCPART ptype int32 LUND/PDG Particle Identification Code.
(MC Truth) p / ptot / e float32[3,1,1] True (X,Y,Z) momentum, scalar momentum, and total energy.
charge float32 True electric charge.
origin int32 Simulation history bitmask (decayed, interacted, stopped).
parent_id int32 Relational ID pointing to the parent MCPART bank.
xt float32[3] True (X,Y,Z) spatial termination or decay coordinate.
PHCHRG hlxpar float32[6] Helix parameters: phi, 1/pt, tan(lambda), x, y, z.
(Charged Track) dhlxpar float32[15] 5x5 symmetric error matrix for the helix fit.
bnorm / b3norm float32 2D and 3D Impact parameters (Distance of closest approach).
impact / impact3 float32 Significance/error of the 2D and 3D impact parameters.
charge int16 Reconstructed charge (+1 or -1).
smwstat / status int16/int32 Track swimming status and general reconstruction status.
tkpar0 float32 Reference point parameter for the track fit.
tkpar / dtkpar float32[5,15] Alternative track fit parameters and 5x5 error matrix.
length float32 Total reconstructed arc length of the track.
chi2dt / ndfdt float32/int16 Chi-squared and Degrees of Freedom for the tracking fit.
imc int16 Pointer/Match to corresponding MCPART (for MC).
nhit / nhite int16 Total tracker hits and Number of expected hits.
nhitp / nmisht int16 Hits used in the final fit and Number of missing hits.
nwrght / nhitv int16 Wrong/noise hits and Vertex Detector (VXD) specific hits.
chi2 / chi2v float32 Overall track chi-squared and VXD-specific chi-squared.
vxdhit int32 Bitmask indicating which VXD layers were hit.
mustat / estat int16 Muon (WIC) and Electron (Calorimeter) matching status.
dedx int32 Encoded dE/dx (ionization energy loss) for PID.
PHKLUS status int32 Cluster quality and region status.
(Calo Cluster) eraw float32 Raw, uncalibrated energy sum of the calorimeter cluster.
cth / wcth float32 Geometric vs. Energy-weighted cosine(theta) of centroid.
phi / wphi float32 Geometric vs. Energy-weighted azimuthal angle.
elayer float32[8] Energy deposited at specific depths (EM1, EM2, HAD1, etc.).
nhit2 / nhit3 int32 Hit counts isolated to EM and Hadronic sub-clusters.
cth2 / wcth2 float32 Geometric vs. Energy-weighted cosine(theta) for EM.
phi2 / whphi2 float32 Geometric vs. Energy-weighted phi for EM.
cth3 / wcth3 float32 Geometric vs. Energy-weighted cosine(theta) for Hadronic.
phi3 / wphi3 float32 Geometric vs. Energy-weighted phi for Hadronic.
PHWIC idstat int16 Muon identification status and quality flag.
(Muon Iron) nhit / nhit45 int16 Total WIC layers hit and specific 45-degree stereo hits.
npat / nhitpat int16 Distinct patterns found and hits in primary pattern.
syshit int16 System bitmask (barrel, endcap, octants).
qpinit float32 Initial momentum (q/p) expected as it enters the WIC.
t1, t2, t3 float32 Trajectory parameters.
hitmiss int32 Bitmask of expected vs. actual layer hits.
itrlen float32 Total interaction length (iron amount) penetrated.
nlayexp / nlaybey int16 Expected layers hit vs. punch-through layers hit.
missprob float32 Probability of hadron punch-through misidentified as muon.
phwicid int32 WIC internal cluster ID.
nhitshar / nother int16 WIC hits shared with another track / hits not assigned.
hitsused int32 Mask of hits used in the internal WIC track fit.
pref1 float32[3] Reference point (X, Y, Z) for the internal WIC track.
pfit / dpfit float32[4,10] WIC-only track fit parameters and error matrix.
chi2 / ndf float32/int16 Chi-squared and Degrees of Freedom for WIC internal fit.
punfit int16 Points deemed unusable and discarded.
matchChi2/matchNdf float32/int16 Chi-squared and NDF of geometric match to CDC track.
PHCRID ctlword int32 Control word defining successfully read sub-components.
(Cherenkov PID) norm float32 Normalization factor for the likelihood calculations.
rc / geom int16 Global reconstruction return code and geometry region.
trkp int16 Track momentum bin/flag used during ring resolution.
nhits int16 Total Cherenkov photons (Liquid + Gas) for the track.
liq_* fields int16/int32 rc, nhits, besthyp, nhexp, nhfnd, nhbkg, mskphot (Liquid).
gas_* fields int16/int32 rc, nhits, besthyp, nhexp, nhfnd, nhbkg, mskphot (Gas).
llik_e,mu,pi,k,p float32 Final combined Log-Likelihoods for PID mass hypotheses.
PHKELID phchrg_id int32 Relational pointer to the parent PHCHRG track.
(Electron PID) idstat / prob int16 Electron ID status and computed probability.
phi / theta float32 Azimuthal and Polar angles at the calorimeter face.
qp float32 Track momentum (q/p).
dphi, dtheta, dqp float32 Error/Spread in angular match and momentum.
tphi / ttheta float32 Angle of the associated calorimeter cluster centroid.
isolat float32 Isolation metric (energy surrounding electron candidate).
em1 / em12 float32 Energy in the first EM layer / first two EM layers.
dem12 float32 Uncertainty on the EM1+2 energy.
had1 float32 Energy in the first hadronic layer (electron veto).
emphi / emtheta float32 Width of the EM shower in phi and theta.
phiwid / thewid float32 Overall transverse width in phi and theta.
em1x1 float32 Energy in the central 1x1 calorimeter tower.
em2x2a, em2x2b float32 Energy in the 2x2 tower blocks (configs A & B).
em3x3a, em3x3b float32 Energy in the 3x3 tower blocks (core vs. extended).
PHKCHRG phchrg_id int32 Key 1: ID of the linked PHCHRG track.
(Cluster Match) phklus_id int32 Key 2: ID of the linked PHKLUS cluster.
match_distance float32 Overall spatial matching probability/distance.
delta_phi float32 Azimuthal angular residual between track and cluster.
delta_theta float32 Polar angular residual between track and cluster.
PHPOINT phpsum_id int32 Master pointer resolving the associated PHPSUM bank.
(Master Keys) phchrg_id int32 Master pointer resolving the associated PHCHRG bank.
phklus_id int32 Master pointer resolving the associated PHKLUS bank.
phkelid_id int32 Master pointer resolving the associated PHKELID bank.
phwic_id int32 Master pointer resolving the associated PHWIC bank.
phcrid_id int32 Master pointer resolving the associated PHCRID bank.

Rich Display System

# Display in Jupyter notebooks
with JazelleFile('data.jazelle') as f:
    # Show file summary (HTML in Jupyter)
    f.info()
    
    # Show first 5 events in table
    f.display(start=0, count=5)
    
    # Show last 3 events
    total = len(f)
    f.display(start=total-3, count=3)
    
    # Display single event (HTML rendering)
    event = f[0]
    display(event)  # Rich HTML table (Inside Jupyter notebook)
    
    # Display specific family
    display(event.phchrg)
    
    # ASCII display for terminals
    print(event)
    
    # Customize display options globally
    import jazelle
    jazelle.set_display_options(max_rows=20, float_precision=3)

๐Ÿงช Testing

The package includes comprehensive test suites:

C++ Tests

  • Binary I/O operations
  • VAX floating-point conversion
  • Event parsing
  • Bank instantiation

Python Tests

  • Basic file reading
  • Parallel processing
  • Format conversion (HDF5, Parquet, Feather, JSON)
  • Display system
  • CLI commands

Run tests with:

# Python tests
pytest tests/python/test_core.py
pytest tests/python/test_streamers.py
pytest tests/python/test_display.py
pytest tests/python/test_cli.py

# C++ tests (if built from source)
mkdir build && cd build
cmake -DBUILD_TESTS=ON ..
cmake --build .
ctest --output-on-failure

๐Ÿ“– Documentation

  • Tutorial Notebook: Comprehensive beginner's guide
  • API Reference: Full API documentation available in docstrings
  • Benchmark Scripts: benchmarks/ - Performance testing code

๐Ÿค Contributing

Contributions are welcome! This project is part of a larger effort to preserve and modernize legacy experimental physics data.

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Run the test suite (pytest tests/)
  6. Commit your changes (git commit -m 'Add amazing feature')
  7. Push to the branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

Code Style

  • C++: Follow modern C++20 practices, use clang-format
  • Python: Follow PEP 8
  • Documentation: Add docstrings for all public APIs

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Tony Johnson: Original Java implementation of the Jazelle reader
  • SLD Collaboration: For the Jazelle format specification and experimental data
  • SLAC National Accelerator Laboratory: For the SLD experiment and continued support of data preservation efforts

๐Ÿ“ž Support

๐Ÿ“š Citation

If you use this package in your research, please cite:

@software{jazelle_reader,
  author = {Cheng, Alkaid},
  title = {jazelle\_reader: A Modern Python Reader for SLD Jazelle Files},
  year = {2025},
  url = {https://github.com/AlkaidCheng/jazelle_reader},
  note = {High-performance C++20 implementation with Python bindings for
          legacy particle physics data analysis}
}

Built with โค๏ธ for the particle physics community

Preserving the past, empowering the future

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

jazelle-0.3.0-cp312-cp312-win_amd64.whl (391.7 kB view details)

Uploaded CPython 3.12Windows x86-64

jazelle-0.3.0-cp312-cp312-win32.whl (329.3 kB view details)

Uploaded CPython 3.12Windows x86

jazelle-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (572.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

jazelle-0.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (575.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

jazelle-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (388.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

jazelle-0.3.0-cp311-cp311-win_amd64.whl (424.5 kB view details)

Uploaded CPython 3.11Windows x86-64

jazelle-0.3.0-cp311-cp311-win32.whl (358.8 kB view details)

Uploaded CPython 3.11Windows x86

jazelle-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (601.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

jazelle-0.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (597.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

jazelle-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (397.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

jazelle-0.3.0-cp310-cp310-win_amd64.whl (423.8 kB view details)

Uploaded CPython 3.10Windows x86-64

jazelle-0.3.0-cp310-cp310-win32.whl (360.1 kB view details)

Uploaded CPython 3.10Windows x86

jazelle-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (609.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

jazelle-0.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (613.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

jazelle-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (402.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

jazelle-0.3.0-cp39-cp39-win_amd64.whl (424.9 kB view details)

Uploaded CPython 3.9Windows x86-64

jazelle-0.3.0-cp39-cp39-win32.whl (360.6 kB view details)

Uploaded CPython 3.9Windows x86

jazelle-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (609.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

jazelle-0.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (613.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

jazelle-0.3.0-cp39-cp39-macosx_11_0_arm64.whl (402.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

jazelle-0.3.0-cp38-cp38-win_amd64.whl (430.4 kB view details)

Uploaded CPython 3.8Windows x86-64

jazelle-0.3.0-cp38-cp38-win32.whl (369.8 kB view details)

Uploaded CPython 3.8Windows x86

jazelle-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (615.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

jazelle-0.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (615.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

jazelle-0.3.0-cp38-cp38-macosx_11_0_arm64.whl (412.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file jazelle-0.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 391.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1d6f392cf6b146c374b17747ba48b40315fd106040d4c44a8cbb7a155f49d634
MD5 b0cb76608b737e1d450c4b76984719ef
BLAKE2b-256 605cdd02a004abee2e6f5b5e20ce8999170edbb6c149cf7ac4f7efae588278e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp312-cp312-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 329.3 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 c2fc3a75244099d361025ed5d4aaed68cacbe2ecdcb31695cb28cced803d7361
MD5 c23d448a7dd66f9f1a864893191f2f28
BLAKE2b-256 d5b99d8a0aa208ad560c4745066787d088849da7027d73d89b6180c3e64c5879

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp312-cp312-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1f8a927106b235f6ff9e15f838a9492c96e6778110220438fbc2c9e79c135fb8
MD5 4a4b200f7063dc08ddf5b6c1c68a8627
BLAKE2b-256 b0298947bf0c1ba625ffc0090a2306b93e02fa41d73cee83f5ef2d5ab2cbba29

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f59aedd0e59c1e0df52d56b8bf86357691f6d0b71a1d73ed0de45edbcfe6c3d5
MD5 d1114cc5c1246a8071da7434baf3a182
BLAKE2b-256 9066d3c27248d44f2bfe62f1f2d2e45a121e470fdb30b5d414d3bd4160d6121a

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 75816225c30d8770d1aed74bedce9ad5149b9580f26f1498e0fd3436b2b336e9
MD5 be558fde077dd1900f31d0dfa8e48708
BLAKE2b-256 ca5401752ea77815282de91ddfd70ed8e3e1a4b0e247a8588541829a57f7c98f

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 424.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 67b96c7daef19f40be1f716a20b297842af710887da8d3a7232c13781520c27f
MD5 f09f8fb29e1cc792e89ba0fdbcb2a3a8
BLAKE2b-256 1e644e823f6cb73d1c052464e7f35d3219ffd33eeadf7068e3168851803be975

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp311-cp311-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 358.8 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 1dc1cf7289583841fa77c1720c5638f22ff7e7a7b6a26a32c232d239fb257f66
MD5 7d9d38ede93553e1ab827e5a2c82a514
BLAKE2b-256 266cbec6174359c473d88a43ed5f3ac1ff02a60a4c2441453a34844886a87e55

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp311-cp311-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b341bf831fef4ad4b0a1c6eef7a87ce0bfff0b92b1d0a46ab048f7367e2b8457
MD5 913d8d685fd781228d1362dafab64567
BLAKE2b-256 1473d6620ba6a1ef6ca6ce8e18467524e8e9cfe6c3d85e7f8e684328ba5c9600

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0c497c0593c2cddfd9a658539d60f1dbf98b96dfe06358cff642857f96fead9c
MD5 868bec82457d36a6d3d10c7e1beb01ab
BLAKE2b-256 325425f6086194965431cadbf90cd10a879a048ab49e00d1b0ec06d4d8c3686c

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06359adc57af1f9933e23639839b26eb277592bc833b21248526d3406eabb292
MD5 a30df0c5f1320c94c5c0021ea8dbb9be
BLAKE2b-256 f9a7e6eff4997bafcf0b360de323283e60dd66dd4e420ef97a470af1dc498c12

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 423.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 05ab04671edfc1530b4a28fb839e5c1c94f6caa0cebf1e38de2c042ce2953e79
MD5 54a7e7a94985b3ab46a0a32cb3baa109
BLAKE2b-256 731ce68bed1f50785e9217e7a45c4ba52315bccf86d4967835d9e5d52de1c611

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp310-cp310-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 360.1 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 2ce2dfc91adcfec75d4c3b2d5b8d8615dc5b335716ca269cff8a6a41f3de4d5c
MD5 9e693089fcea09656430c85c46488fdf
BLAKE2b-256 3e950af79f581b0ae75d8787cfa3516b5dc2f90034177306e56284b75765a455

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp310-cp310-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c24daf1d7c98ad87402099d6f9e0c0ad4b829d0c63a2012c2eb39a4a2243ce71
MD5 f85674d527447a62786faf406d0a8c50
BLAKE2b-256 ab33a7b38325bcfc76a9622471a26bc812115f3ca511c87da73d61a4b48a48ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8b15e7ea9ca909e93f3976dcbe249b2da69fe0589387aa337a67f37f91206f91
MD5 817e7cb52793d26bb58e06c03ac89095
BLAKE2b-256 3b397d8f1c4485732514def62ccaab45380f295220607bdf50e8eab9a8edc267

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31c306b7f088c59f114b72a92d213226532c84768947e2a75dd7a8568efb4c18
MD5 43c31297beae64b8a51ee974a0630821
BLAKE2b-256 3502b0cc3b5aaa8d437edd4a4b90058877707d178e3fd4a1226a0bdebc8bb319

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 424.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 862d45269cc445375b29747ef5718bfd2c89ca42780e19a09aa41012b3d58154
MD5 5a9c3c8dc19a04ad07015a45a2c4dfd0
BLAKE2b-256 f098209a97915cce5ea29912d9e372aa4f5e9fc6ef903c5e0583f2d7a4c49408

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp39-cp39-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 360.6 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 6f97478d1aa077c51dd2b2bac90e0647c203044a2aabc93e3cdbd6c1c6183df9
MD5 1ec5fb91dfad6ddbb5d925562026a7fd
BLAKE2b-256 834da7f3530a8361ba2a98717f1bae503439bab36df2c05c30b646ea4311523b

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp39-cp39-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0647cfb4884bd1c40f3aab9cc682ca99c02944eefd9fcd178520b7d9994cc212
MD5 b9afbc533919e5fe4ae86880d0e25f77
BLAKE2b-256 7201e646bdfa944bbe1f5e8484d97554225144ab897ba8b359a7afaffee51744

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ab792da4ea60f306d275e3833c4d3ea29ca4a12da948f16cc20bfedeea5982de
MD5 290cec7c644d8f5b9827b1cf9afac668
BLAKE2b-256 dbf505adb6f585d7d3927a70417925c507a5bccef350726b0d4ef303f347b475

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cbcb60f7763e62670ac8244fbd2aca97802ac72043fecf00176da7dc8d9f6780
MD5 78421544a615b39e33f85e41943c9fb1
BLAKE2b-256 de6fdb2efd583820c903e91b02e27e0bff38a3a1542d4d67f48acbbf92e6165f

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 430.4 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4b5c3c935b396dfa3526f5f15a6d97ba44cf3c7ebd70a22daab50e8b69cd957f
MD5 f8562900c7325eb8cbacfc1c7879dbfc
BLAKE2b-256 b1b46729b03d123844f0eb57ddf969860007e78fb4af664c867bdf0e176bcdd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp38-cp38-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: jazelle-0.3.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 369.8 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.3.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 26f02854d524f048006b06117aa5637dbc2bb6b75c38881fff96d59f157399df
MD5 f7a891567061c80a5e57dcb0a78e76b9
BLAKE2b-256 008066e99a4cf6ff83e5da3b42a6f7869d4f93167118b0954ffec3f368b1a706

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp38-cp38-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ff8c3863fbadc50f6b1d0d43e9787598e65370f3c50937f09f968a024017e07
MD5 7eb159cfaad0f599433a85c208056d38
BLAKE2b-256 40b1cd9a6b597eaa0c2525463b234a2e87452d7d4fded6f9e848849cced52c71

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 274ce18b7da7d43574b4da57f4fb4cfb282298d8afea352b891a9b1a5572c140
MD5 452831f62417040c7750b29251cfa384
BLAKE2b-256 fb304c34e9ffa340fb87e360f8da78c28d456d8bd224c3f73ceaa663dcb11098

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.3.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.3.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8b05c08cb91f80699f24da75bbd0b7e413d72e1b851e9502ad8478c8d25d7d0f
MD5 bba65c475080fcd2ae810a7ab95c02a5
BLAKE2b-256 adae9fca2d4e9f003726decb3e335ed281e42b3175f0d6fdd6230d7d268117d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.3.0-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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