This repository contains files and progress in re-fitting OpenFF 2.2.1, a patch update to OpenFF 2.2.0.
The goals of this update were to:
- re-fit with linear angles set to 180°
- re-fit Improper torsions as well
Most files in this force field were originally copied from the OpenFF 2.2.0 repository, and then updated or modified.
The code that was used to produce the fit is all included here, and should be reproducible. The fit is performed in several steps, with instructions for how to run each step in the README
file in each directory. The purpose of each directory is described next to their names. We have also noted significant changes from the Sage 2.2.0 fitting process.
01_generate-forcefield/
: Generate an initial "template" force field, which contains the desired SMIRKs patterns for all bond/angle terms, the desired SMIRKs patterns and initial values for all torsion terms, and the desired final value for all other parameters such as electrostatics.
This was modified to re-set all linear angles to 180°.
02_curate-data/
: Download and filter/curate the optimized geometry and torsion drive datasets to use for the fit. Determine which parameters to optimize based on dataset coverage.
The files in this directory were not modified. Some scripts were added for inspecting the training set.
03_generate-initial-ff/
: Generate initial values for the bond and angle terms of the force field using the Modified Seminario Method.
Files in this directory were modified to avoid re-setting values for linear angles.
04_fit-forcefield/
: Fit the force field bonds, angles, and proper torsions to the data using ForceBalance.
All files in this directory were re-generated for the new fit.
This directory contains the results of several fitting experiments.
The nor4
directory contains the fit that resulted in 2.2.1-rc1.
05_benchmark_forcefield/
: Benchmark the force field.
Files in this directory were somewhat modified for updated analysis.
06_plot-figures/
: plot figures analyzing the new force field.
This is a new directory that plots the benchmark results in the benchmarking directory.
Where possible, shell scripts (*.sh
) have been provided
showing which environments were used to run Python scripts,
as well as example inputs and outputs. Two environments
were used throughout this force field:
Environments can be re-created using the provided files:
mamba env create -f yammbs-env-full.yaml
If using a different platform, a less detailed environment may need to be created instead. Smaller specification files can be found in the 2.2.0 repo.
The following angles below had their equilibrium values set to 180 degrees.
Parameter | SMIRKS | MSM value (°) |
---|---|---|
a16 | [*:1]~[#6X2:2]~[*:3] |
178 |
a17 | [*:1]~[#7X2:2]~[*:3] |
176 |
a27 | [*:1]~[#7X2:2]~[#7X1:3] |
176 |
a35* | [*:1]=[#16X2:2]=[*:3] |
180 |
The global benchmarks (ddEs, RMSDs, and TFDS) look very similar to 2.2.0:
Sulfamide angles improve relative to 2.1.0, and remain similar to 2.2.0.
They broadly improve from 2.1.0, except the a4 parameter.
The a4 parameter outliers largely concern three unique molecules.
a35 was not covered in either the testing or training data so is not presented here.
The apparent worse performance for a27 is due to QM angles less than 175 degrees. All data points are various conformers of 2 unique molecules.
Parameter change plots can be seen in the parameter-changes directory. The scale of the y-axis for bonds, propers, and improper torsion parameters don't change much.
However, several angle parameters do change substantially.
Below a table of equilibrium angles:
Parameter | SMIRKS | MSM | 2.2.0 | 2.2.1-rc1 |
---|---|---|---|---|
a18a | [*:1]@-[r!r6;#7X4,#7X3,#7X2-1:2]@-[*:3] |
95 | 94 | 95 |
a20 | [*:1]~[#7X3$(*~[#6X3,#6X2,#7X2+0]):2]~[*:3] |
120 | 122 | 120 |
a29 | [#6X3,#7:1]~;@[#8;r:2]~;@[#6X3,#7:3] |
110 | 121 | 109 |
a34 | [*:1]~[#16X2,#16X3+1:2]~[*:3] |
98 | 100 | 98 |
a37 | [#6X3:1]-[#16X2:2]-[#6X3:3] |
91 | 102 | 91 |
These differences appear largely to have improved the fit to QM angles.