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.0.tar.gz (15.5 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.0-cp312-cp312-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.12Windows x86-64

kernel_experience_tools-1.1.0-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.0-cp311-cp311-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.11Windows x86-64

kernel_experience_tools-1.1.0-cp311-cp311-macosx_10_14_universal2.whl (302.9 kB view details)

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

kernel_experience_tools-1.1.0-cp310-cp310-win_amd64.whl (3.3 MB view details)

Uploaded CPython 3.10Windows x86-64

kernel_experience_tools-1.1.0-cp310-cp310-macosx_10_14_universal2.whl (297.3 kB view details)

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

File details

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

File metadata

  • Download URL: kernel_experience_tools-1.1.0.tar.gz
  • Upload date:
  • Size: 15.5 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.0.tar.gz
Algorithm Hash digest
SHA256 cd001213ea08faa1bee578e8c030c126234117212b3b439aab5801a50e03b8a1
MD5 bac4f5c7e6fc4466d8f69592cfe60cdb
BLAKE2b-256 111e1b49b4149b915c0d2b08eae139e827facfdd3a45e4e6976e7f4f95a93b75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b9e80932d38db4193667fc08ea6145a857e938024a706bc616d8e498a671d885
MD5 03bfc7dcbcd14e05c7dba8135af23741
BLAKE2b-256 01348506064e0ce3f8549d043cc79b21b56ff8dc6b4e50101bc88d03bee318a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d54f7cff6d122456a2d5b8bfeb2e3e24c9bd2b9c4f0eb21cc0109ee5492a3a09
MD5 280b9c5fad0cc0ae574f8bfd9cf30b93
BLAKE2b-256 7017ddbde92af55586812f88355ed87e87e206c69e778f2ae59d53b713e82e54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp312-cp312-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 983f4d74a647c764d928175554069046ad5cb34da62f88360a8976841fb13a1a
MD5 695bca446bd389e6a00582f9cb7ffe5f
BLAKE2b-256 d7868f7f14ce1d139d5c0454deab576df5bcb416408ca2de9c05fe518193671a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 36cc0a2d81dd834b1b6ac092f3c39cee6d45639b5290dcbf9cebe17341806402
MD5 c2eec5a1287737912249dbe8119ca372
BLAKE2b-256 f49c7f8319df90b6cf812d8cb56156b48752b2a296d8daf1af995f570e48be8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 afffde5a03885f4df065689309ccd4549d6a36d4a50c5a8fb6f097f7b2e9ea08
MD5 38ea92f7e0a380e1bbbd38fb33495568
BLAKE2b-256 e3d2cccadee389247d061488862a69142dea974996c36a47c6c3f6889ff2e888

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp311-cp311-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 a5a7b2b245826f9959dddd37184377a154bcae8eecbe561651c063e09381ecd2
MD5 4aad48c61e0bee6915baf1ae3f0dc85e
BLAKE2b-256 6c0c65facd8582a9de26403b6cd0fa3575d6ad28e14c656d64716cdc3534b9de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7c4e9d28b47fd6e762bca0bbcb2cf3b4c215c20e1447331ebb2c44a058249be4
MD5 ff9968434e1f04462c70a5decfd115c1
BLAKE2b-256 2c5702f5306bb1544bfddc81fa3e437bb94685b8538919a178f5d748de7d3373

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db2bebb01e539f5ee7a5d53d18eeaba21dc7788312f789f9038ed9da6e5a0d98
MD5 edeec38c996a648b5c4a6f3fd5f932d3
BLAKE2b-256 661f03bef59d0b2b2ae969935195056d856626c7ac8619d51eaef54c836637f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kernel_experience_tools-1.1.0-cp310-cp310-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 ebdaee91248ed68289498d18c69cb22752cd3672cde189c5029e715444ac61e1
MD5 4c9dc094dcac92cc8c3a7b54ecff5fbf
BLAKE2b-256 739f99f09a0ce0e6d7661082a2b6082e58558c97283babbdc192572a1f6b784b

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