Skip to content

Commit 4f7220a

Browse files
timduignanclaude
andcommitted
Soften charge/spin head wording; bump torch-sim-atomistic to 0.6.0
- MODELS.md and README.md: rephrase LatentChargeHead/LatentSpinHead as predicting per-atom *latent features* (constrained at the system level) rather than asserting per-atom charges and spins. Caveat blockquote added in the previous commit explains the emergent nature. - pyproject.toml: bump dev `torch-sim-atomistic` from >=0.5.1 to >=0.6.0. The 0.6.0 release adds `SimState.has_extras()`, which the existing `test_forcefield_adapter_parses_spin_and_charge_from_simstate` test already calls; 0.5.2 (allowed by the old constraint) does not have this method. All 121 forcefield tests now pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent d359837 commit 4f7220a

3 files changed

Lines changed: 4 additions & 4 deletions

File tree

MODELS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ See below for more explanation of this naming convention. Both models have `inf`
1616

1717
* `orbmol-v2`
1818

19-
OrbMol-v2 extends the OrbMol architecture with **learnable per-atom electrostatics**: a `LatentChargeHead` predicts per-atom partial charges (constrained to sum to the system total charge), a `LatentSpinHead` predicts per-atom spins (constrained to sum to 2S = `spin_multiplicity − 1`), and a `CoulombModule` adds a long-range Coulomb energy on top of the GNN — direct bare-1/r Coulomb sum for non-periodic systems, Particle Mesh Ewald via `nvalchemiops` for periodic systems. The energy head (`ChargeConditionedEnergyHead`) is conditioned on the predicted charges and spins per-atom.
19+
OrbMol-v2 extends the OrbMol architecture with **learnable per-atom electrostatics**: a `LatentChargeHead` and `LatentSpinHead` predict per-atom latent features that are constrained to sum to the system total charge and to 2S = `spin_multiplicity − 1` respectively, and a `CoulombModule` adds a long-range Coulomb energy on top of the GNN — direct bare-1/r Coulomb sum for non-periodic systems, Particle Mesh Ewald via `nvalchemiops` for periodic systems. The energy head (`ChargeConditionedEnergyHead`) is conditioned on these per-atom features.
2020

2121
Trained on OMol25 and OPoly26 (ωB97M-V/def2-TZVPD); supports both periodic and non-periodic systems. Stress is enabled via `model.enable_stress()` if needed.
2222

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ Alternatively, you can use Docker to run orb-models; [see instructions below](#d
2323

2424
**May 2026**: Release of OrbMol-v2 — extends the OrbMol architecture with learnable per-atom electrostatics:
2525

26-
* New `LatentChargeHead` and `LatentSpinHead` predict per-atom charges and spins (constrained to sum to the system total charge / 2S = `spin_multiplicity − 1`), and a `CoulombModule` adds long-range Coulomb energy on top of the GNN — direct Coulomb sum for non-periodic systems, Particle Mesh Ewald via `nvalchemiops` for periodic.
27-
* The energy head (`ChargeConditionedEnergyHead`) is conditioned on the predicted charges and spins per atom.
26+
* New `LatentChargeHead` and `LatentSpinHead` predict per-atom latent features that are constrained to sum to the system total charge / 2S = `spin_multiplicity − 1`, and a `CoulombModule` adds long-range Coulomb energy on top of the GNN — direct Coulomb sum for non-periodic systems, Particle Mesh Ewald via `nvalchemiops` for periodic.
27+
* The energy head (`ChargeConditionedEnergyHead`) is conditioned on these per-atom features.
2828
* Trained on OMol25 and OPoly26 (ωB97M-V/def2-TZVPD); load with `pretrained.orbmol_v2(device="cuda")`.
2929
* `model.predict(...)["energy"]` now returns **fp64** by default. OMol25 reference energies reach ~1e4–1e5 eV, where fp32's ~0.01 eV step destroys kJ/mol resolution; fp64 preserves it. Pass `fp64_energy=False` to `predict` to opt out.
3030

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ dev = [
4646
"ruff>=0.10.0",
4747
"mypy>=1.13",
4848
"torch_dftd",
49-
"torch-sim-atomistic>=0.5.1",
49+
"torch-sim-atomistic>=0.6.0",
5050
]
5151

5252
[tool.setuptools.dynamic]

0 commit comments

Comments
 (0)