A thermogravimetric analysis helper tool by Hikari.
Project description
ThermoHi
A lightweight Python toolkit for thermal kinetics data analysis and visualization.
📖 Introduction
ThermoHi(thermohipy) is a small, research-oriented Python package for thermal kinetic analysis
and data visualization, designed for TG/DTG analysis in pyrolysis.
It supports apparent activation energy calculation using model-free methods such as FWO, KAS, Starink, Friedman, and Vyazovkin method
with clean APIs and ready-to-plot results. (You can also export the data and use your own software to create the plots.)
An example file (
example.py) is included to illustrate the usage of ThermoHi's main functionalities. Supports temperature input in Celsius (°C), Fahrenheit (°F), and Kelvin (K).All values are internally converted to Kelvin.
🔍 Notes
There is no limit on the number of heating runs or conversion values; the examples include data with 3 heating rates and 5 conversion values. Data can be exported for plotting. Note: Vyazovkin method may generate a very large amount of data.
ThermoHi performs Arrhenius-type parameter extraction for non-isothermal data under linear heating conditions. The method is applicable to various thermo-analytical datasets provided that a well-defined characteristic temperature can be identified,(e.g., DSC, DMA). For non-chemical transitions (e.g., glass transition or relaxation processes), the extracted value should be interpreted as an apparent activation energy. Users are responsible for evaluating the physical validity of the underlying model.
Why ThermoHi?
ThermoHi aims to automate repetitive thermal analysis tasks (e.g., activation energy estimation), allowing researchers to spend less time clicking buttons — and more time thinking, drinking coffee ☕, saving the world, or simply focusing on what truly matters.
If ThermoHi contributes to your research, please consider citing the associated publication(s).
🔗 The paper's link is pending update.
Workflow
The core workflow of ThermoHi is:
data_object(DataList) → KineticAnalysis(alpha, data_object) → Result → plotting(export results)
where:
DataList(<class 'list'>)
- A list containing:
- Temperature, T (list)
- Heating rate, β (list)
- dα/dT (list)
data_object(<class 'list'>)
-
a list used for calculating multiple sets of data,
e.g., [DataList_1, DataList_2, ..., Datalist_n]
Note: len(alpha) = len(DataList)
alpha(<class 'list'>)
- a list of conversion values(α, 0 < α < 1), e.g., [0.2, 0.4, 0.6, 0.8]
KineticAnalysis(alpha, Datalist)
-
calculating activation energy, 5 mentioned model free methods were provided,
e.g., thermohipy.KineticAnalysis(alpha, Datalist).fwo_ea(return_data = False)
FittingPlot(alpha, Datalist, KineticAnalysis)
-
optional, generate fitting plots with
matplotlibfor reference,e.g., thermohipy.FittingPlot(alpha, data_object, analysis).kasplot()
Result (<class 'dict'>)
- A dictionary containing:
- α : conversion value
- Eα : activation energy
- k, b : slope and intercept of fitting curve
- R² : coefficient of determination
Saving examples
If save_excel=True, the analytical results will be saved as an .xlsx file
in the current working directory. The absolute file path will be printed
in the terminal.
The structure kinetic results of FWO, KAS, Starink and Friedman method is almost the same:
and the plotting data(scatter points)
The fitting curves of Vyazovkin method:
Plotting examples
FWO method
$$\ln\left(\beta\right) = Const. -\frac{E_{\alpha}}{RT}$$
KAS method
$$\ln\left(\frac{\beta}{T^2}\right) = Const. -\frac{E_\alpha}{RT}$$
Starink method
$$\ln\left(\frac{\beta}{T^{1.92}}\right) = Const. -1.0008\frac{E_{\alpha}}{RT}$$
Friedman method
$$\ln\left(\frac{\text{d}\alpha}{\text{d}t}\right) =\ln[Af(\alpha)]- \frac{E_{\alpha}}{RT}$$
Vyazovkin method
$$\Phi(E_\alpha) = \min \sum_{i=1}^{n} \sum_{\substack{j=1 \ j \neq i}}^{n} \frac{I(E_\alpha, T_{\alpha,i}) \cdot \beta_j}{I(E_\alpha, T_{\alpha,j}) \cdot \beta_i}$$
here we use Cai Approximation (AIChE Journal 2006;52:1554–7) to calculated $I(E_\alpha, T_\alpha)$:
$$I(E_\alpha, T_\alpha) \approx \frac{R T_\alpha^2 E_\alpha + 0.66691 R T_\alpha}{E_\alpha \left(E_\alpha + 2.64943R T_\alpha\right)}\exp\left(-\frac{E_\alpha}{R T_\alpha}\right)$$
🔬 Planned Features
Future versions of ThermoHi will include:
- Support for importing experimental data directly from
.csvor.xlsxfiles (viapandas) - Unified plotting style for publication-ready figures (Matplotlib themes)
- Exporting results for analysis as
.xlsx - Directly read TG/DTG experimental data and automatically extract corresponding
(T, β, dα/dT)values based on user-selected α
🚀 Quick Start
Note: the data is solely for demonstration.
import thermohipy as th
alpha = [0.2, 0.4, 0.6]
beta = [1, 5, 10, 20]
t1, t2, t3 = [150, 175, 200, 210], [165, 180, 210, 220], [400, 420, 440, 445]
dadT1 = [0.004, 0.005, 0.006, 0.007]
dadT2 = [0.005, 0.006, 0.007, 0.008]
dadT3 = [0.006, 0.007, 0.008, 0.009]
data = [
th.DataList(t1, beta, dadT1),
th.DataList(t2, beta, dadT2, unit='c'),
th.DataList(t3, beta, dadT3, unit='f')
]
analysis = th.KineticAnalysis(alpha, data)
result1 = analysis.fwo_ea()
print(result1)
pic1 = th.FittingPlot(alpha, data_object, analysis).kasplot()
result2 = th.ExportData(alpha, data_object, analysis).export_fwo(save_excel=True)
print(result2)
result3 = th.ExportData(alpha, data_object, analysis).export_vyazovkin(save_excel=False)
print(result3)
📄 License
Distributed under the MIT License.
See LICENSE for details.
Author
Hikari Quicklime, Ph.D.
Forestry Industry Researcher & Independent Developer
gitHub: QuicklimeHikari
⚙️ Installation
pip install thermohipy
Update 2026.5.2
The output data arrangement has been modified to facilitate plotting.
before: the arrangement is x1 x2 x3 ... xn; y1 y2 y3 ... yn
after: the arrangement now is x1 y1; x2 y2; x3 y3; ... xn yn
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file thermohipy-0.3.3.tar.gz.
File metadata
- Download URL: thermohipy-0.3.3.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
670abc8cbbc4726a5e8d57569cc96273eb1a46f18beead8a64a65597efcd79d9
|
|
| MD5 |
058b223d865a09fd7c41c30dc17945ef
|
|
| BLAKE2b-256 |
1b5c25f564a4f1ec3add4bd6b44c0cb7e2ba3eb200034040e72b7f008cc9db4f
|
File details
Details for the file thermohipy-0.3.3-py3-none-any.whl.
File metadata
- Download URL: thermohipy-0.3.3-py3-none-any.whl
- Upload date:
- Size: 11.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebcc71c401bd2cf0d00dafa21285b6062516cdfea824dd4b1bcc20b530eb50bb
|
|
| MD5 |
480d2694aaa03a9a6b1e09d6e4efdd75
|
|
| BLAKE2b-256 |
b757588c495d305f2b104f657552ba0be82ad503257a96884e36370b07216a88
|