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:
- Direct unit name (
EinheitNamefield) — Direct unit symbol (mm, N, MPa, etc.) - Unit table key (from
QS_ValSettingbinary blob) — References/UnitTablessection (UT_Length → mm, UT_Force → N, etc.) - 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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
381420015f6fec18140b2424597311797dce811bc59c18ba41e93bf006b4b254
|
|
| MD5 |
4ba5e6e106763eb3d0ebad0afdbfacf9
|
|
| BLAKE2b-256 |
573ef84eb85d68170201562b0a1306d995e76d7aa3bd86cd19f2e466d304d64b
|
Provenance
The following attestation bundles were made for zs2fast-0.4.0.tar.gz:
Publisher:
publish.yml on weltidom/zs2fast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zs2fast-0.4.0.tar.gz -
Subject digest:
381420015f6fec18140b2424597311797dce811bc59c18ba41e93bf006b4b254 - Sigstore transparency entry: 1073720123
- Sigstore integration time:
-
Permalink:
weltidom/zs2fast@e7fa1ca5ce6b96771b01ddae6f182b49358c2616 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/weltidom
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e7fa1ca5ce6b96771b01ddae6f182b49358c2616 -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a429b979779ef950aec362f1fd11794cc40d01a835082e931b5296506fa0d902
|
|
| MD5 |
e10048100e4c5390eaaf2f937d6d5ff2
|
|
| BLAKE2b-256 |
327a738ae8cd87f9378dceb98198874d03ed717e8d13c3d1ad240d6d2e5898e4
|
Provenance
The following attestation bundles were made for zs2fast-0.4.0-cp39-abi3-win_amd64.whl:
Publisher:
publish.yml on weltidom/zs2fast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zs2fast-0.4.0-cp39-abi3-win_amd64.whl -
Subject digest:
a429b979779ef950aec362f1fd11794cc40d01a835082e931b5296506fa0d902 - Sigstore transparency entry: 1073720244
- Sigstore integration time:
-
Permalink:
weltidom/zs2fast@e7fa1ca5ce6b96771b01ddae6f182b49358c2616 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/weltidom
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e7fa1ca5ce6b96771b01ddae6f182b49358c2616 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file zs2fast-0.4.0-cp39-abi3-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: zs2fast-0.4.0-cp39-abi3-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.9+, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ee99655b6931a3ca038213dc6140f0fe3379c2a30696b39321755ba567ed505
|
|
| MD5 |
39017b570259893b9a0a7d35803fe96c
|
|
| BLAKE2b-256 |
e80e0e464e19b26369babb79cde5f774fcd28bf254aa01fd88e8152818e00b6c
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zs2fast-0.4.0-cp39-abi3-manylinux_2_34_x86_64.whl -
Subject digest:
8ee99655b6931a3ca038213dc6140f0fe3379c2a30696b39321755ba567ed505 - Sigstore transparency entry: 1073720185
- Sigstore integration time:
-
Permalink:
weltidom/zs2fast@e7fa1ca5ce6b96771b01ddae6f182b49358c2616 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/weltidom
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e7fa1ca5ce6b96771b01ddae6f182b49358c2616 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file zs2fast-0.4.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: zs2fast-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3245a61972b5313c4389286f7488e7f66054eb1e3a2bd5e8c68351ecd3924d1
|
|
| MD5 |
1eb74468042eae070eb661133b04fc4c
|
|
| BLAKE2b-256 |
04ebb535d922aa861b63fc374e0707d5066fd98756f3c453f07534ad71345401
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zs2fast-0.4.0-cp39-abi3-macosx_11_0_arm64.whl -
Subject digest:
f3245a61972b5313c4389286f7488e7f66054eb1e3a2bd5e8c68351ecd3924d1 - Sigstore transparency entry: 1073720329
- Sigstore integration time:
-
Permalink:
weltidom/zs2fast@e7fa1ca5ce6b96771b01ddae6f182b49358c2616 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/weltidom
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e7fa1ca5ce6b96771b01ddae6f182b49358c2616 -
Trigger Event:
workflow_dispatch
-
Statement type: