Metadata-Version: 2.4
Name: irrepx
Version: 0.0.0
Summary: Minimal O(3) irreducible representations with optional JAX support. A lightweight, pure-Python replacement for the core of e3nn-jax.
Author-email: DeepH team <deeph-pack@outlook.com>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/kYangLi/irrepx
Project-URL: Documentation, https://github.com/kYangLi/irrepx#readme
Project-URL: Repository, https://github.com/kYangLi/irrepx.git
Project-URL: Issues, https://github.com/kYangLi/irrepx/issues
Keywords: irreps,irreducible representations,O(3),SO(3),e3nn,equivariance,JAX,symmetry,spherical harmonics,deep learning,neural networks,physics
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: <3.15,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: jax
Requires-Dist: jax>=0.4.0; extra == "jax"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: black>=23.0; extra == "dev"
Dynamic: license-file

# irrepx

Minimal O(3) irreducible representations with optional JAX support.

A lightweight, pure-Python replacement for the core data structures and
operations of e3nn-jax, designed to be maintained independently of the
now-unmaintained upstream library.

## Install

### Light mode (pure Python, no JAX)

```bash
pip install irrepx
```

Provides `Irrep`, `MulIrrep`, `Irreps` — zero dependencies beyond the
Python standard library.

### Full mode (with JAX computation)

```bash
pip install irrepx[jax]
```

Adds `IrrepsArray`, `spherical_harmonics`, `tensor_product`, and more
(functional API, JIT-compatible).

> Full mode is not yet available as of v0.0.0.

## Quick Start

```python
from irrepx import Irrep, Irreps

# Create irreps by string
irreps = Irreps("32x0e + 16x1o + 8x2e")
print(irreps.dim)      # 32*1 + 16*3 + 8*5 = 120
print(irreps.lmax)     # 2
print(irreps.regroup()) # 32x0e+16x1o+8x2e

# Build spherical harmonic representation
sh = Irreps.spherical_harmonics(lmax=3)
print(sh)  # 1x0e+1x1o+1x2e+1x3o

# Check equivalences
assert Irrep("2e") in Irrep("1o") * Irrep("1o")
```

## License

GPL-3.0-or-later
