sdfio
Read and write ISO 25178-71 Surface Data Files (.sdf) in Python.
SDF stores areal (or profile) surface topography measurements as a rectangular grid of height values, in either a human-readable ASCII or a compact binary format. It is used as a software measurement standard (a "softgauge") to verify the software of surface texture measuring instruments, and is also used more generally as a surface topography interchange format.
Supported dialects: ISO-1.0, ISO-2.0, and BCR-1.0 (the pre-standardization proposal this format is based on), without compression or checksummed data areas. Vendor-specific extensions are not supported.
Installation
pip install sdfio
Usage
import numpy as np
import sdfio
data = np.zeros((480, 640))
sdfio.write("surface.sdf", data, x_scale=1e-6, y_scale=1e-6, z_scale=1e-9)
sdf = sdfio.read("surface.sdf")
print(sdf.data.shape)
print(sdf.header)
sdf.data is a (num_profiles, num_points) array of height values in
metres, in the standard's right-handed coordinate system: y increases with
row index and x with column index (sdfio.SdfFile.x_axis/y_axis return
the coordinates, also in metres).
Non-measured or spurious points (the BAD marker in ASCII files, or the
data type's reserved sentinel value in binary files) are represented as
NaN in sdf.data, and sdfio.write writes NaN values back the same way.
Command Line
sdfio info surface.sdf
sdfio convert -f ascii surface.sdf surface_ascii.sdf
sdfio convert -d ISO-1.0 -r surface_v2.sdf surface_v1.sdf
sdfio convert -t int16 surface.sdf surface_int16.sdf
convert can change the ASCII/binary format (-f/--format), the SDF
dialect and version (-d/--dialect, e.g. ISO-2.0 or BCR-1.0), and the
data area storage type (-t/--type) independently; any not given are kept
from the source file. Converting to a dialect whose trailer requirements the
source file doesn't meet fails unless -r/--remove-trailer is passed to
discard it. Run sdfio convert --help for details. The CLI is also runnable
as python -m sdfio.
Development
python3 -m venv .venv # Windows: python -m venv .venv
source .venv/bin/activate # Windows (PowerShell): .venv\Scripts\Activate.ps1
pip install -e . --group dev
pre-commit install
pytest
pre-commit run --all-files
pip-audit
References
- ISO 25178-71:2026, Geometrical product specifications (GPS) — Surface texture: Areal — Part 71: SDF file format
- K. J. Stout et al., The Development of Methods for the Characterisation of Roughness in Three Dimensions, EUR 15178 EN, EC Brussels, 1993
Metadata
Release files for sdfio 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sdfio-1.1.0.tar.gz | 36.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sdfio-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 67.7 kB
Release files / sdfio-1.1.0.tar.gz
| Download URL | sdfio-1.1.0.tar.gz |
|---|---|
| Size | 36.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e64ffc4ba7e24f2b9c0d311a98ff9bc1adddfd053b02ace9d2e351d8422b8c6a
|
|
BLAKE2b-256 checksum How to use checksums |
cde800d459042fd496d6345f62c4dcc6c272e6ce45215e61d7e3cc0aeefd7fc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency logRelease files / sdfio-1.1.0-py3-none-any.whl
| Download URL | sdfio-1.1.0-py3-none-any.whl |
|---|---|
| Size | 30.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
56f840f186deb751d7611c792666f300aac3a03943f54cd975154567ff5923ef
|
|
BLAKE2b-256 checksum How to use checksums |
9a6a62d99b7da991327f87c32273d47ba2ee20ec2a209ea6f96337949c7fefbf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency log