Repository: openforcefield/openff-toolkit

Issue:
Assigning partial charges is not thread safe
**Describe the bug**

If I create an OpenFF Molecule object from a RDKit Molecule object, I get an error when trying to parametrize it.  In the following code, if I instead create the Molecule from SMILES with

```python
mol = Molecule.from_smiles('[H][O][C]([H])([H])[S][C]([H])([H])[H]', allow_undefined_stereo=True, hydrogens_are_explicit=True)
```

then it works.

**To Reproduce**
```python
from openff.toolkit.typing.engines.smirnoff import ForceField
from openff.toolkit.topology import Molecule, Topology
from rdkit import Chem
forcefield = ForceField('openff_unconstrained-2.0.0.offxml')
rdmol = Chem.MolFromSmiles('[H][O][C]([H])([H])[S][C]([H])([H])[H]')
mol = Molecule.from_rdkit(rdmol, allow_undefined_stereo=True, hydrogens_are_explicit=True)
topology = Topology.from_molecules([mol])
system = forcefield.create_openmm_system(topology)
```

**Output**

```
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/utilities/utilities.py", line 80, in wrapper
    return function(*args, **kwargs)
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/toolkit/typing/engines/smirnoff/forcefield.py", line 1174, in create_openmm_system
    interchange = self.create_interchange(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/utilities/utilities.py", line 80, in wrapper
    return function(*args, **kwargs)
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/toolkit/typing/engines/smirnoff/forcefield.py", line 1248, in create_interchange
    return Interchange.from_smirnoff(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/interchange/components/interchange.py", line 256, in from_smirnoff
    return _create_interchange(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/interchange/smirnoff/_create.py", line 117, in _create_interchange
    _electrostatics(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/interchange/smirnoff/_create.py", line 263, in _electrostatics
    "Electrostatics": SMIRNOFFElectrostaticsCollection.create(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/interchange/smirnoff/_nonbonded.py", line 371, in create
    handler.store_matches(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/interchange/smirnoff/_nonbonded.py", line 774, in store_matches
    matches, potentials = self._find_reference_matches(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/interchange/smirnoff/_nonbonded.py", line 629, in _find_reference_matches
    ) = cls._find_charge_model_matches(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/interchange/smirnoff/_nonbonded.py", line 570, in _find_charge_model_matches
    partial_charges = cls._compute_partial_charges(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/interchange/smirnoff/_nonbonded.py", line 385, in _compute_partial_charges
    molecule.assign_partial_charges(method)
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/toolkit/topology/molecule.py", line 2603, in assign_partial_charges
    toolkit_registry.call(
  File "/home/peastman/miniconda3/envs/spice/lib/python3.10/site-packages/openff/toolkit/utils/toolkit_registry.py", line 370, in call
    raise ValueError(msg)
ValueError: No registered toolkits can provide the capability "assign_partial_charges" for args "()" and kwargs "{'molecule': Molecule with name '' and SMILES '[C][S][C][O]', 'partial_charge_method': 'am1bcc', 'use_conformers': None, 'strict_n_conformers': False, 'normalize_partial_charges': True, '_cls': <class 'openff.toolkit.topology.molecule.Molecule'>}"
Available toolkits are: [ToolkitWrapper around The RDKit version 2023.03.1, ToolkitWrapper around AmberTools version 22.0, ToolkitWrapper around Built-in Toolkit version None]
 ToolkitWrapper around The RDKit version 2023.03.1 <class 'openff.toolkit.utils.exceptions.ChargeMethodUnavailableError'> : partial_charge_method 'am1bcc' is not available from RDKitToolkitWrapper. Available charge methods are ['gasteiger', 'mmff94'] 
 ToolkitWrapper around AmberTools version 22.0 <class 'openff.toolkit.utils.exceptions.RadicalsNotSupportedError'> : The OpenFF Toolkit does not currently support parsing molecules with S- and P-block radicals. Found 1 radical electrons on molecule [C]S[C][O].
 ToolkitWrapper around Built-in Toolkit version None <class 'openff.toolkit.utils.exceptions.ChargeMethodUnavailableError'> : Partial charge method "am1bcc"" is not supported by the Built-in toolkit. Available charge methods are ['zeros', 'formal_charge']
```

**Computing environment (please complete the following information):**
 - Operating system
 
Ubuntu 22.04

 - Output of running `conda list`
 
```
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
ambertools                23.0            py310he275f01_1    conda-forge
amberutils                21.0                     pypi_0    pypi
anyio                     3.7.0              pyhd8ed1ab_1    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0          py310h5764c6d_3    conda-forge
arpack                    3.7.0                hdefa2d7_2    conda-forge
asttokens                 2.2.1              pyhd8ed1ab_0    conda-forge
astunparse                1.6.3              pyhd8ed1ab_0    conda-forge
attrs                     23.1.0             pyh71513ae_1    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                pyhd8ed1ab_3    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.12.2             pyha770c72_0    conda-forge
bleach                    6.0.0              pyhd8ed1ab_0    conda-forge
blosc                     1.21.4               h0f2a231_0    conda-forge
boost                     1.78.0          py310hc4a4660_4    conda-forge
boost-cpp                 1.78.0               h6582d0a_3    conda-forge
brotli                    1.0.9                h166bdaf_8    conda-forge
brotli-bin                1.0.9                h166bdaf_8    conda-forge
bzip2                     1.0.8                h7b6447c_0  
c-ares                    1.19.1               hd590300_0    conda-forge
c-blosc2                  2.9.2                hb4ffafa_0    conda-forge
ca-certificates           2023.05.30           h06a4308_0  
cached-property           1.5.2                hd8ed1ab_1    conda-forge
cached_property           1.5.2              pyha770c72_1    conda-forge
cachetools                5.3.0              pyhd8ed1ab_0    conda-forge
cairo                     1.16.0            hbbf8b49_1016    conda-forge
certifi                   2023.5.7           pyhd8ed1ab_0    conda-forge
cffi                      1.15.1          py310h255011f_3    conda-forge
charset-normalizer        3.1.0              pyhd8ed1ab_0    conda-forge
colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
comm                      0.1.3              pyhd8ed1ab_0    conda-forge
contourpy                 1.0.7           py310hdf3cbec_0    conda-forge
cudatoolkit               11.8.0              h37601d7_11    conda-forge
curl                      8.1.2                h409715c_0    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
cython                    0.29.35         py310hc6cd4ac_0    conda-forge
debugpy                   1.6.7           py310heca2aa9_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
edgembar                  0.2                      pypi_0    pypi
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
exceptiongroup            1.1.1              pyhd8ed1ab_0    conda-forge
executing                 1.2.0              pyhd8ed1ab_0    conda-forge
expat                     2.5.0                hcb278e6_1    conda-forge
fftw                      3.3.10          nompi_hc118613_108    conda-forge
flit-core                 3.9.0              pyhd8ed1ab_0    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 hab24e00_0    conda-forge
fontconfig                2.14.2               h14ed4e7_0    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
fonttools                 4.40.0          py310h2372a71_0    conda-forge
freetype                  2.12.1               hca18f0e_1    conda-forge
gettext                   0.21.1               h27087fc_0    conda-forge
gmp                       6.2.1                h58526e2_0    conda-forge
greenlet                  2.0.2           py310hc6cd4ac_1    conda-forge
h5py                      3.8.0           nompi_py310ha66b2ad_101    conda-forge
hdf4                      4.2.15               h501b40f_6    conda-forge
hdf5                      1.14.0          nompi_hb72d44e_103    conda-forge
icu                       72.1                 hcb278e6_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
importlib-metadata        6.6.0              pyha770c72_0    conda-forge
importlib_metadata        6.6.0                hd8ed1ab_0    conda-forge
importlib_resources       5.12.0             pyhd8ed1ab_0    conda-forge
ipykernel                 6.23.1             pyh210e3f2_0    conda-forge
ipython                   8.14.0             pyh41d4057_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                7.7.5              pyhd8ed1ab_0    conda-forge
jedi                      0.18.2             pyhd8ed1ab_0    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
joblib                    1.2.0              pyhd8ed1ab_0    conda-forge
jsonschema                4.17.3             pyhd8ed1ab_0    conda-forge
jupyter_client            8.2.0              pyhd8ed1ab_0    conda-forge
jupyter_core              5.3.0           py310hff52083_0    conda-forge
jupyter_events            0.6.3              pyhd8ed1ab_0    conda-forge
jupyter_server            2.6.0              pyhd8ed1ab_0    conda-forge
jupyter_server_terminals  0.4.4              pyhd8ed1ab_1    conda-forge
jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
jupyterlab_widgets        1.1.4              pyhd8ed1ab_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
kiwisolver                1.4.4           py310hbf28c38_1    conda-forge
krb5                      1.20.1               h81ceb04_0    conda-forge
lcms2                     2.15                 haa2dc70_1    conda-forge
ld_impl_linux-64          2.38                 h1181459_1  
lerc                      4.0.0                h27087fc_0    conda-forge
libaec                    1.0.6                hcb278e6_1    conda-forge
libblas                   3.9.0           17_linux64_openblas    conda-forge
libbrotlicommon           1.0.9                h166bdaf_8    conda-forge
libbrotlidec              1.0.9                h166bdaf_8    conda-forge
libbrotlienc              1.0.9                h166bdaf_8    conda-forge
libcblas                  3.9.0           17_linux64_openblas    conda-forge
libcurl                   8.1.2                h409715c_0    conda-forge
libdeflate                1.18                 h0b41bf4_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libexpat                  2.5.0                hcb278e6_1    conda-forge
libffi                    3.4.4                h6a678d5_0  
libgcc-ng                 13.1.0               he5830b7_0    conda-forge
libgfortran-ng            13.1.0               h69a702a_0    conda-forge
libgfortran5              13.1.0               h15d22d2_0    conda-forge
libglib                   2.76.3               hebfc3b9_0    conda-forge
libgomp                   13.1.0               he5830b7_0    conda-forge
libiconv                  1.17                 h166bdaf_0    conda-forge
libjpeg-turbo             2.1.5.1              h0b41bf4_0    conda-forge
liblapack                 3.9.0           17_linux64_openblas    conda-forge
libnetcdf                 4.9.2           nompi_h0f3d0bb_105    conda-forge
libnghttp2                1.52.0               h61bc06f_0    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libopenblas               0.3.23          pthreads_h80387f5_0    conda-forge
libpng                    1.6.39               h753d276_0    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libsqlite                 3.42.0               h2797004_0    conda-forge
libssh2                   1.11.0               h0841786_0    conda-forge
libstdcxx-ng              13.1.0               hfd8a6a1_0    conda-forge
libtiff                   4.5.0                ha587672_6    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libwebp-base              1.3.0                h0b41bf4_0    conda-forge
libxcb                    1.15                 h0b41bf4_0    conda-forge
libxml2                   2.11.4               h0d562d8_0    conda-forge
libzip                    1.9.2                hc929e4a_1    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
lz4-c                     1.9.4                hcb278e6_0    conda-forge
lzo                       2.10              h516909a_1000    conda-forge
markupsafe                2.1.3           py310h2372a71_0    conda-forge
matplotlib-base           3.7.1           py310he60537e_0    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mctc-lib                  0.3.1                h74f4db8_0    conda-forge
mdtraj                    1.9.7           py310h902c554_4    conda-forge
mistune                   2.0.5              pyhd8ed1ab_0    conda-forge
mmpbsa-py                 16.0                     pypi_0    pypi
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
nbclassic                 1.0.0              pyhb4ecaf3_1    conda-forge
nbclient                  0.8.0              pyhd8ed1ab_0    conda-forge
nbconvert                 7.5.0              pyhd8ed1ab_0    conda-forge
nbconvert-core            7.5.0              pyhd8ed1ab_0    conda-forge
nbconvert-pandoc          7.5.0              pyhd8ed1ab_0    conda-forge
nbformat                  5.9.0              pyhd8ed1ab_0    conda-forge
ncurses                   6.4                  h6a678d5_0  
nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
netcdf-fortran            4.6.1           nompi_h4f3791c_100    conda-forge
networkx                  3.1                pyhd8ed1ab_0    conda-forge
nomkl                     1.0                  h5ca1d4c_0    conda-forge
notebook                  6.5.4              pyha770c72_0    conda-forge
notebook-shim             0.2.3              pyhd8ed1ab_0    conda-forge
numexpr                   2.8.4           py310h690d005_100    conda-forge
numpy                     1.24.3          py310ha4c1d20_0    conda-forge
ocl-icd                   2.3.1                h7f98852_0    conda-forge
ocl-icd-system            1.0.0                         1    conda-forge
openbabel                 3.1.1           py310h956b46e_7    conda-forge
openff-amber-ff-ports     0.0.3              pyh6c4a22f_0    conda-forge
openff-forcefields        2023.05.1          pyh1a96a4e_1    conda-forge
openff-interchange        0.3.4              pyhd8ed1ab_2    conda-forge
openff-interchange-base   0.3.4              pyhd8ed1ab_2    conda-forge
openff-models             0.0.5              pyh1a96a4e_0    conda-forge
openff-toolkit            0.13.1             pyhd8ed1ab_0    conda-forge
openff-toolkit-base       0.13.1             pyhd8ed1ab_0    conda-forge
openff-units              0.2.0              pyh1a96a4e_2    conda-forge
openff-utilities          0.1.8              pyh1a96a4e_0    conda-forge
openjpeg                  2.5.0                hfec8fc6_2    conda-forge
openmm                    8.0.0           py310h5728c26_1    conda-forge
openssl                   3.1.1                hd590300_1    conda-forge
overrides                 7.3.1              pyhd8ed1ab_0    conda-forge
packaging                 23.1               pyhd8ed1ab_0    conda-forge
packmol                   20.010               h86c2bf4_0    conda-forge
packmol-memgen            2023.2.24                pypi_0    pypi
pandas                    2.0.2           py310h7cbd5c2_0    conda-forge
pandoc                    3.1.3                h32600fe_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
panedr                    0.7.1              pyhd8ed1ab_0    conda-forge
parmed                    4.1.0           py310heca2aa9_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pbr                       5.11.1             pyhd8ed1ab_0    conda-forge
pcre2                     10.40                hc3806b6_0    conda-forge
pdb4amber                 22.0                     pypi_0    pypi
pdbfixer                  1.9                pyh1a96a4e_0    conda-forge
perl                      5.32.1          2_h7f98852_perl5    conda-forge
pexpect                   4.8.0              pyh1a96a4e_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    9.5.0           py310h582fbeb_1    conda-forge
pint                      0.21               pyhd8ed1ab_0    conda-forge
pip                       23.1.2          py310h06a4308_0  
pixman                    0.40.0               h36c2ea0_0    conda-forge
pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
platformdirs              3.5.3              pyhd8ed1ab_0    conda-forge
pooch                     1.7.0              pyha770c72_3    conda-forge
prometheus_client         0.17.0             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.38             pyha770c72_0    conda-forge
prompt_toolkit            3.0.38               hd8ed1ab_0    conda-forge
psutil                    5.9.5           py310h1fa729e_0    conda-forge
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
py-cpuinfo                9.0.0              pyhd8ed1ab_0    conda-forge
pycairo                   1.23.0          py310hb8a676c_0    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pydantic                  1.10.9          py310h2372a71_0    conda-forge
pyedr                     0.7.1              pyhd8ed1ab_0    conda-forge
pygments                  2.15.1             pyhd8ed1ab_0    conda-forge
pymsmt                    22.0                     pypi_0    pypi
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyrsistent                0.19.3          py310h1fa729e_0    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
pytables                  3.8.0           py310hde6a235_1    conda-forge
python                    3.10.11         he550d4f_0_cpython    conda-forge
python-constraint         1.4.0                      py_0    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-fastjsonschema     2.17.1             pyhd8ed1ab_0    conda-forge
python-json-logger        2.0.7              pyhd8ed1ab_0    conda-forge
python-tzdata             2023.3             pyhd8ed1ab_0    conda-forge
python_abi                3.10                    3_cp310    conda-forge
pytraj                    2.0.6                    pypi_0    pypi
pytz                      2023.3             pyhd8ed1ab_0    conda-forge
pyyaml                    6.0             py310h5764c6d_5    conda-forge
pyzmq                     25.1.0          py310h5bbb5d0_0    conda-forge
rdkit                     2023.03.1       py310h399bcf7_0    conda-forge
readline                  8.2                  h5eee18b_0  
reportlab                 3.6.13          py310h1a56a1c_0    conda-forge
requests                  2.31.0             pyhd8ed1ab_0    conda-forge
rfc3339-validator         0.1.4              pyhd8ed1ab_0    conda-forge
rfc3986-validator         0.1.1              pyh9f0ad1d_0    conda-forge
sander                    22.0                     pypi_0    pypi
scipy                     1.10.1          py310ha4c1d20_3    conda-forge
send2trash                1.8.2              pyh41d4057_0    conda-forge
setuptools                67.8.0          py310h06a4308_0  
six                       1.16.0             pyh6c4a22f_0    conda-forge
smirnoff99frosst          1.1.0              pyh44b312d_0    conda-forge
snappy                    1.1.10               h9fff704_0    conda-forge
sniffio                   1.3.0              pyhd8ed1ab_0    conda-forge
soupsieve                 2.3.2.post1        pyhd8ed1ab_0    conda-forge
sqlalchemy                2.0.16          py310h2372a71_0    conda-forge
sqlite                    3.41.2               h5eee18b_0  
stack_data                0.6.2              pyhd8ed1ab_0    conda-forge
terminado                 0.17.1             pyh41d4057_0    conda-forge
tinycss2                  1.2.1              pyhd8ed1ab_0    conda-forge
tk                        8.6.12               h1ccaba5_0  
tornado                   6.3.2           py310h2372a71_0    conda-forge
tqdm                      4.65.0             pyhd8ed1ab_1    conda-forge
traitlets                 5.9.0              pyhd8ed1ab_0    conda-forge
typing-extensions         4.6.3                hd8ed1ab_0    conda-forge
typing_extensions         4.6.3              pyha770c72_0    conda-forge
typing_utils              0.1.0              pyhd8ed1ab_0    conda-forge
tzdata                    2023c                h04d1e81_0  
unicodedata2              15.0.0          py310h5764c6d_0    conda-forge
urllib3                   2.0.3              pyhd8ed1ab_0    conda-forge
wcwidth                   0.2.6              pyhd8ed1ab_0    conda-forge
webencodings              0.5.1                      py_1    conda-forge
websocket-client          1.5.3              pyhd8ed1ab_0    conda-forge
wheel                     0.38.4          py310h06a4308_0  
widgetsnbextension        3.6.4              pyhd8ed1ab_0    conda-forge
xmltodict                 0.13.0             pyhd8ed1ab_0    conda-forge
xorg-kbproto              1.0.7             h7f98852_1002    conda-forge
xorg-libice               1.0.10               h7f98852_0    conda-forge
xorg-libsm                1.2.3             hd9c2040_1000    conda-forge
xorg-libx11               1.8.5                h8ee46fc_0    conda-forge
xorg-libxau               1.0.11               hd590300_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xorg-libxext              1.3.4                h0b41bf4_2    conda-forge
xorg-libxrender           0.9.10            h7f98852_1003    conda-forge
xorg-libxt                1.3.0                hd590300_0    conda-forge
xorg-renderproto          0.11.1            h7f98852_1002    conda-forge
xorg-xextproto            7.3.0             h0b41bf4_1003    conda-forge
xorg-xproto               7.0.31            h7f98852_1007    conda-forge
xtb                       6.5.1                h03160e7_1    conda-forge
xtb-python                22.1            py310h1fa729e_0    conda-forge
xz                        5.4.2                h5eee18b_0  
yaml                      0.2.5                h7f98852_2    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge
zipp                      3.15.0             pyhd8ed1ab_0    conda-forge
zlib                      1.2.13               hd590300_5    conda-forge
zlib-ng                   2.0.7                h0b41bf4_0    conda-forge
zstd                      1.5.2                h3eb15da_6    conda-forge
```

