Skip to main content

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 error
  • max_error: float — Maximum relative error
  • accuracy: float — 1 - mean_error
  • rmse: 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kernel_experience_tools-1.1.2.tar.gz (15.4 kB view details)

Uploaded Source

Built Distributions

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

kernel_experience_tools-1.1.2-cp312-cp312-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.12Windows x86-64

kernel_experience_tools-1.1.2-cp312-cp312-macosx_10_14_universal2.whl (306.4 kB view details)

Uploaded CPython 3.12macOS 10.14+ universal2 (ARM64, x86-64)

kernel_experience_tools-1.1.2-cp311-cp311-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.11Windows x86-64

kernel_experience_tools-1.1.2-cp311-cp311-macosx_10_14_universal2.whl (302.8 kB view details)

Uploaded CPython 3.11macOS 10.14+ universal2 (ARM64, x86-64)

kernel_experience_tools-1.1.2-cp310-cp310-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.10Windows x86-64

kernel_experience_tools-1.1.2-cp310-cp310-macosx_10_14_universal2.whl (297.2 kB view details)

Uploaded CPython 3.10macOS 10.14+ universal2 (ARM64, x86-64)

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

Hashes for kernel_experience_tools-1.1.2.tar.gz
Algorithm Hash digest
SHA256 4d4e236fc26d72958d0a065ecc9294b52a476a72386a2da6204345bc675c65bc
MD5 d480347f5dbda0d8fd8b62c1ecca8c33
BLAKE2b-256 57fa95fb8637c737494b4ed3ce9e8d1c961f0fbbdcdbf8f0c2a90a2195a40a5e

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e082eaceb931abf3dabaffc97bdb23708e620f35d275279f28e019637772cc56
MD5 82ce406b1e5d4454eca8d35b42978674
BLAKE2b-256 85735fcc8d45da1671138682cb0eb9d62fefad49802062a78add0f3deab785c4

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp312-cp312-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60750b8250f07f9073b2ee6150a938453e2610222d92d70bbeeef3f6a863d9bf
MD5 a533b9d629a227f3af5c0404dd1025b5
BLAKE2b-256 62e18ef8b550109e8b13cfd68ad45d8da35853bc203470c5d3f3172f4f0ffabc

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp312-cp312-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp312-cp312-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 db50d284fd8d2c38e317efff54825043595f240464de76041b69d51c82264278
MD5 0dd5f1cdfd8a8e57a011a34caa8a86aa
BLAKE2b-256 a612f0dd59f46f5156392efd39b2c13412efa4d99fa3acef452c25b4626249f1

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8cdd373cf3a0cc1f21415e686092dc750632fa022e35291d70ba5f09fba781bd
MD5 50a8595ee2dbf282ccab068d3c15d6df
BLAKE2b-256 0a7d436b09603d15181ba6e200b5230dd2e8c809209202a2c47e42615898c010

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 323cdf0b62cff81df55bc0a40cfb3d870863b1b3fd085c2e01949b669a5d3bc1
MD5 ff7bc591510f9e784cc6ef570c45fe1a
BLAKE2b-256 4816088526d152fa84602f80422b0681c7a392afaa8c2800551707c51c4aa1f2

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp311-cp311-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp311-cp311-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 db11e0108e719eb209de48651584bf39626489b8b83f1c394865a40506eae17f
MD5 e5762c680ff5984366357bc276391efd
BLAKE2b-256 d5e34e90951532488ddb51bf4e9f2348a74c9e2aaa74273e64ba83a0418c73db

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 38eea6d361745a967d015a59f882d9606f2496677a9673a5c70849f13540288c
MD5 b42e1c67b9966854ae961bed5b69e532
BLAKE2b-256 82c02dc1b4662f5bfdc5de64f9f5843318626d01998f2e78302453377fe2e857

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 118bbf046476f256b3ebeaab49371b4efe67214f3119c928eebcf98b914d7487
MD5 ed29b20d48e56009cc44e34333c20640
BLAKE2b-256 3dec9d6035c1a26bcab799e254bee36dce175642022067deb079de5d70829818

See more details on using hashes here.

File details

Details for the file kernel_experience_tools-1.1.2-cp310-cp310-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.2-cp310-cp310-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 4ec43e4f11e17ef34be096d46574629b2eaf3de641c973d6dd3a200437137d81
MD5 d09dbd2f5b747518271864161d47ed6b
BLAKE2b-256 c9851b343de218eeb9c147b284066d07d720ff1af78aa5b4f58b160b33fe9e23

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