Setting up the environment#
You do not need a local install to read this book: every lesson page shows its stored outputs, figures and training curves. You need an environment only when you want to run and modify the code on your own machine.
Local installation#
The project is managed with uv. If you don’t have it:
curl -LsSf https://astral.sh/uv/install.sh | sh
Then:
git clone https://github.com/molssi-ai/e3nn-course.git # Clone the repository
cd e3nn-course # Change directory into the repository root
uv sync # Create .venv from pyproject.toml + uv.lock
source .venv/bin/activate # Activate it
uv run jupyter lab # Launch JupyterLab
Every notebook records the standard python3 kernel, which uv run jupyter lab
resolves to this .venv automatically. So, there is nothing else to configure.
If you prefer the environment to appear under its own name in the kernel
selector (useful when you juggle several projects), you can register it
explicitly:
.venv/bin/python -m ipykernel install --user --name e3nn-course \
--display-name "Python (e3nn-course)"
Requirements: Python ≥ 3.13 and PyTorch 2.7.1. A CUDA GPU is optional: every training cell in the course is sized to finish in \(\leq\) 2 min on a GPU or \(\leq\) 10 min on CPU.
Verify the installation#
Run the following code block in a fresh notebook cell or with python -c. It
builds an equivariant tensor product and checks it numerically against a random
rotation:
# From the repository root
import sys; sys.path.insert(0, ".")
import torch
from e3nn import o3
from course_utils.equivariance import model_equivariance_error
torch.set_default_dtype(torch.float64)
tp = o3.FullyConnectedTensorProduct("1o", "1o", "0e + 1o + 2e")
err = model_equivariance_error(tp, [o3.Irreps("1o"), o3.Irreps("1o")], o3.Irreps("0e + 1o + 2e"))
print(f"torch {torch.__version__} | equivariance error: {err:.2e}")
You should see an error around 1e-15. Anything near 1e-6 means the default
dtype is still float32; anything larger means something is genuinely wrong.
Please open an issue and
provide a minimalistic and reproducible code snippet that generates the error.
What the environment contains#
Package |
Used for |
|---|---|
|
tensors, autograd, training |
|
irreps, spherical harmonics, tensor products, gates |
|
graph batching and scatter operations |
|
atomistic structures, neighbor lists, MD integrators (Lesson 11) |
|
static figures |
|
the rotatable 3D figures (spherical harmonics, graphs, trajectories) |
|
symbolic Clebsch–Gordan and Wigner algebra |
Shared helpers live in course_utils/ and are imported by every lesson:
course_utils.equivariance: the numerical equivariance test harnesscourse_utils.plotting: spherical harmonics, irreps, point clouds, training curvescourse_utils.data: small datasets, neighbor lists, train/val splits
Rebuilding this book locally#
The book is built with Jupyter Book 1.x from a separate, lightweight
environment. It does not need torch or e3nn, because it renders the
outputs already stored in the notebooks:
uv venv --python 3.13 .venv-docs # Create a separate environment for the docs
uv pip install --python .venv-docs/bin/python -r book/requirements-docs.txt # Install Jupyter Book
Then, from the repository root directory:
make -C book html # Build the HTML book at book/_build/html
make -C book serve # Serve at http://localhost:8000
See How to use this book for the notebook-execution workflow that keeps those stored outputs current.