Skip to main content

symtenet

tests coverage codecov docs license python

A Python library for symmetric tensor networks: NumPy-ish API on the surface, category theory under the hood.

tenet gives you block-sparse tensors that carry a symmetry exactly — SU(N), SU(2), U(1), Z2, fermion parity and their products — through exact recoupling coefficients. A tensor carries legs, contracts with tenet.einsum and factorizes with tenet.linalg, the way an ndarray does. Blocks live in NumPy, JAX or PyTorch arrays through autoray, so the same tensor runs under jax.jit and jax.grad with its symmetry structure intact. On top of the tensor layer, tenet.network ships finite DMRG and CTMRG.

Install

uv add symtenet         # or: pip install symtenet

The core install pulls numpy, autoray, opt-einsum and racah-py, and every symmetry works on it. Two optional extras:

uv add "symtenet[jax]"      # jax>=0.10 — pytrees, jit, grad
uv add "symtenet[torch]"    # torch>=2.0 — eager blocks

Quickstart

A 20-site spin-1/2 Heisenberg chain, U(1)-graded by 2 S^z, to its ground state:

from tenet.models import spin_half
from tenet.network import MPO, MPS, dmrg_
from tenet.symmetry import U1Sector

site, n = spin_half(), 20
terms = []
for i in range(n - 1):
    terms.append((1.0, [(site.ops["Sz"], i), (site.ops["Sz"], i + 1)]))
    terms.append((0.5, [(site.ops["S+"], i), (site.ops["S-"], i + 1)]))
    terms.append((0.5, [(site.ops["S-"], i), (site.ops["S+"], i + 1)]))

h = MPO.from_terms(n, terms)
psi = MPS.product(site.phys, [U1Sector(1 if i % 2 else -1) for i in range(n)])
out = dmrg_(psi, h, chi=64)

print(out.sweeps, out.energy)          # 6 -8.682473334398...
print(out.psi.entanglement_entropy())  # {bond: S}, in nats

The Néel product state's own charges put the run in the S^z_tot = 0 sector, and the site tensors' invariance keeps it there — no projector, no penalty term. Getting started reads this example line by line.

With the jax extra, the same tensors are JAX pytrees: jit, grad and vmap reach through to the blocks while the symmetry structure stays static.

import jax
import tenet

tenet.enable_jax()

t = out.psi[0].to_backend("jax")
g = jax.jit(jax.grad(lambda x: tenet.norm(x) ** 2))(t)
assert g.legs == t.legs

What it supports

  • Symmetries. SU(N), SU(2), U(1), Z2, fermion parity (fZ2) and Deligne products of any of them. Non-Abelian sectors are multiplets with exact Clebsch-Gordan, F- and R-symbols; fermionic wires carry their Koszul signs.
  • Tensors. SymmetricTensor over a flat tuple of Legs, one reduced block per allowed fusion channel. einsum, tensordot, compose, transpose, fuse, repartition, trace, and tenet.linalg's svd, qr, lq, eigh, eig, polar, expm, left_null, plus the truncating svd_truncated / eigh_truncated.
  • Algorithms. Finite two-site DMRG (dmrg_, schedules, noise, excited states) with MPS/MPO containers, environment caches and measurement; CTMRG on the directional EnvCTM and its C4v specialization EnvCTMc4v, with a differentiable fixed-bond move.
  • Backends. NumPy, JAX and PyTorch blocks through autoray. tenet.enable_jax() registers SymmetricTensor as a JAX pytree, so jit, grad and vmap reach the blocks while the structure stays static metadata.

Docs

Citation

If you use symtenet in your research, please cite it:

@software{symtenet,
  author  = {Watanabe, Ryo},
  title   = {{symtenet}: a {Python} library for symmetric tensor networks
             --- a {NumPy}-style {API} on the surface, category theory under
             the hood},
  url     = {https://github.com/Ryo-wtnb11/symtenet},
  license = {Apache-2.0},
  year    = {2026}
}

The same metadata lives in CITATION.cff — GitHub's "Cite this repository" button renders it as BibTeX or APA.

License

Apache License 2.0 — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

symtenet-0.1.2.tar.gz (2.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

symtenet-0.1.2-py3-none-any.whl (393.7 kB view details)

Uploaded Python 3

File details

Details for the file symtenet-0.1.2.tar.gz.

File metadata

  • Download URL: symtenet-0.1.2.tar.gz
  • Upload date:
  • Size: 2.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for symtenet-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d9cea2ae41062dc03b8c7458fbcacb114bc9a231632b2cca1a091cbe98bfd1de
MD5 d9cbebb5e1b418ad49d6a294ada53877
BLAKE2b-256 51fc5d6bf8a6e1ca0fa9c70d142685a347cbf31174f4280df16b973b0c3c3adf

See more details on using hashes here.

Provenance

The following attestation bundles were made for symtenet-0.1.2.tar.gz:

Publisher: release.yml on Ryo-wtnb11/symtenet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file symtenet-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: symtenet-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 393.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for symtenet-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 27d4c93b1c39dfbe08b196fd568d63fe398945b74fef6e4279583d3d6d29d0e0
MD5 50931a6f316304ea7b67839bf1d1b0d1
BLAKE2b-256 707900aaa8a29725f37eff050be3312d201d11a64d04ccef48a12fc2f8ecaf10

See more details on using hashes here.

Provenance

The following attestation bundles were made for symtenet-0.1.2-py3-none-any.whl:

Publisher: release.yml on Ryo-wtnb11/symtenet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.3

2 files

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

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