Skip to main content

A python module to analyze surface roughness

Project description


PyPI version Documentation Status Publication

surfalize is a python package for analyzing microscope topography measurement data in terms of surface roughness and other topographic parameters. It is intended primarily for microtextured surfaces and is supposed to replace software packages such as MountainsMap, MultiFileAnalyzer and Gwyddion for the most common tasks.

Disclaimer

The authors make no guarantees for the correctness of any results obtained using this package. The package is an early work in progress and may introduce changes to both implementation details and public API at any point in time. Any results should be validated against established software to verify their correctness, especially when they are intended to be used for scientific publications.

Some parts of the package are more mature and some are in early development stage. Currently, Gaussian filtering and Profile parameters might suffer from some implementation errors and might not be entirely compliant with ISO standards. Care should be taken when relying on these specific functionalities.

Cite this library

If you publish data generated with this library, please consider citing this publication:

F. Schell, C. Zwahr, A. F. Lasagni. Surfalize: A Python Library for Surface Topography and Roughness Analysis Designed for Periodic Surface Structures. Nanomaterials. 2024, 13, 1076.

How to install

To install the latest release of surfalize, run the following command:

pip install surfalize

If you want to install from source, clone this git repository and run the following command in the root folder of the cloned repository.

pip install .

While earlier versions used Cython, the current version is pure Python and can be installed without a C-compiler.

Documentation

The documentation is hosted on readthedocs.

Currently supported file formats

Manufacturer Format Reading Writing
Keyence .vk4, .vk6, .vk7 Yes No
Leica .plu Yes No
Sensofar .plu, .plux Yes No
Digital Surf .sur Yes Yes
KLA Zeta .zmg Yes No
Wyko .opd Yes No
Nanofocus .nms Yes No
Alicona .al3d Yes Yes
Digital Surf .sdf Yes Yes
Gwyddion .gwy Yes No
Digital Metrology .os3d Yes No
General .xyz Yes No

Supported roughness parameters

This package aims to implement all parameters defined in ISO 25178. Currently, the following parameters are supported:

Category Parameter Full name Validated against
Height Sa Arithmetic mean height Gwyddion, MountainsMap
Sq Root mean square height Gwyddion, MountainsMap
Sp Maximum peak height Gwyddion, MountainsMap
Sv Maximum valley depth Gwyddion, MountainsMap
Sz Maximum height Gwyddion, MountainsMap
Ssk Skewness Gwyddion, MountainsMap
Sku Kurtosis Gwyddion, MountainsMap
Hybrid Sdr1 Developed interfacial area ratio Gwyddion2, MountainsMap
Sdq Root mean square gradient MountainsMap
Spatial Sal Autocorrelation length -
Str Texture aspect ratio -
Functional Sk Core roughness depth MountainsMap
Spk Reduced peak height MountainsMap
Svk Reduced dale height MountainsMap
Smr1 Material ratio 1 MountainsMap
Smr2 Material ratio 2 MountainsMap
Sxp Peak extreme height MountainsMap
Functional (volume) Vmp Peak material volume MountainsMap
Vmc Core material volume MountainsMap
Vvv Dale void volume MountainsMap
Vvc Core void volume MountainsMap

1 Per default, Sdr calculation uses the algorithm proposed by ISO 25178 and also used by MountainsMap By keyword argument, the Gwyddion algorithm can be used instead.
2 Gwyddion does not support Sdr calculation directly, but calculates surface area and projected area.

Supported parameters of 1d-periodic surfaces

Additionally, this package supports the calculation of non-standard parameters for periodic textured surfaces with one- dimensional periodic structures. The following parameters can be calculated:

Parameter Description
Period Dominant spatial period of the 1d-surface texture
Depth Peak-to-valley depth of the 1d-texture profiles
Aspect ratio Ratio of peak-to-valley depth to spatial period
Homogeneity Homogeneity factor (0 < H < 1) calculated from Gini analysis
Orientation Clockwise angle of the dominant texture to the vertical axis

Supported operations

Operation Description
Leveling Subtraction of least squares fit to a plane
Zeroing Sets the lowest datapoint of the surface to zero
Centering Sets the average value of the surface elevation to zero
Zooming Magnifies the surface by a specified factor
Cropping Crops the surface in a specified rectangle
Rotation Rotates the surface by a specified angle in degrees
Alignment Aligns the surface with the dominant texture direction by rotation
Outlier removal Removes outliers outside n standard deviation from the mean
Thresholding Thresholding based on areal material ratio
Filtering Applies a Gaussian highpass, lowpass or bandpass filter

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

surfalize-0.10.2.tar.gz (72.4 kB view details)

Uploaded Source

Built Distribution

surfalize-0.10.2-py3-none-any.whl (77.7 kB view details)

Uploaded Python 3

File details

Details for the file surfalize-0.10.2.tar.gz.

File metadata

  • Download URL: surfalize-0.10.2.tar.gz
  • Upload date:
  • Size: 72.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for surfalize-0.10.2.tar.gz
Algorithm Hash digest
SHA256 a6e4158ffc3841cf4c122f1440a31f5e22126985377576322a68643176195281
MD5 4b12a857341d0f4ca6a0145a5819c261
BLAKE2b-256 d88502fd409dc7a97b0df84c9cd686ee1d0769e708d94ee7d0c616f7a69bc99d

See more details on using hashes here.

File details

Details for the file surfalize-0.10.2-py3-none-any.whl.

File metadata

  • Download URL: surfalize-0.10.2-py3-none-any.whl
  • Upload date:
  • Size: 77.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for surfalize-0.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 36befaa3ccd66de247d8ebb5d65ced89c2492086951ec062089e97f0656ee0b1
MD5 0c9ba28bcd6fc0fee2733ab9f9b40b7c
BLAKE2b-256 b1711ecf46612d650d0d461650d7933dd5e92aae60161e6eb493509610ed8460

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page