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.4.tar.gz (15.0 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.4-cp312-cp312-win_amd64.whl (150.3 kB view details)

Uploaded CPython 3.12Windows x86-64

kernel_experience_tools-1.1.4-cp312-cp312-macosx_10_14_universal2.whl (261.8 kB view details)

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

kernel_experience_tools-1.1.4-cp311-cp311-win_amd64.whl (148.4 kB view details)

Uploaded CPython 3.11Windows x86-64

kernel_experience_tools-1.1.4-cp311-cp311-macosx_10_14_universal2.whl (259.4 kB view details)

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

kernel_experience_tools-1.1.4-cp310-cp310-win_amd64.whl (146.5 kB view details)

Uploaded CPython 3.10Windows x86-64

kernel_experience_tools-1.1.4-cp310-cp310-macosx_10_14_universal2.whl (254.1 kB view details)

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

File details

Details for the file kernel_experience_tools-1.1.4.tar.gz.

File metadata

  • Download URL: kernel_experience_tools-1.1.4.tar.gz
  • Upload date:
  • Size: 15.0 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.4.tar.gz
Algorithm Hash digest
SHA256 ada00f95e935d0a33a395604c70acca00c0f74b3f92c5fe080f828241708358e
MD5 2e17a24a4ae0b7c164c8acd951827b33
BLAKE2b-256 762cb29274836b04e2dbc2ba2fd1b11e16a1cb0b6b920bb46060454e058fe7ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e0529fea1a3dc2fc0701b5f05ffbddc9cb0ffee9c3d2cfec520d77fff4fa7f40
MD5 a5ffd51a89af80cda8ed1dd26825b5bc
BLAKE2b-256 9556f0742ba7331b0265550b290af4bdc74e4373bb0765dabbe2b5d6d7b0d055

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f45f5b55b238da2ca5588e75fb4987020ead01a4dfadd4a4e05e3e7c1388105
MD5 33f0dd7081a081dbc00e6a82be3389a4
BLAKE2b-256 53fb07823da5159fe5d11bc272350f818764caabfa737b67af98286d20d92a83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp312-cp312-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 2aa7d310d79310b9621b00eed02f3816db27d7d4b659860cfb32b2d1fc4a2647
MD5 512b8aa5c20977fdf2a0730b4c9f7f93
BLAKE2b-256 2dd04d9693548f81673e8cae3dd4f32599d9eb38ad559deb7bdaaa26135f654b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ae3eacfb8accd5d72ac5e995ada6aaed005c9cdf50ff835e22cfbdd1d4418ffa
MD5 a5376c91098df2de1f65793a3665b975
BLAKE2b-256 a7a16be2dccee88df5ee3d72067cbf3e86f2a5adafc62874283bb219c2f1de89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a7659bf6f5ab3e93a5e9f60cb92c8e79eae443c56f35e5de30e708ff4b7633a
MD5 820d08c57a55c5b1e0796f22f9c6caf1
BLAKE2b-256 42bb7ac2dcd91de0c236a6b50b7f7953ecce4de77e807716baf9a0240dcd94b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp311-cp311-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 b4d9ebb72b134e55bee4bf9f31d6788acd5d95cba4895ed9d032af25f1f8fd24
MD5 2c7ffd54f04140b2be0f085e8b124a57
BLAKE2b-256 5c40a41019e4d1b034ddb2703962ac55c5f1a3b25274122dc835dbd4e6e64f6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 98158ef787ceb12f5aaeba31606945391cf0f4ea9ed29500eead87a7837059f8
MD5 20713bec2b87fd1f2fe5333abec8b34f
BLAKE2b-256 61f87cf5d953239a31fa68d08ed34439a4b466d422046171e0ac0f7f0ba2cc54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b6f7b5ce19180c2ae39f8348d5ebc6d1f67e076d4e4472a1fdbc7b2f8e3fc713
MD5 98e8c28b44676ec6e44de00ca3ea4ae6
BLAKE2b-256 a2f13117a312be8326f8f500dc97ca10ea068f882286a094096cae94ed2d25be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.4-cp310-cp310-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 8ce14f133771347b1ae2ca9075a344bc24880f1e2bf283efb008242f32dd1a2e
MD5 f4acae6d3ba82dc11bf16c27a243e49b
BLAKE2b-256 9746ed892b88fa6315ca97d2ef036c6929dfc1d4f27a1dafcb9af809420213b6

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