openff-interchange icon indicating copy to clipboard operation
openff-interchange copied to clipboard

NADP gives some inconsistent energies across engines.

Open Yoshanuikabundi opened this issue 1 year ago • 4 comments

Description

NADP (SMILES "c1cc(c[n+](c1)[C@H]2[C@@H]([C@@H]([C@H](O2)CO[P@@](=O)([O-])O[P@](=O)(O)OC[C@@H]3[C@H]([C@H]([C@@H](O3)n4cnc5c4ncnc5N)OP(=O)(O)O)O)O)O)C(=O)N" according to the PDB) has vdW energies that only agree to 2 significant figures between Amber and other engines, and bond energies that also differ substantially between LAMMPS and the other engines. It's not necessarily a huge deal, but it would be nice to be able to at least explain the discrepancies in the upcoming workshops, and Jeff mentioned that you were always on the lookout for fun new test cases!

Reproduction

from openff.toolkit import Molecule, ForceField, Topology
from openff.interchange.drivers import get_summary_data
from openff.units import unit

sage = ForceField('openff-2.1.0.offxml')
# SMILES from https://www.rcsb.org/ligand/NAP
nadp = Molecule.from_smiles(r"c1cc(c[n+](c1)[C@H]2[C@@H]([C@@H]([C@H](O2)CO[P@@](=O)([O-])O[P@](=O)(O)OC[C@@H]3[C@H]([C@H]([C@@H](O3)n4cnc5c4ncnc5N)OP(=O)(O)O)O)O)O)C(=O)N")
nadp.generate_conformers(n_conformers=1)

nadp_interchange = sage.create_interchange(nadp.to_topology())
nadp_interchange.box = [[4,0,0],[0,4,0],[0,0,4]] * unit.nanometer

get_summary_data(nadp_interchange)

Output

nadp_energies

(Side question - what is RBTorsion and is zero/nan ok?)

Software versions

  • Which operating system and version are you using? Latest Arch Linux
  • How did you install Interchange? Micromamba
  • What is the output of running conda list?
micromamba list
List of packages in environment: "/home/joshmitchell/Documents/openff/2024_workshops/.soap/examples"

