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
pytesprocess vibration ACQUISITION --config vibration.yaml

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.2

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.2
File Size Uploaded
pytesprocess-0.1.2.tar.gz 299.7 kB Details

Built distribution (wheel)

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

Total release size: 568.6 kB

Release files / pytesprocess-0.1.2.tar.gz

Download URL pytesprocess-0.1.2.tar.gz
Size 299.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2e5bd3ee0396510275ab0199f164c1837b465be8885b0a6a8db23cf2228ccaa3
BLAKE2b-256 checksum
How to use checksums
2a4a08287da4b484feb634f35d88ccde96a0318924c4aaff98ed664d03897fc3
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.2-py3-none-any.whl

Download URL pytesprocess-0.1.2-py3-none-any.whl
Size 268.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f631a8897b56aaaa6341f1f6eb636e67f9d78a64757b6ecb699c3f57ef42b375
BLAKE2b-256 checksum
How to use checksums
ca33e39d33ee66d9fe549314dbf0c93c74289341c6e424e9c1739324f0621c0f
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

This release

0.1.2 This release

2 release files

0.1.1

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