**Additional context**
<!-- Add any other context about the problem here. -->

Discussion:
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/openforcefield/openff-toolkit/pull/1652?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=openforcefield) Report
> Merging [#1652](https://app.codecov.io/gh/openforcefield/openff-toolkit/pull/1652?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=openforcefield) (2e8b468) into [main](https://app.codecov.io/gh/openforcefield/openff-toolkit/commit/13817ba9222fa89abba79e3babf387c9aa2bcbdf?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=openforcefield) (13817ba) will **not change** coverage.
> The diff coverage is `n/a`.

> :exclamation: Current head 2e8b468 differs from pull request most recent head 699cd8d. Consider uploading reports for the commit 699cd8d to get more accurate results

<details><summary>Additional details and impacted files</summary>


</details>

Patch:
diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml
index cd22488c..ad61078c 100644
--- a/.github/workflows/examples.yml
+++ b/.github/workflows/examples.yml
@@ -141,6 +141,7 @@ jobs:
             NB_ARGS+=" --ignore=examples/using_smirnoff_in_amber_or_gromacs"
             NB_ARGS+=" --ignore=examples/toolkit_showcase"
             NB_ARGS+=" --ignore=examples/using_smirnoff_with_amber_protein_forcefield"
+            NB_ARGS+=" --ignore=examples/SMIRNOFF_simulation/run_simulation.ipynb"
           fi
 
           python -m pytest $PYTEST_ARGS $NB_ARGS examples
diff --git a/devtools/conda-envs/openeye-examples.yaml b/devtools/conda-envs/openeye-examples.yaml
index e7b56964..86858223 100644
--- a/devtools/conda-envs/openeye-examples.yaml
+++ b/devtools/conda-envs/openeye-examples.yaml
@@ -25,7 +25,7 @@ dependencies:
   - typing_extensions
     # Toolkit-specific
   - openeye-toolkits
-    # Test-only/optional/dev/typing
+    # Test-only/optional/dev/typing/examples
   - pytest
   - pytest-cov
   - pytest-xdist
@@ -42,3 +42,4 @@ dependencies:
   - nbval
   - pdbfixer
   - openmmforcefields >=0.11.2
+  - gromacs >=2021=nompi*
diff --git a/devtools/conda-envs/rdkit-examples.yaml b/devtools/conda-envs/rdkit-examples.yaml
index aa9ca917..7c8ae35a 100644
--- a/devtools/conda-envs/rdkit-examples.yaml
+++ b/devtools/conda-envs/rdkit-examples.yaml
@@ -27,7 +27,7 @@ dependencies:
   # https://github.com/openforcefield/openff-toolkit/issues/1532
   - ambertools =22.4
   - rdkit
-    # Test-only/optional/dev/typing
+    # Test-only/optional/dev/typing/examples
   - pytest
   - pytest-cov
   - pytest-xdist
@@ -43,3 +43,4 @@ dependencies:
   - mdtraj
   - pdbfixer
   - openmmforcefields >=0.11.2
+  - gromacs >=2021=nompi*
diff --git a/docs/releasehistory.md b/docs/releasehistory.md
index d2764760..1c149ba4 100644
--- a/docs/releasehistory.md
+++ b/docs/releasehistory.md
@@ -11,8 +11,12 @@ Releases follow the `major.minor.micro` scheme recommended by [PEP440](https://w
 ### API-breaking changes
 
 ### Behavior changes
+- [PR #1652](https://github.com/openforcefield/openff-toolkit/pull/1652): Fixes issue [#1642](https://github.com/openforcefield/openff-toolkit/issues/1642) by making AmberToolsToolkitWrapper thread-safe (previously `AmberToolsToolkitWrapper.assign_partial_charges` and `assign_fractional_bond_orders` were not)
+
 
 ### Bugfixes
+- [PR #1654](https://github.com/openforcefield/openff-toolkit/pull/1654): Fixes issue [#1653](https://github.com/openforcefield/openff-toolkit/issues/1653), where a test that expected RDKit to fail began returning an error when RDKit became able to generate conformers for octahedral molecules. 
+
 
 ### New features
 
@@ -22,6 +26,7 @@ Releases follow the `major.minor.micro` scheme recommended by [PEP440](https://w
 ### Examples updated
 - [PR #1644](https://github.com/openforcefield/openff-toolkit/pull/1644): Streamlines several examples by using `Interchange.to_openmm_simulation`.
 - [PR #1651](https://github.com/openforcefield/openff-toolkit/pull/1651): Fix broken links in several examples.
+- [PR #1648](https://github.com/openforcefield/openff-toolkit/pull/1648): Update examples to use `Topology.from_pdb` and other small cleanups.
 
 ## 0.13.2
 
diff --git a/examples/SMIRNOFF_simulation/run_simulation.ipynb b/examples/SMIRNOFF_simulation/run_simulation.ipynb
index ee4ed220..c22ab10c 100644
--- a/examples/SMIRNOFF_simulation/run_simulation.ipynb
+++ b/examples/SMIRNOFF_simulation/run_simulation.ipynb
@@ -35,8 +35,6 @@
    },
    "outputs": [],
    "source": [
-    "from openmm.app import PDBFile\n",
-    "\n",
     "from openff.toolkit.utils import get_data_file_path"
    ]
   },
@@ -64,16 +62,14 @@
     "pdb_file_path = get_data_file_path(\"systems/test_systems/1_cyclohexane_1_ethanol.pdb\")\n",
     "\n",
     "# 40%-60% cyclohexane-ethanol mixture.\n",
-    "# pdb_file_path = get_data_file_path('systems/packmol_boxes/cyclohexane_ethanol_0.4_0.6.pdb')\n",
-    "\n",
-    "pdbfile = PDBFile(pdb_file_path)"
+    "# pdb_file_path = get_data_file_path('systems/packmol_boxes/cyclohexane_ethanol_0.4_0.6.pdb')"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "PDB files are not a reliable source of bond orders, so the toolkit requires users to supply a more detailed description of the molecule and its connectivity (currently either a SMILES, sdf, or mol2 file)."
+    "PDB files are not a reliable source of bond orders, so the toolkit requires users to supply a more detailed description of the molecule and its connectivity. SMILES records, SDF, and MOL2 files are among the [many ways to create a `Molecule`.](https://docs.openforcefield.org/projects/toolkit/en/stable/users/molecule_cookbook.html)"
    ]
   },
   {
@@ -150,7 +146,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "2640efa46eae473d9c4992932b43c22c",
+       "model_id": "759a1409e0b84d91aa9f815f639592ed",
        "version_major": 2,
        "version_minor": 0
       },
@@ -163,19 +159,17 @@
    "source": [
     "from openff.toolkit import ForceField, Topology\n",
     "\n",
-    "# Create the Open Force Field Toolkit Topology from an OpenMM Topology object.\n",
-    "omm_topology = pdbfile.topology\n",
-    "off_topology = Topology.from_openmm(\n",
-    "    openmm_topology=omm_topology,\n",
+    "# Create the OpenFF Topology from an PDB file\n",
+    "topology = Topology.from_pdb(\n",
+    "    pdb_file_path,\n",
     "    unique_molecules=[ethanol, cyclohexane],\n",
-    "    positions=pdbfile.positions,\n",
     ")\n",
     "\n",
     "# Load the OpenFF \"Sage\" force field.\n",
     "forcefield = ForceField(\"openff-2.0.0.offxml\")\n",
     "\n",
     "# Parametrize the topology and create an Interchange object.\n",
-    "interchange = forcefield.create_interchange(off_topology)"
+    "interchange = forcefield.create_interchange(topology)"
    ]
   },
   {
@@ -213,8 +207,8 @@
     "num_steps = 1000  # number of integration steps to run\n",
     "\n",
     "# Logging options.\n",
-    "trj_freq = 1  # number of steps per written trajectory frame\n",
-    "data_freq = 1  # number of steps per written simulation statistics\n",
+    "trj_freq = 100  # number of steps per written trajectory frame\n",
+    "data_freq = 100  # number of steps per written simulation statistics\n",
     "\n",
     "# Set up an OpenMM simulation.\n",
     "simulation = interchange.to_openmm_simulation(integrator)\n",
@@ -253,7 +247,7 @@
      "output_type": "stream",
      "text": [
       "Starting simulation\n",
-      "Elapsed time 1.75 seconds\n",
+      "Elapsed time 0.43 seconds\n",
       "Done!\n"
      ]
     }
@@ -278,6 +272,42 @@
    "source": [
     "If successful, the directory where your jupyter notebook is running should contain a `trajectory.pdb` file that you can visualize and a `data.csv` file including potential energy, density, and temperature of each frame."
    ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "#\"Step\",\"Potential Energy (kJ/mole)\",\"Temperature (K)\",\"Density (g/mL)\"\r\n",
+      "100,216.771920655461,154.96717184173943,0.006671086812409914\r\n",
+      "200,201.62607714960163,216.32147111189676,0.006671086812409914\r\n",
+      "300,213.11094043085163,232.9916751892243,0.006671086812409914\r\n",
+      "400,212.33066699335163,213.81408827329508,0.006671086812409914\r\n",
+      "500,207.35440966913288,221.35238245682228,0.006671086812409914\r\n",
+      "600,209.54447314569538,159.74499243416864,0.006671086812409914\r\n",
+      "700,192.10489795038288,225.62120459343876,0.006671086812409914\r\n",
+      "800,219.163033936711,184.62231322125083,0.006671086812409914\r\n",
+      "900,210.28003833124225,261.8835343825722,0.006671086812409914\r\n",
+      "1000,220.80164477655475,243.144443409043,0.006671086812409914\r\n"
+     ]
+    }
+   ],
+   "source": [
+    "!cat data.csv"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
   }
  ],
  "metadata": {
diff --git a/examples/using_smirnoff_in_amber_or_gromacs/export_with_interchange.ipynb b/examples/using_smirnoff_in_amber_or_gromacs/export_with_interchange.ipynb
index d7f01231..3c706042 100644
--- a/examples/using_smirnoff_in_amber_or_gromacs/export_with_interchange.ipynb
+++ b/examples/using_smirnoff_in_amber_or_gromacs/export_with_interchange.ipynb
@@ -28,7 +28,7 @@
     "\n",
     "We start by loading a PDB file containing one copy of ethanol and cyclohexane. Our goal is to create an OpenFF `Topology` object describing this system that we can parametrize with the SMIRNOFF-format \"Sage\" force field.\n",
     "\n",
-    "The two `Molecule` objects created from the SMILES strings can contain information such as partial charges and stereochemistry that is not included in an OpenMM topology. In this example, partial charges are not explicitly given, and `ForceField` will assign AM1/BCC charges as specified by the \"Sage\" force field. Note that the OpenFF Toolkit produces partial charges that do not depend on the input conformation of parameterized molecules. See the [FAQ](https://docs.openforcefield.org/projects/toolkit/en/stable/faq.html#the-partial-charges-generated-by-the-toolkit-dont-seem-to-depend-on-the-molecules-conformation-is-this-a-bug) for more information."
+    "The two `Molecule` objects created from the SMILES strings can contain information such as formal charges and stereochemistry that is not included in a PDB file. These objects are passed to the PDB loading function via the `unique_molecules` argument. In this example, partial charges are not explicitly given, and `ForceField` will assign AM1/BCC charges as specified by the \"Sage\" force field. Note that the OpenFF Toolkit produces partial charges that do not depend on the input conformation of parameterized molecules. See the [FAQ](https://open-forcefield-toolkit.readthedocs.io/en/latest/faq.html#the-partial-charges-generated-by-the-toolkit-don-t-seem-to-depend-on-the-molecule-s-conformation-is-this-a-bug) for more information."
    ]
   },
   {
@@ -37,8 +37,6 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from openmm import app\n",
-    "\n",
     "from openff.toolkit import ForceField, Molecule, Topology"
    ]
   },
