Metadata-Version: 2.4
Name: pypielm
Version: 0.1.0
Summary: A Unified and Reproducible Framework for Physics-Informed Extreme Learning Machines
Project-URL: Homepage, https://github.com/KStruniawski/pypielm
Project-URL: Repository, https://github.com/KStruniawski/pypielm
Project-URL: Documentation, https://pypielm.readthedocs.io
Project-URL: Bug Tracker, https://github.com/KStruniawski/pypielm/issues
Project-URL: Changelog, https://github.com/KStruniawski/pypielm/releases
Author-email: "Karol Struniawski, PhD" <karol.struniawski@sggw.edu.pl>
License: CC BY-NC-ND 4.0
License-File: LICENSE.md
Keywords: ELM,PIELM,PINNs,extreme learning machine,partial differential equations,physics-informed,scientific machine learning
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: numpy>=1.24
Requires-Dist: pyyaml>=6.0
Requires-Dist: scipy>=1.10
Requires-Dist: torch>=2.0
Provides-Extra: app
Provides-Extra: bench
Requires-Dist: memory-profiler>=0.61; extra == 'bench'
Requires-Dist: psutil>=5.9; extra == 'bench'
Provides-Extra: dev
Requires-Dist: hypothesis>=6.80; extra == 'dev'
Requires-Dist: matplotlib>=3.7; extra == 'dev'
Requires-Dist: memory-profiler>=0.61; extra == 'dev'
Requires-Dist: mypy>=1.5; extra == 'dev'
Requires-Dist: psutil>=5.9; extra == 'dev'
Requires-Dist: pytest-cov>=4.1; extra == 'dev'
Requires-Dist: pytest>=7.4; extra == 'dev'
Requires-Dist: ruff>=0.1; extra == 'dev'
Provides-Extra: docs
Requires-Dist: furo>=2023.9.10; extra == 'docs'
Requires-Dist: myst-parser>=2.0; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints>=1.24; extra == 'docs'
Requires-Dist: sphinx>=7.0; extra == 'docs'
Provides-Extra: export
Requires-Dist: onnx>=1.14; extra == 'export'
Requires-Dist: onnxruntime>=1.16; extra == 'export'
Provides-Extra: viz
Requires-Dist: matplotlib>=3.7; extra == 'viz'
Description-Content-Type: text/markdown

# PyPIELM

**A Unified and Reproducible Framework for Physics-Informed Extreme Learning Machines**

[![CI](https://github.com/KStruniawski/pypielm/actions/workflows/ci.yml/badge.svg)](https://github.com/KStruniawski/pypielm/actions/workflows/ci.yml)
[![Coverage](https://codecov.io/gh/KStruniawski/pypielm/branch/main/graph/badge.svg)](https://codecov.io/gh/KStruniawski/pypielm)
[![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://python.org)
[![PyTorch](https://img.shields.io/badge/PyTorch-2.0%2B-orange)](https://pytorch.org)
[![License: CC BY-NC-ND 4.0](https://img.shields.io/badge/License-CC%20BY--NC--ND%204.0-lightgrey.svg)](LICENSE.md)

---

## Overview

PyPIELM is an open-source PyTorch-native library that provides a unified implementation of 26+ Physics-Informed Extreme Learning Machine (PIELM) variants alongside PINN baselines for solving partial differential equations (PDEs). It exposes a scikit-learn-style `fit / predict / score` API so that any PIELM or PINN variant can be used in three lines of code.

### Key Features

| Feature | Detail |
|---------|--------|
| 26+ PIELM variants | VanillaPIELM, BayesianPIELM, GFF-PIELM, DPIELM, LocELM, CurriculumPIELM, NullSpacePIELM, … |
| PINN baselines | VanillaPINN, AdaptivePINN, FourierPINN, MuonPINN |
| Data adapters | CSV, NPZ, PINNacle `.dat`, PDEBench HDF5, `torch.utils.data.Dataset` |
| PDE operators | Autograd Laplacian/gradient, analytic fast paths for tanh/sin, BCs/ICs |
| Reproducibility | YAML experiment configs, CLI, deterministic seeding |
| Export | ONNX, TorchScript |
| Visualisation | 1D/2D solution plots, error maps, Pareto fronts, leaderboard heatmaps |

---

## Installation

```bash
pip install pypielm                  # core only
pip install "pypielm[viz]"           # + matplotlib
pip install "pypielm[viz,bench]"     # + memory profiling
pip install "pypielm[dev]"           # full dev environment
```

From source:

```bash
git clone https://github.com/KStruniawski/pypielm.git
cd pypielm
pip install -e ".[dev]"
```

---

## Quickstart

```python
import pypielm
from pypielm.data import auto_load
from pypielm.models import CorePIELM
from pypielm.pde.operators import AnalyticLaplacian

# Load data (CSV, NPZ, PINNacle .dat, …)
ds = auto_load("data/poisson_classic.dat", source="pinnacle")

# Train model
model = CorePIELM(hidden_dim=300, ridge_lambda=1e-8)
model.fit(ds, pde_operator=AnalyticLaplacian())

# Evaluate
print(model.score(ds.X_test, ds.y_test))  # relative L² error
```

---

## Documentation

Full API reference and tutorials: [pypielm.readthedocs.io](https://pypielm.readthedocs.io)

---

## Citation

If you use PyPIELM in your research, please cite:

```bibtex
@software{struniawski2026pypielm,
  author  = {Struniawski, Karol},
  title   = {{PyPIELM}: A Unified and Reproducible Framework for
             Physics-Informed Extreme Learning Machines},
  year    = {2026},
  url     = {https://github.com/KStruniawski/pypielm},
}
```

---

## Related

- **PyPIELM App** — Streamlit web UI for training, benchmarking and exporting models: [github.com/KStruniawski/pypielm-app](https://github.com/KStruniawski/pypielm-app)

---

## License

CC BY-NC-ND 4.0 © Karol Struniawski