Name Version Build Channel
──────────────────────────────────────────────────────────────────────────────────────────── _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 2_gnu conda-forge absl-py 2.1.0 pyhd8ed1ab_0 conda-forge aiohttp 3.9.1 py310h2372a71_0 conda-forge aiosignal 1.3.1 pyhd8ed1ab_0 conda-forge ambertools 22.0 py310h206695f_3 conda-forge amqp 5.2.0 pyhd8ed1ab_1 conda-forge anyio 3.7.1 pyhd8ed1ab_0 conda-forge argcomplete 3.2.2 pyhd8ed1ab_0 conda-forge argon2-cffi 23.1.0 pyhd8ed1ab_0 conda-forge argon2-cffi-bindings 21.2.0 py310h2372a71_4 conda-forge arpack 3.7.0 hdefa2d7_2 conda-forge arrow 1.3.0 pyhd8ed1ab_0 conda-forge arrow-cpp 11.0.0 ha770c72_5_cpu conda-forge ase 3.22.1 pyhd8ed1ab_1 conda-forge asttokens 2.4.1 pyhd8ed1ab_0 conda-forge astunparse 1.6.3 pyhd8ed1ab_0 conda-forge async-lru 2.0.4 pyhd8ed1ab_0 conda-forge async-timeout 4.0.3 pyhd8ed1ab_0 conda-forge attrs 23.2.0 pyh71513ae_0 conda-forge aws-c-auth 0.6.24 h84a1944_5 conda-forge aws-c-cal 0.5.20 hc60faf5_6 conda-forge aws-c-common 0.8.11 h0b41bf4_0 conda-forge aws-c-compression 0.2.16 h034cb4b_3 conda-forge aws-c-event-stream 0.2.18 h75388cd_6 conda-forge aws-c-http 0.7.4 hf084cc8_2 conda-forge aws-c-io 0.13.17 h10df833_2 conda-forge aws-c-mqtt 0.8.6 hc41645a_6 conda-forge aws-c-s3 0.2.4 h1b8f470_3 conda-forge aws-c-sdkutils 0.1.7 h034cb4b_3 conda-forge aws-checksums 0.1.14 h034cb4b_3 conda-forge aws-crt-cpp 0.19.7 h0073717_7 conda-forge aws-sdk-cpp 1.10.57 h4707e7a_4 conda-forge babel 2.14.0 pyhd8ed1ab_0 conda-forge backports.zoneinfo 0.2.1 py310hff52083_8 conda-forge basis_set_exchange 0.9.1 pyhd8ed1ab_0 conda-forge beautifulsoup4 4.12.3 pyha770c72_0 conda-forge billiard 4.2.0 py310h2372a71_0 conda-forge binutils_impl_linux-64 2.40 hf600244_0 conda-forge binutils_linux-64 2.40 hbdbef99_2 conda-forge black 24.1.1 py310hff52083_0 conda-forge bleach 6.1.0 pyhd8ed1ab_0 conda-forge blinker 1.7.0 pyhd8ed1ab_0 conda-forge blosc 1.21.5 h0f2a231_0 conda-forge boost 1.74.0 py310h7c3ba0c_5 conda-forge boost-cpp 1.74.0 h75c5d50_8 conda-forge brotli 1.0.9 h166bdaf_9 conda-forge brotli-bin 1.0.9 h166bdaf_9 conda-forge brotli-python 1.0.9 py310hd8f1fbe_9 conda-forge bson 0.5.9 py_0 conda-forge bzip2 1.0.8 hd590300_5 conda-forge c-ares 1.26.0 hd590300_0 conda-forge ca-certificates 2024.2.2 hbcca054_0 conda-forge cached-property 1.5.2 hd8ed1ab_1 conda-forge cached_property 1.5.2 pyha770c72_1 conda-forge cachetools 5.3.2 pyhd8ed1ab_0 conda-forge cairo 1.16.0 ha61ee94_1014 conda-forge celery 5.3.5 pyhd8ed1ab_0 conda-forge certifi 2024.2.2 pyhd8ed1ab_0 conda-forge cffi 1.16.0 py310h2fee648_0 conda-forge cftime 1.6.3 py310h1f7b6fc_0 conda-forge chardet 5.2.0 py310hff52083_1 conda-forge charset-normalizer 3.3.2 pyhd8ed1ab_0 conda-forge chemper 1.0.1 pyhd8ed1ab_0 conda-forge click 8.1.7 unix_pyh707e725_0 conda-forge click-didyoumean 0.3.0 pyhd8ed1ab_0 conda-forge click-option-group 0.5.6 pyhd8ed1ab_0 conda-forge click-plugins 1.1.1 py_0 conda-forge click-repl 0.3.0 pyhd8ed1ab_0 conda-forge cloudpickle 3.0.0 pyhd8ed1ab_0 conda-forge cmake 3.28.2 hcfe8598_0 conda-forge colorama 0.4.6 pyhd8ed1ab_0 conda-forge comm 0.2.1 pyhd8ed1ab_0 conda-forge contourpy 1.2.0 py310hd41b1e2_0 conda-forge cryptography 42.0.2 py310hb8475ec_0 conda-forge cudatoolkit 11.8.0 h4ba93d1_13 conda-forge curl 8.5.0 hca28451_0 conda-forge cycler 0.12.1 pyhd8ed1ab_0 conda-forge cython 3.0.8 py310hc6cd4ac_0 conda-forge cytoolz 0.12.3 py310h2372a71_0 conda-forge dask-core 2024.1.1 pyhd8ed1ab_0 conda-forge dask-jobqueue 0.8.2 pyhd8ed1ab_0 conda-forge debugpy 1.8.0 py310hc6cd4ac_1 conda-forge decorator 5.1.1 pyhd8ed1ab_0 conda-forge defusedxml 0.7.1 pyhd8ed1ab_0 conda-forge dgl 1.1.2 py310hbc80768_2 conda-forge distributed 2024.1.1 pyhd8ed1ab_0 conda-forge dockstring 0.3.2 pyhd8ed1ab_0 conda-forge entrypoints 0.4 pyhd8ed1ab_0 conda-forge exceptiongroup 1.2.0 pyhd8ed1ab_2 conda-forge executing 2.0.1 pyhd8ed1ab_0 conda-forge expat 2.5.0 hcb278e6_1 conda-forge f90wrap 0.2.13 py310h03ae0af_2 conda-forge fastapi 0.86.0 pyhd8ed1ab_0 conda-forge fftw 3.3.10 nompi_hc118613_108 conda-forge filelock 3.13.1 pyhd8ed1ab_0 conda-forge flask 3.0.2 pyhd8ed1ab_0 conda-forge flatbuffers 22.12.06 hcb278e6_2 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 h77eed37_1 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.47.2 py310h2372a71_0 conda-forge forcebalance 1.9.6 py310hcb52e73_1 conda-forge fqdn 1.5.1 pyhd8ed1ab_0 conda-forge freetype 2.12.1 h267a509_2 conda-forge freetype-py 2.3.0 pyhd8ed1ab_0 conda-forge frozenlist 1.4.1 py310h2372a71_0 conda-forge fsspec 2024.2.0 pyhca7485f_0 conda-forge future 0.18.3 pyhd8ed1ab_0 conda-forge gast 0.4.0 pyh9f0ad1d_0 conda-forge gawk 5.3.0 ha916aea_0 conda-forge gcc_impl_linux-64 11.4.0 h7aa1c59_5 conda-forge gcc_linux-64 11.4.0 hfd045f2_2 conda-forge geometric 1.0 pyhd8ed1ab_1 conda-forge gettext 0.21.1 h27087fc_0 conda-forge gflags 2.2.2 he1b5a44_1004 conda-forge gfortran_impl_linux-64 11.4.0 h86428dc_5 conda-forge gfortran_linux-64 11.4.0 h3047280_2 conda-forge giflib 5.2.1 h0b41bf4_3 conda-forge gitdb 4.0.11 pyhd8ed1ab_0 conda-forge gitpython 3.1.41 pyhd8ed1ab_0 conda-forge glog 0.6.0 h6f12383_0 conda-forge gmp 6.3.0 h59595ed_0 conda-forge gmpy2 2.1.2 py310h3ec546c_1 conda-forge google-auth 2.27.0 pyhca7485f_0 conda-forge google-auth-oauthlib 0.4.6 pyhd8ed1ab_0 conda-forge google-pasta 0.2.0 pyh8c360ce_0 conda-forge greenlet 3.0.3 py310hc6cd4ac_0 conda-forge gromacs 2023.1 nompi_h76c6bb2_102 conda-forge grpcio 1.51.1 py310h4a5735c_1 conda-forge gsl 2.7 he838d99_0 conda-forge gxx_impl_linux-64 11.4.0 h7aa1c59_5 conda-forge gxx_linux-64 11.4.0 hfc1ae95_2 conda-forge h11 0.14.0 pyhd8ed1ab_0 conda-forge h2 4.1.0 pyhd8ed1ab_0 conda-forge h5py 3.8.0 nompi_py310h0311031_100 conda-forge hdf4 4.2.15 h9772cbc_5 conda-forge hdf5 1.12.2 nompi_h4df4325_101 conda-forge hpack 4.0.0 pyh9f0ad1d_0 conda-forge httpcore 1.0.2 pyhd8ed1ab_0 conda-forge httpx 0.26.0 pyhd8ed1ab_0 conda-forge hyperframe 6.0.1 pyhd8ed1ab_0 conda-forge icu 70.1 h27087fc_0 conda-forge idna 3.6 pyhd8ed1ab_0 conda-forge importlib-metadata 7.0.1 pyha770c72_0 conda-forge importlib_metadata 7.0.1 hd8ed1ab_0 conda-forge importlib_resources 6.1.1 pyhd8ed1ab_0 conda-forge ipykernel 6.29.1 pyhd33586a_0 conda-forge ipython 8.21.0 pyh707e725_0 conda-forge ipywidgets 8.1.1 pyhd8ed1ab_0 conda-forge isoduration 20.11.0 pyhd8ed1ab_0 conda-forge isort 5.13.2 pyhd8ed1ab_0 conda-forge itsdangerous 2.1.2 pyhd8ed1ab_0 conda-forge jax 0.4.4 pyhd8ed1ab_0 conda-forge jaxlib 0.4.3 cpu_py310hdc47304_1 conda-forge jedi 0.19.1 pyhd8ed1ab_0 conda-forge jinja2 3.1.3 pyhd8ed1ab_0 conda-forge jpeg 9e h0b41bf4_3 conda-forge json5 0.9.14 pyhd8ed1ab_0 conda-forge jsonpointer 2.4 py310hff52083_3 conda-forge jsonschema 4.21.1 pyhd8ed1ab_0 conda-forge jsonschema-specifications 2023.12.1 pyhd8ed1ab_0 conda-forge jsonschema-with-format-nongpl 4.21.1 pyhd8ed1ab_0 conda-forge jupyter-lsp 2.2.2 pyhd8ed1ab_0 conda-forge jupyter_client 8.6.0 pyhd8ed1ab_0 conda-forge jupyter_core 5.7.1 py310hff52083_0 conda-forge jupyter_events 0.9.0 pyhd8ed1ab_0 conda-forge jupyter_server 2.12.5 pyhd8ed1ab_0 conda-forge jupyter_server_terminals 0.5.2 pyhd8ed1ab_0 conda-forge jupyterlab 4.1.0 pyhd8ed1ab_0 conda-forge jupyterlab-lsp 5.0.3 pyhd8ed1ab_0 conda-forge jupyterlab_code_formatter 2.2.1 pyhd8ed1ab_0 conda-forge jupyterlab_pygments 0.3.0 pyhd8ed1ab_1 conda-forge jupyterlab_server 2.25.2 pyhd8ed1ab_0 conda-forge jupyterlab_widgets 3.0.9 pyhd8ed1ab_0 conda-forge keras 2.11.0 pyhd8ed1ab_0 conda-forge keras-preprocessing 1.1.2 pyhd8ed1ab_0 conda-forge kernel-headers_linux-64 2.6.32 he073ed8_16 conda-forge keyutils 1.6.1 h166bdaf_0 conda-forge kim-api 2.3.0 h097297d_1 conda-forge kiwisolver 1.4.5 py310hd41b1e2_1 conda-forge kombu 5.3.3 py310hff52083_0 conda-forge krb5 1.21.2 h659d440_0 conda-forge lammps 2022.06.23 py310hedc66b7_mpich_5 conda-forge lcms2 2.15 hfd0df8a_0 conda-forge ld_impl_linux-64 2.40 h41732ed_0 conda-forge lerc 4.0.0 h27087fc_0 conda-forge libabseil 20220623.0 cxx17_h05df665_6 conda-forge libaec 1.1.2 h59595ed_1 conda-forge libarrow 11.0.0 h2ebd325_5_cpu conda-forge libblas 3.9.0 21_linux64_openblas conda-forge libbrotlicommon 1.0.9 h166bdaf_9 conda-forge libbrotlidec 1.0.9 h166bdaf_9 conda-forge libbrotlienc 1.0.9 h166bdaf_9 conda-forge libcblas 3.9.0 21_linux64_openblas conda-forge libcrc32c 1.1.2 h9c3ff4c_0 conda-forge libcurl 8.5.0 hca28451_0 conda-forge libdeflate 1.17 h0b41bf4_0 conda-forge libedit 3.1.20191231 he28a2e2_2 conda-forge libev 4.33 hd590300_2 conda-forge libevent 2.1.10 h28343ad_4 conda-forge libexpat 2.5.0 hcb278e6_1 conda-forge libffi 3.4.2 h7f98852_5 conda-forge libgcc-devel_linux-64 11.4.0 h922705a_105 conda-forge libgcc-ng 13.2.0 h807b86a_5 conda-forge libgfortran-ng 13.2.0 h69a702a_5 conda-forge libgfortran5 13.2.0 ha4646dd_5 conda-forge libglib 2.78.3 h783c2da_0 conda-forge libgomp 13.2.0 h807b86a_5 conda-forge libgoogle-cloud 2.7.0 h21dfe5b_1 conda-forge libgrpc 1.51.1 h4fad500_1 conda-forge libhwloc 2.9.1 hd6dc26d_0 conda-forge libiconv 1.17 hd590300_2 conda-forge libidn2 2.3.7 hd590300_0 conda-forge liblapack 3.9.0 21_linux64_openblas conda-forge liblapacke 3.9.0 21_linux64_openblas conda-forge libllvm14 14.0.6 hcd5def8_4 conda-forge libnetcdf 4.8.1 nompi_h261ec11_106 conda-forge libnghttp2 1.58.0 h47da74e_1 conda-forge libnsl 2.0.1 hd590300_0 conda-forge libopenblas 0.3.26 pthreads_h413a1c8_0 conda-forge libpng 1.6.42 h2797004_0 conda-forge libprotobuf 3.21.12 hfc55251_2 conda-forge libsanitizer 11.4.0 h4dcbe23_5 conda-forge libsodium 1.0.18 h36c2ea0_1 conda-forge libsqlite 3.44.2 h2797004_0 conda-forge libssh2 1.11.0 h0841786_0 conda-forge libstdcxx-devel_linux-64 11.4.0 h922705a_105 conda-forge libstdcxx-ng 13.2.0 h7e041cc_5 conda-forge libthrift 0.18.0 h5e4af38_0 conda-forge libtiff 4.5.0 h6adf6a1_2 conda-forge libunistring 0.9.10 h7f98852_0 conda-forge libutf8proc 2.8.0 h166bdaf_0 conda-forge libuuid 2.38.1 h0b41bf4_0 conda-forge libuv 1.46.0 hd590300_0 conda-forge libwebp-base 1.3.2 hd590300_0 conda-forge libxcb 1.13 h7f98852_1004 conda-forge libxcrypt 4.4.36 hd590300_1 conda-forge libxml2 2.10.3 hca2bb57_4 conda-forge libxslt 1.1.37 h873f0b0_0 conda-forge libzip 1.10.1 h2629f0a_3 conda-forge libzlib 1.2.13 hd590300_5 conda-forge lightning-utilities 0.10.1 pyhd8ed1ab_0 conda-forge llvmlite 0.42.0 py310h1b8f574_1 conda-forge locket 1.0.0 pyhd8ed1ab_0 conda-forge lxml 4.9.2 py310hbdc0903_0 conda-forge lz4-c 1.9.4 hcb278e6_0 conda-forge lzo 2.10 h516909a_1000 conda-forge make 4.3 hd18ef5c_1 conda-forge markdown 3.5.2 pyhd8ed1ab_0 conda-forge markdown-it-py 3.0.0 pyhd8ed1ab_0 conda-forge markupsafe 2.1.5 py310h2372a71_0 conda-forge matplotlib-base 3.8.2 py310h62c0568_0 conda-forge matplotlib-inline 0.1.6 pyhd8ed1ab_0 conda-forge mctc-lib 0.3.1 h74f4db8_0 conda-forge mda-xdrlib 0.2.0 pyhd8ed1ab_0 conda-forge mdtraj 1.9.9 py310h523e8d7_1 conda-forge mdurl 0.1.2 pyhd8ed1ab_0 conda-forge metis 5.1.1 h59595ed_2 conda-forge mistune 3.0.2 pyhd8ed1ab_0 conda-forge mlip 1.0 hd0d41c4_3 conda-forge mmcif_pdbx 2.0.1 pyhd8ed1ab_0 conda-forge mpc 1.3.1 hfe3b2da_0 conda-forge mpfr 4.2.1 h9458935_0 conda-forge mpi 1.0 mpich conda-forge mpich 4.1.2 h846660c_103 conda-forge mpiplus v0.0.2 pyhd8ed1ab_0 conda-forge mpmath 1.3.0 pyhd8ed1ab_0 conda-forge msgpack-python 1.0.7 py310hd41b1e2_0 conda-forge multidict 6.0.5 py310h2372a71_0 conda-forge munkres 1.1.4 pyh9f0ad1d_0 conda-forge mypy_extensions 1.0.0 pyha770c72_0 conda-forge n2p2 2.1.4 py310hbd49d13_2 conda-forge nbclient 0.8.0 pyhd8ed1ab_0 conda-forge nbconvert 7.15.0 pyhd8ed1ab_0 conda-forge nbconvert-core 7.15.0 pyhd8ed1ab_0 conda-forge nbconvert-pandoc 7.15.0 pyhd8ed1ab_0 conda-forge nbformat 5.9.2 pyhd8ed1ab_0 conda-forge ncurses 6.4 h59595ed_2 conda-forge nest-asyncio 1.6.0 pyhd8ed1ab_0 conda-forge netcdf-fortran 4.6.0 nompi_he1eeb6f_102 conda-forge netcdf4 1.6.2 nompi_py310h55e1e36_100 conda-forge networkx 3.2.1 pyhd8ed1ab_0 conda-forge nglview 3.1.1 pyh15ce09e_0 conda-forge nodeenv 1.8.0 pyhd8ed1ab_0 conda-forge nodejs 12.4.0 he1b5a44_0 conda-forge nomkl 1.0 h5ca1d4c_0 conda-forge nose 1.3.7 py_1006 conda-forge notebook 7.0.7 pyhd8ed1ab_0 conda-forge notebook-shim 0.2.3 pyhd8ed1ab_0 conda-forge numba 0.59.0 py310h7dc5dd1_1 conda-forge numexpr 2.9.0 py310hc2d3c2e_100 conda-forge numpy 1.26.3 py310hb13e2d6_0 conda-forge oauthlib 3.2.2 pyhd8ed1ab_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 py310heaf86c6_5 conda-forge openff-amber-ff-ports 0.0.4 pyhca7485f_0 conda-forge openff-bespokefit 0.2.2 pyhd8ed1ab_0 conda-forge openff-forcefields 2024.01.0 pyhca7485f_0 conda-forge openff-fragmenter-base 0.2.1 pyhd8ed1ab_0 conda-forge openff-interchange 0.3.19 pyhd8ed1ab_0 conda-forge openff-interchange-base 0.3.19 pyhd8ed1ab_0 conda-forge openff-models 0.1.2 pyhca7485f_0 conda-forge openff-nagl 0.3.3 pyhd8ed1ab_0 conda-forge openff-nagl-base 0.3.3 pyhd8ed1ab_0 conda-forge openff-nagl-models 0.1.0 pyhd8ed1ab_0 conda-forge openff-qcsubmit 0.50.2 pyhd8ed1ab_0 conda-forge openff-toolkit 0.15.2 pyhd8ed1ab_0 conda-forge openff-toolkit-base 0.15.2 pyhd8ed1ab_0 conda-forge openff-toolkit-examples 0.15.2 hd8ed1ab_0 conda-forge openff-units 0.2.1 pyh1a96a4e_0 conda-forge openff-utilities 0.1.12 pyhd8ed1ab_0 conda-forge openjpeg 2.5.0 hfec8fc6_2 conda-forge openmm 8.1.1 py310h43b6314_1 conda-forge openmmforcefields 0.12.0 pyhd8ed1ab_0 conda-forge openmmtools 0.23.1 pyhd8ed1ab_0 conda-forge openssl 3.2.1 hd590300_0 conda-forge opt_einsum 3.3.0 pyhc1e730c_2 conda-forge orc 1.8.2 hfdbbad2_2 conda-forge overrides 7.7.0 pyhd8ed1ab_0 conda-forge packaging 23.2 pyhd8ed1ab_0 conda-forge packmol 20.010 h86c2bf4_0 conda-forge pandas 2.2.0 py310hcc13569_0 conda-forge pandoc 3.1.3 h32600fe_0 conda-forge pandocfilters 1.5.0 pyhd8ed1ab_0 conda-forge panedr 0.8.0 pyhd8ed1ab_0 conda-forge parmed 3.4.4 py310heca2aa9_0 conda-forge parquet-cpp 1.5.1 2 conda-forge parso 0.8.3 pyhd8ed1ab_0 conda-forge partd 1.4.1 pyhd8ed1ab_0 conda-forge pathspec 0.12.1 pyhd8ed1ab_0 conda-forge pcre2 10.42 hcad00b1_0 conda-forge pdb2pqr 3.6.1 pyhd8ed1ab_0 conda-forge pdbfixer 1.9 pyh1a96a4e_0 conda-forge perl 5.32.1 7_hd590300_perl5 conda-forge pexpect 4.9.0 pyhd8ed1ab_0 conda-forge pickleshare 0.7.5 py_1003 conda-forge pillow 9.4.0 py310h023d228_1 conda-forge pint 0.21 pyhd8ed1ab_0 conda-forge pip 24.0 pyhd8ed1ab_0 conda-forge pixman 0.43.2 h59595ed_0 conda-forge pkg-config 0.29.2 h36c2ea0_1008 conda-forge pkgutil-resolve-name 1.3.10 pyhd8ed1ab_1 conda-forge platformdirs 4.2.0 pyhd8ed1ab_0 conda-forge plumed 2.9.0 nompi_h752ec8b_100 conda-forge prometheus_client 0.19.0 pyhd8ed1ab_0 conda-forge prompt-toolkit 3.0.42 pyha770c72_0 conda-forge prompt_toolkit 3.0.42 hd8ed1ab_0 conda-forge propka 3.5.1 pyhc1e730c_1 conda-forge protobuf 4.21.12 py310heca2aa9_0 conda-forge psutil 5.9.8 py310h2372a71_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 pyarrow 11.0.0 py310h633f555_5_cpu conda-forge pyasn1 0.5.1 pyhd8ed1ab_0 conda-forge pyasn1-modules 0.3.0 pyhd8ed1ab_0 conda-forge pycairo 1.25.0 py310hda9f760_1 conda-forge pycparser 2.21 pyhd8ed1ab_0 conda-forge pydantic 1.10.13 py310h2372a71_1 conda-forge pyedr 0.8.0 pyhd8ed1ab_0 conda-forge pygments 2.17.2 pyhd8ed1ab_0 conda-forge pyjwt 2.8.0 pyhd8ed1ab_1 conda-forge pymbar 3.1.1 py310hde88566_2 conda-forge pyopenssl 24.0.0 pyhd8ed1ab_0 conda-forge pyparsing 3.1.1 pyhd8ed1ab_0 conda-forge pyright 1.1.350 py310h191c686_0 conda-forge pysocks 1.7.1 pyha2e5f31_6 conda-forge pytables 3.7.0 py310hb60b9b2_3 conda-forge python 3.10.13 hd12c33a_1_cpython conda-forge python-constraint 1.4.0 py_0 conda-forge python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge python-fastjsonschema 2.19.1 pyhd8ed1ab_0 conda-forge python-flatbuffers 23.5.26 pyhd8ed1ab_0 conda-forge python-json-logger 2.0.7 pyhd8ed1ab_0 conda-forge python-tzdata 2023.4 pyhd8ed1ab_0 conda-forge python_abi 3.10 4_cp310 conda-forge pytorch 2.0.0 cpu_generic_py310h7ffd2bf_1 conda-forge pytorch-lightning 2.1.3 pyhd8ed1ab_0 conda-forge pytz 2024.1 pyhd8ed1ab_0 conda-forge pyu2f 0.1.5 pyhd8ed1ab_0 conda-forge pyyaml 6.0.1 py310h2372a71_1 conda-forge pyzmq 25.1.2 py310h795f18f_0 conda-forge qcelemental 0.27.1 pyhd8ed1ab_0 conda-forge qcengine 0.29.0 pyhd8ed1ab_0 conda-forge qcportal 0.53 pyhd8ed1ab_0 conda-forge quippy 0.0.1 py310hd2eb85d_4 conda-forge rdkit 2022.03.5 py310h1c297d8_0 conda-forge re2 2023.02.01 hcb278e6_0 conda-forge readline 8.2 h8228510_1 conda-forge redis-py 5.0.1 pyhd8ed1ab_0 conda-forge redis-server 7.2.4 h06160fa_0 conda-forge referencing 0.33.0 pyhd8ed1ab_0 conda-forge regex 2023.12.25 py310h2372a71_0 conda-forge reportlab 4.0.9 py310h2372a71_0 conda-forge requests 2.31.0 pyhd8ed1ab_0 conda-forge requests-oauthlib 1.3.1 pyhd8ed1ab_0 conda-forge rfc3339-validator 0.1.4 pyhd8ed1ab_0 conda-forge rfc3986-validator 0.1.1 pyh9f0ad1d_0 conda-forge rhash 1.4.4 hd590300_0 conda-forge rich 13.7.0 pyhd8ed1ab_0 conda-forge rlpycairo 0.2.0 pyhd8ed1ab_0 conda-forge rpds-py 0.17.1 py310hcb5633a_0 conda-forge rsa 4.9 pyhd8ed1ab_0 conda-forge s2n 1.3.37 h3358134_0 conda-forge scipy 1.12.0 py310hb13e2d6_2 conda-forge send2trash 1.8.2 pyh41d4057_0 conda-forge setuptools 69.0.3 pyhd8ed1ab_0 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge sleef 3.5.1 h9b69904_2 conda-forge smirnoff99frosst 1.1.0 pyh44b312d_0 conda-forge smmap 5.0.0 pyhd8ed1ab_0 conda-forge snappy 1.1.10 h9fff704_0 conda-forge sniffio 1.3.0 pyhd8ed1ab_0 conda-forge sortedcontainers 2.4.0 pyhd8ed1ab_0 conda-forge soupsieve 2.5 pyhd8ed1ab_1 conda-forge sqlalchemy 2.0.25 py310h2372a71_0 conda-forge stack_data 0.6.2 pyhd8ed1ab_0 conda-forge starlette 0.20.4 pyhd8ed1ab_1 conda-forge sympy 1.12 pypyh9d50eac_103 conda-forge sysroot_linux-64 2.12 he073ed8_16 conda-forge tabulate 0.9.0 pyhd8ed1ab_1 conda-forge tblib 3.0.0 pyhd8ed1ab_0 conda-forge tensorboard 2.11.2 pyhd8ed1ab_0 conda-forge tensorboard-data-server 0.6.1 py310h600f1e7_4 conda-forge tensorboard-plugin-wit 1.8.1 pyhd8ed1ab_0 conda-forge tensorflow 2.11.0 cpu_py310hd1aba9c_0 conda-forge tensorflow-base 2.11.0 cpu_py310hc9b7e7f_0 conda-forge tensorflow-estimator 2.11.0 cpu_py310hfed9998_0 conda-forge termcolor 2.4.0 pyhd8ed1ab_0 conda-forge terminado 0.18.0 pyh0d859eb_0 conda-forge tinycss2 1.2.1 pyhd8ed1ab_0 conda-forge tinydb 4.8.0 pyhd8ed1ab_0 conda-forge tk 8.6.13 noxft_h4845f30_101 conda-forge tomli 2.0.1 pyhd8ed1ab_0 conda-forge toolz 0.12.1 pyhd8ed1ab_0 conda-forge torchmetrics 1.2.1 pyhd8ed1ab_0 conda-forge tornado 6.3.3 py310h2372a71_1 conda-forge torsiondrive 1.1.0 pyhd8ed1ab_0 conda-forge tqdm 4.66.1 pyhd8ed1ab_0 conda-forge traitlets 5.14.1 pyhd8ed1ab_0 conda-forge types-python-dateutil 2.8.19.20240106 pyhd8ed1ab_0 conda-forge typing-extensions 4.9.0 hd8ed1ab_0 conda-forge typing_extensions 4.9.0 pyha770c72_0 conda-forge typing_utils 0.1.0 pyhd8ed1ab_0 conda-forge tzdata 2024a h0c530f3_0 conda-forge unicodedata2 15.1.0 py310h2372a71_0 conda-forge unidecode 1.3.8 pyhd8ed1ab_0 conda-forge uri-template 1.3.0 pyhd8ed1ab_0 conda-forge urllib3 2.2.0 pyhd8ed1ab_0 conda-forge uvicorn 0.27.0.post1 py310hff52083_0 conda-forge validators 0.22.0 pyhd8ed1ab_0 conda-forge vine 5.1.0 pyhd8ed1ab_0 conda-forge voro 0.4.6 h00ab1b0_0 conda-forge wcwidth 0.2.13 pyhd8ed1ab_0 conda-forge webcolors 1.13 pyhd8ed1ab_0 conda-forge webencodings 0.5.1 pyhd8ed1ab_2 conda-forge websocket-client 1.7.0 pyhd8ed1ab_0 conda-forge werkzeug 3.0.1 pyhd8ed1ab_0 conda-forge wget 1.20.3 ha35d2d1_1 conda-forge wheel 0.42.0 pyhd8ed1ab_0 conda-forge widgetsnbextension 4.0.9 pyhd8ed1ab_0 conda-forge wrapt 1.16.0 py310h2372a71_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.4 h0b41bf4_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.2.6 h166bdaf_0 conda-forge yaml 0.2.5 h7f98852_2 conda-forge yarl 1.9.4 py310h2372a71_0 conda-forge zeromq 4.3.5 h59595ed_0 conda-forge zict 3.0.0 pyhd8ed1ab_0 conda-forge zipp 3.17.0 pyhd8ed1ab_0 conda-forge zlib 1.2.13 hd590300_5 conda-forge zstandard 0.22.0 py310h1275a96_0 conda-forge zstd 1.5.5 hfc55251_0 conda-forge