@@ -50,7 +48,7 @@
     {
      "data": {
       "text/plain": [
-       "<openff.toolkit.topology.topology.Topology at 0x7ff0baf89940>"
+       "<openff.toolkit.topology.topology.Topology at 0x17248b820>"
       ]
      },
      "execution_count": 2,
@@ -62,15 +60,13 @@
     "ethanol = Molecule.from_smiles(\"CCO\")\n",
     "cyclohexane = Molecule.from_smiles(\"C1CCCCC1\")\n",
     "\n",
-    "# Load the PDB file using OpenMM and save the OpenMM Topology\n",
-    "pdbfile = app.PDBFile(\"1_cyclohexane_1_ethanol.pdb\")\n",
-    "omm_topology = pdbfile.topology\n",
-    "\n",
-    "# Create the OpenFF Topology.\n",
-    "off_topology = Topology.from_openmm(\n",
-    "    omm_topology, unique_molecules=[ethanol, cyclohexane]\n",
+    "# Load the topology from a PDB file and `Molecule` objects\n",
+    "topology = Topology.from_pdb(\n",
+    "    \"1_cyclohexane_1_ethanol.pdb\",\n",
+    "    unique_molecules=[ethanol, cyclohexane],\n",
     ")\n",
-    "off_topology"
+    "\n",
+    "topology"
    ]
   },
   {
@@ -79,8 +75,7 @@
    "source": [
     "### Preparing an OpenFF ForceField\n",
     "\n",
-    "Once the `ForceField` class is imported, the only decision to make is which force field to use. An exhaustive list of force fields released by the Open Force Field Initiative can be found [here](from openff.toolkit.typing.engines.smirnoff import ForceField\n",
-    ").\n",
+    "Once the `ForceField` class is imported, the only decision to make is which force field to use. An exhaustive list of force fields released by the Open Force Field Initiative can be found [here](https://github.com/openforcefield/openff-forcefields#how-to-cite).\n",
     "\n",
     "Here we will use force field from the \"Sage\" line."
    ]
@@ -93,7 +88,7 @@
     {
      "data": {
       "text/plain": [
-       "<openff.toolkit.typing.engines.smirnoff.forcefield.ForceField at 0x7ff0baf89bb0>"
+       "<openff.toolkit.typing.engines.smirnoff.forcefield.ForceField at 0x172176fb0>"
       ]
      },
      "execution_count": 3,
@@ -102,7 +97,7 @@
     }
    ],
    "source": [
-    "forcefield = ForceField(\"openff-2.0.0.offxml\")\n",
+    "forcefield = ForceField(\"openff-2.1.0.offxml\")\n",
     "forcefield"
    ]
   },
@@ -120,10 +115,22 @@
    "execution_count": 4,
    "metadata": {},
    "outputs": [
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "4852506f37f8456cb272686e934e3915",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
     {
      "data": {
       "text/plain": [
-       "<openmm.openmm.System; proxy of <Swig Object of type 'OpenMM::System *' at 0x7ff0bb9f6ba0> >"
+       "<openmm.openmm.System; proxy of <Swig Object of type 'OpenMM::System *' at 0x1721775d0> >"
       ]
      },
      "execution_count": 4,
@@ -132,7 +139,7 @@
     }
    ],
    "source": [
-    "omm_system = forcefield.create_openmm_system(off_topology)\n",
+    "omm_system = forcefield.create_openmm_system(topology)\n",
     "omm_system"
    ]
   },
@@ -155,7 +162,7 @@
     {
      "data": {
       "text/plain": [
-       "Interchange with 27 atoms, periodic topology"
+       "Interchange with 7 collections, periodic topology with 27 atoms."
       ]
      },
      "execution_count": 5,
@@ -168,9 +175,8 @@
     "\n",
     "interchange = Interchange.from_smirnoff(\n",
     "    force_field=forcefield,\n",
-    "    topology=off_topology,\n",
+    "    topology=topology,\n",
     ")\n",
-    "interchange.positions = pdbfile.positions\n",
     "interchange"
    ]
   },
@@ -226,11 +232,10 @@
     {
      "data": {
       "text/plain": [
-       "{'Bond': 0.2952878475189209 <Unit('kilojoule / mole')>,\n",
-       " 'Angle': 155.7012939453125 <Unit('kilojoule / mole')>,\n",
-       " 'Torsion': 19.563228607177734 <Unit('kilojoule / mole')>,\n",
-       " 'vdW': 9.6586229795419 <Unit('kilojoule / mole')>,\n",
-       " 'Electrostatics': -15.220786403489484 <Unit('kilojoule / mole')>}"
+       "{'Bond': 0.23387858988917706 <Unit('kilojoule / mole')>,\n",
+       " 'Angle': 7.141817584586063 <Unit('kilojoule / mole')>,\n",
+       " 'Torsion': 25.58058697014608 <Unit('kilojoule / mole')>,\n",
+       " 'Nonbonded': -5.556987691195377 <Unit('kilojoule / mole')>}"
       ]
      },
      "execution_count": 8,
@@ -250,655 +255,14 @@
     "scrolled": true
    },
    "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "\n",
