Skip to main content

pytesprocess

pytesprocess is the detector-processing layer used with raw acquisitions written by pytesdaqx. It provides random-event selection, software triggering, feature extraction, salting, IV/dIdV processing, noise/filter generation, and persistence of processed event products as Vaex HDF5 dataframes.

The current code targets Python 3.11+ and the modern pytesdaqx acquisition model (acquisition + stream).

Installation

For a development checkout:

pip install -e .

Runtime dependencies and the installed CLI entry point are defined entirely in pyproject.toml.

Command-line interface

Installing the package provides:

pytesprocess --help

The normal event-processing workflow is selected directly from the top-level command:

pytesprocess ACQUISITION \
    --config processing.yaml \
    --steps randoms trigger feature

--steps is mandatory. It accepts either whitespace-separated or comma-separated values, including mixed input:

--steps randoms trigger feature
--steps randoms,trigger,feature
--steps randoms,trigger feature

All are equivalent. The execution order is normalized internally to:

randoms -> salting -> trigger -> feature

The separate detector-characterization/filter workflows remain explicit:

pytesprocess filter ACQUISITION --config processing.yaml
pytesprocess ivsweep ACQUISITION

Example:

pytesprocess acquisition_I2_D20260807_T170432.zarr \
    --config continuous_data_processing_v2.yaml \
    --steps randoms,trigger,feature \
    --nrandoms 300 \
    --nevents 300 \
    --ncores 4

See docs/user/cli.md for the current CLI behavior.

Configuration

New processing configuration uses config_version: 2 and separates workflow sections explicitly:

config_version: 2

resources:
  filter_file: /path/to/filterdata.hdf5

trigger:
  global: {}
  channels: {}

feature:
  global:
    trace_length_msec: 20
    pretrigger_length_msec: 10
  presets: {}
  channels: {}

salting:
  global: {}
  channels: {}

filter: {}

Feature trace lengths are specified in milliseconds in v2 configuration. The resolver converts them to samples using the selected acquisition sample rate. Channel selectors include all, shell-style globs such as Z1P*, comma groups for applying one block to several independent channels, and explicit multi-channel expressions such as A|B.

See docs/user/configuration.md.

Processed dataframe identity

Each Vaex processing product has one dataframe-group identity:

dataframe_group_name
dataframe_group_id
dataframe_group_number
dataframe_file_index
processing_label

For example:

trigger_I2_D20260908_T123456/
  trigger_I2_D20260908_T123456_F0001.hdf5
  trigger_I2_D20260908_T123456_F0002.hdf5

F#### is a processing task/output shard index, not a second stream or series identifier. Raw provenance uses canonical stream fields such as stream_id, stream_number, and stream_trigger_index.

See docs/user/outputs.md.

Package structure

The current package layout intentionally separates reusable analysis objects from acquisition-processing workflows:

pytesprocess/
  core/       reusable analysis/data objects and algorithms
  process/    raw/dataframe processing executors
  config/     YAML loading, selection, resolution, validation
  salting/    salt metadata generation and waveform injection
  workflows/  multi-step orchestration used by the CLI
  cli/        command-line parsing and dispatch
  utils/      shared utilities and HDF5/dataframe helpers

See docs/developer/architecture.md for the current developer-oriented architecture.

Notes on multiprocessing

The existing Vaex/PyArrow and numerical-library thread limits are intentional. They were introduced to avoid thread oversubscription and unstable/slower multicore processing. They should not be removed or relocated without dedicated multicore benchmarking.

Release files for pytesprocess 0.1.1

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

Source distribution (sdist)

Source distribution for pytesprocess 0.1.1
File Size Uploaded
pytesprocess-0.1.1.tar.gz 171.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytesprocess 0.1.1
File Interpreter ABI Platform
pytesprocess-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 360.8 kB

Release files / pytesprocess-0.1.1.tar.gz

Download URL pytesprocess-0.1.1.tar.gz
Size 171.2 kB
Tags Source
SHA-256 checksum
How to use checksums
6a32b788b88700edde8957ab1a48a02987fd7ee1d877a1d3eb587c0e62b4e664
BLAKE2b-256 checksum
How to use checksums
52958b7b7c80e91ff8acbde7939875ad041c8ba795992be0eb1728be443f4f5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release files / pytesprocess-0.1.1-py3-none-any.whl

Download URL pytesprocess-0.1.1-py3-none-any.whl
Size 189.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ab93d54b64f925cacee530926909ba97aed041866245a7fe33060909d8b077ef
BLAKE2b-256 checksum
How to use checksums
b2e44fc58a67d76f42a5a81a59731769923c01d86ac0fb9c68f0ef7aa0a3a65b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release history Release notifications | RSS feed

0.1.2

2 release files

This release

0.1.1 This release

2 release files

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