Open Force Field
openforcefield.org
Open Force Field
@openforcefield.org
Compared to Sage 2.2.1, Sage 2.3.0-rc2 splits torsions so that a single torsional parameter only covers a central bond with a single multiplicity. It also adds some bond and angle types to improve performance of targeted chemistries, such as small rings.
October 10, 2025 at 3:11 PM
Sage 2.3.0-rc2 is applicable to drug-like molecules consisting of the elements C, H, O, N, P, S, F, Cl, Br, and I, atomic Xe, and the monoatomic ions Li+, Na+, K+, Rb+, Cs+, F-, Cl-, Br-, and I-.
October 10, 2025 at 3:11 PM
Sage 2.3.0-rc2 is the second force field candidate in Open Force Field using AshGC v1.0. Both vdW and valence parameters have been re-fit, using AshGC charges, to a dataset of physical properties and QM data.
October 10, 2025 at 3:10 PM
AshGC supports most small-molecule chemistries with elements C, O, H, N, S, F, Br, Cl, I, P; a list of excluded SMARTS patterns is included in the documentation. docs.openforcefield.org/projects/nag...
October 10, 2025 at 3:10 PM
Then, in a workflow, you can load Sage 2.3.0 rc2 with

`ff = ForceField("openff-2.3.0-rc2.offxml")`
October 10, 2025 at 3:07 PM
Or you can update an existing environment:
```
mamba install -c conda-forge "openff-toolkit>=0.17" "openff-interchange>=0.4.6" "openff-nagl>=0.5.3" "openff-nagl-models>=2025.09" "openff-forcefields>=2025.10"
```
October 10, 2025 at 3:06 PM
The easiest way to try Sage 2.3.0 rc2 out is by making a new environment:
```
mamba create -n openff -c conda-forge "openff-toolkit>=0.17"
mamba activate openff
```
October 10, 2025 at 3:06 PM
2. Warnings are sometimes emitted about protons/stereo/charges, those are from a performance heuristic and don’t change the chemistry of the inputs (we’re working on silencing these)
October 10, 2025 at 3:05 PM
Two notes on the example:

1. The first time NAGL is used in a new environment, there may be a few seconds of extra runtime due to pytorch initialization.
October 10, 2025 at 3:05 PM
...
for idx, mol in enumerate(tqdm(mols, desc="Processing molecules")):
interchange = ff.create_interchange(mol.to_topology())
interchange.minimize()
mol.conformers[0] = interchange.positions
mol.to_file(f"minimized_mol_{idx}.sdf", file_format="sdf")
```
October 10, 2025 at 3:04 PM
```
from openff.toolkit import Molecule, ForceField
from tqdm import tqdm # for progress bars
mols = Molecule.from_file("inputs.sdf") # loads 50 different molecules
ff = ForceField("openff_unconstrained-2.3.0-rc2.offxml")
...
October 10, 2025 at 3:04 PM
Because AshGC assigns charges so quickly, use cases like quick conformer minimization are now practical. The following python code will minimize 50 different molecules from an input SDF, saving each minimized structure to an SDF file, in about 1 minute:
October 10, 2025 at 3:03 PM
Please try it out and let us know if you find any substantial improvements, regressions, or other issues in comparison to Sage 2.2.1. If all goes well, we plan to make the full release in a few weeks! See the thread for an example:
October 10, 2025 at 3:03 PM
We always love seeing the cool things people do with our force fields!
August 27, 2025 at 7:18 PM