-      "   27  0.0000000e+00\n",
-      "  12.5320000  10.8130000  10.3860000  12.3480000  10.3390000  11.8250000\n",
-      "  10.8800000  10.3650000  12.2440000  10.2560000  11.7390000  12.0200000\n",
-      "  10.4390000  12.2130000  10.5810000  11.9070000  12.1870000  10.1620000\n",
-      "  12.0720000  10.0880000   9.7030000  13.6000000  10.8490000  10.1430000\n",
-      "  12.7450000   9.3240000  11.9320000  12.9300000  10.9820000  12.4970000\n",
-      "  10.3240000   9.6140000  11.6690000  10.7930000  10.0880000  13.3000000\n",
-      "   9.1880000  11.7030000  12.2640000  10.7160000  12.4640000  12.7040000\n",
-      "   9.8580000  11.5710000   9.9090000  10.0430000  13.2300000  10.4740000\n",
-      "  11.9940000  12.4650000   9.1050000  12.4630000  12.9380000  10.7370000\n",
-      "  10.1720000  31.2760000  27.8660000   8.7460000  30.9610000  27.4710000\n",
-      "   8.7520000  30.2640000  26.2340000  10.2040000  31.8150000  28.8180000\n",
-      "  10.7580000  30.3560000  27.9620000  10.6610000  31.8860000  27.0990000\n",
-      "   8.1690000  31.8830000  27.3520000   8.2670000  30.3330000  28.2280000\n",
-      "   7.8260000  30.0790000  26.0110000\n",
-      "  31.8850000  31.8850000  31.8850000  90.0000000  90.0000000  90.0000000\n",
-      "%VERSION  VERSION_STAMP = V0001.000  DATE = 03/25/22  16:03:26\n",
-      "%FLAG TITLE\n",
-      "%FORMAT(20a4)\n",
-      "\n",
-      "%FLAG POINTERS\n",
-      "%FORMAT(10I8)\n",
-      "      27       5      18       8      42       7      64      18       0       0\n",
-      "     140       1       8       7      18       4       3      10       1       0\n",
-      "       0       0       0       0       0       0       0       1      27       0\n",
-      "       0       0\n",
-      "%FLAG ATOM_NAME\n",
-      "%FORMAT(20a4)\n",
-      "C1  C2  C3  C4  C5  C6  H1  H2  H3  H4  H5  H6  H7  H8  H9  H10 H11 H12 C7  C8  \n",
-      "O1  H13 H14 H15 H16 H17 H18 \n",
-      "%FLAG CHARGE\n",
-      "%FORMAT(5E16.8)\n",
-      " -1.37596591E+00 -1.37487258E+00 -1.37487258E+00 -1.37487258E+00 -1.37487258E+00\n",
-      " -1.37487258E+00  6.87527403E-01  6.87527403E-01  6.87527403E-01  6.87527403E-01\n",
-      "  6.87527403E-01  6.87527403E-01  6.87527403E-01  6.87527403E-01  6.87527403E-01\n",
-      "  6.87527403E-01  6.87527403E-01  6.87527403E-01 -1.76938530E+00  2.39495687E+00\n",
-      " -1.09577978E+01  8.15630125E-01  8.15630125E-01  8.15630125E-01  3.15610207E-01\n",
-      "  3.15610207E-01  7.25411547E+00\n",
-      "%FLAG ATOMIC_NUMBER\n",
-      "%FORMAT(10I8)\n",
-      "       6       6       6       6       6       6       1       1       1       1\n",
-      "       1       1       1       1       1       1       1       1       6       6\n",
-      "       8       1       1       1       1       1       1\n",
-      "%FLAG MASS\n",
-      "%FORMAT(5E16.8)\n",
-      "  1.20107800E+01  1.20107800E+01  1.20107800E+01  1.20107800E+01  1.20107800E+01\n",
-      "  1.20107800E+01  1.00794700E+00  1.00794700E+00  1.00794700E+00  1.00794700E+00\n",
-      "  1.00794700E+00  1.00794700E+00  1.00794700E+00  1.00794700E+00  1.00794700E+00\n",
-      "  1.00794700E+00  1.00794700E+00  1.00794700E+00  1.20107800E+01  1.20107800E+01\n",
-      "  1.59994300E+01  1.00794700E+00  1.00794700E+00  1.00794700E+00  1.00794700E+00\n",
-      "  1.00794700E+00  1.00794700E+00\n",
-      "%FLAG ATOM_TYPE_INDEX\n",
-      "%FORMAT(10I8)\n",
-      "       1       1       1       1       1       1       2       2       2       2\n",
-      "       2       2       2       2       2       2       2       2       1       1\n",
-      "       3       2       2       2       4       4       5\n",
-      "%FLAG NUMBER_EXCLUDED_ATOMS\n",
-      "%FORMAT(10I8)\n",
-      "      15      14      13      12      11      10       5       4       3       2\n",
-      "       3       2       3       2       3       2       1       1       8       7\n",
-      "       6       4       3       2       2       1       1\n",
-      "%FLAG NONBONDED_PARM_INDEX\n",
-      "%FORMAT(10I8)\n",
-      "       1       2       4       7      11       2       3       5       8      12\n",
-      "       4       5       6       9      13       7       8       9      10      14\n",
-      "      11      12      13      14      15\n",
-      "%FLAG RESIDUE_LABEL\n",
-      "%FORMAT(20a4)\n",
-      "RES \n",
-      "%FLAG RESIDUE_POINTER\n",
-      "%FORMAT(10I8)\n",
-      "       2\n",
-      "%FLAG BOND_FORCE_CONSTANT\n",
-      "%FORMAT(5E16.8)\n",
-      "  2.64621486E+02  3.70046707E+02  3.29969981E+02  5.43526783E+02\n",
-      "%FLAG BOND_EQUIL_VALUE\n",
-      "%FORMAT(5E16.8)\n",
-      "  1.52190126E+00  1.09389949E+00  1.42734396E+00  9.71676331E-01\n",
-      "%FLAG ANGLE_FORCE_CONSTANT\n",
-      "%FORMAT(5E16.8)\n",
-      "  5.32053163E+01  4.87764926E+01  6.50906161E+01\n",
-      "%FLAG ANGLE_EQUIL_VALUE\n",
-      "%FORMAT(5E16.8)\n",
-      "  2.03413912E+00  2.01765472E+00  1.92603856E+00\n",
-      "%FLAG DIHEDRAL_FORCE_CONSTANT\n",
-      "%FORMAT(5E16.8)\n",
-      "  9.22387404E-02  3.15993592E-01  3.24779681E-01  1.04066385E-01  1.91192672E-01\n",
-      "  3.44538215E-01  1.36455637E-01  1.11552567E-01  3.43249022E-01  3.02639017E-01\n",
-      "%FLAG DIHEDRAL_PERIODICITY\n",
-      "%FORMAT(5E16.8)\n",
-      "  3.00000000E+00  2.00000000E+00  1.00000000E+00  3.00000000E+00  3.00000000E+00\n",
-      "  3.00000000E+00  1.00000000E+00  3.00000000E+00  1.00000000E+00  3.00000000E+00\n",
-      "%FLAG DIHEDRAL_PHASE\n",
-      "%FORMAT(5E16.8)\n",
-      "  0.00000000E+00  3.14159265E+00  3.14159265E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "%FLAG SCEE_SCALE_FACTOR\n",
-      "%FORMAT(5E16.8)\n",
-      "  1.20000000E+00  1.20000000E+00  1.20000000E+00  1.20000000E+00  1.20000000E+00\n",
-      "  1.20000000E+00  1.20000000E+00  1.20000000E+00  1.20000000E+00  1.20000000E+00\n",
-      "%FLAG SCNB_SCALE_FACTOR\n",
-      "%FORMAT(5E16.8)\n",
-      "  2.00000000E+00  2.00000000E+00  2.00000000E+00  2.00000000E+00  2.00000000E+00\n",
-      "  2.00000000E+00  2.00000000E+00  2.00000000E+00  2.00000000E+00  2.00000000E+00\n",
-      "%FLAG SOLTY\n",
-      "%FORMAT(5E16.8)\n",
-      "  0.00000000E+00\n",
-      "%FLAG LENNARD_JONES_ACOEF\n",
-      "%FORMAT(5E16.8)\n",
-      "  9.66338652E+05  9.24328843E+04  7.38518138E+03  6.66507729E+05  5.83759564E+04\n",
-      "  4.40259018E+05  8.33691908E+04  6.54768129E+03  5.22131072E+04  5.79557957E+03\n",
-      "  1.46234885E+01  4.58964736E-01  5.90854038E+00  3.70489465E-01  2.68310183E-08\n",
-      "%FLAG LENNARD_JONES_BCOEF\n",
-      "%FORMAT(5E16.8)\n",
-      "  6.48619732E+02  1.23783906E+02  2.15902147E+01  6.34472236E+02  1.15865057E+02\n",
-      "  6.07363521E+02  1.18714205E+02  2.05290621E+01  1.10655807E+02  1.95039576E+01\n",
-      "  2.60290771E-01  2.84543313E-02  1.94875807E-01  2.58163965E-02  1.15016368E-06\n",
-      "%FLAG BONDS_INC_HYDROGEN\n",
-      "%FORMAT(10I8)\n",
-      "       0      18       2       0      21       2       3      24       2       3\n",
-      "      27       2       6      30       2       6      33       2       9      36\n",
-      "       2       9      39       2      12      42       2      12      45       2\n",
-      "      15      48       2      15      51       2      54      63       2      54\n",
-      "      66       2      54      69       2      57      72       2      57      75\n",
-      "       2      60      78       4\n",
-      "%FLAG BONDS_WITHOUT_HYDROGEN\n",
-      "%FORMAT(10I8)\n",
-      "       0       3       1       0      15       1       3       6       1       6\n",
-      "       9       1       9      12       1      12      15       1      54      57\n",
-      "       1      57      60       3\n",
-      "%FLAG ANGLES_INC_HYDROGEN\n",
-      "%FORMAT(10I8)\n",
-      "       0       3      24       1       0       3      27       1       0      15\n",
-      "      48       1       0      15      51       1       3       0      18       1\n",
-      "       3       0      21       1       3       6      30       1       3       6\n",
-      "      33       1       6       3      24       1       6       3      27       1\n",
-      "       6       9      36       1       6       9      39       1       9       6\n",
-      "      30       1       9       6      33       1       9      12      42       1\n",
-      "       9      12      45       1      12       9      36       1      12       9\n",
-      "      39       1      12      15      48       1      12      15      51       1\n",
-      "      15       0      18       1      15       0      21       1      15      12\n",
-      "      42       1      15      12      45       1      18       0      21       2\n",
-      "      24       3      27       2      30       6      33       2      36       9\n",
-      "      39       2      42      12      45       2      48      15      51       2\n",
-      "      54      57      72       1      54      57      75       1      57      54\n",
-      "      63       1      57      54      66       1      57      54      69       1\n",
-      "      57      60      78       3      60      57      72       1      60      57\n",
-      "      75       1      63      54      66       2      63      54      69       2\n",
-      "      66      54      69       2      72      57      75       2\n",
-      "%FLAG ANGLES_WITHOUT_HYDROGEN\n",
-      "%FORMAT(10I8)\n",
-      "       0       3       6       1       0      15      12       1       3       0\n",
-      "      15       1       3       6       9       1       6       9      12       1\n",
-      "       9      12      15       1      54      57      60       1\n",
-      "%FLAG DIHEDRALS_INC_HYDROGEN\n",
-      "%FORMAT(10I8)\n",
-      "       0       3       6      30       4       0       3       6      33       4\n",
-      "       0      15      12      42       4       0      15      12      45       4\n",
-      "       3       0      15      48       4       3       0      15      51       4\n",
-      "       3       6       9      36       4       3       6       9      39       4\n",
-      "      18       0       3       6       4      21       0       3       6       4\n",
-      "       6       9      12      42       4       6       9      12      45       4\n",
-      "       9       6       3      24       4       9       6       3      27       4\n",
-      "       9      12      15      48       4       9      12      15      51       4\n",
-      "      12       9       6      30       4      12       9       6      33       4\n",
-      "      18       0      15      12       4      21       0      15      12       4\n",
-      "      15       0       3      24       4      15       0       3      27       4\n",
-      "      15      12       9      36       4      15      12       9      39       4\n",
-      "      18       0       3      24       5      18       0       3      27       5\n",
-      "      18       0      15      48       5      18       0      15      51       5\n",
-      "      21       0       3      24       5      21       0       3      27       5\n",
-      "      21       0      15      48       5      21       0      15      51       5\n",
-      "      24       3       6      30       5      24       3       6      33       5\n",
-      "      27       3       6      30       5      27       3       6      33       5\n",
-      "      30       6       9      36       5      30       6       9      39       5\n",
-      "      33       6       9      36       5      33       6       9      39       5\n",
-      "      36       9      12      42       5      36       9      12      45       5\n",
-      "      39       9      12      42       5      39       9      12      45       5\n",
-      "      42      12      15      48       5      42      12      15      51       5\n",
-      "      45      12      15      48       5      45      12      15      51       5\n",
-      "      54      57      60      78       6      54      57     -60      78       7\n",
-      "      60      57      54      63       8      60      57     -54      63       9\n",
-      "      60      57      54      66       8      60      57     -54      66       9\n",
-      "      60      57      54      69       8      60      57     -54      69       9\n",
-      "      63      54      57      72       5      63      54      57      75       5\n",
-      "      66      54      57      72       5      66      54      57      75       5\n",
-      "      69      54      57      72       5      69      54      57      75       5\n",
-      "      72      57      60      78      10      75      57      60      78      10\n",
-      "%FLAG DIHEDRALS_WITHOUT_HYDROGEN\n",
-      "%FORMAT(10I8)\n",
-      "       0       3       6       9       1       0       3      -6       9       2\n",
-      "       0       3      -6       9       3       0      15     -12       9       1\n",
-      "       0      15     -12       9       2       0      15     -12       9       3\n",
-      "       3       0      15      12       1       3       0     -15      12       2\n",
-      "       3       0     -15      12       3       3       6      -9      12       1\n",
-      "       3       6      -9      12       2       3       6      -9      12       3\n",
-      "      15       0       3       6       1      15       0      -3       6       2\n",
-      "      15       0      -3       6       3       6       9     -12      15       1\n",
-      "       6       9     -12      15       2       6       9     -12      15       3\n",
-      "%FLAG EXCLUDED_ATOMS_LIST\n",
-      "%FORMAT(10I8)\n",
-      "       2       6       7       8       3       4      11      12       9      10\n",
-      "       5      15      16      17      18       3       9      10       6       5\n",
-      "      17      18       7       8       4      13      14      11      12       6\n",
-      "       7       8       4      11      12       9      10       5      15      16\n",
-      "      13      14       9      10       5      13      14      11      12       6\n",
-      "      17      18      15      16      11      12       6      15      16      13\n",
-      "      14       7       8      17      18       9      10      17      18       7\n",
-      "       8      13      14      15      16       9      10      17      18       8\n",
-      "       9      10      17      18      11      12      10      11      12      13\n",
-      "      14      12      13      14      15      16      14      15      16      17\n",
-      "      18      16      17      18      18       0      20      22      23      24\n",
-      "      21      27      25      26      21      25      26      22      23      24\n",
-      "      27      22      23      24      27      25      26      25      26      23\n",
-      "      24      25      26      24      25      26      27      26      27       0\n",
-      "%FLAG HBOND_ACOEF\n",
-      "%FORMAT(5E16.8)\n",
-      "\n",
-      "%FLAG HBOND_BCOEF\n",
-      "%FORMAT(5E16.8)\n",
-      "\n",
-      "%FLAG HBCUT\n",
-      "%FORMAT(5E16.8)\n",
-      "\n",
-      "%FLAG AMBER_ATOM_TYPE\n",
-      "%FORMAT(20a4)\n",
-      "C1  C2  C3  C4  C5  C6  H1  H2  H3  H4  H5  H6  H7  H8  H9  H10 H11 H12 C7  C8  \n",
-      "O1  H13 H14 H15 H16 H17 H18 \n",
-      "%FLAG TREE_CHAIN_CLASSIFICATION\n",
-      "%FORMAT(20a4)\n",
-      "BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA BLA \n",
-      "BLA BLA BLA BLA BLA BLA BLA \n",
-      "%FLAG JOIN_ARRAY\n",
-      "%FORMAT(10I8)\n",
-      "       0       0       0       0       0       0       0       0       0       0\n",
-      "       0       0       0       0       0       0       0       0       0       0\n",
-      "       0       0       0       0       0       0       0\n",
-      "%FLAG IROTAT\n",
-      "%FORMAT(10I8)\n",
-      "       0       0       0       0       0       0       0       0       0       0\n",
-      "       0       0       0       0       0       0       0       0       0       0\n",
-      "       0       0       0       0       0       0       0\n",
-      "%FLAG SOLVENT_POINTERS\n",
-      "%FORMAT(3I8)\n",
-      "       1       1       2\n",
-      "%FLAG ATOMS_PER_MOLECULE\n",
-      "%FORMAT(10I8)\n",
-      "      27\n",
-      "%FLAG BOX_DIMENSIONS\n",
-      "%FORMAT(5E16.8)\n",
-      "  9.00000000E+01  3.18850000E+01  3.18850000E+01  3.18850000E+01\n",
-      "%FLAG RADIUS_SET\n",
-      "%FORMAT(1a80)\n",
-      "0\n",
-      "%FLAG RADII\n",
-      "%FORMAT(5E16.8)\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00\n",
-      "%FLAG SCREEN\n",
-      "%FORMAT(5E16.8)\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00  0.00000000E+00\n",
-      "  0.00000000E+00  0.00000000E+00\n",
-      "%FLAG IPOL\n",
-      "%FORMAT(1I8)\n",
-      "       0\n",
-      "; Generated by Interchange\n",
-      "[ defaults ]\n",
-      "; nbfunc\tcomb-rule\tgen-pairs\tfudgeLJ\tfudgeQQ\n",
-      "     1\t     2\tno     0.500000 0.833333\n",
-      "\n",
-      "[ atomtypes ]\n",
-      ";type, bondingtype, mass, charge, ptype, sigma, epsilon\n",
-      "C1               6 12.01078 0.0000000000000000 A     0.337953176162662 0.4553891161106184\n",
-      "C2               6 12.01078 0.0000000000000000 A     0.337953176162662 0.4553891161106184\n",
-      "C3               6 12.01078 0.0000000000000000 A     0.337953176162662 0.4553891161106184\n",
-      "C4               6 12.01078 0.0000000000000000 A     0.337953176162662 0.4553891161106184\n",
-      "C5               6 12.01078 0.0000000000000000 A     0.337953176162662 0.4553891161106184\n",
-      "C6               6 12.01078 0.0000000000000000 A     0.337953176162662 0.4553891161106184\n",
-      "H1               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H2               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H3               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H4               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H5               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H6               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H7               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H8               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H9               1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H10              1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H11              1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H12              1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "C7               6 12.01078 0.0000000000000000 A     0.337953176162662 0.4553891161106184\n",
-      "C8               6 12.01078 0.0000000000000000 A     0.337953176162662 0.4553891161106184\n",
-      "O1               8 15.99943 0.0000000000000000 A     0.2997159987248637 0.8764372596155737\n",
-      "H13              1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H14              1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H15              1 1.007947 0.0000000000000000 A     0.2644543413268124 0.06602135607582665\n",
-      "H16              1 1.007947 0.0000000000000000 A     0.2583225710839196 0.068656285380106\n",
-      "H17              1 1.007947 0.0000000000000000 A     0.2583225710839196 0.068656285380106\n",
-      "H18              1 1.007947 0.0000000000000000 A     0.0534539230883669 5.157198260534728e-05\n",
-      "\n",
-      "[ moleculetype ]\n",
-      "; Name\tnrexcl\n",
-      "x0\t3\n",
-      "\n",
-      "[ atoms ]\n",
-      ";num, type, resnum, resname, atomname, cgnr, q, m\n",
-      "     1 C1                      1 ZBE      C1            1        -0.07551000        12.01078000\n",
-      "     2 C2                      1 ZBE      C2            2        -0.07545000        12.01078000\n",
-      "     3 C3                      1 ZBE      C3            3        -0.07545000        12.01078000\n",
-      "     4 C4                      1 ZBE      C4            4        -0.07545000        12.01078000\n",
-      "     5 C5                      1 ZBE      C5            5        -0.07545000        12.01078000\n",
-      "     6 C6                      1 ZBE      C6            6        -0.07545000        12.01078000\n",
-      "     7 H1                      1 ZBE      H1            7         0.03773000         1.00794700\n",
-      "     8 H2                      1 ZBE      H2            8         0.03773000         1.00794700\n",
-      "     9 H3                      1 ZBE      H3            9         0.03773000         1.00794700\n",
-      "    10 H4                      1 ZBE      H4           10         0.03773000         1.00794700\n",
-      "    11 H5                      1 ZBE      H5           11         0.03773000         1.00794700\n",
-      "    12 H6                      1 ZBE      H6           12         0.03773000         1.00794700\n",
-      "    13 H7                      1 ZBE      H7           13         0.03773000         1.00794700\n",
-      "    14 H8                      1 ZBE      H8           14         0.03773000         1.00794700\n",
-      "    15 H9                      1 ZBE      H9           15         0.03773000         1.00794700\n",
-      "    16 H10                     1 ZBE      H10          16         0.03773000         1.00794700\n",
-      "    17 H11                     1 ZBE      H11          17         0.03773000         1.00794700\n",
-      "    18 H12                     1 ZBE      H12          18         0.03773000         1.00794700\n",
-      "\n",
-      "[ pairs ]\n",
-      "; ai\taj\tfunct\n",
-      "      2       5      1         0.337953         0.227695\n",
-      "      8      18      1         0.264454        0.0330107\n",
-      "     10      11      1         0.264454        0.0330107\n",
-      "      4      17      1         0.301204        0.0866969\n",
-      "      5      11      1         0.301204        0.0866969\n",
-      "     10      12      1         0.264454        0.0330107\n",
-      "     11      13      1         0.264454        0.0330107\n",
-      "      6       9      1         0.301204        0.0866969\n",
-      "      4      18      1         0.301204        0.0866969\n",
-      "      5      12      1         0.301204        0.0866969\n",
-      "      7       9      1         0.264454        0.0330107\n",
-      "     13      15      1         0.264454        0.0330107\n",
-      "      6      10      1         0.301204        0.0866969\n",
-      "     12      13      1         0.264454        0.0330107\n",
-      "      6      13      1         0.301204        0.0866969\n",
-      "     11      14      1         0.264454        0.0330107\n",
-      "      6      14      1         0.301204        0.0866969\n",
-      "     14      15      1         0.264454        0.0330107\n",
-      "      7      10      1         0.264454        0.0330107\n",
-      "     13      16      1         0.264454        0.0330107\n",
-      "     12      14      1         0.264454        0.0330107\n",
-      "      1      11      1         0.301204        0.0866969\n",
-      "      3       6      1         0.337953         0.227695\n",
-      "     14      16      1         0.264454        0.0330107\n",
-      "      1      15      1         0.301204        0.0866969\n",
-      "      3       7      1         0.301204        0.0866969\n",
-      "      1      12      1         0.301204        0.0866969\n",
-      "      2      13      1         0.301204        0.0866969\n",
-      "      1      16      1         0.301204        0.0866969\n",
-      "      3       8      1         0.301204        0.0866969\n",
-      "      2      14      1         0.301204        0.0866969\n",
-      "      7      17      1         0.264454        0.0330107\n",
-      "      8       9      1         0.264454        0.0330107\n",
-      "     15      17      1         0.264454        0.0330107\n",
-      "      8      10      1         0.264454        0.0330107\n",
-      "      7      18      1         0.264454        0.0330107\n",
-      "      4       9      1         0.301204        0.0866969\n",
-      "      1       4      1         0.337953         0.227695\n",
-      "      5       7      1         0.301204        0.0866969\n",
-      "     15      18      1         0.264454        0.0330107\n",
-      "      4      10      1         0.301204        0.0866969\n",
-      "      2      17      1         0.301204        0.0866969\n",
-      "      3      15      1         0.301204        0.0866969\n",
-      "      5       8      1         0.301204        0.0866969\n",
-      "      9      11      1         0.264454        0.0330107\n",
-      "      2      18      1         0.301204        0.0866969\n",
-      "     16      17      1         0.264454        0.0330107\n",
-      "      9      12      1         0.264454        0.0330107\n",
-      "      3      16      1         0.301204        0.0866969\n",
-      "      8      17      1         0.264454        0.0330107\n",
-      "     16      18      1         0.264454        0.0330107\n",
-      "\n",
-      "[ bonds ]\n",
-      "; ai\taj\tfunc\tr\tk\n",
-      "      1       2 1    0.152190126495 221435.2592902858\n",
-      "      1       6 1    0.152190126495 221435.2592902858\n",
-      "      1       7 1    0.1093899492634 309655.084322414\n",
-      "      1       8 1    0.1093899492634 309655.084322414\n",
-      "      2       3 1    0.152190126495 221435.2592902858\n",
-      "      2       9 1    0.1093899492634 309655.084322414\n",
-      "      2      10 1    0.1093899492634 309655.084322414\n",
-      "      3       4 1    0.152190126495 221435.2592902858\n",
-      "      3      11 1    0.1093899492634 309655.084322414\n",
-      "      3      12 1    0.1093899492634 309655.084322414\n",
-      "      4       5 1    0.152190126495 221435.2592902858\n",
-      "      4      13 1    0.1093899492634 309655.084322414\n",
-      "      4      14 1    0.1093899492634 309655.084322414\n",
-      "      5       6 1    0.152190126495 221435.2592902858\n",
-      "      5      15 1    0.1093899492634 309655.084322414\n",
-      "      5      16 1    0.1093899492634 309655.084322414\n",
-      "      6      17 1    0.1093899492634 309655.084322414\n",
-      "      6      18 1    0.1093899492634 309655.084322414\n",
-      "\n",
-      "\n",
-      "[ angles ]\n",
-      "; ai\taj\tak\tfunc\tr\tk\n",
-      "      2       3      12 1    116.5475862634 445.2220865092856\n",
-      "      9       2      10 1    115.6030999533 408.161690475075\n",
-      "     11       3      12 1    115.6030999533 408.161690475075\n",
-      "      3       2       9 1    116.5475862634 445.2220865092856\n",
-      "      7       1       8 1    115.6030999533 408.161690475075\n",
-      "      3       2      10 1    116.5475862634 445.2220865092856\n",
-      "      5       6      17 1    116.5475862634 445.2220865092856\n",
-      "      6       1       7 1    116.5475862634 445.2220865092856\n",
-      "     13       4      14 1    115.6030999533 408.161690475075\n",
-      "      3       4       5 1    116.5475862634 445.2220865092856\n",
-      "      4       5       6 1    116.5475862634 445.2220865092856\n",
-      "      5       6      18 1    116.5475862634 445.2220865092856\n",
-      "     17       6      18 1    115.6030999533 408.161690475075\n",
-      "      6       1       8 1    116.5475862634 445.2220865092856\n",
-      "      2       3       4 1    116.5475862634 445.2220865092856\n",
-      "      2       1       6 1    116.5475862634 445.2220865092856\n",
-      "      6       5      15 1    116.5475862634 445.2220865092856\n",
-      "      4       3      11 1    116.5475862634 445.2220865092856\n",
-      "      6       5      16 1    116.5475862634 445.2220865092856\n",
-      "      4       3      12 1    116.5475862634 445.2220865092856\n",
-      "      2       1       7 1    116.5475862634 445.2220865092856\n",
-      "      1       2       9 1    116.5475862634 445.2220865092856\n",
-      "      2       1       8 1    116.5475862634 445.2220865092856\n",
-      "      5       4      13 1    116.5475862634 445.2220865092856\n",
-      "     15       5      16 1    115.6030999533 408.161690475075\n",
-      "      1       2      10 1    116.5475862634 445.2220865092856\n",
-      "      3       4      13 1    116.5475862634 445.2220865092856\n",
-      "      1       6      17 1    116.5475862634 445.2220865092856\n",
-      "      5       4      14 1    116.5475862634 445.2220865092856\n",
-      "      1       6      18 1    116.5475862634 445.2220865092856\n",
-      "      3       4      14 1    116.5475862634 445.2220865092856\n",
-      "      4       5      15 1    116.5475862634 445.2220865092856\n",
-      "      4       5      16 1    116.5475862634 445.2220865092856\n",
-      "      1       6       5 1    116.5475862634 445.2220865092856\n",
-      "      2       3      11 1    116.5475862634 445.2220865092856\n",
-      "      1       2       3 1    116.5475862634 445.2220865092856\n",
-      "\n",
-      "[ dihedrals ]\n",
-      ";    i      j      k      l   func\n",
-      "      4       3       2      10      1                0         0.435414       3\n",
-      "      8       1       6      17      1                0          0.79995       3\n",
-      "     15       5       6      17      1                0          0.79995       3\n",
-      "     15       5       6      18      1                0          0.79995       3\n",
-      "      5       4       3      11      1                0         0.435414       3\n",
-      "      6       1       2       9      1                0         0.435414       3\n",
-      "     12       3       4      13      1                0          0.79995       3\n",
-      "      8       1       6      18      1                0          0.79995       3\n",
-      "      5       4       3      12      1                0         0.435414       3\n",
-      "      6       1       2      10      1                0         0.435414       3\n",
-      "      1       6       5      15      1                0         0.435414       3\n",
-      "     12       3       4      14      1                0          0.79995       3\n",
-      "      3       4       5       6      1                0         0.385927       3\n",
-      "      3       4       5       6      1              180          1.32212       2\n",
-      "      3       4       5       6      1              180          1.35888       1\n",
-      "      1       6       5      16      1                0         0.435414       3\n",
-      "      1       2       3       4      1                0         0.385927       3\n",
-      "      1       2       3       4      1              180          1.32212       2\n",
-      "      1       2       3       4      1              180          1.35888       1\n",
-      "      4       5       6      17      1                0         0.435414       3\n",
-      "      8       1       2       9      1                0          0.79995       3\n",
-      "     13       4       5      15      1                0          0.79995       3\n",
-      "      2       3       4       5      1                0         0.385927       3\n",
-      "      2       3       4       5      1              180          1.32212       2\n",
-      "      2       3       4       5      1              180          1.35888       1\n",
-      "      4       5       6      18      1                0         0.435414       3\n",
-      "     10       2       3      11      1                0          0.79995       3\n",
-      "     13       4       5      16      1                0          0.79995       3\n",
-      "      1       6       5       4      1                0         0.385927       3\n",
-      "      1       6       5       4      1              180          1.32212       2\n",
-      "      1       6       5       4      1              180          1.35888       1\n",
-      "      6       5       4      13      1                0         0.435414       3\n",
-      "     10       2       3      12      1                0          0.79995       3\n",
-      "      6       5       4      14      1                0         0.435414       3\n",
-      "      9       2       3      11      1                0          0.79995       3\n",
-      "      7       1       2       9      1                0          0.79995       3\n",
-      "      3       4       5      15      1                0         0.435414       3\n",
-      "      2       1       6      17      1                0         0.435414       3\n",
-      "      7       1       6      17      1                0          0.79995       3\n",
-      "      9       2       3      12      1                0          0.79995       3\n",
-      "      7       1       6      18      1                0          0.79995       3\n",
-      "      2       1       6      18      1                0         0.435414       3\n",
-      "     11       3       4      13      1                0          0.79995       3\n",
-      "      7       1       2      10      1                0          0.79995       3\n",
-      "      2       3       4      13      1                0         0.435414       3\n",
-      "      3       4       5      16      1                0         0.435414       3\n",
-      "     16       5       6      17      1                0          0.79995       3\n",
-      "      5       6       1       7      1                0         0.435414       3\n",
-      "     11       3       4      14      1                0          0.79995       3\n",
-      "     16       5       6      18      1                0          0.79995       3\n",
-      "      5       6       1       8      1                0         0.435414       3\n",
-      "      3       2       1       6      1                0         0.385927       3\n",
-      "      3       2       1       6      1              180          1.32212       2\n",
-      "      3       2       1       6      1              180          1.35888       1\n",
-      "     14       4       5      15      1                0          0.79995       3\n",
-      "      2       3       4      14      1                0         0.435414       3\n",
-      "      1       2       3      11      1                0         0.435414       3\n",
-      "     14       4       5      16      1                0          0.79995       3\n",
-      "      8       1       2      10      1                0          0.79995       3\n",
-      "      2       1       6       5      1                0         0.385927       3\n",
-      "      2       1       6       5      1              180          1.32212       2\n",
-      "      2       1       6       5      1              180          1.35888       1\n",
-      "      4       3       2       9      1                0         0.435414       3\n",
-      "      3       2       1       7      1                0         0.435414       3\n",
-      "      1       2       3      12      1                0         0.435414       3\n",
-      "      3       2       1       8      1                0         0.435414       3\n",
-      "\n",
-      "[ moleculetype ]\n",
-      "; Name\tnrexcl\n",
-      "x1\t3\n",
-      "\n",
-      "[ atoms ]\n",
-      ";num, type, resnum, resname, atomname, cgnr, q, m\n",
-      "     1 C7                      1 ZXQ      C7            1        -0.09710000        12.01078000\n",
-      "     2 C8                      1 ZXQ      C8            2         0.13143000        12.01078000\n",
-      "     3 O1                      1 ZXQ      O1            3        -0.60134000        15.99943000\n",
-      "     4 H13                     1 ZXQ      H13           4         0.04476000         1.00794700\n",
-      "     5 H14                     1 ZXQ      H14           5         0.04476000         1.00794700\n",
-      "     6 H15                     1 ZXQ      H15           6         0.04476000         1.00794700\n",
-      "     7 H16                     1 ZXQ      H16           7         0.01732000         1.00794700\n",
-      "     8 H17                     1 ZXQ      H17           8         0.01732000         1.00794700\n",
-      "     9 H18                     1 ZXQ      H18           9         0.39809000         1.00794700\n",
-      "\n",
-      "[ pairs ]\n",
-      "; ai\taj\tfunct\n",
-      "      8       9      1         0.155888      0.000940843\n",
-      "      4       8      1         0.261388         0.033663\n",
-      "      3       6      1         0.282085         0.120274\n",
-      "      1       9      1         0.195704       0.00242308\n",
-      "      3       4      1         0.282085         0.120274\n",
-      "      5       8      1         0.261388         0.033663\n",
-      "      7       9      1         0.155888      0.000940843\n",
-      "      6       7      1         0.261388         0.033663\n",
-      "      5       7      1         0.261388         0.033663\n",
-      "      6       8      1         0.261388         0.033663\n",
-      "      4       7      1         0.261388         0.033663\n",
-      "      3       5      1         0.282085         0.120274\n",
-      "\n",
-      "[ bonds ]\n",
-      "; ai\taj\tfunc\tr\tk\n",
-      "      1       2 1    0.152190126495 221435.2592902858\n",
-      "      1       4 1    0.1093899492634 309655.084322414\n",
-      "      1       5 1    0.1093899492634 309655.084322414\n",
-      "      1       6 1    0.1093899492634 309655.084322414\n",
-      "      2       3 1    0.1427343958716 276118.8797485491\n",
-      "      2       7 1    0.1093899492634 309655.084322414\n",
-      "      2       8 1    0.1093899492634 309655.084322414\n",
-      "      3       9 1    0.09716763312559 454823.2121721368\n",
-      "\n",
-      "\n",
-      "[ angles ]\n",
-      "; ai\taj\tak\tfunc\tr\tk\n",
-      "      1       2       7 1    116.5475862634 445.2220865092856\n",
-      "      3       2       8 1    116.5475862634 445.2220865092856\n",
-      "      2       1       5 1    116.5475862634 445.2220865092856\n",
-      "      1       2       8 1    116.5475862634 445.2220865092856\n",
-      "      4       1       5 1    115.6030999533 408.161690475075\n",
-      "      2       3       9 1    110.3538806181 544.678275491328\n",
-      "      2       1       6 1    116.5475862634 445.2220865092856\n",
-      "      5       1       6 1    115.6030999533 408.161690475075\n",
-      "      7       2       8 1    115.6030999533 408.161690475075\n",
-      "      1       2       3 1    116.5475862634 445.2220865092856\n",
-      "      3       2       7 1    116.5475862634 445.2220865092856\n",
-      "      4       1       6 1    115.6030999533 408.161690475075\n",
-      "      2       1       4 1    116.5475862634 445.2220865092856\n",
-      "\n",
-      "[ dihedrals ]\n",
-      ";    i      j      k      l   func\n",
-      "      3       2       1       6      1                0         0.466736       3\n",
-      "      3       2       1       6      1                0          1.43615       1\n",
-      "      7       2       3       9      1                0          1.26624       3\n",
-      "      6       1       2       7      1                0          0.79995       3\n",
-      "      5       1       2       8      1                0          0.79995       3\n",
-      "      4       1       2       7      1                0          0.79995       3\n",
-      "      3       2       1       4      1                0         0.466736       3\n",
-      "      3       2       1       4      1                0          1.43615       1\n",
-      "      3       2       1       5      1                0         0.466736       3\n",
-      "      3       2       1       5      1                0          1.43615       1\n",
-      "      6       1       2       8      1                0          0.79995       3\n",
-      "      4       1       2       8      1                0          0.79995       3\n",
-      "      8       2       3       9      1                0          1.26624       3\n",
-      "      1       2       3       9      1                0          1.44155       3\n",
-      "      1       2       3       9      1                0          0.57093       1\n",
-      "      5       1       2       7      1                0          0.79995       3\n",
-      "\n",
-      "[ system ]\n",
-      "; name \n",
-      "System name\n",
-      "\n",
-      "[ molecules ]\n",
-      "; Compound\tnmols\n",
-      "x0\t1\n",
-      "x1\t1\n",
-      "\n",
-      "Generated by Interchange\n",
-      "27\n",
-      "    1ZBE     C1    1   1.25320000   1.08130000   1.03860000\n",
-      "    1ZBE     C2    2   1.23480000   1.03390000   1.18250000\n",
-      "    1ZBE     C3    3   1.08800000   1.03650000   1.22440000\n",
-      "    1ZBE     C4    4   1.02560000   1.17390000   1.20200000\n",
-      "    1ZBE     C5    5   1.04390000   1.22130000   1.05810000\n",
-      "    1ZBE     C6    6   1.19070000   1.21870000   1.01620000\n",
-      "    1ZBE     H1    7   1.20720000   1.00880000   0.97030000\n",
-      "    1ZBE     H2    8   1.36000000   1.08490000   1.01430000\n",
-      "    1ZBE     H3    9   1.27450000   0.93240000   1.19320000\n",
-      "    1ZBE     H4   10   1.29300000   1.09820000   1.24970000\n",
-      "    1ZBE     H5   11   1.03240000   0.96140000   1.16690000\n",
-      "    1ZBE     H6   12   1.07930000   1.00880000   1.33000000\n",
-      "    1ZBE     H7   13   0.91880000   1.17030000   1.22640000\n",
-      "    1ZBE     H8   14   1.07160000   1.24640000   1.27040000\n",
-      "    1ZBE     H9   15   0.98580000   1.15710000   0.99090000\n",
-      "    1ZBE    H10   16   1.00430000   1.32300000   1.04740000\n",
-      "    1ZBE    H11   17   1.19940000   1.24650000   0.91050000\n",
-      "    1ZBE    H12   18   1.24630000   1.29380000   1.07370000\n",
-      "    1ZXQ     C7   19   1.01720000   3.12760000   2.78660000\n",
-      "    1ZXQ     C8   20   0.87460000   3.09610000   2.74710000\n",
-      "    1ZXQ     O1   21   0.87520000   3.02640000   2.62340000\n",
-      "    1ZXQ    H13   22   1.02040000   3.18150000   2.88180000\n",
-      "    1ZXQ    H14   23   1.07580000   3.03560000   2.79620000\n",
-      "    1ZXQ    H15   24   1.06610000   3.18860000   2.70990000\n",
-      "    1ZXQ    H16   25   0.81690000   3.18830000   2.73520000\n",
-      "    1ZXQ    H17   26   0.82670000   3.03330000   2.82280000\n",
-      "    1ZXQ    H18   27   0.78260000   3.00790000   2.60110000\n",
-      "  3.1885000  3.1885000  3.1885000\n"
-     ]
-    },
     {
      "data": {
       "text/plain": [
-       "{'Bond': 0.0741 <Unit('kilocalories_per_mole')>,\n",
-       " 'Angle': 37.2023 <Unit('kilocalories_per_mole')>,\n",
-       " 'Torsion': 4.6778 <Unit('kilocalories_per_mole')>,\n",
-       " 'vdW': 9.7231976 <Unit('kilojoule_per_mole')>,\n",
-       " 'Electrostatics': -15.217207999999996 <Unit('kilojoule_per_mole')>}"
+       "{'Bond': 0.0559 <Unit('kilocalories_per_mole')>,\n",
+       " 'Angle': 1.7069 <Unit('kilocalories_per_mole')>,\n",
+       " 'Torsion': 6.1139 <Unit('kilocalories_per_mole')>,\n",
+       " 'vdW': 9.7273816 <Unit('kilojoule_per_mole')>,\n",
+       " 'Electrostatics': -15.216371200000001 <Unit('kilojoule_per_mole')>}"
       ]
      },
      "execution_count": 9,
@@ -907,10 +271,6 @@
     }
    ],
    "source": [
-    "!cat system.inpcrd\n",
-    "!cat system.prmtop\n",
-    "!cat system.top\n",
-    "!cat system.gro\n",
     "amber_energies = get_amber_energies(interchange)\n",
     "amber_energies.energies"
    ]
