Open-source project
jdtoscano94/NABLA-SciML avatar
jdtoscano94/NABLA-SciML

NABLA-SciML: a research group's working tree of PINN, DeepONet and KAN code

Physics Informed Machine Learning Tutorials (Pytorch and Jax)

684 stars203 forksJupyter NotebookLicense varies

At a glance

What is it?
NABLA-SciML is a collection of tutorials and research modules for physics-informed neural networks, DeepONets and Kolmogorov-Arnold networks, written mostly as Jupyter notebooks in PyTorch and JAX. It is a lab notebook rather than a library, and the installation notes already tell you which parts are self-contained and which are not.
Who is it for?
Adopt NABLA-SciML if you are reproducing a specific paper from this group (RBA, cKANs, KKANs or vRBA) or if you want notebook-shaped introductions to PINNs and DeepONets in both PyTorch and JAX. Do not adopt it as a dependency for production PDE solving: there are no releases, no stated licence and no stated test suite, and two of the seven modules live in separate repositories.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Jupyter Notebook, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

Who this repository is for, and the problem it actually solves

Most PINN code on GitHub is a single training script attached to a paper. If you want to compare a residual-based attention scheme against a plain multilayer perceptron on the same PDE, you usually end up reimplementing one of them. NABLA-SciML is an attempt to keep that comparison material in one place. The README describes it as a collection of the author's ongoing work and a unified framework for implementations of PINNs, DeepONets and newer architectures such as KANs. The author is Juan Diego Toscano, a PhD candidate working with George Karniadakis, and the modules map onto published papers with Karniadakis as a co-author. The audience is therefore narrow and identifiable: graduate students and research engineers who already know what a physics-informed loss is and want reference implementations tied to specific publications. It is not aimed at someone who wants to add a physics loss to an existing training pipeline in an afternoon.

Seven modules, two of which are not in this repository

The README lists seven directories. Tutorials holds introductions to PINNs and DeepONets in both PyTorch and JAX, and most examples are said to have matching videos on the author's YouTube channel. RBA is the code for Residual-Based Attention, with a separate official repository at rba-pinns. cKANs holds the comparison between MLP and KAN representations. KKANs implements Kurkova-Kolmogorov-Arnold Networks, again with its own repository. vRBA is a variational framework for residual-based adaptivity, and the README flags that it contains a custom implementation of a Self-Scaling Broyden optimizer. AIVT, the turbulent thermal convection work, is hosted at Instant-AIVT, and MR-AIV, the brain-wide fluid flow work, is hosted at MR-AIVT. That split matters more than the directory listing suggests. If you clone NABLA-SciML expecting the turbulence or brain-flow code, you will not find it. Four of the seven modules are usable here; the two most recent application papers are pointers.

The dependency split that decides how much you install

The installation notes draw a line the README states explicitly. RBA and cKANs are described as self-contained: they can be run directly as standalone scripts provided you have a valid JAX installation. KKANs, vRBA and the SSBroyden optimizer require the Crunch library, installed through the steps in the README. So the repository is not one installable unit even though it ships a setup.py-style editable install. The practical consequence is that a working environment for the KAN comparison and a working environment for the variational adaptivity framework are different environments, or at least one environment with an extra dependency that the other modules do not need. The README does not say what Crunch is, where it comes from, or what version is expected, which is the first thing I would want to know before committing to the vRBA path.

Getting an environment up: the commands the README gives

The setup section is short and concrete. Clone and enter the repository with git clone https://github.com/jdtoscano94/NABLA-SciML.git followed by cd NABLA-SciML. Create a Python 3.10 environment with conda create -n nabla_env python=3.10 and conda activate nabla_env. Install JAX with GPU support first, which the README says is required for all modules and recommends doing explicitly to ensure CUDA support: pip install -U "jax[cuda12]". Then install the package itself in editable mode with pip install -e ., which the README states is necessary to import the vRBA models and the SSBroyden optimizer. Two details are worth noting. The conda environment name nabla_env is fixed in the instructions, so if you already have one you will need to change it. And the editable install is described as necessary rather than optional, which suggests the vRBA code imports the package by name rather than by relative path. Whether the Tutorials, RBA and cKANs directories need that editable install is not stated; the README only says they need a valid JAX installation.

What the repository does not tell you

The licence field is empty. For a repository that ships research code intended to be cited and reused, that is a real obstacle: without a licence, the default position is that others have no granted right to redistribute or build on it, regardless of how public the code is. The README asks users to cite the relevant papers if they use the code in their research, which is a norm, not a licence. There are also no releases, so there is no versioned artifact to pin against; if you vendor this code you are pinning a commit hash and accepting that the default branch can move. No test suite, CI configuration or benchmark script is mentioned anywhere in the supplied material. The primary language is Jupyter Notebook, which means the reusable logic and the demonstration of that logic are the same files. That is fine for reading and bad for importing: extracting a function from a notebook cell into your own project is manual work, and nothing in the README suggests a stable API surface.

Where a plain PyTorch PINN implementation is the better choice

If your goal is to solve one forward or inverse PDE problem and you have no interest in comparing architectures, the overhead here is hard to justify. A single-file PINN in PyTorch gives you a training loop you fully understand, a dependency set you control, and no question about which module needs which library. NABLA-SciML earns its keep when the comparison is the point: residual-based attention against a baseline, MLP against KAN representations, or a variational adaptivity scheme against a fixed weighting. The cKANs module exists precisely because that MLP-versus-KAN question needed a controlled answer, and the README points to the published comparison. The inverse-problems and inverse-PINN topics suggest the same framing: these are research questions with a paper attached, not general-purpose solvers. Read the repository as the code behind those papers and the fit becomes clear. Read it as a SciML toolkit and the missing licence, missing releases and notebook-first layout all become problems.

Maintenance, upgrades and the citation obligation

The repository is not archived and the last push recorded is 2026-05-31, so it is being touched. That is the extent of what can be said about maintenance from the supplied material. There is no changelog, no release cadence and no stated support policy. Upgrading means pulling the default branch and re-running whatever you built on top of it. The JAX pin is the sharpest upgrade risk: the README instructs jax[cuda12], and JAX's CUDA extras and API have moved over time, so a pinned environment is safer than a floating one. The citation list spans six papers, four of them with a module in this repository and two pointing elsewhere, so using the code in published work carries a citation obligation that the README states directly. The licence question and the citation request are separate things, and only the second one is answered.

Editorial conclusion

Adopt NABLA-SciML if you are reproducing a specific paper from this group (RBA, cKANs, KKANs or vRBA) or if you want notebook-shaped introductions to PINNs and DeepONets in both PyTorch and JAX. Do not adopt it as a dependency for production PDE solving: there are no releases, no stated licence and no stated test suite, and two of the seven modules live in separate repositories. Before you build on it, confirm the licence with the author, check whether the vRBA and KKANs notebooks actually import the Crunch package that the installation section says is required, and read the cited papers rather than the README when you need the method's assumptions.

Official sources

  1. Issues
  2. jdtoscano94/NABLA-SciML on GitHub
  3. README
Community notes

Community notes