Skip to main content

Fast Rust/PyO3 parser for ZS2 files with Parquet export

Project description

zs2fast

A fast Python extension for converting Zwick ZS2 test machine files to Parquet format, written in Rust/PyO3.

Features

  • Fast gzip decompression and binary parsing of .zs2 files
  • Extracts channel time-series data with automatic unit resolution
  • Extracts evaluated parameters and test results with units
  • Converts to Parquet format using Apache Arrow
  • Built with PyO3 for seamless Python integration
  • Supports Python 3.9–3.12 on Linux, macOS, and Windows

Installation

From PyPI

pip install zs2fast

From Source

Requires Rust and Python 3.9+.

# Install maturin
pip install maturin

# Clone and build
git clone https://github.com/weltidom/zs2fast.git
cd zs2fast
maturin develop --release

Usage

import zs2fast
import polars as pl

# Convert a .zs2 file to raw long-format Parquet
# Useful for exploring binary structure and raw values
zs2fast.zs2_to_parquet("input.zs2", "output.parquet", include_u32=False)
# columns: series, subtype, index, value

# Export channel time-series with semantic names and units
zs2fast.zs2_channels_to_parquet("input.zs2", "channels.parquet")
# columns: sample_idx, channel_idx, channel_name, unit, timepoint, value, data_type
channels = pl.read_parquet("channels.parquet")
print(channels.filter(pl.col('unit').is_not_null()).head())

# Export calculated test results (Bruchbild, elongation, max force, etc.)
# Units are resolved from EinheitName → QS_ValSetting blob → UnitTables
zs2fast.zs2_evaluated_params_to_parquet("input.zs2", "evaluated_params.parquet")
# columns: sample_idx, param_id, short_name, param_name, unit, value, value_text
params = pl.read_parquet("evaluated_params.parquet")
print(params.filter(pl.col('value').is_not_null()).head())

# Extract per-sample test settings and parameters (not calculated results)
zs2fast.zs2_parameterliste_results_to_parquet("input.zs2", "sample_params.parquet")
# columns: sample_id, result_id, result_name, unit, value_text, value
sample_params = pl.read_parquet("sample_params.parquet")
print(sample_params.head())

Unit Resolution

The parser automatically resolves measurement units using a 3-tier strategy:

  1. Direct unit name (EinheitName field) — Direct unit symbol (mm, N, MPa, etc.)
  2. Unit table key (from QS_ValSetting binary blob) — References /UnitTables section (UT_Length → mm, UT_Force → N, etc.)
  3. Fallback inference — Attempts to infer units from table key name

Channels typically use tier 1–2, while evaluated parameters primarily use tiers 2–3. This ensures maximum unit coverage across different .zs2 file structures.

Development

Build

maturin build --release

Lint

cargo fmt
cargo clippy

Test

cargo test

License

See LICENSE file for details.

Project details


Download files

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

Source Distribution

zs2fast-0.4.0.tar.gz (27.3 kB view details)

Uploaded Source

Built Distributions

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

zs2fast-0.4.0-cp39-abi3-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.9+Windows x86-64

zs2fast-0.4.0-cp39-abi3-manylinux_2_34_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.34+ x86-64

zs2fast-0.4.0-cp39-abi3-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file zs2fast-0.4.0.tar.gz.

File metadata

  • Download URL: zs2fast-0.4.0.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zs2fast-0.4.0.tar.gz
Algorithm Hash digest
SHA256 381420015f6fec18140b2424597311797dce811bc59c18ba41e93bf006b4b254
MD5 4ba5e6e106763eb3d0ebad0afdbfacf9
BLAKE2b-256 573ef84eb85d68170201562b0a1306d995e76d7aa3bd86cd19f2e466d304d64b

See more details on using hashes here.

Provenance

The following attestation bundles were made for zs2fast-0.4.0.tar.gz:

Publisher: publish.yml on weltidom/zs2fast

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

File details

Details for the file zs2fast-0.4.0-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: zs2fast-0.4.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 3.0 MB
  • 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 zs2fast-0.4.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a429b979779ef950aec362f1fd11794cc40d01a835082e931b5296506fa0d902
MD5 e10048100e4c5390eaaf2f937d6d5ff2
BLAKE2b-256 327a738ae8cd87f9378dceb98198874d03ed717e8d13c3d1ad240d6d2e5898e4

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on weltidom/zs2fast

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

File details

Details for the file zs2fast-0.4.0-cp39-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for zs2fast-0.4.0-cp39-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8ee99655b6931a3ca038213dc6140f0fe3379c2a30696b39321755ba567ed505
MD5 39017b570259893b9a0a7d35803fe96c
BLAKE2b-256 e80e0e464e19b26369babb79cde5f774fcd28bf254aa01fd88e8152818e00b6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for zs2fast-0.4.0-cp39-abi3-manylinux_2_34_x86_64.whl:

Publisher: publish.yml on weltidom/zs2fast

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

File details

Details for the file zs2fast-0.4.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zs2fast-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f3245a61972b5313c4389286f7488e7f66054eb1e3a2bd5e8c68351ecd3924d1
MD5 1eb74468042eae070eb661133b04fc4c
BLAKE2b-256 04ebb535d922aa861b63fc374e0707d5066fd98756f3c453f07534ad71345401

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on weltidom/zs2fast

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