Yoshanuikabundi avatar Feb 08 '24 04:02 Yoshanuikabundi

I suppose NAGL isn't permitted for this go-around?

The LAMMPS bonded energy mismatch is almost surely #892:

In [2]: from openff.toolkit import Molecule, ForceField, Topology
   ...: from openff.interchange.drivers import get_summary_data
   ...: from openff.units import unit
   ...:
   ...: sage = ForceField("openff_unconstrained-2.1.0.offxml")
   ...: # SMILES from https://www.rcsb.org/ligand/NAP
   ...: nadp = Molecule.from_smiles(
   ...:     r"c1cc(c[n+](c1)[C@H]2[C@@H]([C@@H]([C@H](O2)CO[P@@](=O)([O-])O[P@](=O)(O)OC[C@@H]3[C@H]([C@H]([C@@H](O3)n4cnc
   ...: 5c4ncnc5N)OP(=O)(O)O)O)O)O)C(=O)N"
   ...: )
   ...: nadp.generate_conformers(n_conformers=1)
   ...:
   ...: nadp_interchange = sage.create_interchange(nadp.to_topology())
   ...: nadp_interchange.box = [[4, 0, 0], [0, 4, 0], [0, 0, 4]] * unit.nanometer
   ...:
   ...: get_summary_data(nadp_interchange)
