--- license: lgpl-3.0 tags: - chemistry - electron-density - graph-neural-network - equivariant - dft library_name: pytorch --- # BOA — Basis Overlap Architecture Trained checkpoints for the ICLR 2026 paper [**A Function-Centric Graph Neural Network Approach For Predicting Electron Densities**](https://openreview.net/forum?id=HDdkFjFEZd). BOA is an equivariant graph neural network that predicts ground-state electron densities. Its message passing uses the overlap matrix of the basis functions that represent the predicted density, rather than treating the basis coefficients as generic node features. Code: https://github.com/sciai-lab/boa ## Checkpoints | file | dataset | NMAE [%] *(this checkpoint)* | NMAE [%] *(mean ± standard error)* | seeds | | --- | --- | --- | --- | --- | | `qm9_pyscf_large.ckpt` | QM9 (PySCF) | 0.106 | 0.116 ± 0.006 | 5 | | `qm9_pyscf_small.ckpt` | QM9 (PySCF) | 0.113 | 0.13 ± 0.01 | 3 | | `qm9_vasp_large.ckpt` | QM9 (VASP) | 0.132 | 0.1339 ± 0.0005 | 5 | | `qm9_vasp_small.ckpt` | QM9 (VASP) | 0.137 | 0.1381 ± 0.0003 | 3 | | `qm9_pyscf_small_small_cutoff.ckpt` | QM9 (PySCF) | 0.121 | - | 1 | | `benzene.ckpt` | MD | 0.355 | 0.361 ± 0.003 | 3 | | `resorcinol.ckpt` | MD | 0.362 | 0.371 ± 0.004 | 3 | | `phenol.ckpt` | MD | 0.494 | 0.56 ± 0.03 | 3 | | `malonaldehyde.ckpt` | MD | 0.585 | 0.61 ± 0.01 | 3 | | `ethanol.ckpt` | MD | 0.705 | 0.710 ± 0.004 | 3 | | `ethane.ckpt` | MD | 0.767 | 0.772 ± 0.002 | 3 | **These are the best seeds** The paper reports the mean over multiple seeds for each dataset; each checkpoint here is the single best-performing seed, so its NMAE is better than the published figure. ### The reduced-cutoff model (extrapolation) `qm9_pyscf_small_small_cutoff.ckpt` is the model from §3.2 of the paper, trained for **extrapolation to molecules far larger than those seen in training**. It is the `small` configuration on QM9/PySCF with two reduced radii: message passing 6 Å → **3 Å** and edge features 3 Å → **2 Å** (config `configs/experiment/qm9_pyscf_small_small_cutoff.yaml`). ## Usage Install the code from https://github.com/sciai-lab/boa, then: ```python from boa.model.module import ChgLightningModule model = ChgLightningModule.load_from_checkpoint("qm9_pyscf_large.ckpt", map_location="cpu") model.eval() ``` **On the weights.** BOA is trained with an exponential moving average, and all reported numbers were measured with the EMA weights rather than the raw ones. In these released files the `state_dict` **is** the EMA weights, so a plain load gives you the evaluated model — no extra step. (Training checkpoints are not like this: there `state_dict` holds the raw weights and `ema.copy_to` must be applied first. If you evaluate one of these files with the repository's `boa/test.py`, its `ema.copy_to` call is a no-op and remains correct.)