FRASTA-toolbox is an open-source desktop application for fracture-surface topography analysis based on the FRASTA (Fracture Surface Topography Analysis) methodology. The software supports interactive import, preprocessing, alignment, and comparative analysis of opposing fracture surfaces represented as structured 3D grids.
The toolbox provides tools for masking, interpolation-based hole filling, manual surface alignment with live difference maps, and cross-sectional profile analysis with synchronized 2D and 3D visualization. It is designed to support reproducible fracture-surface analysis workflows and to translate established FRASTA concepts into a practical, accessible research tool.
FRASTA-toolbox is implemented in Python using PyQt5 and pyqtgraph, and is intended for use in materials science, fracture mechanics, tribology, biomedical engineering, and related research domains.
FRASTA-toolbox currently supports structured grid data exported as text-based XYZ files, where each row corresponds to a single grid point (X, Y, Z). Additional internal formats (NPZ, HDF5) are supported for faster reload and reproducible workflows.
- Import one or more fracture-surface scans in CSV (XYZ grid) format.
- Apply basic preprocessing:
- define region of interest (ROI),
- adjust value range using histogram thresholding,
- fill missing data if necessary.
- Align two opposing fracture surfaces using interactive translation and rotation.
- Place cross-sectional profiles to inspect local deviations and contacts.
-
create virtual environment:
python -m venv .venv -
activate:
.venv\Scripts\activate.bat -
instal packages:
.venv\Scripts\pip.exe install -r requirements.txt -
generating of requirements.txt:
.venv\Scripts\pip.exe freeze > requirements.txt
-
create virtual environment:
python -m venv .venv -
activate:
sh .venv/bin/activate -
instal packages:
./.venv/bin/pip install -r requirements.txt -
generating of requirements.txt:
./.venv/bin/pip freeze > requirements.txt
-
creating distribution package:
./.venv/bin/python -m PyInstaller --add-data "icons;icons" main.py -
running tests:
./.venv/bin/python -m pytest -v -s