A Python library for thermal analysis kinetic methods, providing tools for data preprocessing, kinetic analysis, and result visualization.
- DSC and TGA exports from TA Instruments, Mettler Toledo, Netzsch and Setaram
- Dilatometry data
- Flexible custom importer for non-standard formats
- Automatic manufacturer detection
- Comprehensive data validation
- Model-fitting methods:
- Johnson-Mehl-Avrami-Kolmogorov (JMAK)
- Kissinger
- Coats-Redfern
- Freeman-Carroll
- Horowitz-Metzger
- Model-Free methods:
- Friedman method
- Kissinger-Akahira-Sunose (KAS)
- Ozawa-Flynn-Wall (OFW)
- Dilatometry analysis:
- Transformed fraction by the lever rule or the tangent method
- Five detectors for the transformation limits (
derivative,offset,double_tangent,second_derivative,statistical), chosen withdetection= - Automatic baseline margin (
margin="auto") DilatometryAnalyzer, which holds the analysis settings in one place
- DSC analysis: baselines, peaks, thermal events and heat capacity
- Data preprocessing, with smoothing by Savitzky-Golay, moving average or LOWESS
- Synthetic data generation for testing the kinetic methods
- Error handling and validation
- Comprehensive plotting functions for:
- Kinetic analysis results
- Dilatometry data
- Transformation analysis
- Custom plot styling options
Pkynetics requires Python 3.10 or later. Install using pip:
pip install pkyneticsFor development installation:
git clone https://github.com/PPeitsch/pkynetics.git
cd pkynetics
pip install -e .[dev]For detailed installation instructions and requirements, see our Installation Guide.
from pkynetics.data import load_dilatometry_heating
from pkynetics.technique_analysis import DilatometryAnalyzer
data = load_dilatometry_heating() # Zircaloy-4 heating run, fetched on first use
result = DilatometryAnalyzer().analyze(
data["temperature"], data["relative_change"], method="lever"
)
print(result["start_temperature"], result["end_temperature"])Since 0.7.0 the example data does not ship with the package. pkynetics.data downloads
each file on first use from pkynetics-data,
verifies it by SHA256 and caches it on disk. Use pkynetics.data.fetch(name) for a path,
or one of the loaders (load_dilatometry_heating, load_dsc_setaram, load_cp_three_step, …)
for the data already imported. To work offline, point PKYNETICS_DATA_DIR at a directory
holding the files. See Example data.
Complete documentation is available at pkynetics.readthedocs.io, including:
- Detailed API reference
- Usage examples
- Method descriptions
- Best practices
We welcome contributions! Please read our:
For vulnerability reports, please review our Security Policy.
See CHANGELOG.md for a list of changes and version updates.
This project is licensed under the MIT License - see the LICENSE file for details.
If you use Pkynetics in your research, please cite it as:
@software{pkynetics,
author = {Pablo Peitsch},
title = {Pkynetics: A Python Library for Thermal Analysis Kinetic Methods},
year = {2026},
version = {0.7.0},
publisher = {GitHub},
url = {https://github.com/PPeitsch/pkynetics}
}