Pinneaple 🍍
Unified Physical Data, Geometry, Models and Training for Physics AI
Pinneaple is an open-source Python platform designed to bridge real physical data, geometry, numerical solvers, and machine learning models into a single coherent ecosystem for Physics-Informed AI.
It is built to serve both research and industrial workflows, with strong emphasis on:
- Physical consistency
- Scalability
- Auditability
- Interoperability with CFD / CAD / scientific data formats
✨ Key Features
📦 Unified Physical Dataset (UPD)
A standardized abstraction to represent physical samples, including:
- Physical state (grids, meshes, graphs)
- Geometry (CAD / mesh)
- Governing equations, ICs, BCs, forcings
- Units, regimes, metadata and provenance
Used consistently across data loading, training, validation, and inference.
🌍 Data & IO (pinneaple_data)
- NASA / scientific-ready data pipelines
- Zarr-backed datasets with:
- Lazy loading
- Sharding
- Adaptive prefetch
- Byte-based LRU caching
- Deterministic shard-aware iterators
- Physical validation and schema enforcement
📐 Geometry & Mesh (pinneaple_geom)
- CAD generation (CadQuery)
- STL / mesh IO (trimesh, meshio, OpenFOAM MVP)
- Mesh repair, remeshing and simplification
- Sampling (points, grids, barycentric)
- Geometry-aware feature extraction
🧠 Model Zoo (pinneaple_models)
A curated catalog of architectures commonly used in Physics AI:
- PINNs (Vanilla, XPINN, VPINN, XTFC, Inverse PINN, PIELM)
- Neural Operators (FNO, DeepONet, PINO, GNO, UNO)
- Graph Neural Networks (GraphCast-style, GNN-ODE, equivariant GNNs)
- Transformers (Informer, FEDformer, Autoformer, TFT)
- Reduced Order Models (POD, DMD, HAVOK, Operator Inference)
- Classical & hybrid models (Kalman, ARIMA, Koopman, ESN)
- Physics-aware & structure-preserving networks
All models are discoverable via a central registry.
🧮 Physics Loss Factory (pinneaple_pinn)
- Symbolic PDE definitions (SymPy-based)
- Automatic differentiation graph construction
- PINN-ready residuals and constraints
- Works directly with UPD samples
⚙️ Solvers (pinneaple_solvers)
Numerical solvers and mathematical tools used for:
- Data generation
- Feature extraction
- Validation
Includes:
- FEM / FVM (MVP)
- FFT
- Hilbert–Huang Transform
- Adapters to/from UPD
🏗️ Synthetic Data Generation (pinneaple_data.synth)
Generate datasets from:
- Symbolic PDEs
- Parametric distributions
- Curve fitting from real data
- Images and signals
- Geometry perturbations and CAD parameter sweeps
🚂 Training & Evaluation (pinneaple_train)
- Deterministic, auditable training
- Dataset splitting (train/val/test)
- Preprocessing pipelines & normalizers
- Metrics & visualization
- Physics-aware loss integration
- Reproducible runs (seeds, env fingerprinting)
- Checkpointing & inference utilities
🚀 Installation
Pinneaple is currently distributed as an open-source research & industry framework directly from GitHub.
- Clone the repository
git clone https://github.com/barrosyan/pinneaple.git
cd pinneaple
- Create a virtual environment (strongly recommended)
Python ≥ 3.10 is recommended (3.11 works well; 3.13 may require extra care on Windows).
python -m venv .venv
Activate it:
Linux / macOS
source .venv/bin/activate
Windows (PowerShell)
.venv\Scripts\Activate.ps1
- Install core dependencies
Install Pinneaple in editable (development) mode:
pip install -e .
This installs:
pinneaple_data
pinneaple_geom
pinneaple_models
pinneaple_pinn
pinneaple_pdb
pinneaple_solvers
pinneaple_train
- Optional dependencies (recommended)
Pinneaple is modular. Install only what you need:
🔹 Geometry / CAD / Mesh
pip install trimesh meshio
pip install cadquery # requires OCC stack
⚠️ On Windows, CadQuery is best installed via Conda:
conda create -n pinneaple-cq python=3.10 cadquery -c conda-forge
conda activate pinneaple-cq
pip install -e .
🔹 Scientific & ML stack
pip install torch numpy scipy sympy
Optional (recommended for performance & operators):
pip install zarr numcodecs
pip install open3d fast-simplification
5️. Development & testing tools
For contributors:
pip install -e ".[dev]"
- Verify installation
Quick smoke test:
from pinneaple_models.register_all import register_all
from pinneaple_models.registry import ModelRegistry
register_all()
print("Registered models:", len(ModelRegistry.list()))
🧠 Notes
Pinneaple is not yet released on PyPI — cloning the repo is required.
Some features (CFD, CAD, large-scale Zarr) rely on optional native backends.
All examples in examples/ are runnable after installation.
🧪 Quick Example
from pinneaple_data.physical_sample import PhysicalSample
import xarray as xr
import numpy as np
ds = xr.Dataset(
data_vars=dict(T2M=(("t","x"), np.random.randn(24,16))),
coords=dict(t=np.arange(24), x=np.arange(16))
)
sample = PhysicalSample(
state=ds,
domain={"type": "grid"},
schema={"governing": "toy"},
)
print(sample.summary())
🧑🔬 Who Is This For?
- Physics AI researchers
- CFD / FEA / climate ML teams
- Industrial R&D groups
- Scientific ML practitioners
- Anyone building surrogates, inverse models, or hybrid solvers
🤝 Contributing
We welcome contributions in:
- New datasets & adapters
- Models and solvers
- Benchmarks
- Documentation
See CONTRIBUTING.md.
📄 License
Apache 2.0 — see LICENSE.
📚 Citation
If you use Pinneaple in research, please cite via CITATION.cff.
🌱 Project Philosophy
Pinneaple is not a single model or method.
It is a platform — designed to let physical data, geometry, equations and learning systems interact cleanly, reproducibly, and at scale.
From raw physics to deployable intelligence.
Status: Early but ambitious.
Feedback & collaboration welcome.
Metadata
Release files for pinneaple 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pinneaple-0.4.0.tar.gz | 11.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pinneaple-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.6 MB
Release files / pinneaple-0.4.0.tar.gz
| Download URL | pinneaple-0.4.0.tar.gz |
|---|---|
| Size | 11.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
92975111a06e128d0628a358ba86871e00fcf9bd4f1f1ac9b9cecd6f96736b44
|
|
BLAKE2b-256 checksum How to use checksums |
2d6f4e70920d684ff908bbbdfaee26e981d4e57a4a5989da865305f1d2d380cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / pinneaple-0.4.0-py3-none-any.whl
| Download URL | pinneaple-0.4.0-py3-none-any.whl |
|---|---|
| Size | 759.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a2ae7cbddec41628108f41ee49a533e4860fb2e6cf9f1a48297c2945d2318f85
|
|
BLAKE2b-256 checksum How to use checksums |
a135212f1cc65c39881f2b4678064c55cfb42ec20c2c3ccdc1f928cdefe7ddd0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|