Skip to main content

A Python package for manipulating thermographic data in Non-Destructive Testing (NDT) applications.

Project description

PyThermoNDT

PyThermoNDT is a Python package for manipulating thermographic data in Non-Destructive Testing (NDT) applications. It provides various methods to load, transform, visualize, and write thermographic data, making it easier and more efficient to work with thermal imaging in NDT contexts.

Features

  • Multi-source Data Loading: Read thermographic data seamlessly from local files and S3 storage
  • Hierarchical Data Structure: Store and access thermographic data, metadata, and ground truth in a common format
  • Remote Data Caching: Optionally cache data from remote sources for improved performance
  • Composable Transforms: Build custom processing pipelines with reusable transform components
  • PyTorch Integration: Datasets compatible with PyTorch DataLoader for training deep learning models

Quick Example

from torch.utils.data import DataLoader

from pythermondt import LocalReader, S3Reader
from pythermondt import transforms as T
from pythermondt.dataset import ThermoDataset, container_collate

# Load data from different sources
local_reader = LocalReader("./examples/example_data/**/*.hdf5", recursive=True)
s3_reader = S3Reader("ffg-bp", "example2_writing_data", download_files=True)

# Create optimized transform pipeline (deterministic transforms first for better caching)
transform = T.Compose([
    T.ApplyLUT(),                  # Convert raw data to temperatures
    T.RemoveFlash(),               # Remove flash frames
    T.NonUniformSampling(64),      # Resample data to 64 frames
    T.CropFrames(96, 96),          # Center crop the frames to 96x96
    T.MinMaxNormalize()            # Normalize data
])

# 1.) Access individual files using readers
container = local_reader[0]
processed = transform(container)

# 2.) Analyse processed data
processed.show_frame(frame_number=10)
processed.analyse_interactive()

# 3.) Combine sources in a dataset for training workflows
dataset = ThermoDataset([local_reader, s3_reader], transform=transform)

# 4.) Build cache for faster training (splits pipeline at first random transform)
dataset.build_cache("immediate")

# 5.) Use with PyTorch DataLoader for model training to be used in your training loop
collate_fn = container_collate('/Data/Tdata', '/GroundTruth/DefectMask')
dataloader = DataLoader(dataset, batch_size=4, shuffle=True, collate_fn=collate_fn)

for epoch in range(50):
    print(f"Epoch {epoch + 1}")
    for thermal_data, ground_truth in dataloader:
        print(f"Thermal data shape: {thermal_data.shape}")    # [4, 96, 96, 64]
        print(f"Ground truth shape: {ground_truth.shape}")    # [4, 96, 96]

From here?

PyThermoNDT is yours to use! You can start by exploring the examples directory for more detailed usage scenarios. The package is designed to be flexible and extensible, so feel free to modify and adapt it to your specific needs.

Installation

From PyPI (Recommended)

Install the latest stable release from PyPI:

pip install pythermondt

From GitHub

Install the latest development version from the main branch:

pip install git+https://github.com/voidsy-gmbh/pyThermoNDT.git

From Source

Clone the repository and install locally:

git clone https://github.com/voidsy-gmbh/pyThermoNDT.git
cd pyThermoNDT
pip install .

Documentation

For detailed usage examples, check out the Jupyter Notebooks in the examples directory.

Contributing

Contributions are welcome! Please see the Contributing Guidelines for details on setting up a development environment, coding standards, and the pull request process.

Funding

This project was partially funded by

  • the Austrian Research Promotion Agency (FFG) under grant numbers 920062 and 901177 as part of the project 'Thermal tomography'
  • the Austrian Research Promotion Agency (FFG) under grant numbers 921380 as part of the project 'FLARE'

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

pythermondt-0.3.5.tar.gz (74.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pythermondt-0.3.5-py3-none-any.whl (93.2 kB view details)

Uploaded Python 3

File details

Details for the file pythermondt-0.3.5.tar.gz.

File metadata

  • Download URL: pythermondt-0.3.5.tar.gz
  • Upload date:
  • Size: 74.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythermondt-0.3.5.tar.gz
Algorithm Hash digest
SHA256 b207bd3d89c5d473c14aa86d216cac992634ed8f29e70c307627348beb3d7a0d
MD5 8e6aafc4946d71c66b2ac1c99a33ae9b
BLAKE2b-256 c96ac4f0265ddfaeee11e50c60b26deeb4fecd91d621f94b627fb33b175b02f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythermondt-0.3.5.tar.gz:

Publisher: post_release.yml on voidsy-gmbh/pyThermoNDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pythermondt-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: pythermondt-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 93.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythermondt-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 76c6b55732811d554623839ec99d55e16e91e04bc85f74089acdf7e2afe3d6d5
MD5 4709d4af37c0c91aa388f2b83858986e
BLAKE2b-256 8a429ab34b9460782e18bf8a1e7fc8b86ac1bf1ad514b6ac1f14a43188db05a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythermondt-0.3.5-py3-none-any.whl:

Publisher: post_release.yml on voidsy-gmbh/pyThermoNDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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