Skip to main content

Hopf algebras, B-series, and Runge-Kutta methods on rooted trees

Project description

Logo

PyPI - Version PyPI - Downloads CI - Test Read the Docs License

Kauri is a Python package for symbolic and algebraic manipulation of rooted trees, with applications to B-series, Runge-Kutta methods, and backward error analysis. It implements multiple Hopf algebraic structures on both non-planar and planar rooted trees, and provides tools for symbolic computation, visualization, and numerical integration.

Installation

pip install kauri

Documentation

Full documentation is available at https://kauri.readthedocs.io

Features

Hopf algebras

Algebra Non-planar Planar
Butcher-Connes-Kreimer (BCK) kauri.bck kauri.nck
Grossman-Larson (GL) kauri.gl kauri.pgl
Calaque-Ebrahimi-Fard-Manchon (CEM) kauri.cem --
Munthe-Kaas-Wright (MKW) -- kauri.mkw

Each algebra provides: coproduct, counit, antipode, map_product, map_power. Additionally, kauri.gl and kauri.pgl provide product, and kauri.mkw provides shuffle_product.

Tree types

Non-planar (commutative) Planar (noncommutative)
Tree PlanarTree
Forest OrderedForest
ForestSum ForestSum
TensorProductSum TensorProductSum

Additional modules

  • B-series (BSeries) -- symbolic and numerical manipulation of truncated B-series
  • Runge-Kutta methods (RK) -- 15+ predefined methods with order verification, composition, and numerical integration
  • Commutator-free methods (CFMethod) -- Lie group integrators with planar order theory
  • Odd-even decomposition (oddeven, planar_oddeven) -- symmetric splitting of characters
  • Map algebra (Map) -- BCK/CEM convolution products, composition, exp/log
  • Tree generation -- enumeration of non-planar, planar, and coloured trees
  • SVG display -- inline visualization in Jupyter notebooks

Examples

BCK coproduct

import kauri as kr
import kauri.bck as bck

t = kr.Tree([[], [[]]])
cp = bck.coproduct(t)
kr.display(cp)
BCK coproduct example

Labelled BCK antipode

t = kr.Tree([[[3],2],[1],0])
s = bck.antipode(t)
kr.display(s)
BCK antipode example

Grossman-Larson coproduct

import kauri.gl as gl

t = kr.Tree([[], [[]]])
cp = gl.coproduct(t)
kr.display(cp)
GL coproduct example

CEM coproduct

import kauri.cem as cem

t = kr.Tree([[], [[]]])
cp = cem.coproduct(t)
kr.display(cp)
CEM coproduct example

NCK coproduct

import kauri.nck as nck

pt = kr.PlanarTree([[], [[]]])
cp = nck.coproduct(pt)
kr.display(cp)
NCK coproduct example

PGL product

import kauri.pgl as pgl

t1 = kr.PlanarTree([[]])
t2 = kr.PlanarTree([[], []])
p = pgl.product(t1, t2)
kr.display(p)
PGL product example

MKW coproduct

import kauri.mkw as mkw

pt = kr.PlanarTree([[], [[]]])
cp = mkw.coproduct(pt)
kr.display(cp)
MKW coproduct example

Trees of order 4

for t in kr.trees_of_order(4):
    kr.display(t)
Trees of order 4

Runge-Kutta order conditions

t = kr.Tree([[],[]])
print(kr.rk_order_cond(t, s=3, explicit=True))
a10**2*b1 + b2*(a20 + a21)**2 - 1/3

Truncated B-series of RK4

import sympy as sp

y1 = sp.symbols('y1')
y = sp.Matrix([y1])
f = sp.Matrix([y1 ** 2])

m = kr.rk4.elementary_weights_map()
bs = kr.BSeries(y, f, weights=m, order=5)
print(bs.series())

Odd-even decomposition

import kauri.oddeven as oddeven

# The square root of the identity in BCK convolution
sqrt_id = oddeven.id_sqrt

# Verify: sqrt_id * sqrt_id == identity
t = kr.Tree([[],[]])
print((sqrt_id * sqrt_id)(t))  # Same as kr.ident(t)

Modified equations and preprocessing

# Modified equation of a B-series method
phi = kr.rk4.elementary_weights_map()
mod_eq = phi.modified_equation()

# Preprocessed integrator
preprocessed = phi.preprocessed_integrator()

Citation

If you found this library useful in your research, please consider citing:

@misc{shmelev2025ees,
  title={Explicit and Effectively Symmetric Runge-Kutta Methods},
  author={Shmelev, Daniil and Ebrahimi-Fard, Kurusch and Tapia, Nikolas and Salvi, Cristopher},
  journal={arXiv:2507.21006},
  year={2025}
}

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

kauri-2.0.0.tar.gz (68.6 kB view details)

Uploaded Source

File details

Details for the file kauri-2.0.0.tar.gz.

File metadata

  • Download URL: kauri-2.0.0.tar.gz
  • Upload date:
  • Size: 68.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for kauri-2.0.0.tar.gz
Algorithm Hash digest
SHA256 3216ea2adcf7598435e91a551f9492e51b31e911de6e8e95c220a2935d80102e
MD5 fa20944f0b94838a65de7efeece45d61
BLAKE2b-256 b03762c113537bdf2074af66f13930d0bb7ab68df63b87d3edef6de29dca88ab

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