Parsing of STDF file format to DataFrame with Python bindings
Project description
stupidf
stupidf is a library for limited parsing of STDF files. The STDF structure can be used
directly in rust, or alternatively sent out to Python using the parse_stdf function.
STDF is the Standard Test Data Format and is commonly used for high-volume test of semiconductors in Automated Test Equipment (ATE) systems.
The purpose of the library is to quickly and efficiently parse STDF files (which are a fairly unfriendly binary linked list-based format) into more friendly polars DataFrame format.
Not all record types are implemented because they're not relevant for my purposes. Implementing new records is straight-forward, following the others.
Example
In rust
use stupidf::data::STDF;
use polars::prelude::*;
let verbose = false;
if let Ok(stdf) = STDF::from_fname(&fname, verbose) {
let df: DataFrame = (&stdf.test_data).into();
let df_fmti: DataFrame = (&stdf.test_data.test_information).into();
println!("{df:#?}");
println!("{df_fmti}");
}
Also contains Python bindings to this functionality, e.g.
import stupidf as sf
stdf = sf.parse_stdf("my_stdf.stdf")
stdf['df']
Installation
To install the rust CLI binary:
cargo install stupidf
To add the stupidf library to a rust project, add to the Cargol.toml:
[dependencies]
<... snip ...>
stupidf = "0.1.0"
or execute from the command line in your rust project
cargo add stupidf
To install the Python bindings and pre-built wheel (linux and win currently):
pip install stupidf
Building from source
The rust library can be compiled simply with
cargo build
The Python bindings can be made using maturin. Activate the desired virtualenv, then install maturin and use it to build the bindings
pip install maturin
maturin develop
Development
If you're seeing issues with pyo3 recompiling on every build, even when there are no pyo3-related changes, then you're most likely running into this issue.
Consider setting the PYO3_PYTHON env variable adding to your Cargo.toml or terminal:
[env]
PYO3_PYTHON = /path/to/python
and also ensuring this is the Python interpreter used by your IDE. E.g. if using nvim, activate the venv before starting nvim.
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
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 stupidf-0.4.1-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: stupidf-0.4.1-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 4.4 MB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87e5a7525e12ed924837b373b0c6408f21ba6cb17418f7e40c1422a4077d4346
|
|
| MD5 |
745995134e0a896775ceedbc03d8b6f0
|
|
| BLAKE2b-256 |
8d65af9fa924bea601b04b91008b4551776372a22d86ad6c25fb9557755d62c4
|
File details
Details for the file stupidf-0.4.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: stupidf-0.4.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 5.0 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27da101a9dac57971df995e5f43b7835acfb8fc7136c5ccabeaf6c3606d7a0d7
|
|
| MD5 |
a359c16d06d920fdc7abd0994e6a03be
|
|
| BLAKE2b-256 |
1a0bbbe8790ff96e150a79d2b913f3620d92a2a9a9b66cd2897a97612f466556
|