Skip to content

vixues/kd

 
 

Repository files navigation

Knowledge Discovery (KD)

Symbolic PDE Discovery from Data

Discover the governing partial differential equations hidden in your data — automatically.


KD is a modular toolkit for symbolic equation discovery, with a strong focus on partial differential equations (PDEs). It ships several complementary discovery engines, a unified dataset interface, and built-in publication-quality visualization.

Highlights

  • 4 discovery methods covering sparse regression, genetic algorithms, deep reinforcement learning, and physics-informed neural networks
  • Unified PDEDataset — load built-in benchmarks in one line or bring your own gridded data
  • Built-in visualization — discovered equations, field comparisons, residual diagnostics, expression trees, and more
  • N-D support — works with 1-D, 2-D, and 3-D spatial data out of the box

Quick Start

Installation

Requires Python >= 3.9 and PyTorch.

pip install -e .

# (optional) enable PySR-based symbolic regression
pip install 'kd[pysr]'

Discover a PDE in a few lines

from kd.dataset import load_pde
from kd.model import KD_SGA

dataset = load_pde("burgers")
model = KD_SGA(sga_run=20, num=20, depth=4, width=5)
model.fit_dataset(dataset)
print(model.equation_latex())  # u_t = -1.001 u_x u + 0.100 u_xx

Visualize results

from kd.viz import configure, render_equation, plot_field_comparison
from pathlib import Path

configure(save_dir=Path("artifacts/my_run"))
render_equation(model)               # equation as LaTeX-rendered PNG
plot_field_comparison(model, ...)     # predicted vs true field heatmap
Field comparison

Exact vs predicted solution — KdV equation via KD_DLGA.

Supported Methods

Class Description
KD_SGA PDE discovery via symbolic genetic algorithm
KD_DLGA PDE discovery via deep-learning genetic algorithm
KD_DSCV PDE discovery via reinforcement learning and sparse regression
KD_DSCV_SPR DSCV variant with PINN for sparse / noisy data
KD_PySR General symbolic regression via PySR (optional)

Example Gallery


Burgers equation — KD_SGA

Burgers equation — KD_DSCV

KdV equation — KD_DLGA

Discovered expression tree

See examples/ for runnable scripts covering every model and visualization mode.

Built-in Datasets

from kd.dataset import load_pde, list_available_datasets

print(list_available_datasets())
# ['chafee-infante', 'burgers', 'kdv', 'fisher', ...]

dataset = load_pde("burgers")   # returns a PDEDataset

You can also construct a PDEDataset from your own NumPy arrays:

from kd.dataset import PDEDataset

dataset = PDEDataset(
    equation_name="my_pde",
    fields_data={"u": u_array},
    coords_1d={"x": x, "t": t},
    axis_order=["x", "t"],
    target_field="u",
    lhs_axis="t",
)

Package Layout

kd/
├── base.py        # Shared estimator base class
├── dataset/       # PDEDataset, registry, loaders
├── model/         # KD_SGA, KD_DLGA, KD_DSCV, KD_PySR
├── viz/           # Unified visualization facade
└── utils/         # Logging, FD helpers, solver utilities

Acknowledgements

KD draws on ideas and code from several open-source projects:

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 99.8%
  • Cython 0.2%