From 4e4c44da45c613f1023d2b05fa3a2ad72b6dfe7a Mon Sep 17 00:00:00 2001 From: Brent Westbrook Date: Fri, 8 Nov 2024 11:34:29 -0500 Subject: [PATCH 1/3] update sulfur hessian dataset with create_basic_dataset --- .../README.md | 68 ++++ .../dataset.json.bz2 | 3 + .../dataset.pdf | Bin 0 -> 67977 bytes .../full-environment.yaml | 309 ++++++++++++++++++ .../generate.py | 115 +++++++ .../input-environment.yaml | 15 + .../opt.toml | 51 +++ .../output.smi | 129 ++++++++ 8 files changed, 690 insertions(+) create mode 100644 submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/README.md create mode 100644 submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/dataset.json.bz2 create mode 100644 submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/dataset.pdf create mode 100644 submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/full-environment.yaml create mode 100644 submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/generate.py create mode 100644 submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/input-environment.yaml create mode 100644 submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/opt.toml create mode 100644 submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/output.smi diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/README.md b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/README.md new file mode 100644 index 00000000..1175aeb7 --- /dev/null +++ b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/README.md @@ -0,0 +1,68 @@ +# OpenFF Sulfur Hessian Training Coverage Supplement v1.1 + +## Description + +A basic data set created to improve the training coverage of sulfonic and +phosphonic acids, sulfone, sulfonate, sulfinyl, sulfoximine, sulfonamides, +thioether, and 1,3-thiazole groups. The structures in this data set are the +optimized geometries from `OpenFF Sulfur Optimization Training Coverage +Supplement v1.0`. + +## General Information + +* Date: 2024-09-18 +* Class: OpenFF Optimization Dataset +* Purpose: Improve coverage in Sage +* Name: OpenFF Sulfur Hessian Training Coverage Supplement v1.1 +* Number of unique molecules: 129 +* Number of filtered molecules: 0 +* Number of conformers: 899 +* Number of conformers per molecule (min, mean, max): 1, 6.97, 10 +* Mean molecular weight: 218.80 +* Max molecular weight: 493.37 +* Charges: [-2.0, -1.0, 0.0] +* Dataset submitter: Brent Westbrook +* Dataset generator: Brent Westbrook + +## QCSubmit Generation Pipeline + +* `generate.py`: This script shows how the dataset was prepared. + + +## QCSubmit Manifest + +* `generate.py`: Script describing dataset generation and submission +* `input-environment.yaml`: Environment file used to create the Python environment for the script +* `full-environment.yaml`: Fully-resolved environment used to execute the script +* `opt.toml`: Experimental [qcaide](https://github.com/ntBre/qcaide) input file for defining +variables used throughout the QCA submission process +* `dataset.json.bz2`: Compressed dataset ready for submission +* `dataset.pdf`: Visualization of dataset molecules +* `dataset.smi`: SMILES strings for dataset molecules + +## Metadata + +* Elements: {O, S, C, Cl, P, N, F, Br, H} +* Spec: default + * basis: DZVP + * implicit_solvent: None + * keywords: {} + * maxiter: 200 + * method: B3LYP-D3BJ + * program: psi4 + * SCF properties: + * dipole + * quadrupole + * wiberg_lowdin_indices + * mayer_indices + +## Changelog +v1.0 included a manual implementation of +`OptimizationResultCollection.create_basic_dataset` that failed to preserve +QCArchive molecule IDs between the optimization and single-point datasets. +Unfortunately, this issue would not have been avoided by that version of +`create_basic_dataset` either. The issue has been fixed in openff-qcsubmit +[version +0.54](https://github.com/openforcefield/openff-qcsubmit/releases/tag/0.54.0), so +the environment has been updated to use this release, and the `generate.py` +script has been updated to use `create_basic_dataset`. diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/dataset.json.bz2 b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/dataset.json.bz2 new file mode 100644 index 00000000..4f18b10a --- /dev/null +++ b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/dataset.json.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f81fab3d7782cc1b2e7088de4919fdad9314e2daf5b53d6444190c3f7d50a6b +size 650626 diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/dataset.pdf b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/dataset.pdf new file mode 100644 index 0000000000000000000000000000000000000000..47af601cc55edcf203e891cbfe4225beb6aee8f3 GIT binary patch literal 67977 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%0DSx6kpy}Vs7TMijtw@8eB2@B=o>H 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 ietwAp#;F_7685(k_s=E5SaRC6P%ye!5 literal 0 HcmV?d00001 diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/full-environment.yaml b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/full-environment.yaml new file mode 100644 index 00000000..821f9714 --- /dev/null +++ b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/full-environment.yaml @@ -0,0 +1,309 @@ +name: qcarchive-user-submit +channels: + - openeye + - conda-forge +dependencies: + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - ambertools=23.6=cuda_None_nompi_py311h4a53416_105 + - annotated-types=0.7.0=pyhd8ed1ab_0 + - anyio=4.6.2.post1=pyhd8ed1ab_0 + - apsw=3.46.1.0=py311h333efcf_1 + - argcomplete=3.5.1=pyhd8ed1ab_0 + - argon2-cffi=23.1.0=pyhd8ed1ab_0 + - argon2-cffi-bindings=21.2.0=py311h9ecbd09_5 + - arpack=3.9.1=nompi_h77f6705_101 + - arrow=1.3.0=pyhd8ed1ab_0 + - asttokens=2.4.1=pyhd8ed1ab_0 + - async-lru=2.0.4=pyhd8ed1ab_0 + - attrs=24.2.0=pyh71513ae_0 + - babel=2.16.0=pyhd8ed1ab_0 + - basis_set_exchange=0.10=pyhd8ed1ab_1 + - beautifulsoup4=4.12.3=pyha770c72_0 + - bleach=6.2.0=pyhd8ed1ab_0 + - blosc=1.21.6=hef167b5_0 + - brotli=1.1.0=hb9d3cd8_2 + - brotli-bin=1.1.0=hb9d3cd8_2 + - brotli-python=1.1.0=py311hfdbb021_2 + - bson=0.5.9=py_0 + - bzip2=1.0.8=h4bc722e_7 + - c-ares=1.34.2=heb4867d_0 + - c-blosc2=2.15.1=hc57e6cf_0 + - ca-certificates=2024.8.30=hbcca054_0 + - cached-property=1.5.2=hd8ed1ab_1 + - cached_property=1.5.2=pyha770c72_1 + - cachetools=5.5.0=pyhd8ed1ab_0 + - cairo=1.18.0=hebfffa5_3 + - certifi=2024.8.30=pyhd8ed1ab_0 + - cffi=1.17.1=py311hf29c0ef_0 + - chardet=5.2.0=py311h38be061_2 + - charset-normalizer=3.4.0=pyhd8ed1ab_0 + - colorama=0.4.6=pyhd8ed1ab_0 + - comm=0.2.2=pyhd8ed1ab_0 + - contourpy=1.3.0=py311hd18a35c_2 + - cudatoolkit=11.8.0=h4ba93d1_13 + - cycler=0.12.1=pyhd8ed1ab_0 + - debugpy=1.8.8=py311hfdbb021_0 + - decorator=5.1.1=pyhd8ed1ab_0 + - defusedxml=0.7.1=pyhd8ed1ab_0 + - entrypoints=0.4=pyhd8ed1ab_0 + - exceptiongroup=1.2.2=pyhd8ed1ab_0 + - executing=2.1.0=pyhd8ed1ab_0 + - fftw=3.3.10=nompi_hf1063bd_110 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_3 + - fontconfig=2.15.0=h7e30c49_1 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.54.1=py311h2dc5d0c_1 + - fqdn=1.5.1=pyhd8ed1ab_0 + - freetype=2.12.1=h267a509_2 + - freetype-py=2.3.0=pyhd8ed1ab_0 + - greenlet=3.1.1=py311hfdbb021_0 + - h11=0.14.0=pyhd8ed1ab_0 + - h2=4.1.0=pyhd8ed1ab_0 + - hdf4=4.2.15=h2a13503_7 + - hdf5=1.14.4=nompi_h2d575fe_103 + - hpack=4.0.0=pyh9f0ad1d_0 + - httpcore=1.0.6=pyhd8ed1ab_0 + - httpx=0.27.2=pyhd8ed1ab_0 + - hyperframe=6.0.1=pyhd8ed1ab_0 + - icu=75.1=he02047a_0 + - idna=3.10=pyhd8ed1ab_0 + - importlib-metadata=8.5.0=pyha770c72_0 + - importlib_metadata=8.5.0=hd8ed1ab_0 + - importlib_resources=6.4.5=pyhd8ed1ab_0 + - iniconfig=2.0.0=pyhd8ed1ab_0 + - ipykernel=6.29.5=pyh3099207_0 + - ipython=8.29.0=pyh707e725_0 + - ipywidgets=8.1.5=pyhd8ed1ab_0 + - isoduration=20.11.0=pyhd8ed1ab_0 + - jedi=0.19.1=pyhd8ed1ab_0 + - jinja2=3.1.4=pyhd8ed1ab_0 + - joblib=1.4.2=pyhd8ed1ab_0 + - json5=0.9.25=pyhd8ed1ab_0 + - jsonpointer=3.0.0=py311h38be061_1 + - jsonschema=4.23.0=pyhd8ed1ab_0 + - jsonschema-specifications=2024.10.1=pyhd8ed1ab_0 + - jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_0 + - jupyter-lsp=2.2.5=pyhd8ed1ab_0 + - jupyter_client=8.6.3=pyhd8ed1ab_0 + - jupyter_core=5.7.2=pyh31011fe_1 + - jupyter_events=0.10.0=pyhd8ed1ab_0 + - jupyter_server=2.14.2=pyhd8ed1ab_0 + - jupyter_server_terminals=0.5.3=pyhd8ed1ab_0 + - jupyterlab=4.2.5=pyhd8ed1ab_0 + - jupyterlab_pygments=0.3.0=pyhd8ed1ab_1 + - jupyterlab_server=2.27.3=pyhd8ed1ab_0 + - jupyterlab_widgets=3.0.13=pyhd8ed1ab_0 + - keyutils=1.6.1=h166bdaf_0 + - kiwisolver=1.4.7=py311hd18a35c_0 + - krb5=1.21.3=h659f571_0 + - lcms2=2.16=hb7c19ff_0 + - ld_impl_linux-64=2.43=h712a8e2_2 + - lerc=4.0.0=h27087fc_0 + - libaec=1.1.3=h59595ed_0 + - libblas=3.9.0=25_linux64_openblas + - libboost=1.84.0=hb8260a3_6 + - libboost-python=1.84.0=py311h5b7b71f_6 + - libbrotlicommon=1.1.0=hb9d3cd8_2 + - libbrotlidec=1.1.0=hb9d3cd8_2 + - libbrotlienc=1.1.0=hb9d3cd8_2 + - libcblas=3.9.0=25_linux64_openblas + - libcurl=8.10.1=hbbe4b11_0 + - libdeflate=1.22=hb9d3cd8_0 + - libedit=3.1.20191231=he28a2e2_2 + - libev=4.33=hd590300_2 + - libexpat=2.6.4=h5888daf_0 + - libffi=3.4.2=h7f98852_5 + - libgcc=14.2.0=h77fa898_1 + - libgcc-ng=14.2.0=h69a702a_1 + - libgfortran=14.2.0=h69a702a_1 + - libgfortran-ng=14.2.0=h69a702a_1 + - libgfortran5=14.2.0=hd5240d6_1 + - libglib=2.82.2=h2ff4ddf_0 + - libgomp=14.2.0=h77fa898_1 + - libiconv=1.17=hd590300_2 + - libjpeg-turbo=3.0.0=hd590300_1 + - liblapack=3.9.0=25_linux64_openblas + - libnetcdf=4.9.2=nompi_h2564987_115 + - libnghttp2=1.64.0=h161d5f1_0 + - libnsl=2.0.1=hd590300_0 + - libopenblas=0.3.28=pthreads_h94d23a6_1 + - libpng=1.6.44=hadc24fc_0 + - libpq=16.4=h2d7952a_3 + - librdkit=2024.03.5=h79cfef2_3 + - libsodium=1.0.20=h4ab18f5_0 + - libsqlite=3.46.1=hadc24fc_0 + - libssh2=1.11.0=h0841786_0 + - libstdcxx=14.2.0=hc0a3c3a_1 + - libstdcxx-ng=14.2.0=h4852527_1 + - libtiff=4.7.0=he137b08_1 + - libuuid=2.38.1=h0b41bf4_0 + - libwebp-base=1.4.0=hd590300_0 + - libxcb=1.17.0=h8a09558_0 + - libxcrypt=4.4.36=hd590300_1 + - libxml2=2.13.4=hb346dea_2 + - libzip=1.11.2=h6991a6a_0 + - libzlib=1.3.1=hb9d3cd8_2 + - lz4-c=1.9.4=hcb278e6_0 + - markupsafe=3.0.2=py311h2dc5d0c_0 + - matplotlib-base=3.9.2=py311h2b939e6_2 + - matplotlib-inline=0.1.7=pyhd8ed1ab_0 + - mda-xdrlib=0.2.0=pyhd8ed1ab_0 + - mdtraj=1.10.1=py311h4734c11_0 + - mistune=3.0.2=pyhd8ed1ab_0 + - msgpack-python=1.1.0=py311hd18a35c_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - nbclient=0.10.0=pyhd8ed1ab_0 + - nbconvert-core=7.16.4=pyhd8ed1ab_1 + - nbformat=5.10.4=pyhd8ed1ab_0 + - ncurses=6.5=he02047a_1 + - nest-asyncio=1.6.0=pyhd8ed1ab_0 + - netcdf-fortran=4.6.1=nompi_ha5d1325_107 + - networkx=3.4.2=pyhd8ed1ab_1 + - nomkl=1.0=h5ca1d4c_0 + - notebook=7.2.2=pyhd8ed1ab_0 + - notebook-shim=0.2.4=pyhd8ed1ab_0 + - numexpr=2.10.1=py311h38b10cd_103 + - numpy=1.26.4=py311h64a7726_0 + - ocl-icd=2.3.2=hd590300_1 + - ocl-icd-system=1.0.0=1 + - openeye-toolkits=2024.1.3=py311_0 + - openff-amber-ff-ports=0.0.4=pyhca7485f_0 + - openff-forcefields=2024.09.0=pyhff2d567_0 + - openff-interchange=0.4.0=pyhd8ed1ab_0 + - openff-interchange-base=0.4.0=pyhd8ed1ab_0 + - openff-qcsubmit=0.54.0=pyhd8ed1ab_0 + - openff-toolkit=0.16.5=pyhd8ed1ab_0 + - openff-toolkit-base=0.16.5=pyhd8ed1ab_0 + - openff-units=0.2.2=pyhca7485f_0 + - openff-utilities=0.1.12=pyhd8ed1ab_0 + - openjpeg=2.5.2=h488ebb8_0 + - openmm=8.1.2=py311he040c58_2 + - openssl=3.3.2=hb9d3cd8_0 + - overrides=7.7.0=pyhd8ed1ab_0 + - packaging=24.1=pyhd8ed1ab_0 + - pandas=2.2.3=py311h7db5c69_1 + - pandocfilters=1.5.0=pyhd8ed1ab_0 + - panedr=0.8.0=pyhd8ed1ab_0 + - parmed=4.3.0=py311h8cc7b42_0 + - parso=0.8.4=pyhd8ed1ab_0 + - pcre2=10.44=hba22ea6_2 + - perl=5.32.1=7_hd590300_perl5 + - pexpect=4.9.0=pyhd8ed1ab_0 + - pickleshare=0.7.5=py_1003 + - pillow=11.0.0=py311h49e9ac3_0 + - pint=0.23=pyhd8ed1ab_1 + - pip=24.3.1=pyh8b19718_0 + - pixman=0.43.2=h59595ed_0 + - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1 + - platformdirs=4.3.6=pyhd8ed1ab_0 + - pluggy=1.5.0=pyhd8ed1ab_0 + - prometheus_client=0.21.0=pyhd8ed1ab_0 + - prompt-toolkit=3.0.48=pyha770c72_0 + - psutil=6.1.0=py311h9ecbd09_0 + - pthread-stubs=0.4=hb9d3cd8_1002 + - ptyprocess=0.7.0=pyhd3deb0d_0 + - pure_eval=0.2.3=pyhd8ed1ab_0 + - py-cpuinfo=9.0.0=pyhd8ed1ab_0 + - pycairo=1.27.0=py311h124c5f0_0 + - pycalverter=1.6.1=pyhd8ed1ab_1 + - pycparser=2.22=pyhd8ed1ab_0 + - pydantic=2.9.2=pyhd8ed1ab_0 + - pydantic-core=2.23.4=py311h9e33e62_0 + - pyedr=0.8.0=pyhd8ed1ab_0 + - pygments=2.18.0=pyhd8ed1ab_0 + - pyjwt=2.9.0=pyhd8ed1ab_1 + - pyparsing=3.2.0=pyhd8ed1ab_1 + - pysocks=1.7.1=pyha2e5f31_6 + - pytables=3.10.1=py311h3ebe2b2_3 + - pytest=8.3.3=pyhd8ed1ab_0 + - python=3.11.10=hc5c86c4_3_cpython + - python-constraint=1.4.0=py_0 + - python-dateutil=2.9.0=pyhd8ed1ab_0 + - python-fastjsonschema=2.20.0=pyhd8ed1ab_0 + - python-json-logger=2.0.7=pyhd8ed1ab_0 + - python-tzdata=2024.2=pyhd8ed1ab_0 + - python_abi=3.11=5_cp311 + - pytz=2024.1=pyhd8ed1ab_0 + - pyyaml=6.0.2=py311h9ecbd09_1 + - pyzmq=26.2.0=py311h7deb3e3_3 + - qcelemental=0.28.0=pyhd8ed1ab_1 + - qcportal=0.56=pyhd8ed1ab_1 + - qhull=2020.2=h434a139_5 + - rdkit=2024.03.5=py311h845bd92_3 + - readline=8.2=h8228510_1 + - referencing=0.35.1=pyhd8ed1ab_0 + - regex=2024.11.6=py311h9ecbd09_0 + - reportlab=4.2.5=py311h9ecbd09_0 + - requests=2.32.3=pyhd8ed1ab_0 + - rfc3339-validator=0.1.4=pyhd8ed1ab_0 + - rfc3986-validator=0.1.1=pyh9f0ad1d_0 + - rlpycairo=0.2.0=pyhd8ed1ab_0 + - rpds-py=0.21.0=py311h9e33e62_0 + - scipy=1.14.1=py311he9a78e4_1 + - send2trash=1.8.3=pyh0d859eb_0 + - setuptools=75.3.0=pyhd8ed1ab_0 + - six=1.16.0=pyh6c4a22f_0 + - smirnoff99frosst=1.1.0=pyh44b312d_0 + - snappy=1.2.1=ha2e4443_0 + - sniffio=1.3.1=pyhd8ed1ab_0 + - soupsieve=2.5=pyhd8ed1ab_1 + - sqlalchemy=2.0.36=py311h9ecbd09_0 + - sqlite=3.46.1=h9eae976_0 + - stack_data=0.6.2=pyhd8ed1ab_0 + - tabulate=0.9.0=pyhd8ed1ab_1 + - terminado=0.18.1=pyh0d859eb_0 + - tinycss2=1.4.0=pyhd8ed1ab_0 + - tk=8.6.13=noxft_h4845f30_101 + - tomli=2.0.2=pyhd8ed1ab_0 + - tornado=6.4.1=py311h9ecbd09_1 + - tqdm=4.67.0=pyhd8ed1ab_0 + - traitlets=5.14.3=pyhd8ed1ab_0 + - types-python-dateutil=2.9.0.20241003=pyhff2d567_0 + - typing-extensions=4.12.2=hd8ed1ab_0 + - typing_extensions=4.12.2=pyha770c72_0 + - typing_utils=0.1.0=pyhd8ed1ab_0 + - tzdata=2024b=hc8b5060_0 + - unicodedata2=15.1.0=py311h9ecbd09_1 + - unidecode=1.3.8=pyhd8ed1ab_0 + - uri-template=1.3.0=pyhd8ed1ab_0 + - urllib3=2.2.3=pyhd8ed1ab_0 + - wcwidth=0.2.13=pyhd8ed1ab_0 + - webcolors=24.8.0=pyhd8ed1ab_0 + - webencodings=0.5.1=pyhd8ed1ab_2 + - websocket-client=1.8.0=pyhd8ed1ab_0 + - wheel=0.44.0=pyhd8ed1ab_0 + - widgetsnbextension=4.0.13=pyhd8ed1ab_0 + - xmltodict=0.14.2=pyhd8ed1ab_0 + - xorg-libice=1.1.1=hb9d3cd8_1 + - xorg-libsm=1.2.4=he73a12e_1 + - xorg-libx11=1.8.10=h4f16b4b_0 + - xorg-libxau=1.0.11=hb9d3cd8_1 + - xorg-libxdmcp=1.1.5=hb9d3cd8_0 + - xorg-libxext=1.3.6=hb9d3cd8_0 + - xorg-libxrender=0.9.11=hb9d3cd8_1 + - xorg-libxt=1.3.0=hb9d3cd8_2 + - xorg-xorgproto=2024.1=hb9d3cd8_1 + - xz=5.2.6=h166bdaf_0 + - yaml=0.2.5=h7f98852_2 + - zeromq=4.3.5=h3b0a872_6 + - zipp=3.20.2=pyhd8ed1ab_0 + - zlib=1.3.1=hb9d3cd8_2 + - zlib-ng=2.2.2=h5888daf_0 + - zstandard=0.23.0=py311hbc35293_1 + - zstd=1.5.6=ha6fb4c9_0 + - pip: + - amberutils==21.0 + - edgembar==0.2 + - mmpbsa-py==16.0 + - packmol-memgen==2024.2.9 + - pdb4amber==22.0 + - pymsmt==22.0 + - pytraj==2.0.6 + - qcaide==0.0.0 + - sander==22.0 +prefix: /home/brent/mambaforge/envs/qcarchive-user-submit diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/generate.py b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/generate.py new file mode 100644 index 00000000..57f91cc7 --- /dev/null +++ b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/generate.py @@ -0,0 +1,115 @@ +from pathlib import Path + +import numpy as np +import qcportal # noqa avoid zstd disaster +from openff.qcsubmit.results import OptimizationResultCollection +from openff.qcsubmit.results.filters import ( + ConnectivityFilter, + RecordStatusEnum, + RecordStatusFilter, +) +from openff.qcsubmit.utils import _CachedPortalClient, portal_client_manager +from openff.toolkit import ForceField +from qcaide import Submission +from qcportal.singlepoint import SinglepointDriver + +# Load config file and force field +ff = ForceField("openff-2.1.0.offxml") +config = Submission.from_toml("opt.toml") + +client = _CachedPortalClient("https://api.qcarchive.molssi.org", ".") +opt = OptimizationResultCollection.from_server( + client, + datasets=["OpenFF Sulfur Optimization Training Coverage Supplement v1.0"], +) + +print(f"Retrieved {opt.n_results} results") + +with portal_client_manager(lambda _: client): + opt = opt.filter( + RecordStatusFilter(status=RecordStatusEnum.complete), + ConnectivityFilter(tolerance=1.2), + ) + + opt_hashes = { + rec.final_molecule.get_hash() for rec, _mol in opt.to_records() + } + +print(f"Filtered to {opt.n_results} completed records") + +# populate dataset +dataset = opt.create_basic_dataset( + dataset_name=config.name, + description=config.description, + tagline=config.name, + driver=SinglepointDriver.hessian, +) +dataset.metadata.submitter = config.submitter +dataset.metadata.long_description_url = ( + "https://github.com/openforcefield/qca-dataset-submission/tree/master/" + "submissions/" + str(Path.cwd().name) +) + +# confirm that the qcelemental molecule hashes have not changed +new_hashes = { + qcemol.identifiers.molecule_hash + for moldata in dataset.dataset.values() + for qcemol in moldata.initial_molecules +} + +assert opt_hashes == new_hashes + +print("all hashes match") + + +# summarize dataset for readme +confs = np.array([len(mol.conformers) for mol in dataset.molecules]) + +print("* Number of unique molecules:", dataset.n_molecules) +print("* Number of filtered molecules:", dataset.n_filtered) +print("* Number of conformers:", sum(confs)) +print( + "* Number of conformers per molecule (min, mean, max): " + f"{confs.min()}, {confs.mean():.2f}, {confs.max()}" +) + +masses = [ + [ + sum([atom.mass.m for atom in molecule.atoms]) + for molecule in dataset.molecules + ] +] +print(f"* Mean molecular weight: {np.mean(np.array(masses)):.2f}") +print(f"* Max molecular weight: {np.max(np.array(masses)):.2f}") +print("* Charges:", sorted(set(m.total_charge.m for m in dataset.molecules))) + +print("## Metadata") +print(f"* Elements: {{{', '.join(dataset.metadata.dict()['elements'])}}}") + + +def print_field(od, field): + print(f"\t* {field}: {od[field]}") + + +fields = [ + "basis", + "implicit_solvent", + "keywords", + "maxiter", + "method", + "program", +] +for spec, obj in dataset.qc_specifications.items(): + od = obj.dict() + print("* Spec:", spec) + for field in fields: + print_field(od, field) + print("\t* SCF properties:") + for field in od["scf_properties"]: + print(f"\t\t* {field}") + + +# write output files +dataset.export_dataset("dataset.json.bz2") +dataset.molecules_to_file("output.smi", "smi") +dataset.visualize("dataset.pdf", columns=8) diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/input-environment.yaml b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/input-environment.yaml new file mode 100644 index 00000000..c4f8df3d --- /dev/null +++ b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/input-environment.yaml @@ -0,0 +1,15 @@ +name: qcarchive-user-submit + +channels: + - conda-forge + - openeye + +dependencies: + - python =3.11 + - pip + - qcportal >=0.49 + - openff-qcsubmit >= 0.54 + - openff-toolkit + - openeye-toolkits + - pip: + - git+https://github.com/ntBre/qcaide diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/opt.toml b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/opt.toml new file mode 100644 index 00000000..1ad15489 --- /dev/null +++ b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/opt.toml @@ -0,0 +1,51 @@ +name = "OpenFF Sulfur Hessian Training Coverage Supplement v1.1" +description = """ + +A basic data set created to improve the training coverage of sulfonic and +phosphonic acids, sulfone, sulfonate, sulfinyl, sulfoximine, sulfonamides, +thioether, and 1,3-thiazole groups. The structures in this data set are the +optimized geometries from `OpenFF Sulfur Optimization Training Coverage +Supplement v1.0`. + +""" +short_description = "Additional Hessian training data for Sage sulfur and phosphorus parameters" +class = "optimization" +purpose = "Improve coverage in Sage" +submitter = "Brent Westbrook" + +[[pipeline]] +filename = "generate-dataset.py" +description = "This script shows how the dataset was prepared." + +# input files +[[manifest]] +filename = "generate-dataset.py" +description = "Script describing dataset generation and submission" + +[[manifest]] +filename = "input-environment.yaml" +description = "Environment file used to create the Python environment for the script" + +[[manifest]] +filename = "full-environment.yaml" +description = "Fully-resolved environment used to execute the script" + +[[manifest]] +filename = "opt.toml" +description = """ +Experimental [qcaide](https://github.com/ntBre/qcaide) input file for defining +variables used throughout the QCA submission process +""" + +# output files +[[manifest]] +filename = "dataset.json.bz2" +description = "Compressed dataset ready for submission" + +[[manifest]] +filename = "dataset.pdf" +description = "Visualization of dataset molecules" + +[[manifest]] +filename = "dataset.smi" +description = "SMILES strings for dataset molecules" \ No newline at end of file diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/output.smi b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/output.smi new file mode 100644 index 00000000..bee32d71 --- /dev/null +++ b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/output.smi @@ -0,0 +1,129 @@ +C(C(=O)O)S(=O)(=O)CC(=O)O +C(C(C(=O)O)N)P(=O)(O)O +C(CBr)S(=O)(=O)CCBr +C(CCS(=O)(=O)O)CN(Cl)Cl +C(CCS(=O)(=O)[O-])CO +C(CS(=O)(=O)N)N +C1=CSC(=C1)S(=O)(=O)CC#N +C1=CSC(=C1)S(=O)(=O)CC(=S)N +C1=CSC2=C1C(=NC(=O)N2)N +C1CCS(=O)(=O)C1 +C1CS(=O)(=O)NCO1 +C1CS1 +C1[C@H](N=C(S1)N)CC(=O)O +C=CCS(=O)(=O)CC=C +C=CS(=O)(=O)C=C +C=CS(=O)(=O)N +CCN1C=NN=C1SC +CCS(=O)(=O)C1=NON=C1C +CCS(=O)(=O)NO +CS(=O)(=O)CC(=O)/C=N/O +CS(=O)(=O)c1ccccc1 +CSC +CSc1c2c(ncn1)N=CC2 +C[C@@H]1[C@@H](O1)P(=O)(O)O +c1cc2c(cc1F)SC(=N2)NN +c1ccc(cc1)C(F)P(=O)(O)O +c1ccc(cc1)S(=O)(=O)CC#N +c1ccc2c(c1)C(=O)C(=CS2(=O)=O)Br +c1ccc2c(c1)C=CS2(=O)=O +C1(=NN=C(S1)S(=O)(=O)N)N +C1=C(SC2=C1C=C(S2)S(=O)(=O)N)CN +C1=CSC=C1 +C1=NN=C(S1)Br +C1=NSC(=N1)N +C1CC1C(=O)NC2=NN=CS2 +CC(CN)S(=O)(=O)C +CCS(=N)(=O)c1ccc(cc1)Nc2ncc(c(n2)N[C@@H](C)C(C)(C)O)Br +CCSc1ncnc(n1)N +CC[C@@H](CS(=O)(=O)O)[N+](=O)[O-] +CN1C(=O)SSC1=O +COC1=CSC=C1C(=O)O +COS(=O)(=O)CS(=O)(=O)C +CS(=O)(=O)CC#N +CS(=O)(=O)CCC#N +CS(=O)(=O)N +CS(=O)(=O)c1ccncc1N +CS/C(=C(\C#N)/SC)/C#N +CSC1=NN=C(S1)NS(=O)(=O)N +Cc1cccc2c1N=C(S2)S +c1cc(ccc1/N=N/c2c3ccc(cc3ccc2O)S(=O)(=O)[O-])S(=O)(=O)[O-] +C(/C=C\C(C(=O)O)N)P(=O)(O)O +C(C(C(=O)O)N)SCP(=O)(O)O +C1=CSC=N1 +C1=NC(=C(N1)N)S(=O)(=O)N +C1C2=C(NN=C2CS1(=O)=O)C(=O)O +C1CC(=C/C(=C\P(=O)(O)O)/C1)C(=O)O +C1[C@@H]([C@]1(C(=O)O)N)CP(=O)(O)O +CC1(CN(C(=O)N1Cl)CCS(=O)(=O)[O-])C +CS(=N)(=O)CCCOC1=NN2C(=NC=C2C3=Cc4ccccc4O3)C=C1 +C[C@@H]1[C@@H]([C@@H]([C@H]([C@@H](N1)S(=O)(=O)O)O)O)O +C[C@H]([C@@H](C)O)Nc1c(cnc(n1)Nc2ccc(cc2)S(=N)(=O)C)Br +C[C@H]([C@@H](C)O)Nc1c(cnc(n1)Nc2ccc(cc2)S(=N)(=O)CCO)Br +c1cc(ccc1C(CN)CS(=O)(=O)O)Cl +C(/C=C/P(=O)(O)O)C(C(=O)O)N +C(C[C@@H](CS)N)CS(=O)(=O)[O-] +C1=C(SC(=N1)NC(=O)C(=O)O)Br +C1C(C2=C(SC=C2C1=O)Br)O +C1C=CCS1(=O)=O +C1CNS(=O)(=O)C1 +CC(c1ccc(cc1)S(=O)(=O)O)(C(=O)O)N +CN1C(=NC(=N1)[N+](=O)[O-])S(=O)(=O)C +COc1cc(ccc1c2cc(ncc2F)Nc3cc(ccn3)C[S@](=N)(=O)C)F +CS(=O)(=O)NO +C[N+]1(CCCCC1)CS(=O)(=O)[O-] +Cc1cc(ccc1S(=N)(=O)C)Nc2ncc(c(n2)N[C@H](C)C(C)(C)O)Br +c1cc(ccc1C(CN)(CS(=O)(=O)O)O)Cl +c1cc(ccc1CN)S(=O)(=O)N +c1ccc(cc1)[C@H](CO)S(=O)(=O)O +c1ccc2c(c1)ccc(c2/N=N/c3ccc(cc3)S(=O)(=O)[O-])O +C([C@@H](C(=O)O)N)NCP(=O)(O)O +C1(=NN=C(S1)S)S +C1=C(SC(=N1)NC(=O)C(=O)O)C#N +C1=CN=C(N1)S(=O)(=O)N +C1CS(=O)(=O)CCN1 +C1[C@@H]([C@H]1P(=O)(O)O)[C@@H](C(=O)O)N +CC(NC(=O)C(Cc1ccccc1)CS)S(=O)(=O)[O-] +CC1=[N+](c2ccccc2S1)CCCS(=O)(=O)[O-] +CCCN1C(=O)c2cccc3c2c(cc(c3N)S(=O)(=O)[O-])C1=O +CN1C(CC2=C/C(=N/NC(=O)N)/C(=O)C=C21)S(=O)(=O)[O-] +CN1CCS(=O)(=O)C1=O +CNCC(c1ccc(c(c1)O)O)S(=O)(=O)O +COc1cccc2c1C=C(O2)C3=CN=C4N3N=C(C=C4)OCCCS(=N)(=O)C +C[C@H]([C@H](C)O)Nc1c(cnc(n1)Nc2ccc(c(c2)OC)S(=N)(=O)C)Br +c1cc(c(cc1[N+](=O)[O-])S(=O)(=O)[O-])/C=C/c2ccc(cc2S(=O)(=O)[O-])[N+](=O)[O-] +c1cc2c(cc1N)SC(=C2)S(=O)(=O)N +c1nc(c2c(n1)SC=N2)N +C(CP(=O)(O)O)[C@@H](C(=O)O)N +C1CN(S(=O)(=O)C1)N=O +C1[C@@H]([C@H](C(N1)S(=O)(=O)O)O)O +CC(C(C)(C)O)Sc1c(cnc(n1)Nc2ccc(cc2)S(=N)(=O)C)Br +CC(C)(C)/[N+](=C/c1ccc(cc1S(=O)(=O)[O-])S(=O)(=O)[O-])/[O-] +CC1(COC(=O)N1Cl)CS(=O)(=O)CCS(=O)(=O)[O-] +CC1=Nc2cc(ccc2S1)O +CCCCCCCCS(=O)(=O)[O-] +CS(=N)(=O)CC[C@@H](C(=O)O)N +CS(=O)(=O)C +CS(=O)(=O)C=C +C[C@H](C(C)(C)O)Nc1c(cnc(n1)Nc2ccc(cc2)S(=N)(=O)C)Br +c1cc(ccc1C2=NNC(=O)S2)Cl +c1cc2c(ccc(c2c(c1)S(=O)(=O)O)N)S(=O)(=O)O +c1ccc(cc1)/N=N/c2c(ccc3c2c(cc(c3)S(=O)(=O)[O-])S(=O)(=O)[O-])O +c1ccc(cc1)C(O)P(=O)(O)O +c1ccc(cc1)C=C(c2ccccc2)S(=O)(=O)O +C/C(=C\C(C(=O)O)N)/CP(=O)(O)O +C1=C(N=CN1)/C=C\2/C(=O)NC(=O)S2 +C1=CN=C2N(C1=O)N=C(S2)S(=O)(=O)N +C1[C@H]([C@H]1S(=O)(=O)O)[C@H](C(=O)O)N +CC1C(C(C(N1)S(=O)(=O)O)O)O +CC[S@@](=N)(=O)c1ccc(cc1)Nc2ncc(c(n2)N[C@H](C)[C@@H](C)O)Br +CN1C=CC(=O)C(=C1)S(=O)(=O)N +COc1cc(cc(c1NC(=O)c2ccc(cc2)S(=N)(=O)C)C(=O)Nc3ccc(cn3)Cl)Cl +C[C@@H]([C@H](COC)Nc1c(cnc(n1)Nc2ccc(cc2)S(=N)(=O)C)Br)O +C[C@H](C(=O)CP(=O)(O)O)N +c1cc(ccc1C[C@@H](C(=O)O)N)S(=O)(=O)O +c1cc(ccc1[C@@H](C(=O)O)N)P(=O)(O)O +c1ccc2c(c1)N3C(=NN=N3)S2 +c1ccc2c(c1)N=C(S2)NC(=O)CCS(=O)(=O)O +CC(CSc1c(cnc(n1)Nc2ccc(cc2)S(=N)(=O)C)Br)O +COC(=O)C1=CSC2=C1N=NS2 From caea81d3cd42e30614e1a8fa5f2f778cf925f97d Mon Sep 17 00:00:00 2001 From: Brent Westbrook Date: Fri, 8 Nov 2024 11:39:05 -0500 Subject: [PATCH 2/3] update main readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9962ee54..de415f81 100644 --- a/README.md +++ b/README.md @@ -243,6 +243,7 @@ These are currently used to compute properties of a minimum energy conformation |`OpenFF NAGL2 ESP Timing Benchmark v1.0` | [2024-09-06-OpenFF-NAGL2-ESP-Timing-Benchmark-v1.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-09-06-OpenFF-NAGL2-ESP-Timing-Benchmark-v1.0) | Single point ESP calculations for timing/memory benchmarking | 'P', 'S', 'N', 'C', 'Cl', 'F', 'Br', 'O', 'H', 'I' | | |`OpenFF NAGL2 ESP Timing Benchmark v1.1` | [2024-09-18-OpenFF-NAGL2-ESP-Timing-Benchmark-v1.1](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-09-18-OpenFF-NAGL2-ESP-Timing-Benchmark-v1.1) | Single point ESP calculations for timing/memory benchmarking | 'P', 'S', 'N', 'C', 'Cl', 'F', 'Br', 'O', 'H', 'I' | | |`OpenFF Sulfur Hessian Training Coverage Supplement v1.0` | [2024-09-18-OpenFF-Sulfur-Hessian-Training-Coverage-Supplement-v1.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-09-18-OpenFF-Sulfur-Hessian-Training-Coverage-Supplement-v1.0) | Additional Hessian training data for Sage sulfur and phosphorus parameters (from ['OpenFF Sulfur Optimization Training Coverage Supplement v1.0'](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-09-11-OpenFF-Sulfur-Optimization-Training-Coverage-Supplement-v1.0)) | O, S, C, Cl, P, N, F, Br, H | | +|`OpenFF Sulfur Hessian Training Coverage Supplement v1.1` | [2024-11-08-OpenFF-Sulfur-Hessian-Training-Coverage-Supplement-v1.1](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-11-08-OpenFF-Sulfur-Hessian-Training-Coverage-Supplement-v1.1) | Additional Hessian training data for Sage sulfur and phosphorus parameters (from ['OpenFF Sulfur Optimization Training Coverage Supplement v1.0'](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-09-11-OpenFF-Sulfur-Optimization-Training-Coverage-Supplement-v1.0)) | O, S, C, Cl, P, N, F, Br, H | | | `OpenFF Aniline Para Hessian v1.0` | [2024-10-07-OpenFF-Aniline-Para-Hessian-v1.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-10-07-OpenFF-Aniline-Para-Hessian-v1.0) | Hessian single points for the final molecules in the `OpenFF Aniline Para Opt v1.0` [dataset](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2021-04-02-OpenFF-Aniline-Para-Opt-v1.0) | 'O', 'Cl', 'S', 'Br', 'H', 'F', 'N', 'C' || |`OpenFF Gen2 Hessian Dataset Protomers v1.0` | [2024-10-07-OpenFF-Gen2-Hessian-Dataset-Protomers-v1.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-10-07-OpenFF-Gen2-Hessian-Dataset-Protomers-v1.0/) | Hessian single points for the final molecules in the `OpenFF Gen2 Optimization Dataset Protomers v1.0` [dataset](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2021-12-21-OpenFF-Gen2-Optimization-Set-Protomers) | 'H', 'C', 'Cl', 'P', 'F', 'Br', 'O', 'N', 'S'|| | `MLPepper-RECAP-Optimized-Fragments-Add-Iodines-v1.0` | [2024-10-11-MLPepper-RECAP-Optimized-Fragments-Add-Iodines-v1.0](https://github.com/openforcefield/qca-dataset-submission/tree/master/submissions/2024-10-11-MLPepper-RECAP-Optimized-Fragments-Add-Iodines-v1.0) | Set of diverse iodine containing molecules with a number of calculated electrostatic properties. | Br, Cl, S, B, O, Si, C, N, I, P, H, F| | From 8ce0c5dd34d0f23bc66db2dbb9a8234365da7fd9 Mon Sep 17 00:00:00 2001 From: Brent Westbrook Date: Fri, 8 Nov 2024 11:40:58 -0500 Subject: [PATCH 3/3] update date --- .../README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/README.md b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/README.md index 1175aeb7..7a3edb45 100644 --- a/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/README.md +++ b/submissions/2024-11-08-Sulfur-Hessian-Training-Coverage-Supplement-v1.1/README.md @@ -10,7 +10,7 @@ Supplement v1.0`. ## General Information -* Date: 2024-09-18 +* Date: 2024-11-08 * Class: OpenFF Optimization Dataset * Purpose: Improve coverage in Sage * Name: OpenFF Sulfur Hessian Training Coverage Supplement v1.1