Skip to main content

A python library for inverse Laplace transform of one dimensional and multidimensional data.

Project description

ILTpy 1.0.0

Introduction

ILTpy (/ɪltˈpaɪ/) is a python library for performing regularized inversion of one-dimensional or multi-dimensional data without non-negativity constraint. Contributions to respective distributions with both positive and negative sign are determined. Primary applications include magnetic resonance (NMR, EPR), and electrochemical impedance spectroscopy (distribution of relaxation times; DRT). Algorithmic details and parametrization are described in : J. Granwehr, P.J. Roberts, J. Chem. Theory Comput. 8, 3473­3482 (2012)

Documentation

Visit ILTpy's documentation.

Demo

Try ILTpy in your web browser or jump to quick start.

Installation

Prerequisites

  • To install and use ILTpy, Python must be installed on your device and be available on system PATH.
  • ILTpy is compatible with Python 3.9, 3.10, 3.11, 3.12 and 3.13.
  • ILTpy can be installed using python's package manager, pip.
  • A python virtual environment is recommended.

Installing from PyPi

  • Run the following command in a terminal:
python -m pip install ilt-py-lib

Installing from FZJ's app server

  • Run the following command in a terminal:
python -m pip install --index-url https://apps.fz-juelich.de/iltpy/packages --extra-index-url https://pypi.org/simple ilt-py-lib

Installing from source

  • Clone this repository.
  • Navigate to the local directory where ILTpy was downloaded/extracted. The ILTpy directory should contain a setup.py file along with other folders.
  • While inside the ILTpy directory, run the following command in a terminal (or command prompt) :
python -m pip install .

Dependencies

  • python >=3.9,<3.14
  • scipy>=1.13.1,<=1.16.0
  • numpy>1.25.1,<=2.3.1
  • joblib>=1.4.2,<=1.5.1
  • tqdm

More information on using ILTpy can be found here.

⚡ Quick-start

A workflow using ILTpy and synthetic exponential decay data wth noise is shown below. First, we generate some synthetic data for analysis :

Click to show
# --- Simulate synthetic data ---

import numpy as np

def kww(t, taus, betas, amps):

    """Kohlrausch–Williams–Watts function"""
    
    return sum(a * np.exp(-(t / tau) ** b) for tau, b, a in zip(taus, betas, amps))

# Time vector (input sampling points)
t_syn = np.linspace(0, 1024,1024) 

# Simulate data with two components at 10 and 100 with different amplitudes
data_syn = kww(t_syn, taus=[10,100], betas=[1, 1], amps=[1, 0.5])

# Add noise to the simulated data
noise_level = 0.01
data_syn = data_syn + np.random.randn(t_syn.size)*noise_level

# scale data so that noise variance is 1 before analysis using ILTpy
data_syn = data_syn/noise_level

The synthetic data consists of two components with time constants 10 and 100, which is reproduced in the distribution after inversion. The residuals obtained after inversion are random and devoid of systematic features, indicating a good fit to the data and a compatible kernel.

ILTpy Workflow

# --- ILTpy workflow ---
# assuming data_syn and t_syn are numpy arrays with the data and the sampling vector.

# Import ILTpy
import iltpy as ilt

# Load the data into iltpy using iltload
synILT = ilt.iltload(data=data_syn, t=t_syn)

# Specify parameters and  initialize inversion
tau = np.logspace(-1, 4, 100) # output sampling points
synILT.init(tau=tau, kernel=ilt.Exponential())

# Perform inversion
synILT.invert()
Starting iterations ...
100%|██████████| 100/100 [00:00<00:00, 423.44it/s]
Done.
## Reporting

# Save the results
synILT.report(filepath='syn_data_ILT.txt')

# Plot the results
from iltpy.output.plotting import iltplot
iltplot(synILT)
iltpy_quick_start_result

Team

  • Dr. Davis Thomas Daniel (Lead developer)
  • Christian Bartsch
  • Franz Philipp Bereck
  • Dr. Simone Köcher
  • Dr. Christoph Scheurer
  • Prof. Dr. Josef Granwehr (Project lead)

License

Copyright (c) 2025 Davis Thomas Daniel, Josef Granwehr and other contributors.

ILTpy is licensed under the GNU Lesser General Public License v3.0. See the LICENSE file for details.

Citation

If you use ILTpy in your work, please cite it (using the appropriate version):

@software{iltpy,
  author       = {Davis Thomas Daniel and Christian Bartsch and Franz Philipp Bereck and Simone Köcher and Christoph Scheurer and Josef Granwehr},
  title        = {ILTpy},
  year         = {2025},
  version      = {1.0.0},
  url          = {https://apps.fz-juelich.de/iltpy/},
  doi          = {10.1021/ct3001393}
}

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

ilt_py_lib-1.0.0.tar.gz (49.8 kB view details)

Uploaded Source

Built Distribution

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

ilt_py_lib-1.0.0-py3-none-any.whl (60.5 kB view details)

Uploaded Python 3

File details

Details for the file ilt_py_lib-1.0.0.tar.gz.

File metadata

  • Download URL: ilt_py_lib-1.0.0.tar.gz
  • Upload date:
  • Size: 49.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for ilt_py_lib-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c1ddf4f78950c117f2154255f8784ecee7762685c3993d79efb4c99c7cb63475
MD5 0a2f329df6775e48a1b4a004272608be
BLAKE2b-256 2f7197c8cdd5d20df24d92c7007da1b88a906e14c279a18f73d19cdfb00c7519

See more details on using hashes here.

File details

Details for the file ilt_py_lib-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ilt_py_lib-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 60.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for ilt_py_lib-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e0d393e128c3988ea9ed42de0720d6148ac0ce16354dffcb76d4ab3cd72fb9b6
MD5 39a8f70fc4cb46e40926feacda483610
BLAKE2b-256 2500aba8954c441705e4ba3d9ade3afe4dbd34bd1dca67630d3dfbc7c0d22bd2

See more details on using hashes here.

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