Warning: : Failed due to unspecified stereochemistry
Out[2]:
              Bond       Angle     Torsion  Electrostatics        vdW  RBTorsion
OpenMM   26.600429  310.672706  896.221085    -3244.337363  14.406467        NaN
Amber    26.600617  310.672878  896.221168    -3244.227158  20.641346        NaN
GROMACS  26.600632  310.673157  896.221071    -3244.741211  14.430875        0.0
LAMMPS   26.600424  310.672698  896.221074    -3244.337866  13.744850        NaN

The Amber differences are, owing to the amount of rings in NADP, probably #686 #688 which I ought to get back to despite how frustrating it has been.

what is RBTorsion and is zero/nan ok?

NaN/zero is okay. It's a type of torsion that OPLS uses and shows up when we use Foyer: https://manual.gromacs.org/current/reference-manual/functions/bonded-interactions.html#proper-dihedrals-ryckaert-bellemans-function

mattwthompson avatar Feb 08 '24 14:02 mattwthompson

Track Amber progress here: #470 #900

mattwthompson avatar Feb 14 '24 19:02 mattwthompson

Alright, I'm happy with my earlier diagnoses; using 9258d6bb416ce61f32e7d3f0996004f67fa8ef66:

In [1]: from openff.toolkit import Molecule, ForceField, Topology, unit
   ...: from openff.interchange.drivers import get_summary_data
   ...:
   ...: sage = ForceField("openff_unconstrained-2.1.0.offxml")
   ...: sage["vdW"].switch_width *= 0
   ...:
   ...: # SMILES from https://www.rcsb.org/ligand/NAP
   ...: nadp = Molecule.from_smiles(
   ...:     r"c1cc(c[n+](c1)[C@H]2[C@@H]([C@@H]([C@H](O2)CO[P@@](=O)([O-])O[P@](=O)(O)OC[C@@H]3[C@H]([C@H]([C@@H](O3)n4cnc5
   ...: c4ncnc5N)OP(=O)(O)O)O)O)O)C(=O)N"
   ...: )
   ...: nadp.generate_conformers(n_conformers=1)
   ...: nadp.assign_partial_charges(partial_charge_method="gasteiger")
   ...:
   ...: nadp_interchange = sage.create_interchange(
   ...:     nadp.to_topology(), charge_from_molecules=[nadp]
   ...: )
   ...: nadp_interchange.box = [[4, 0, 0], [0, 4, 0], [0, 0, 4]] * unit.nanometer
   ...:
   ...: get_summary_data(nadp_interchange)