@@ -942,19 +302,7 @@
    "cell_type": "code",
    "execution_count": 11,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "{'Angle': <Quantity(37.213514, 'kilocalorie_per_mole')>,\n",
-      " 'Bond': <Quantity(0.10526246, 'kilocalorie_per_mole')>,\n",
-      " 'Electrostatics': <Quantity(-3.638788, 'kilocalorie_per_mole')>,\n",
-      " 'Torsion': <Quantity(4.675725, 'kilocalorie_per_mole')>,\n",
-      " 'vdW': <Quantity(2.30186395, 'kilocalorie_per_mole')>}\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "if find_executable(\"lmp_serial\"):\n",
     "    pprint(get_lammps_energies(interchange).energies)"
@@ -964,7 +312,20 @@
    "cell_type": "code",
    "execution_count": 12,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{'Angle': <Quantity(7.14183521, 'kilojoule / mole')>,\n",
+      " 'Bond': <Quantity(0.233869165, 'kilojoule / mole')>,\n",
+      " 'Electrostatics': <Quantity(-15.2353158, 'kilojoule / mole')>,\n",
+      " 'RBTorsion': <Quantity(0.0, 'kilojoule / mole')>,\n",
+      " 'Torsion': <Quantity(25.5805855, 'kilojoule / mole')>,\n",
+      " 'vdW': <Quantity(9.66705048, 'kilojoule / mole')>}\n"
+     ]
+    }
+   ],
    "source": [
     "if find_executable(\"gmx\"):\n",
     "    pprint(get_gromacs_energies(interchange).energies)"
@@ -1006,44 +367,48 @@
        "      <th>Bond</th>\n",
        "      <th>Angle</th>\n",
        "      <th>Torsion</th>\n",
-       "      <th>vdW</th>\n",
        "      <th>Electrostatics</th>\n",
+       "      <th>vdW</th>\n",
+       "      <th>RBTorsion</th>\n",
        "    </tr>\n",
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
        "      <th>OpenMM</th>\n",
-       "      <td>0.295288</td>\n",
-       "      <td>155.701294</td>\n",
-       "      <td>19.563229</td>\n",
-       "      <td>9.658623</td>\n",
-       "      <td>-15.220786</td>\n",
+       "      <td>0.233879</td>\n",
+       "      <td>7.141818</td>\n",
+       "      <td>25.580587</td>\n",
+       "      <td>-15.215644</td>\n",
+       "      <td>9.658657</td>\n",
+       "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>Amber</th>\n",
-       "      <td>0.310034</td>\n",
-       "      <td>155.654423</td>\n",
-       "      <td>19.571915</td>\n",
-       "      <td>9.723198</td>\n",
-       "      <td>-15.217208</td>\n",
+       "      <td>0.233886</td>\n",
+       "      <td>7.141670</td>\n",
+       "      <td>25.580558</td>\n",
+       "      <td>-15.216371</td>\n",
+       "      <td>9.727382</td>\n",
+       "      <td>NaN</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <th>LAMMPS</th>\n",
-       "      <td>0.440418</td>\n",
-       "      <td>155.701343</td>\n",
-       "      <td>19.563233</td>\n",
-       "      <td>9.630999</td>\n",
-       "      <td>-15.224689</td>\n",
+       "      <th>GROMACS</th>\n",
+       "      <td>0.233869</td>\n",
+       "      <td>7.141835</td>\n",
+       "      <td>25.580585</td>\n",
+       "      <td>-15.235316</td>\n",
+       "      <td>9.667050</td>\n",
+       "      <td>0.0</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
        "</div>"
       ],
       "text/plain": [
-       "            Bond       Angle    Torsion       vdW  Electrostatics\n",
-       "OpenMM  0.295288  155.701294  19.563229  9.658623      -15.220786\n",
-       "Amber   0.310034  155.654423  19.571915  9.723198      -15.217208\n",
-       "LAMMPS  0.440418  155.701343  19.563233  9.630999      -15.224689"
+       "             Bond     Angle    Torsion  Electrostatics       vdW  RBTorsion\n",
+       "OpenMM   0.233879  7.141818  25.580587      -15.215644  9.658657        NaN\n",
+       "Amber    0.233886  7.141670  25.580558      -15.216371  9.727382        NaN\n",
+       "GROMACS  0.233869  7.141835  25.580585      -15.235316  9.667050        0.0"
       ]
      },
      "execution_count": 13,
