Library for projecting memory kernels to experience functions
Project description
Kernel-Experience Tools 🧠 → ⏳
A Python library that turns memory kernels into experience functions.
📌 What is it?
Every memory kernel K(t) hides a story.
This library finds it.
Given the Volterra relaxation equation
x(t) = x₀ - ∫₀ᵗ K(t-τ) x(τ) dτ
we compute the unique experience function n(t) such that
x(t) = x₀ · λⁿ⁽ᵗ⁾
One kernel. One curve. One number.
🚀 Quick start
from kernel_experience import Kernel, project_kernel_to_n
# Pick a kernel
K = Kernel.tempered_power_law(alpha=0.6, beta=0.3)
# Get its experience function
t, x, n = project_kernel_to_n(K, t_max=10)
print(f"Memory score: {n[-1]:.2f}")
# Memory score: 3.44
📦 Installation
pip install kernel-experience-tools
📘 API Reference
Kernel
Container for your memory kernel.
Parameters
func: callable — Kernel function K(t)name: str, optional — Kernel name (default: "CustomKernel")params: dict, optional — Kernel parameters
Factory methods
# Exponential: γ·e^{-γt}
K = Kernel.exponential(gamma=1.0)
# Power law: γ·t^{α-1}/Γ(α)
K = Kernel.power_law(alpha=0.7, gamma=1.0)
# Mittag-Leffler: t^{α-1}E_{α,α}(-t^α)
K = Kernel.mittag_leffler(alpha=0.7)
# Tempered power law: γ·t^{α-1}e^{-βt}/Γ(α)
K = Kernel.tempered_power_law(alpha=0.6, beta=0.3, gamma=1.0)
Custom kernel
def my_kernel(t):
return np.exp(-t) * np.cos(t)
K = Kernel(my_kernel, name="Oscillatory", params={"freq": 1.0})
project_kernel_to_n
Main projection: K(t) → n(t).
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
kernel |
Kernel |
— | Memory kernel |
lambda_param |
float |
0.8 | Base λ in (0,1) |
t_max |
float |
10.0 | Maximum time |
n_points |
int |
1000 | Number of time points |
x0 |
float |
1.0 | Initial condition |
return_complex |
bool |
False | Return complex n(t) for oscillatory kernels |
Returns
| Return | Type | Description |
|---|---|---|
t |
ndarray |
Time grid |
x |
ndarray |
Solution x(t) |
n |
ndarray |
Experience function n(t) |
Examples
# Basic usage
t, x, n = project_kernel_to_n(K, t_max=20, n_points=2000)
# Custom lambda
t, x, n = project_kernel_to_n(K, lambda_param=0.5)
# Oscillatory kernel — get complex n(t)
K_osc = Kernel(lambda t: np.exp(-0.1*t)*np.sin(t), name="Oscillatory")
t, x, n_complex = project_kernel_to_n(K_osc, return_complex=True)
# Extract real and imaginary parts
n_real = n_complex.real
n_imag = n_complex.imag
solve_volterra
Numerical solver for Volterra integral equation.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
kernel |
Kernel |
— | Memory kernel |
t_max |
float |
10.0 | Maximum time |
n_points |
int |
1000 | Number of time points |
x0 |
float |
1.0 | Initial condition |
Returns
| Return | Type | Description |
|---|---|---|
t |
ndarray |
Time grid |
x |
ndarray |
Solution x(t) |
Example
t, x = solve_volterra(K, t_max=5, n_points=500)
compute_accuracy
Compare original and reconstructed solutions.
Parameters
| Parameter | Type | Description |
|---|---|---|
original_x |
ndarray |
Original solution x(t) |
reconstructed_x |
ndarray |
Reconstructed solution x₀·λⁿ⁽ᵗ⁾ |
Returns
| Return | Type | Description |
|---|---|---|
dict |
dict |
Accuracy metrics |
Metrics
mean_error: float — Mean relative errormax_error: float — Maximum relative erroraccuracy: float — 1 - mean_errorrmse: float — Root mean square error
Example
# Get solution and n(t)
t, x, n = project_kernel_to_n(K)
# Reconstruct from n(t)
x_rec = 1.0 * (0.8 ** n)
# Check accuracy
metrics = compute_accuracy(x, x_rec)
print(f"Accuracy: {metrics['accuracy']:.2%}")
print(f"Mean error: {metrics['mean_error']:.2e}")
# Accuracy: 100.00%
# Mean error: 1.23e-12
🔄 Lambda conversion (0.2.0)
Experience values depend on your choice of λ. These tools let you convert between different scales — no need to pick a "right" one.
Methods (available directly from the Kernel class)
from kernel_experience import Kernel
# Convert experience from one λ to another
n2 = Kernel.convert_lambda(n=3.05, lambda_from=0.8, lambda_to=0.5)
# Get the conversion factor directly
factor = Kernel.scale_factor(0.8, 0.5) # n₀.₅ = n₀.₈ * factor
| Method | What it does |
|---|---|
convert_lambda(n, λ₁, λ₂) |
Returns n measured in scale λ₁ expressed in scale λ₂ |
scale_factor(λ₁, λ₂) |
Multiplication factor: n₂ = n₁ · factor |
Formula
n₂ = n₁ · log_{λ₂}(λ₁)
Exact. No approximation. No privileged scale.
CHANGES IN VERSION 1.0.0
🚀 What's new in 1.0.0
⚡ 10x faster C++ backend
- Volterra solver now runs up to 10 times faster with optional C++ module
- Automatically used if compiled, falls back to pure Python otherwise
- No code changes needed — just
pip install kernel-experience-tools
🔧 Seamless installation
- C++ module compiles on‑the‑fly during
pip install - Requires a C++ compiler (g++, clang, or MSVC) — automatically detected
- Pure Python fallback ensures it always works, even without compilation
📦 Stable API
- 100% backward compatible with 0.x versions
- All existing code continues to work unchanged
- Same functions, same parameters, same results — just faster
✅ Production ready
- First stable release
- Extensively tested on 15+ kernel types
- 100% accuracy on all physical kernels
📝 Пример для README.md
Example
You ran a kernel with λ = 0.8 and got n = 3.05.
What would that be if you had used λ = 0.5?
n_at_0_5 = Kernel.convert_lambda(3.05, 0.8, 0.5)
print(n_at_0_5) # ≈ 2.07
Or get the factor once and reuse it:
factor = Kernel.scale_factor(0.8, 0.5)
n_at_0_5 = 3.05 * factor # same result
🧠 What problem does it solve?
Traditional relaxation models assume exponential decay.
Real systems — glasses, polymers, biological tissues — show memory effects. Power laws. Stretched exponentials. Oscillations.
This library gives you one language for all of them:
K(t) → n(t)
Once you have n(t), the relaxation curve is simply x₀ · λⁿ⁽ᵗ⁾.
No fractional calculus. No special functions. No black boxes.
Just your kernel. One function call. One curve.
📄 Citation
@software{vozmishchev2026kernel,
author = {Vozmishchev, Artem},
title = {Kernel-Experience Tools: Projecting Memory Kernels to Experience Functions},
year = {2026},
doi = {10.5281/zenodo.18239294},
url = {https://zenodo.org/records/18239294}
}
📜 License
MIT License
Now go find what your kernel remembers.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
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 kernel_experience_tools-1.1.2.tar.gz.
File metadata
- Download URL: kernel_experience_tools-1.1.2.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d4e236fc26d72958d0a065ecc9294b52a476a72386a2da6204345bc675c65bc
|
|
| MD5 |
d480347f5dbda0d8fd8b62c1ecca8c33
|
|
| BLAKE2b-256 |
57fa95fb8637c737494b4ed3ce9e8d1c961f0fbbdcdbf8f0c2a90a2195a40a5e
|
File details
Details for the file kernel_experience_tools-1.1.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e082eaceb931abf3dabaffc97bdb23708e620f35d275279f28e019637772cc56
|
|
| MD5 |
82ce406b1e5d4454eca8d35b42978674
|
|
| BLAKE2b-256 |
85735fcc8d45da1671138682cb0eb9d62fefad49802062a78add0f3deab785c4
|
File details
Details for the file kernel_experience_tools-1.1.2-cp312-cp312-manylinux2014_x86_64.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp312-cp312-manylinux2014_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60750b8250f07f9073b2ee6150a938453e2610222d92d70bbeeef3f6a863d9bf
|
|
| MD5 |
a533b9d629a227f3af5c0404dd1025b5
|
|
| BLAKE2b-256 |
62e18ef8b550109e8b13cfd68ad45d8da35853bc203470c5d3f3172f4f0ffabc
|
File details
Details for the file kernel_experience_tools-1.1.2-cp312-cp312-macosx_10_14_universal2.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp312-cp312-macosx_10_14_universal2.whl
- Upload date:
- Size: 306.4 kB
- Tags: CPython 3.12, macOS 10.14+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db50d284fd8d2c38e317efff54825043595f240464de76041b69d51c82264278
|
|
| MD5 |
0dd5f1cdfd8a8e57a011a34caa8a86aa
|
|
| BLAKE2b-256 |
a612f0dd59f46f5156392efd39b2c13412efa4d99fa3acef452c25b4626249f1
|
File details
Details for the file kernel_experience_tools-1.1.2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 3.5 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cdd373cf3a0cc1f21415e686092dc750632fa022e35291d70ba5f09fba781bd
|
|
| MD5 |
50a8595ee2dbf282ccab068d3c15d6df
|
|
| BLAKE2b-256 |
0a7d436b09603d15181ba6e200b5230dd2e8c809209202a2c47e42615898c010
|
File details
Details for the file kernel_experience_tools-1.1.2-cp311-cp311-manylinux2014_x86_64.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp311-cp311-manylinux2014_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
323cdf0b62cff81df55bc0a40cfb3d870863b1b3fd085c2e01949b669a5d3bc1
|
|
| MD5 |
ff7bc591510f9e784cc6ef570c45fe1a
|
|
| BLAKE2b-256 |
4816088526d152fa84602f80422b0681c7a392afaa8c2800551707c51c4aa1f2
|
File details
Details for the file kernel_experience_tools-1.1.2-cp311-cp311-macosx_10_14_universal2.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp311-cp311-macosx_10_14_universal2.whl
- Upload date:
- Size: 302.8 kB
- Tags: CPython 3.11, macOS 10.14+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db11e0108e719eb209de48651584bf39626489b8b83f1c394865a40506eae17f
|
|
| MD5 |
e5762c680ff5984366357bc276391efd
|
|
| BLAKE2b-256 |
d5e34e90951532488ddb51bf4e9f2348a74c9e2aaa74273e64ba83a0418c73db
|
File details
Details for the file kernel_experience_tools-1.1.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 3.5 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38eea6d361745a967d015a59f882d9606f2496677a9673a5c70849f13540288c
|
|
| MD5 |
b42e1c67b9966854ae961bed5b69e532
|
|
| BLAKE2b-256 |
82c02dc1b4662f5bfdc5de64f9f5843318626d01998f2e78302453377fe2e857
|
File details
Details for the file kernel_experience_tools-1.1.2-cp310-cp310-manylinux2014_x86_64.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp310-cp310-manylinux2014_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
118bbf046476f256b3ebeaab49371b4efe67214f3119c928eebcf98b914d7487
|
|
| MD5 |
ed29b20d48e56009cc44e34333c20640
|
|
| BLAKE2b-256 |
3dec9d6035c1a26bcab799e254bee36dce175642022067deb079de5d70829818
|
File details
Details for the file kernel_experience_tools-1.1.2-cp310-cp310-macosx_10_14_universal2.whl.
File metadata
- Download URL: kernel_experience_tools-1.1.2-cp310-cp310-macosx_10_14_universal2.whl
- Upload date:
- Size: 297.2 kB
- Tags: CPython 3.10, macOS 10.14+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ec43e4f11e17ef34be096d46574629b2eaf3de641c973d6dd3a200437137d81
|
|
| MD5 |
d09dbd2f5b747518271864161d47ed6b
|
|
| BLAKE2b-256 |
c9851b343de218eeb9c147b284066d07d720ff1af78aa5b4f58b160b33fe9e23
|