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, Chi Lung},
  title = {jazelle\_reader: A Modern Python Reader for SLD Jazelle Files},
  year = {2025},
  url = {https://github.com/HEP-KE/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.4.0-cp314-cp314-win_amd64.whl (483.4 kB view details)

Uploaded CPython 3.14Windows x86-64

jazelle-0.4.0-cp314-cp314-win32.whl (398.4 kB view details)

Uploaded CPython 3.14Windows x86

jazelle-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (668.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

jazelle-0.4.0-cp314-cp314-macosx_11_0_arm64.whl (467.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

jazelle-0.4.0-cp313-cp313-win_amd64.whl (471.8 kB view details)

Uploaded CPython 3.13Windows x86-64

jazelle-0.4.0-cp313-cp313-win32.whl (390.5 kB view details)

Uploaded CPython 3.13Windows x86

jazelle-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (670.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

jazelle-0.4.0-cp313-cp313-macosx_11_0_arm64.whl (465.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

jazelle-0.4.0-cp312-cp312-win_amd64.whl (469.5 kB view details)

Uploaded CPython 3.12Windows x86-64

jazelle-0.4.0-cp312-cp312-win32.whl (390.4 kB view details)

Uploaded CPython 3.12Windows x86

jazelle-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (665.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

jazelle-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (466.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

jazelle-0.4.0-cp311-cp311-win_amd64.whl (501.3 kB view details)

Uploaded CPython 3.11Windows x86-64

jazelle-0.4.0-cp311-cp311-win32.whl (419.6 kB view details)

Uploaded CPython 3.11Windows x86

jazelle-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (737.8 kB view details)

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

jazelle-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (474.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

jazelle-0.4.0-cp310-cp310-win_amd64.whl (500.9 kB view details)

Uploaded CPython 3.10Windows x86-64

jazelle-0.4.0-cp310-cp310-win32.whl (421.5 kB view details)

Uploaded CPython 3.10Windows x86

jazelle-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (735.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

jazelle-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (479.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

jazelle-0.4.0-cp39-cp39-win_amd64.whl (502.1 kB view details)

Uploaded CPython 3.9Windows x86-64

jazelle-0.4.0-cp39-cp39-win32.whl (422.0 kB view details)

Uploaded CPython 3.9Windows x86

jazelle-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (734.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

jazelle-0.4.0-cp39-cp39-macosx_11_0_arm64.whl (480.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

jazelle-0.4.0-cp38-cp38-win_amd64.whl (504.1 kB view details)

Uploaded CPython 3.8Windows x86-64

jazelle-0.4.0-cp38-cp38-win32.whl (428.9 kB view details)

Uploaded CPython 3.8Windows x86

jazelle-0.4.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (742.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

jazelle-0.4.0-cp38-cp38-macosx_11_0_arm64.whl (491.7 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file jazelle-0.4.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.4.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 483.4 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jazelle-0.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 260e46fe406e92b28360eb49aecaafa2cd291980567ad2c76c5a8a7379dfbee2
MD5 d1730c3d2bec098885f68e4a0971f22f
BLAKE2b-256 149c06bdf14eb6e74643e371580d2e9d7cf33c5be3ec3ebe176f8ca3bb886b27

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp314-cp314-win_amd64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp314-cp314-win32.whl.

File metadata

  • Download URL: jazelle-0.4.0-cp314-cp314-win32.whl
  • Upload date:
  • Size: 398.4 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jazelle-0.4.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 f56df70b6e7f5aa9c0f40fb75801079a36ce11a599436496f08cf4712d478ba0
MD5 469dbb3df7be7b830aa2c385a485d802
BLAKE2b-256 d426d21d77a226431ee2aff844c1f65b555bfe3fdd1202ff1d9130c44316efbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp314-cp314-win32.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c222d9a1efa0d2cdd921b1c648c5615749acde6feddfb34ba66159b4730f3ca0
MD5 6bb13407b6d38a2fd7f91ece36837aff
BLAKE2b-256 19ac1b4ff204e41e589828396ea4e112d4cd367f58ddaa85f448d25e8ac8705a

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 90aa8afcbc5cb103178ca35eaac8061f77832ed7c131e4b1265d63d0465eb54b
MD5 388869308e0c9a4dc2350d5d260f4f36
BLAKE2b-256 4652562d87cee02aacf1efb0f65e3aef582d2af5247f5c709c4543fe4a216908

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 471.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jazelle-0.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4a089627d56133974bacf310f94f8d84242ee022d3128c5efd93b134d5f9756c
MD5 0c6440a640a05285259322199890e81d
BLAKE2b-256 8f2718b20c3dd40683cbacc541cf2dceaf7f6381538fa63902af3629129b6839

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp313-cp313-win_amd64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: jazelle-0.4.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 390.5 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for jazelle-0.4.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 622ffb802a189910303375991b3626271badbf034105e65e29b7006ea2ed9edf
MD5 8e865c0a6b4ff1f13f1e4a14ce56b96d
BLAKE2b-256 730bd6fea40a1c13e3c794d383993875b747d45f8507fb25e061625a437043a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp313-cp313-win32.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5ab5c9085db9f091ae0b972c20f8a14d18ddf6bf98ccf4c168a00cff779dd26a
MD5 d107edf116eb2fcc141bca9b06383ae6
BLAKE2b-256 934d0e0b40d99c62363886c4b03387c56bb7b9c81975e46e5bdb289efa4ea9d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65c4c9bae7f6f99c2bc902ba1d75cbab9967872742b862d666aacef612a12025
MD5 263a39a8a59a75e405698f56a3657909
BLAKE2b-256 add819ea654927fc774ef63a3c05c9b6e1d73cd310fcdacbe75d5c8fdc3d2120

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp312-cp312-win_amd64.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ae429494fdf17dc242e68d3d7c17b1625c5be519ef80d8cfe1f96e14622bd713
MD5 daaf1ba447ee4a3fe6a172e6ffee5bc7
BLAKE2b-256 6341b4f21e10376ae393f013b3280ee8164c311556c8253f30fc0f3cd5a8b48c

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp312-cp312-win32.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 97fc56fbf9acce24890a0d489465c3a7fb2063dd69981b6af4115299670ff812
MD5 af89eae195a2d2767e3dd79e4d494cc8
BLAKE2b-256 280ce9887ceb87309f2fbb8c0416b47df586fceb33410ee29632620cdf243bb8

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 78d76252ed9c5db59ee4f4cd478e71bbabdded2c7a18a5d8931d94398d5e97c7
MD5 a731884973ac02b35eefa09cdd93fdc2
BLAKE2b-256 b8e464cfd28043234439c504aa0161e5246167e64a25f60fbd6d8430f93a35d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc6c9eded5dc1103468c166b78e8f1997e3c5992d1b17dd151110020ddcb50e0
MD5 a75ada87d818b16c7ecdf44a30211712
BLAKE2b-256 db11c8685e39c2041413c413ccbbd97559feff49aa7d38efc6a32e2e2d45a0c5

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a03fd77143a59a29512e651750c1a5093d1341642cbb3cbfe229814d3b7eb749
MD5 713905fbaceb3527e725ef642fd1fb06
BLAKE2b-256 c8b67559e8a0caa043d659bdcaddefd6387605efc21d9dc8ecd96acfa0e1bf61

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp311-cp311-win32.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 8c0bad3959b687fc3d8e14072a1ed4e67aad88cedffc874c5c2a32a5d84a5fb6
MD5 7a30284b6326d5cb678935e8e41bea47
BLAKE2b-256 2d2221b33b4f9cbbbcb9732424447c23db84219c8be57345535bac7c76b2b2bc

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ec04905a243cf4975b8327b6aa2bdda2a70878c7d87f49417614f24f97e101f0
MD5 3e542fbbe3c9a9f49b999b35b60a5368
BLAKE2b-256 d441775fd07d285ea843fc379407fbb975c0e601113ecd0f56566e2475a8fe21

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13ecb59fa95fbb3e4a2a1aa63e5a91e52aff93bfcd8d6b3aecafa598ce7ec807
MD5 4a5fca1dc83fc3eed0c9ee4051748796
BLAKE2b-256 33fee72eb19cb953011aea9f82e07239a1355cb58e71bf0c22d52bbf7f15485b

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 316201244386cf17c9a34f19608e1f8dc75ad00345a29864cd62566440f98f9a
MD5 37680879e80ee133d7765e9925266f2f
BLAKE2b-256 d4332c1397361e67316305ef1e3f245e2a0dd7a57cbf3b031aac08e4741f980e

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp310-cp310-win32.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 0e213193314ab71dd119a8644f2fe01299219a41e06cc9b6e350a19e509dd6b5
MD5 618945547c71138b8538a4eb83ec5139
BLAKE2b-256 f6ba0458e3db50c6c67b8cb8253ad1ce3603ef7b0946825beda8525cd47619dc

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 445d007574ddc0e1d529356d6d968b6651a9d19ffe88862e231e26b55f57c826
MD5 eaeab019bcdb4b8bee60de8e8fe12ac5
BLAKE2b-256 8414f525a593db866151f812043fa10e78fa6a49f78c758282bb7c3803e85f19

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d70827d880d1ff6a32c6d0c609cc33ab07b3b6a17d19724035d482670d08c592
MD5 eacbec573a10ace1dc79bee36b60a814
BLAKE2b-256 0d0900b7c502740b982e21ae59b1003a5949d8ed6b51be103289afb9a84bf394

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp39-cp39-win_amd64.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f4118ae869a8d4b6425862237153469753ad7d055a75c5633ae5122a1c283682
MD5 62afe60432efea66902d25d8149e3ef3
BLAKE2b-256 d4faf8a1b286f278e8f1815510a13cdc817deb4e6b4d61603988a4077e1a7a9f

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp39-cp39-win32.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 c41ec437d8e81d5f4aa8674a0537b3dc3475e04e12035268603d3f1b45c36089
MD5 089acc601ea070090688272b4727cef0
BLAKE2b-256 7c0c4219afbce0230acf714e4106c3c9bbea121e52a2f0d31dbb3848b7979231

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 532727b8acd1aba282008a0d597e6adf2214e9cfa0e09ed48a6c930b495aa027
MD5 211e3a22860d9d0efe7e85793a3b8eac
BLAKE2b-256 7dd0af6a2cf094a016807c82654292860ac17af6b9489729f34e13165d5699c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af2d3e8ac5e454df83c2842dc1e6552cd8653a061125f96006687e2043b04c51
MD5 f434da698dad733fc4585fdb41213c83
BLAKE2b-256 d462b863c2d0b2eac245a10488588e085f3cd1ffc653567a0f2be70bb1638a20

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp38-cp38-win_amd64.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 0a8bd80395a745a1ba5af51e64eeab7001c15ce84322260561d4bd9072e09d9a
MD5 8555a51fc8d59df980d548f6cc763cdc
BLAKE2b-256 90c9b6877fa4b7efd9902d42902a1a27399abd2054f675fe57f75a759f830af4

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp38-cp38-win32.whl.

File metadata

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

File hashes

Hashes for jazelle-0.4.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 48c2ef85143346bb515b18ae282440c562b2a6c5cf6d77d7336755c441f7dbad
MD5 691f1bf553b309fdc7e6fce5953208ec
BLAKE2b-256 d9c0f36933fa1a4766e5578651a943cdf748c66d80e2d6fe8f2d2deee498ff30

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 422ec1ccecf172f451bd625e54ba73fa3fe9e1b2f75f292bb141c5e9b959f1e9
MD5 0bd3890470a8a4c6f04dfe8aae695b75
BLAKE2b-256 93573d49d032a18ec76903c2e481fc6fab9c01c33861928f2e2b9cc62aaa7dd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.4.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_and_publish.yml on HEP-KE/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.4.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.4.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 727b0c4c7b22c28c72ffa412deb81c6b487d2408a7a2610da6d0caff76c1bb8c
MD5 6aee6732cdc3e9d6a4265e4f5541a0ff
BLAKE2b-256 bd0ce29802843295594c6216ad4b2a147f1be605c36435d045acff94431541d9

See more details on using hashes here.

Provenance

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

Publisher: build_and_publish.yml on HEP-KE/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