Skip to main content

Neojax

neojax (Neural Operators in JAX) is an implementation of Neural Operators built on top of JAX and Equinox. It provides a clean, modular API inspired by the original neuraloperator library.

Currently, neojax is in its early stages. Expect possible breaking changes.

Only the following models and features are available:

  • Fourier Neural Operator (FNO).
    • Symmetrical domain padding (DomainPadding).
    • Pointwise MLP (Channel-MLP) expansions for improved expressivity.
    • Various skip connections (Linear, Soft-Gating, Identity).
    • Normalization in FNO blocks.
  • U-Net Fourier Neural Operator (UNO).
  • Geometry-aware Fourier Neural Operator (GeoFNO) for irregular geometries and mesh domains.
  • Tucker-factorized FNO.
  • Deep Operator Network (DeepONet).
  • Training Orchestration Utilities (Trainer and TrainState).
  • Grid-based positional embeddings (GridEmbeddingNd).
  • (Relative) $L^{p}$-loss.
  • General $W^{k,p}$ Sobolev loss.
  • Loss Compositions.
  • Data Normalization and Scaling.
    • Various Normalizer classes.
    • Physical scales to non-dimensionalize inputs.
  • Dataset utilities (Data-agnostic, downloading utilities, etc.)
  • Data Pipelines (Schemas, Processors, DataBundle)
  • Benchmark Module (Model-/Data-agnostic even for non-neojax models) It is designed to be fully compatible with all JAX features such as vmap, jit, and grad.

Installation

Install the python package via pypi

pip3 install neojax-operators

The core library is designed to have as few dependencies as possible. Some submodules therefore rely on additional dependencies. Install them as needed:

  • Running the examples: neojax-operators[ex]
  • Using the PDE data generation: neojax-operators[gen]
  • Using data downloading and some other data features: neojax-operators[data]
  • Using the benchmark module: neojax-operators[benchmark]

Quickstart

neojax exposes a similar API to neuraloperators and equinox and should therefore be familiar to use:

import jax.numpy as jnp
import jax.random as jr
from neojax.models import FNO

key = jr.key(0)

fno = FNO(
      key=key,
      modes=(12, 12),
      hidden_channels=64,
      in_channels=2,
      out_channels=1,
      n_layers=2
)

x = jnp.ones((2, 64, 64))

pred = fno(x)

For a more detailed introduction refer to the examples in the documentation.

Neojax vs Neuraloperator Benchmarks

Please refer to the benchmarks in the documentation.

Motivation

JAX is widely used in Scientific Machine Learning (SciML) for its functional transformations (jit, vmap, grad) and NumPy-like API. Neural Operators are a common approach for solving PDEs in this space, but a native JAX implementation was missing. neojax fills that gap.

Design Choices

neojax started as a port of the PyTorch neuraloperator library, but was rewritten from the ground up as a JAX-native implementation instead. Porting PyTorch idioms directly into a functional framework added unnecessary complexity; building on equinox gives neojax a class-based API while staying consistent with JAX's pure-functional design.

Roadplan

In upcoming releases more models and components will be added in roughly the following order:

  1. LocalNO, SFNO, RNO, and others
  2. Graph Neural Operators
  3. Debugging utilities

And much more to come!

Contributions

If you'd like to contribute any features, models, or fix implementation errors, please do so. Any contributions are appreciated. Have a look at the CONTRIBUTING.md guide for details on how to do so. I am also open to advice on restructuring and any other design choices that could be improved.

Citation

If you use neojax in your research, please cite it using the following BibTeX entry:

@software{neojax,
  author = {Paul Gekeler},
  title = {neojax: Neural Operators in Jax},
  year = {2026},
  url = {https://github.com/paulgekeler/neojax}
}

Metadata

Release files for neojax-operators 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for neojax-operators 0.2.1
File Size Uploaded Provenance Actions
neojax_operators-0.2.1.tar.gz 6.7 MB Without provenance Details for neojax_operators-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for neojax-operators 0.2.1
File Interpreter ABI Platform Actions
neojax_operators-0.2.1-py3-none-any.whl Python 3 none any Details for neojax_operators-0.2.1-py3-none-any.whl

Total release size: 6.8 MB

Release files / neojax_operators-0.2.1.tar.gz

Download URL neojax_operators-0.2.1.tar.gz
Size 6.7 MB
Tags Source
SHA-256 checksum
How to use checksums
f81c15528ee3482f1ae7a3e4e297ad649e713add166b4bb0c5c871afebd6dc57
BLAKE2b-256 checksum
How to use checksums
4445b42d5766453911b851116121fcb9896b32360f2ad55f5205bb7b0552a61a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / neojax_operators-0.2.1-py3-none-any.whl

Download URL neojax_operators-0.2.1-py3-none-any.whl
Size 167.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac4bbf00bc608a40e9be2f5fe5ca226cfd768dd115f9aa52fa4714a8786fa712
BLAKE2b-256 checksum
How to use checksums
e3a1fecaf318082f8fd99dff3fce7d3103af9f775065b45f933708de262e6f9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for neojax-operators 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page