<snipping out some LAMMPS spam>
Out[1]:
              Bond       Angle     Torsion  Electrostatics        vdW  RBTorsion
OpenMM   26.600429  310.672706  896.221085     -393.065355  14.086832        NaN
Amber    26.600617  310.672878  896.221168     -393.066298  14.088783        NaN
GROMACS  26.600632  310.673157  896.221071     -393.272690  14.107502        0.0
LAMMPS   26.600424  310.672698  896.221083     -393.413335  13.744850        NaN

mattwthompson avatar Feb 15 '24 16:02 mattwthompson

After #897 #914 I'm getting the following results:

              Bond       Angle     Torsion  Electrostatics        vdW  RBTorsion
OpenMM   20.836174  310.672706  896.221085    -3244.337363  14.406467        NaN
Amber    20.836320  310.672878  896.221168    -3244.227158  14.088783        NaN
GROMACS  20.836302  310.673157  896.221071    -3244.741211  14.430883        0.0
LAMMPS   20.836172  310.672698  896.334673    -3244.337702  13.744850        NaN

My two concerns are the slight difference in LAMMPS torsions and vdW energies (which should match Amber, since neither appear to have a SMIRNOFF-complatible switching function implemented, and so just have a hard cut-off in these code paths).

cc: @timbernat particularly the torsions - 0.113 / 896 kJ/mol isn't much, but I can't ignore it either

mattwthompson avatar Mar 04 '24 16:03 mattwthompson