@@ -1056,6 +421,13 @@
     "\n",
     "get_summary_data(interchange)"
    ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
   }
  ],
  "metadata": {
diff --git a/openff/toolkit/utils/ambertools_wrapper.py b/openff/toolkit/utils/ambertools_wrapper.py
index e4f12e10..2a3ee1e5 100644
--- a/openff/toolkit/utils/ambertools_wrapper.py
+++ b/openff/toolkit/utils/ambertools_wrapper.py
@@ -20,7 +20,6 @@ from openff.toolkit.utils.exceptions import (
     ChargeMethodUnavailableError,
     ToolkitUnavailableException,
 )
-from openff.toolkit.utils.utils import temporary_cd
 
 if TYPE_CHECKING:
     from openff.toolkit.topology.molecule import Molecule
@@ -204,76 +203,77 @@ class AmberToolsToolkitWrapper(base_wrapper.ToolkitWrapper):
 
         # Compute charges
         with tempfile.TemporaryDirectory() as tmpdir:
-            with temporary_cd(tmpdir):
-                net_charge = mol_copy.total_charge.m_as(unit.elementary_charge)
-                # Write out molecule in SDF format
-                # TODO: How should we handle multiple conformers?
-                self._rdkit_toolkit_wrapper.to_file(
-                    mol_copy, "molecule.sdf", file_format="sdf"
-                )
-                # Compute desired charges
-                # TODO: Add error handling if antechamber chokes
-                short_charge_method = charge_method["antechamber_keyword"]
-                subprocess.check_output(
-                    [
-                        "antechamber",
-                        "-i",
-                        "molecule.sdf",
-                        "-fi",
-                        "sdf",
-                        "-o",
-                        "charged.mol2",
-                        "-fo",
-                        "mol2",
-                        "-pf",
-                        "yes",
-                        "-dr",
-                        "n",
-                        "-c",
-                        str(short_charge_method),
-                        "-nc",
-                        str(net_charge),
-                    ]
-                )
-                # Write out just charges
-                subprocess.check_output(
-                    [
-                        "antechamber",
-                        "-dr",
-                        "n",
-                        "-i",
-                        "charged.mol2",
-                        "-fi",
-                        "mol2",
-                        "-o",
-                        "charges2.mol2",
-                        "-fo",
-                        "mol2",
-                        "-c",
-                        "wc",
-                        "-cf",
-                        "charges.txt",
-                        "-pf",
-                        "yes",
-                    ]
-                )
-                # Check to ensure charges were actually produced
-                if not os.path.exists("charges.txt"):
-                    # TODO: copy files into local directory to aid debugging?
-                    raise ChargeCalculationError(
-                        "Antechamber/sqm partial charge calculation failed on "
-                        "molecule {} (SMILES {})".format(
-                            molecule.name, molecule.to_smiles()
-                        )
+            net_charge = mol_copy.total_charge.m_as(unit.elementary_charge)
+            # Write out molecule in SDF format
+            # TODO: How should we handle multiple conformers?
+            self._rdkit_toolkit_wrapper.to_file(
+                mol_copy, f"{tmpdir}/molecule.sdf", file_format="sdf"
+            )
+            # Compute desired charges
+            # TODO: Add error handling if antechamber chokes
+            short_charge_method = charge_method["antechamber_keyword"]
+            subprocess.check_output(
+                [
+                    "antechamber",
+                    "-i",
+                    "molecule.sdf",
+                    "-fi",
+                    "sdf",
+                    "-o",
+                    "charged.mol2",
+                    "-fo",
+                    "mol2",
+                    "-pf",
+                    "yes",
+                    "-dr",
+                    "n",
+                    "-c",
+                    str(short_charge_method),
+                    "-nc",
+                    str(net_charge),
+                ],
+                cwd=tmpdir,
+            )
+            # Write out just charges
+            subprocess.check_output(
+                [
+                    "antechamber",
+                    "-dr",
+                    "n",
+                    "-i",
+                    "charged.mol2",
+                    "-fi",
+                    "mol2",
+                    "-o",
+                    "charges2.mol2",
+                    "-fo",
+                    "mol2",
+                    "-c",
+                    "wc",
+                    "-cf",
+                    "charges.txt",
+                    "-pf",
+                    "yes",
+                ],
+                cwd=tmpdir,
+            )
+            # Check to ensure charges were actually produced
+            if not os.path.exists(f"{tmpdir}/charges.txt"):
+                # TODO: copy files into local directory to aid debugging?
+                raise ChargeCalculationError(
+                    "Antechamber/sqm partial charge calculation failed on "
+                    "molecule {} (SMILES {})".format(
+                        molecule.name, molecule.to_smiles()
                     )
-                # Read the charges
-                with open("charges.txt", "r") as infile:
-                    contents = infile.read()
-                text_charges = contents.split()
-                charges = np.zeros([molecule.n_atoms], np.float64)
-                for index, token in enumerate(text_charges):
-                    charges[index] = float(token)
-                # TODO: Ensure that the atoms in charged.mol2 are in the same order as in molecule.sdf
+                )
+            # Read the charges
+            with open(f"{tmpdir}/charges.txt", "r") as infile:
+                contents = infile.read()
+            text_charges = contents.split()
+            charges = np.zeros([molecule.n_atoms], np.float64)
+            for index, token in enumerate(text_charges):
+                charges[index] = float(token)
+            # TODO: Ensure that the atoms in charged.mol2 are in the same order as in molecule.sdf
         charges = Quantity(charges, unit.elementary_charge)
         molecule.partial_charges = charges
 
@@ -470,51 +470,49 @@ class AmberToolsToolkitWrapper(base_wrapper.ToolkitWrapper):
 
         for conformer in [*temp_mol.conformers]:
             with tempfile.TemporaryDirectory() as tmpdir:
-                with temporary_cd(tmpdir):
-                    net_charge = temp_mol.total_charge
-                    # Write out molecule in SDF format
-                    temp_mol._conformers = [conformer]
-                    self._rdkit_toolkit_wrapper.to_file(
-                        temp_mol, "molecule.sdf", file_format="sdf"
-                    )
-                    # Prepare sqm.in file as if we were going to run charge calc
-                    # TODO: Add error handling if antechamber chokes
-                    subprocess.check_output(
-                        [
-                            "antechamber",
-                            "-i",
-                            "molecule.sdf",
-                            "-fi",
-                            "sdf",
-                            "-o",
-                            "sqm.in",
-                            "-fo",
-                            "sqmcrt",
-                            "-pf",
-                            "yes",
-                            "-c",
-                            ac_charge_keyword,
-                            "-nc",
-                            str(net_charge),
-                        ]
-                    )
-                    # Modify sqm.in to request bond order calculation
-                    self._modify_sqm_in_to_request_bond_orders("sqm.in")
-                    # Run sqm to get bond orders
-                    subprocess.check_output(
-                        ["sqm", "-i", "sqm.in", "-o", "sqm.out", "-O"]
-                    )
-                    # Ensure that antechamber/sqm did not change the indexing by checking against
-                    # an ordered list of element symbols for this molecule
-                    expected_elements = [atom.symbol for atom in molecule.atoms]
-                    conformer_bond_orders = (
-                        self._get_fractional_bond_orders_from_sqm_out(
-                            "sqm.out", validate_elements=expected_elements
-                        )
-                    )
+                net_charge = temp_mol.total_charge
+                # Write out molecule in SDF format
+                temp_mol._conformers = [conformer]
+                self._rdkit_toolkit_wrapper.to_file(
+                    temp_mol, f"{tmpdir}/molecule.sdf", file_format="sdf"
+                )
+                # Prepare sqm.in file as if we were going to run charge calc
+                # TODO: Add error handling if antechamber chokes
+                subprocess.check_output(
+                    [
+                        "antechamber",
+                        "-i",
+                        "molecule.sdf",
+                        "-fi",
+                        "sdf",
+                        "-o",
+                        "sqm.in",
+                        "-fo",
+                        "sqmcrt",
+                        "-pf",
+                        "yes",
+                        "-c",
+                        ac_charge_keyword,
+                        "-nc",
+                        str(net_charge),
+                    ],
+                    cwd=tmpdir,
+                )
+                # Modify sqm.in to request bond order calculation
+                self._modify_sqm_in_to_request_bond_orders(f"{tmpdir}/sqm.in")
+                # Run sqm to get bond orders
+                subprocess.check_output(
+                    ["sqm", "-i", "sqm.in", "-o", "sqm.out", "-O"], cwd=tmpdir
+                )
+                # Ensure that antechamber/sqm did not change the indexing by checking against
+                # an ordered list of element symbols for this molecule
+                expected_elements = [atom.symbol for atom in molecule.atoms]
+                conformer_bond_orders = self._get_fractional_bond_orders_from_sqm_out(
+                    f"{tmpdir}/sqm.out", validate_elements=expected_elements
+                )
 
-                    for bond_indices, value in conformer_bond_orders.items():
-                        bond_orders[bond_indices].append(value)
+                for bond_indices, value in conformer_bond_orders.items():
+                    bond_orders[bond_indices].append(value)
 
         # Note that sqm calculate WBOs for ALL PAIRS of atoms, not just those that have
         # bonds defined in the original molecule. So here we iterate over the bonds in


Test patch:
diff --git a/openff/toolkit/tests/test_molecule.py b/openff/toolkit/tests/test_molecule.py
index 6b9265b2..860cbc68 100644
--- a/openff/toolkit/tests/test_molecule.py
+++ b/openff/toolkit/tests/test_molecule.py
@@ -56,7 +56,6 @@ from openff.toolkit.topology.molecule import (
 )
 from openff.toolkit.utils import get_data_file_path
 from openff.toolkit.utils.exceptions import (
-    ConformerGenerationError,
     IncompatibleShapeError,
     IncompatibleTypeError,
     IncompatibleUnitError,
@@ -3664,22 +3663,6 @@ class TestMolecule:
                 continue
             assert bond.is_in_ring()
 
-    @requires_rdkit
-    @requires_openeye
-    def test_conformer_generation_failure(self):
-        # This test seems possibly redundant, is it needed?
-        molecule = Molecule.from_smiles("F[U](F)(F)(F)(F)F")
-
-        with pytest.raises(ConformerGenerationError, match="Omega conf.*fail"):
-            molecule.generate_conformers(
-                n_conformers=1, toolkit_registry=OpenEyeToolkitWrapper()
-            )
-
-        with pytest.raises(ConformerGenerationError, match="RDKit conf.*fail"):
-            molecule.generate_conformers(
-                n_conformers=1, toolkit_registry=RDKitToolkitWrapper()
-            )
-
     def test_deepcopy_not_shallow(self):
         """
         Check that deep copies don't re-use any mutable data structures
diff --git a/openff/toolkit/tests/test_toolkits.py b/openff/toolkit/tests/test_toolkits.py
index e7f66738..de421fba 100644
--- a/openff/toolkit/tests/test_toolkits.py
+++ b/openff/toolkit/tests/test_toolkits.py
@@ -1329,7 +1329,7 @@ class TestOpenEyeToolkitWrapper:
     def test_generate_conformers_failure(self):
         toolkit = OpenEyeToolkitWrapper()
 
-        molecule = Molecule.from_smiles("F[U](F)(F)(F)(F)F")
+        molecule = Molecule.from_smiles("C(C2)(C3)1CC23C1")
 
         with pytest.raises(ConformerGenerationError, match="Omega conf.*fail"):
             toolkit.generate_conformers(molecule, n_conformers=1)
@@ -2856,7 +2856,7 @@ class TestRDKitToolkitWrapper:
     def test_generate_conformers_failure(self):
         toolkit = RDKitToolkitWrapper()
 
-        molecule = Molecule.from_smiles("F[U](F)(F)(F)(F)F")
+        molecule = Molecule.from_smiles("C(C2)(C3)1CC23C1")
 
         with pytest.raises(ConformerGenerationError, match="RDKit conf.*fail"):
             toolkit.generate_conformers(molecule, n_conformers=1)
@@ -3405,6 +3405,27 @@ class TestAmberToolsToolkitWrapper:
         charge_sum = np.sum(molecule.partial_charges)
         assert 1e-10 > abs(charge_sum.m_as(unit.elementary_charge) + 1)
 
+    def test_assign_partial_charges_am1bcc_thread_safe(self):
+        """
+        Test that AmberToolsToolkitWrapper assign_partial_charges() is thread-safe
+        See https://github.com/openforcefield/openff-toolkit/issues/1642
+        """
+        from concurrent.futures import ThreadPoolExecutor
+
+        def charge_func(run_num=-1):
+            from openff.toolkit import AmberToolsToolkitWrapper, Molecule
+
+            AmberToolsToolkitWrapper().assign_partial_charges(
+                Molecule.from_smiles("CCO")
+            )
+
+        futures = list()
+        with ThreadPoolExecutor() as executor:
+            for i in range(5):
+                futures.append(executor.submit(charge_func, i))
+        for future in futures:
+            future.result()
+
     def test_assign_partial_charges_am1bcc_wrong_n_confs(self):
         """
         Test AmberToolsToolkitWrapper assign_partial_charges() with am1bcc when requesting to use an incorrect number
@@ -3817,6 +3838,27 @@ class TestAmberToolsToolkitWrapper:
                 bond_order_model="not a real charge model",
             )
 
+    def test_assign_fractional_bond_orders_thread_safe(self):
+        """
+        Test that AmberToolsToolkitWrapper assign_fractional_bond_orders() is thread-safe
+        See https://github.com/openforcefield/openff-toolkit/issues/1642
+        """
+        from concurrent.futures import ThreadPoolExecutor
+
+        def charge_func(run_num=-1):
+            from openff.toolkit import AmberToolsToolkitWrapper, Molecule
+
+            AmberToolsToolkitWrapper().assign_fractional_bond_orders(
+                Molecule.from_smiles("CCO")
+            )
+
+        futures = list()
+        with ThreadPoolExecutor() as executor:
+            for i in range(5):
+                futures.append(executor.submit(charge_func, i))
+        for future in futures:
+            future.result()
+
     @requires_openeye
     def test_assign_fractional_bond_orders_openeye_installed(self):
         """Test that assign_fractional_bond_orders produces the same result