Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add single point jobs to the end of torsiondrives #167

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

jthorton
Copy link
Contributor

@jthorton jthorton commented Apr 27, 2022

Description

This PR expands the torsiondrive task with an optional second QC specification which is used to perform single-point energy evaluations on the optimised geometries to resolve the PES.
Implements #157

Todos

Notable points that this PR has either accomplished or will accomplish.

  • add tests
  • fix the CLI arguments to reflect the new options

Questions

  • Question1

Status

  • Ready to go

@codecov
Copy link

codecov bot commented Apr 29, 2022

Codecov Report

Merging #167 (5c60118) into main (85c92a5) will increase coverage by 0.06%.
The diff coverage is 95.06%.

❗ Current head 5c60118 differs from pull request most recent head b7999db. Consider uploading reports for the commit b7999db to get more accurate results

Copy link
Contributor

@Yoshanuikabundi Yoshanuikabundi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't get this to work :( It works when I don't specify an evaluation engine, or when I use XTB or RDKit as the evaluation engine, but using XTB for optimization and Psi4 as evaluation fails. Confusingly, it fails with an error about not being able to find XTB. This doesn't seem to be an environment issue; the same code in the same Jupyter kernel works if I replace the evaluation QCSpec constructor call with the code from the default section.

Can you reproduce this? If not, I can try to get it into a test on CI so we have a common platform.

My code is:

from openff.bespokefit.workflows import BespokeWorkflowFactory
from openff.qcsubmit.common_structures import QCSpec
from openff.toolkit.topology import Molecule
from openff.bespokefit.schema.optimizers import ForceBalanceSchema
from openff.bespokefit.schema.smirnoff import ProperTorsionHyperparameters
from openff.bespokefit.schema.targets import TorsionProfileTargetSchema
from openff.bespokefit.executor import BespokeExecutor, BespokeWorkerConfig, wait_until_complete

factory = BespokeWorkflowFactory(
    default_qc_spec=QCSpec(
        method="gfn2xtb",
        basis=None,
        program="xtb",
        spec_name="xtb",
        spec_description="gfn2xtb",
    ),
    evaluation_qc_spec = QCSpec()
)


input_molecule = Molecule.from_smiles("C(C(=O)O)N")  # Glycine

workflow_schema = factory.optimization_schema_from_molecule(
    molecule=input_molecule
)

with BespokeExecutor(
    n_fragmenter_workers = 1,
    n_optimizer_workers = 1,
    n_qc_compute_workers = 2,
    qc_compute_worker_config=BespokeWorkerConfig(n_cores=1)
) as executor:
    # Submit our workflow to the executor
    task_id = executor.submit(input_schema=workflow_schema)
    # Wait until the executor is done
    output = wait_until_complete(task_id)

if output.status == "success":
    # Save the resulting force field to an OFFXML file
    output.bespoke_force_field.to_file("output-ff.offxml")
elif output.status == "errored":
    # OR the print the error message if unsuccessful
    print(output.error)

And I get the following error:

[✓] fragmentation successful

[x] qc-generation failed

                                                                                             
 [{"type": "ValueError", "message": "TorsionDrive error at -150:\ngeomeTRIC run_json         
 error:\nTraceback (most recent call last):\n  File \"/home/joshmitchell/conda/envs/bespokefi
 t/lib/python3.9/site-packages/geometric/run_json.py\", line 225, in geometric_run_json\n    
 geometric.optimize.Optimize(coords, M, IC, engine, None, params)\n  File \"/home/joshmitchel
 l/conda/envs/bespokefit/lib/python3.9/site-packages/geometric/optimize.py\", line 1331, in  
 Optimize\n    return optimizer.optimizeGeometry()\n  File \"/home/joshmitchell/conda/envs/be
 spokefit/lib/python3.9/site-packages/geometric/optimize.py\", line 1293, in                 
 optimizeGeometry\n    self.calcEnergyForce()\n  File \"/home/joshmitchell/conda/envs/bespoke
 fit/lib/python3.9/site-packages/geometric/optimize.py\", line 1002, in calcEnergyForce\n    
 spcalc = self.engine.calc(self.X, self.dirname)\n  File \"/home/joshmitchell/conda/envs/besp
 okefit/lib/python3.9/site-packages/geometric/engine.py\", line 873, in calc\n    return     
 self.calc_new(coords, dirname)\n  File \"/home/joshmitchell/conda/envs/bespokefit/lib/python
 3.9/site-packages/geometric/engine.py\", line 865, in calc_new\n    raise                   
 QCEngineAPIEngineError(\"QCEngineAPI computation did not execute correctly. Message: \" +   
 ret[\"error\"][\"error_message\"])\ngeometric.errors.QCEngineAPIEngineError: QCEngineAPI    
 computation did not execute correctly. Message: QCEngine Resource Error: Program xtb is     
 registered with QCEngine, but cannot be found.\n", "traceback": "Traceback (most recent call
 last):\n  File \"/home/joshmitchell/conda/envs/bespokefit/lib/python3.9/site-packages/celery
 /app/trace.py\", line 451, in trace_task\n    R = retval = fun(*args, **kwargs)\n  File \"/h
 ome/joshmitchell/conda/envs/bespokefit/lib/python3.9/site-packages/celery/app/trace.py\",   
 line 734, in __protected_call__\n    return self.run(*args, **kwargs)\n  File \"/home/joshmi
 tchell/Documents/openff/bespokefit/openff/bespokefit/executor/services/qcgenerator/worker.py
 \", line 182, in compute_torsion_drive\n    return_value = qcengine.compute_procedure(\n    
 File \"/home/joshmitchell/conda/envs/bespokefit/lib/python3.9/site-packages/qcengine/compute
 .py\", line 149, in compute_procedure\n    return handle_output_metadata(output_data,       
 metadata, raise_error=raise_error, return_dict=return_dict)\n  File                         
 \"/home/joshmitchell/conda/envs/bespokefit/lib/python3.9/site-packages/qcengine/util.py\",  
 line 177, in handle_output_metadata\n    raise                                              
 ValueError(output_fusion[\"error\"][\"error_message\"])\nValueError: TorsionDrive error at  
 -150:\ngeomeTRIC run_json error:\nTraceback (most recent call last):\n  File \"/home/joshmit
 chell/conda/envs/bespokefit/lib/python3.9/site-packages/geometric/run_json.py\", line 225,  
 in geometric_run_json\n    geometric.optimize.Optimize(coords, M, IC, engine, None,         
 params)\n  File \"/home/joshmitchell/conda/envs/bespokefit/lib/python3.9/site-packages/geome
 tric/optimize.py\", line 1331, in Optimize\n    return optimizer.optimizeGeometry()\n  File 
 \"/home/joshmitchell/conda/envs/bespokefit/lib/python3.9/site-packages/geometric/optimize.py
 \", line 1293, in optimizeGeometry\n    self.calcEnergyForce()\n  File \"/home/joshmitchell/
 conda/envs/bespokefit/lib/python3.9/site-packages/geometric/optimize.py\", line 1002, in    
 calcEnergyForce\n    spcalc = self.engine.calc(self.X, self.dirname)\n  File \"/home/joshmit
 chell/conda/envs/bespokefit/lib/python3.9/site-packages/geometric/engine.py\", line 873, in 
 calc\n    return self.calc_new(coords, dirname)\n  File \"/home/joshmitchell/conda/envs/besp
 okefit/lib/python3.9/site-packages/geometric/engine.py\", line 865, in calc_new\n    raise  
 QCEngineAPIEngineError(\"QCEngineAPI computation did not execute correctly. Message: \" +   
 ret[\"error\"][\"error_message\"])\ngeometric.errors.QCEngineAPIEngineError: QCEngineAPI    
 computation did not execute correctly. Message: QCEngine Resource Error: Program xtb is     
 registered with QCEngine, but cannot be found.\n\n"}]                                       
Here's my conda environment
# packages in environment at /home/joshmitchell/conda/envs/bespokefit:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       1_gnu    conda-forge
alabaster                 0.7.12                     py_0    conda-forge
ambit                     0.5.1                hbe8a562_1    psi4
amqp                      5.1.0              pyhd8ed1ab_0    conda-forge
anyio                     3.5.0            py39hf3d152e_0    conda-forge
argcomplete               2.0.0              pyhd8ed1ab_0    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0           py39h3811e60_1    conda-forge
arrow-cpp                 2.0.0           py39h5894ca3_15_cpu    conda-forge
asgiref                   3.5.0              pyhd8ed1ab_0    conda-forge
asttokens                 2.0.5              pyhd8ed1ab_0    conda-forge
astunparse                1.6.3              pyhd8ed1ab_0    conda-forge
attrs                     21.4.0             pyhd8ed1ab_0    conda-forge
autodoc-pydantic          1.6.1              pyhd8ed1ab_0    conda-forge
aws-c-common              0.4.59               h36c2ea0_1    conda-forge
aws-c-event-stream        0.1.6                had2084c_6    conda-forge
aws-checksums             0.1.10               h4e93380_0    conda-forge
aws-sdk-cpp               1.8.70               h57dc084_1    conda-forge
babel                     2.9.1              pyh44b312d_0    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
basis_set_exchange        0.9                pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.10.0                   pypi_0    pypi
billiard                  3.6.4.0          py39h3811e60_1    conda-forge
blas                      1.0                         mkl    conda-forge
bleach                    4.1.0              pyhd8ed1ab_0    conda-forge
blosc                     1.21.0               h9c3ff4c_0    conda-forge
boost                     1.74.0           py39h5472131_5    conda-forge
boost-cpp                 1.74.0               hc6e9bd1_3    conda-forge
brotli                    1.0.9                h7f98852_6    conda-forge
brotli-bin                1.0.9                h7f98852_6    conda-forge
brotlipy                  0.7.0           py39h3811e60_1003    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.18.1               h7f98852_0    conda-forge
ca-certificates           2022.5.18            ha878542_0    conda-forge
cached-property           1.5.2                hd8ed1ab_1    conda-forge
cached_property           1.5.2              pyha770c72_1    conda-forge
cachetools                5.0.0              pyhd8ed1ab_0    conda-forge
cairo                     1.16.0            h6cf1ce9_1008    conda-forge
celery                    5.2.3              pyhd8ed1ab_0    conda-forge
certifi                   2022.5.18        py39hf3d152e_0    conda-forge
cffi                      1.15.0           py39h4bc2ebd_0    conda-forge
charset-normalizer        2.0.12             pyhd8ed1ab_0    conda-forge
chemper                   1.0.0              pyh9f0ad1d_0    conda-forge
chemps2                   1.8.10               hbe8a562_0    psi4
click                     8.0.4            py39hf3d152e_0    conda-forge
click-didyoumean          0.3.0              pyhd8ed1ab_0    conda-forge
click-option-group        0.5.3              pyhd8ed1ab_1    conda-forge
click-plugins             1.1.1                      py_0    conda-forge
click-repl                0.2.0              pyhd8ed1ab_0    conda-forge
codecov                   2.1.11             pyhd3deb0d_0    conda-forge
colorama                  0.4.4              pyh9f0ad1d_0    conda-forge
commonmark                0.9.1                      py_0    conda-forge
coverage                  6.3.2            py39hb9d737c_1    conda-forge
cryptography              36.0.0           py39h9ce1e76_0  
css-html-js-minify        2.5.5                    pypi_0    pypi
cudatoolkit               11.6.0              habf752d_10    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
dataclasses               0.8                pyhc8e2a94_3    conda-forge
debugpy                   1.5.1            py39he80948d_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
deprecated                1.2.13             pyh6c4a22f_0    conda-forge
dftd3                     3.2.1                h84218bc_2    psi4
dkh                       1.2                  h173d85e_2    psi4
docutils                  0.17.1           py39hf3d152e_1    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
executing                 0.8.3              pyhd8ed1ab_0    conda-forge
fastapi                   0.75.0             pyhd8ed1ab_0    conda-forge
fftw                      3.3.9                h27cfd23_1  
flit-core                 3.7.1              pyhd8ed1ab_0    conda-forge
fontconfig                2.13.96              ha180cfb_0    conda-forge
fonttools                 4.29.1           py39h3811e60_0    conda-forge
forcebalance              1.9.2            py39h5472131_1    conda-forge
freetype                  2.10.4               h0708190_1    conda-forge
future                    0.18.2           py39hf3d152e_4    conda-forge
gau2grid                  2.0.7                hd18ef5c_0    psi4
gcp                       2.0.2                he991be0_2    psi4
gdma                      2.2.6                h0e1e685_6    psi4
geometric                 0.9.7.2                    py_0    conda-forge
gettext                   0.19.8.1          h73d1719_1008    conda-forge
gflags                    2.2.2             he1b5a44_1004    conda-forge
glog                      0.4.0                h49b9bf7_3    conda-forge
greenlet                  1.1.2            py39he80948d_1    conda-forge
grpc-cpp                  1.34.1               h2157cd5_4  
h11                       0.12.0             pyhd8ed1ab_0    conda-forge
h2                        4.1.0            py39hf3d152e_0    conda-forge
h5py                      3.1.0           nompi_py39h25020de_100    conda-forge
hdf5                      1.10.6          nompi_h3c11f04_101    conda-forge
hpack                     4.0.0              pyh9f0ad1d_0    conda-forge
httpcore                  0.14.7             pyhd8ed1ab_0    conda-forge
httpx                     0.22.0           py39hf3d152e_0    conda-forge
hyperframe                6.0.1              pyhd8ed1ab_0    conda-forge
icu                       68.2                 h9c3ff4c_0    conda-forge
idna                      3.3                pyhd8ed1ab_0    conda-forge
imagesize                 1.3.0              pyhd8ed1ab_0    conda-forge
importlib-metadata        4.11.2           py39hf3d152e_0    conda-forge
importlib_metadata        4.11.2               hd8ed1ab_0    conda-forge
importlib_resources       5.4.0              pyhd8ed1ab_0    conda-forge
iniconfig                 1.1.1              pyh9f0ad1d_0    conda-forge
intel-openmp              2021.4.0          h06a4308_3561  
ipykernel                 6.9.1            py39hef51801_0    conda-forge
ipython                   8.1.1            py39hf3d152e_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                7.6.5              pyhd8ed1ab_0    conda-forge
jedi                      0.18.1           py39hf3d152e_0    conda-forge
jinja2                    3.0.3              pyhd8ed1ab_0    conda-forge
jpeg                      9e                   h7f98852_0    conda-forge
jsonschema                4.4.0              pyhd8ed1ab_0    conda-forge
jupyter_client            7.1.2              pyhd8ed1ab_0    conda-forge
jupyter_core              4.9.2            py39hf3d152e_0    conda-forge
jupyterlab_pygments       0.1.2              pyh9f0ad1d_0    conda-forge
jupyterlab_widgets        1.0.2              pyhd8ed1ab_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
kiwisolver                1.3.2            py39h1a9c180_1    conda-forge
kombu                     5.2.4            py39hf3d152e_0    conda-forge
krb5                      1.19.2               h08a2579_4    conda-forge
latexcodec                2.0.1              pyh9f0ad1d_0    conda-forge
lcms2                     2.12                 hddcbb42_0    conda-forge
ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
libblas                   3.9.0            12_linux64_mkl    conda-forge
libbrotlicommon           1.0.9                h7f98852_6    conda-forge
libbrotlidec              1.0.9                h7f98852_6    conda-forge
libbrotlienc              1.0.9                h7f98852_6    conda-forge
libcblas                  3.9.0            12_linux64_mkl    conda-forge
libcurl                   7.81.0               h494985f_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libevent                  2.1.10               h28343ad_4    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 11.2.0              h1d223b6_13    conda-forge
libgfortran-ng            7.5.0               h14aa051_20    conda-forge
libgfortran4              7.5.0               h14aa051_20    conda-forge
libglib                   2.70.2               h174f98d_4    conda-forge
libgomp                   11.2.0              h1d223b6_13    conda-forge
libiconv                  1.16                 h516909a_0    conda-forge
libint2                   2.6.0                hc9558a2_9    psi4
liblapack                 3.9.0            12_linux64_mkl    conda-forge
libnghttp2                1.47.0               he49606f_0    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libpng                    1.6.37               h21135ba_2    conda-forge
libprotobuf               3.14.0               h780b84a_0    conda-forge
libsass                   0.21.0                   pypi_0    pypi
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libssh2                   1.10.0               ha35d2d1_2    conda-forge
libstdcxx-ng              11.2.0              he4da1e4_13    conda-forge
libthrift                 0.13.0               hfb8234f_6  
libtiff                   4.2.0                hbd63e13_2    conda-forge
libutf8proc               2.7.0                h7f98852_0    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libwebp-base              1.2.2                h7f98852_1    conda-forge
libxc                     5.1.5                h84b9e52_1    psi4
libxcb                    1.13              h7f98852_1004    conda-forge
libxml2                   2.9.12               h72842e0_0    conda-forge
libxslt                   1.1.33               h15afd5d_2    conda-forge
libzlib                   1.2.11            h36c2ea0_1013    conda-forge
lxml                      4.8.0            py39h107f48f_0    conda-forge
lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
lzo                       2.10              h516909a_1000    conda-forge
markdown-it-py            2.0.1              pyhd8ed1ab_0    conda-forge
markupsafe                2.1.0            py39hb9d737c_1    conda-forge
matplotlib-base           3.5.1            py39h2fa2bec_0    conda-forge
matplotlib-inline         0.1.3              pyhd8ed1ab_0    conda-forge
mdit-py-plugins           0.3.0              pyhd8ed1ab_0    conda-forge
mdtraj                    1.9.7            py39h138c130_1    conda-forge
mdurl                     0.1.0              pyhd8ed1ab_0    conda-forge
mistune                   0.8.4           py39h3811e60_1005    conda-forge
mkl                       2021.4.0           h06a4308_640  
mkl-service               2.4.0            py39h7e14d7c_0    conda-forge
mock                      4.0.3            py39hf3d152e_2    conda-forge
msgpack-python            1.0.3            py39h1a9c180_0    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
myst-parser               0.17.0             pyhd8ed1ab_0    conda-forge
nbclient                  0.5.12             pyhd8ed1ab_0    conda-forge
nbconvert                 6.4.2            py39hf3d152e_0    conda-forge
nbformat                  5.1.3              pyhd8ed1ab_0    conda-forge
ncurses                   6.3                  h9c3ff4c_0    conda-forge
nest-asyncio              1.5.4              pyhd8ed1ab_0    conda-forge
networkx                  2.7.1              pyhd8ed1ab_0    conda-forge
nglview                   3.0.3              pyh8a188c0_0    conda-forge
notebook                  6.4.8              pyha770c72_0    conda-forge
numexpr                   2.7.3            py39hde0f152_1    conda-forge
numpy                     1.22.2           py39h91f2184_0    conda-forge
ocl-icd                   2.3.1                h7f98852_0    conda-forge
ocl-icd-system            1.0.0                         1    conda-forge
olefile                   0.46               pyh9f0ad1d_1    conda-forge
openeye-toolkits          2021.2.0                 py39_0    openeye
openff-bespokefit         0.1.0+1.gf93a353.dirty           dev_0    
openff-forcefields        2.0.0              pyh6c4a22f_0    conda-forge
openff-fragmenter-base    0.1.2              pyhd8ed1ab_0    conda-forge
openff-qcsubmit           0.3.0              pyhd8ed1ab_0    conda-forge
openff-sphinx-theme       0.0.32+139.ge7f8151          pypi_0    pypi
openff-toolkit-base       0.10.3             pyhd8ed1ab_0    conda-forge
openff-utilities          0.1.3              pyh6c4a22f_0    conda-forge
openjpeg                  2.4.0                hb52868f_1    conda-forge
openmm                    7.6.0            py39h71eca04_0    conda-forge
openssl                   3.0.3                h166bdaf_0    conda-forge
orc                       1.6.6                h7950760_1    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandas                    1.4.1            py39hde0f152_0    conda-forge
pandoc                    2.17.1.1             ha770c72_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
parquet-cpp               1.5.1                         1    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pcmsolver                 1.2.1.1          py39h6d17ec8_2    psi4
pcre                      8.45                 h9c3ff4c_0    conda-forge
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5           py39hde42818_1002    conda-forge
pillow                    8.2.0            py39hf95b381_1    conda-forge
pint                      0.17               pyhd8ed1ab_0    psi4
pip                       22.0.4             pyhd8ed1ab_0    conda-forge
pixman                    0.40.0               h36c2ea0_0    conda-forge
plotly                    5.6.0              pyhd8ed1ab_0    conda-forge
pluggy                    1.0.0            py39hf3d152e_2    conda-forge
prometheus_client         0.13.1             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.27             pyha770c72_0    conda-forge
prompt_toolkit            3.0.27               hd8ed1ab_0    conda-forge
psi4                      1.5+e9f4d6d      py39hbf93d9d_0    psi4
psutil                    5.9.0            py39h3811e60_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                        1.11.0             pyh6c4a22f_0    conda-forge
py-cpuinfo                8.0.0              pyhd8ed1ab_0    conda-forge
pyarrow                   2.0.0           py39h3ebc44c_15_cpu    conda-forge
pybtex                    0.24.0           py39hf3d152e_1    conda-forge
pybtex-docutils           1.0.1            py39hf3d152e_1    conda-forge
pycairo                   1.21.0           py39h0934665_0    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pydantic                  1.9.0            py39h3811e60_0    conda-forge
pygments                  2.11.2             pyhd8ed1ab_0    conda-forge
pymbar                    3.0.6            py39hce5d2b2_0    conda-forge
pyopenssl                 22.0.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.7              pyhd8ed1ab_0    conda-forge
pyrsistent                0.18.1           py39h3811e60_0    conda-forge
pysocks                   1.7.1            py39hf3d152e_4    conda-forge
pytables                  3.6.1            py39hf6dc253_3    conda-forge
pytest                    7.0.1            py39hf3d152e_0    conda-forge
pytest-asyncio            0.18.2             pyhd8ed1ab_0    conda-forge
pytest-celery             0.0.0a1            pyh9f0ad1d_1    conda-forge
pytest-cov                3.0.0              pyhd8ed1ab_0    conda-forge
python                    3.9.10          hc74c709_2_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-slugify            6.1.1                    pypi_0    pypi
python_abi                3.9                      2_cp39    conda-forge
pytz                      2021.3             pyhd8ed1ab_0    conda-forge
pyyaml                    6.0              py39h3811e60_3    conda-forge
pyzmq                     22.3.0           py39h37b5a0c_1    conda-forge
qcelemental               0.24.0             pyhd8ed1ab_0    psi4
qcengine                  0.22.0             pyhd8ed1ab_0    psi4
qcportal                  0.15.8             pyhd8ed1ab_0    conda-forge
rdkit                     2021.09.5        py39h89e00b9_0    conda-forge
re2                       2020.11.01           h58526e2_0    conda-forge
readline                  8.1                  h46c0cb4_0    conda-forge
redis-py                  4.1.4              pyhd8ed1ab_1    conda-forge
redis-server              6.2.6                h28343ad_0    conda-forge
regex                     2022.3.2         py39hb9d737c_0    conda-forge
reportlab                 3.5.68           py39he59360d_1    conda-forge
requests                  2.27.1             pyhd8ed1ab_0    conda-forge
requests-mock             1.9.3              pyhd8ed1ab_0    conda-forge
rfc3986                   1.5.0              pyhd8ed1ab_0    conda-forge
rich                      11.2.0             pyhd8ed1ab_0    conda-forge
scipy                     1.5.3            py39hf3f25e7_0    conda-forge
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                59.6.0           py39hf3d152e_0    conda-forge
simint                    0.7                  h642920c_1    psi4
six                       1.16.0             pyh6c4a22f_0    conda-forge
smirnoff99frosst          1.1.0              pyh44b312d_0    conda-forge
snappy                    1.1.8                he1b5a44_3    conda-forge
sniffio                   1.2.0            py39hf3d152e_2    conda-forge
snowballstemmer           2.2.0              pyhd8ed1ab_0    conda-forge
soupsieve                 2.3.1                    pypi_0    pypi
sphinx                    4.4.0              pyh6c4a22f_1    conda-forge
sphinx-click              3.1.0              pyhd8ed1ab_0    conda-forge
sphinx-notfound-page      0.8                pyhd8ed1ab_0    conda-forge
sphinxcontrib-applehelp   1.0.2                      py_0    conda-forge
sphinxcontrib-bibtex      2.4.1              pyhd8ed1ab_0    conda-forge
sphinxcontrib-devhelp     1.0.2                      py_0    conda-forge
sphinxcontrib-htmlhelp    2.0.0              pyhd8ed1ab_0    conda-forge
sphinxcontrib-jsmath      1.0.1                      py_0    conda-forge
sphinxcontrib-qthelp      1.0.3                      py_0    conda-forge
sphinxcontrib-serializinghtml 1.1.5              pyhd8ed1ab_1    conda-forge
sqlalchemy                1.4.32           py39hb9d737c_0    conda-forge
sqlite                    3.37.0               h9cd32fc_0    conda-forge
stack_data                0.2.0              pyhd8ed1ab_0    conda-forge
starlette                 0.17.1             pyhd8ed1ab_0    conda-forge
tenacity                  8.0.1              pyhd8ed1ab_0    conda-forge
terminado                 0.13.3           py39hf3d152e_0    conda-forge
testpath                  0.6.0              pyhd8ed1ab_0    conda-forge
text-unidecode            1.3                      pypi_0    pypi
tk                        8.6.12               h27826a3_0    conda-forge
toml                      0.10.2             pyhd8ed1ab_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
tornado                   6.1              py39h3811e60_2    conda-forge
torsiondrive              1.1.0              pyhd8ed1ab_0    conda-forge
tqdm                      4.63.0             pyhd8ed1ab_0    conda-forge
traitlets                 5.1.1              pyhd8ed1ab_0    conda-forge
typing-extensions         4.1.1                hd8ed1ab_0    conda-forge
typing_extensions         4.1.1              pyha770c72_0    conda-forge
tzdata                    2021e                he74cb21_0    conda-forge
unicodedata2              14.0.0           py39h3811e60_0    conda-forge
unidecode                 1.3.3                    pypi_0    pypi
urllib3                   1.26.8             pyhd8ed1ab_1    conda-forge
uvicorn                   0.17.5           py39hf3d152e_0    conda-forge
vine                      5.0.0              pyhd8ed1ab_1    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
webencodings              0.5.1                      py_1    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
widgetsnbextension        3.5.2            py39hf3d152e_1    conda-forge
wrapt                     1.13.3           py39h3811e60_1    conda-forge
xmltodict                 0.12.0                     py_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.7.2                h7f98852_0    conda-forge
xorg-libxau               1.0.9                h7f98852_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xorg-libxext              1.3.4                h7f98852_1    conda-forge
xorg-libxrender           0.9.10            h7f98852_1003    conda-forge
xorg-renderproto          0.11.1            h7f98852_1002    conda-forge
xorg-xextproto            7.3.0             h7f98852_1002    conda-forge
xorg-xproto               7.0.31            h7f98852_1007    conda-forge
xtb                       6.3.3                h323e27b_1    conda-forge
xtb-python                20.2             py39hbd71b63_2    conda-forge
xz                        5.2.5                h516909a_1    conda-forge
yaml                      0.2.5                h7f98852_2    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge
zipp                      3.7.0              pyhd8ed1ab_1    conda-forge
zlib                      1.2.11            h36c2ea0_1013    conda-forge
zstd                      1.4.9                ha95c52a_0    conda-forge

Comment on lines +127 to +131
default_qc_spec: QCSpec = Field(
default=QCSpec(),
description="The default specification (e.g. method, basis and program) to use when "
"performing any new QC calculations",
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a superior API, but it is also a breaking change. We should split this change out into its own PR so that it can be merged as part of a later major version bump, or alongside a deprecation warning.

Copy link
Contributor

@SimonBoothroyd SimonBoothroyd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking a pass at this @jthorton - I think this will be a really helpful feature!

It may be good to rephrase this as 'you can optionally set a different optimization spec' rather than 'you can optionally set a different evaluation spec' as it's probably this 'optimization spec' that users will optionally want to swap out?

You might also want to consider add the single point step as a separate celery task chained to the TD task (same with opt -> sp or hess -> sp) as an easier way to handle the caching. I can take a stab at this if you'd like!

Comment on lines +80 to +83
sp_specification: Optional[QCGenerationTask] = Field(
None,
description="An extra optional specification used to compute the reference energy surface on the optimised geometries.",
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be good to rejigger the classes here to be a bit more flexible as our initial design was maybe a bit rigid 😅

You could consider creating a QCModel class as kind of a lightweight alternative to the QCSpec class (or upstream this into QCSubmit) that defines both the program and model to use, but without extra unused fields such as names, descriptions, or QCF specific fields like storing wavefunctions:

class QCModel(Model):
    """Defines a specification for how a QC calculation should be performed, including 
    the level of theory to perform the calculation at and the program to use to perform the 
    calculation itself
    """

    program: str = Field(..., description="The program to use to evaluate the method and basis.")

and then replace the QCGenerationTask with a more appropriately named BaseQCTaskSpec class that has a calculation spec as a field rather than a separate model and program field:

class BaseQCTaskSpec(BaseModel, abc.ABC):
    """A base for classes that describe a particular task to perform that will require
    running one or more QC calculations to yield a property (e.g. energy, hessian, ...)
    of interest
    """"

    type: Literal["base-task"] = "base-task"

    calculation_model: QCModel = Field(
        ..., 
        description="The model that defines at what level of theory any requisite QC "
        "calculations should be performed."
    )

This could also be named something like evaluation_model, single_point_model, energy_model or something more creative that I can't think of...

In this way, you could then here instead introduce an optimization_model field and move this up next to the optimization_spec field. The calculation_model field then corresponds to the spec that the final energy, hessian, and gradients are evaluated used, as well as the spec used to perform the optimization if this isn't set. It would probably be good to also add this to the HessianTaskSpec as well for symmetry as we'll probably want the ability to do similar when computing hessians and optimised geometry ddE's!

Suggested change
sp_specification: Optional[QCGenerationTask] = Field(
None,
description="An extra optional specification used to compute the reference energy surface on the optimised geometries.",
)
optimization_model: Optional[QCGenerationTask] = Field(
None,
description="The (optional) QC model to used when performing the geometry optimization, prior to "
"evaluating properties of the final geometry using the ``calculation_model``. This is useful in cases "
"whereby you would like to optimize the geometry using a cheaper, less accurate, level of theory, but "
"evaluate the property of interest such as the energy or hessian at a more expensive but more accurate "
"level of theory. If ``None``, the ``calculation_model`` will be used.".
)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the thoughtful comments on this and I totally agree with the use of a new simple QCModel, I have wanted this in qcsubmit for a while now and it would be very useful as would still get the program, method and basis validation, if we create the separate model here we would lose that without repeating the code though.

I agree that reworking the naming does make more sense maybe having a calculation_specification and a optimization_specification would be best? I also like the proposed structure of the optimization_model.

For hessian and geometry optimisations this would have a different meaning in that the geometry is pre-optimised with the optimization_specification and then fully optimised with the calculation_specification and then an optional hessian calculation is performed. A hessian calculation not at a stationary point on that particular PES would not help our fitting otherwise.

Comment on lines 24 to +25
default_qc_spec: Optional[Tuple[str, str, str]],
evaluation_qc_spec: Optional[Tuple[str, str, str]],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be good to swap this to

Suggested change
default_qc_spec: Optional[Tuple[str, str, str]],
evaluation_qc_spec: Optional[Tuple[str, str, str]],
default_qc_spec: Optional[Tuple[str, str, str]],
optimization_qc_spec: Optional[Tuple[str, str, str]],

as the optimization spec is likely the optional thing users will want to tweak, rather than the final level of theory?

openff/bespokefit/executor/services/qcgenerator/worker.py Outdated Show resolved Hide resolved
@jthorton
Copy link
Contributor Author

@Yoshanuikabundi thanks for testing this out are you able to get it to work using the command line in testing I was able to get the following command to work openff-bespoke executor run --smiles 'CC(=O)NC1=CC=C(C=C1)O' --workflow default --output acetaminophen_ani1.json --directory bespoke-executor --output-force-field "acetaminophen_ani1.offxml" --n-qc-compute-workers 2 --qc-compute-n-cores 1 --default-qc-spec xtb gfn2xtb none --evaluation-qc-spec torchani ani1ccx none, I did have some issues when I tried this before mixing xtb and psi4 but I hit a different issue due to having too many open files see here.

@SimonBoothroyd thanks for adding the celery chain method as a better cache I can confirm this works locally in testing using mixes of xtb and torchani with and without the evaluation spec!

@Yoshanuikabundi
Copy link
Contributor

@jthorton That doesn't work for me either. I get an error No registered toolkits can provide the capability \"assign_fractional_bond_orders\". I get the same error on main if i remove the --evaluation-qc-spec argument, so it doesn't seem to have anything to do with this PR. OpenEye is installed and the license is available and detected: the following code in a Python interpreter from the same shell session and the same conda environment works:

>>> from openff.toolkit.utils import OpenEyeToolkitWrapper
Warning: Unable to load toolkit 'AmberTools'. 
>>> from openff.toolkit.topology import Molecule
>>> mol = Molecule.from_smiles('CC(=O)NC1=CC=C(C=C1)O')
>>> mol.assign_fractional_bond_orders(toolkit_registry=OpenEyeToolkitWrapper())
Warning: Cannot perform Hydrogen sampling with GPU-Omega: GPU-Omega disabled.
>>> [bond.fractional_bond_order for bond in mol.bonds]
[0.9328407302962394, 1.7896946473206128, 1.0503395974114669, 1.0077414418332689, 1.3542463038526484, 1.3665352067357714, 1.4201200930306779, 1.3590751548759754, 1.3497841291201231, 1.4360197031144404, 1.0592737737496132, 0.963580406289029, 0.9686460657691334, 0.9736420716448231, 0.8935818125657808, 0.949355386022238, 0.9478468145627605, 0.9455632868669739, 0.9326707086716735, 0.9276628547590544]

It seems like an environment issue, but I don't know what it could be. I also get the same error when I add AmberTools to the environment. I'll try it again when I get access to my old machine back, hopefully next week. Sorry that's not very useful!

Note: I had to run this command with ANSI colors switched off in the terminal to see it all, as part of the reported SMARTS code is an ANSI code.

Full error
$ openff-bespoke executor run --smiles 'CC(=O)NC1=CC=C(C=C1)O' --workflow default --output acetaminophen_ani1.json --directory bespoke-executor --output-force-field "acetaminophen_ani1.offxml" --n-qc-compute-workers 2 --qc-compute-n-cores 1 --default-qc-spec xtb gfn2xtb none --evaluation-qc-spec torchani ani1ccx none

──────────────────────────────── OpenFF Bespoke ────────────────────────────────

[✓] bespoke executor launched

  1. preparing the bespoke workflow

[✓] 1 molecules found

[✓] fitting schemas generated

  1. submitting the workflow

[✓] the following workflows were submitted
┏━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━┓
┃ ID ┃ SMILES ┃ NAME ┃ FILE ┃
┡━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━┩
│ 12 │ CC(=O)Nc1ccc(cc1)O │ │ │
└────┴────────────────────┴──────┴──────┘

  1. running the fitting pipeline

[x] fragmentation failed

{"type": "ValueError", "message": "No registered toolkits can provide the
capability "assign_fractional_bond_orders" for args "(Molecule with name ''
and SMILES '[H][O]1([H])([H])(NCC([H])[H])([H])1[H]',)"
and kwargs "{'bond_order_model': 'am1-wiberg', 'use_conformers':
[Quantity(value=array([[ 2.24911949, -1.47261285, 0.207818 ],\n
[-4.21329125, -0.57656482, 0.23257194],\n [ 2.40007338, -0.30431792,
-0.17600956],\n [-2.39157376, 0.8526917 , -0.50057714],\n
[-1.91738127, -1.20517405, 0.50314511],\n [-1.05530538, 1.11748384,
-0.65326789],\n [-0.53942567, -0.93845127, 0.34893023],\n
[-2.86344354, -0.30504898, 0.0764824 ],\n [-0.07667171, 0.20498928,
-0.22125397],\n [ 1.29201863, 0.52814922, -0.39303275],\n [
3.78441043, 0.2012053 , -0.40337659],\n [-4.7311819 , -0.3018309 ,
1.07003163],\n [-3.14797413, 1.55933813, -0.8354672 ],\n
[-2.19534914, -2.13150532, 0.96319667],\n [-0.71244019, 2.04181227,
-1.11349458],\n [ 0.16708439, -1.68570733, 0.71143109],\n [
1.53540063, 1.52559672, -0.72823467],\n [ 3.82537915, 1.03230599,
-1.12129501],\n [ 4.1941679 , 0.48872783, 0.58515529],\n [
4.39638395, -0.63108684, -0.85396505]]), unit=angstrom)]}"\nAvailable toolkits
are: [ToolkitWrapper around The RDKit version 2022.03.2, ToolkitWrapper around
Built-in Toolkit version None]\n", "traceback": "Traceback (most recent call
last):\n File "/home/joshmitchell/Documents/openff/bespokefit/.soap/test/lib/
python3.9/site-packages/celery/app/trace.py", line 451, in trace_task\n R =
retval = fun(*args, **kwargs)\n File "/home/joshmitchell/Documents/openff/bes
pokefit/.soap/test/lib/python3.9/site-packages/celery/app/trace.py", line 734,
in protected_call\n return self.run(*args, **kwargs)\n File "/home/jos
hmitchell/Documents/openff/bespokefit/openff/bespokefit/executor/services/fragm
enter/worker.py", line 37, in fragment\n fragmenter.fragment(molecule,
target_bond_smarts=target_bond_smarts)\n File "/home/joshmitchell/Documents/o
penff/bespokefit/.soap/test/lib/python3.9/site-packages/openff/fragmenter/fragm
ent.py", line 916, in fragment\n result = self._fragment(molecule,
target_bond_smarts)\n File "/home/joshmitchell/Documents/openff/bespokefit/.s
oap/test/lib/python3.9/site-packages/openff/fragmenter/fragment.py", line
1012, in _fragment\n molecule = assign_elf10_am1_bond_orders(\n File "/hom
e/joshmitchell/Documents/openff/bespokefit/.soap/test/lib/python3.9/site-packag
es/openff/fragmenter/chemi.py", line 48, in assign_elf10_am1_bond_orders\n
molecule.assign_fractional_bond_orders("am1-wiberg", use_conformers=)\n File
"/home/joshmitchell/Documents/openff/bespokefit/.soap/test/lib/python3.9/site-
packages/openff/toolkit/topology/molecule.py", line 3473, in
assign_fractional_bond_orders\n return toolkit_registry.call(\n File "/hom
e/joshmitchell/Documents/openff/bespokefit/.soap/test/lib/python3.9/site-packag
es/openff/toolkit/utils/toolkit_registry.py", line 380, in call\n raise
ValueError(msg)\nValueError: No registered toolkits can provide the capability
"assign_fractional_bond_orders" for args "(Molecule with name '' and SMILES
'[H][O]1([H])([H])(NCC([H])[H])([H])1[H]',)" and kwargs
"{'bond_order_model': 'am1-wiberg', 'use_conformers': [Quantity(value=array([[
2.24911949, -1.47261285, 0.207818 ],\n [-4.21329125, -0.57656482,
0.23257194],\n [ 2.40007338, -0.30431792, -0.17600956],\n
[-2.39157376, 0.8526917 , -0.50057714],\n [-1.91738127, -1.20517405,
0.50314511],\n [-1.05530538, 1.11748384, -0.65326789],\n
[-0.53942567, -0.93845127, 0.34893023],\n [-2.86344354, -0.30504898,
0.0764824 ],\n [-0.07667171, 0.20498928, -0.22125397],\n [
1.29201863, 0.52814922, -0.39303275],\n [ 3.78441043, 0.2012053 ,
-0.40337659],\n [-4.7311819 , -0.3018309 , 1.07003163],\n
[-3.14797413, 1.55933813, -0.8354672 ],\n [-2.19534914, -2.13150532,
0.96319667],\n [-0.71244019, 2.04181227, -1.11349458],\n [
0.16708439, -1.68570733, 0.71143109],\n [ 1.53540063, 1.52559672,
-0.72823467],\n [ 3.82537915, 1.03230599, -1.12129501],\n [
4.1941679 , 0.48872783, 0.58515529],\n [ 4.39638395, -0.63108684,
-0.85396505]]), unit=angstrom)]}"\nAvailable toolkits are: [ToolkitWrapper
around The RDKit version 2022.03.2, ToolkitWrapper around Built-in Toolkit
version None]\n\n"}

outputs have been saved to acetaminophen_ani1.json

worker: Warm shutdown (MainProcess)

worker: Warm shutdown (MainProcess)

worker: Warm shutdown (MainProcess)

My environment is below. Note that it does include OpenEye. This environment was created directly from the test.yaml conda env file on this branch:

Conda env
# packages in environment at /home/joshmitchell/Documents/openff/bespokefit/.soap/test:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
amqp                      5.1.1              pyhd8ed1ab_0    conda-forge
anyio                     3.6.1            py39hf3d152e_0    conda-forge
argcomplete               2.0.0              pyhd8ed1ab_0    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0           py39hb9d737c_2    conda-forge
arrow-cpp                 2.0.0           py39h5894ca3_15_cpu    conda-forge
asgiref                   3.5.2              pyhd8ed1ab_0    conda-forge
asttokens                 2.0.5              pyhd8ed1ab_0    conda-forge
astunparse                1.6.3              pyhd8ed1ab_0    conda-forge
async-timeout             4.0.2              pyhd8ed1ab_0    conda-forge
attrs                     21.4.0             pyhd8ed1ab_0    conda-forge
aws-c-common              0.4.59               h36c2ea0_1    conda-forge
aws-c-event-stream        0.1.6                had2084c_6    conda-forge
aws-checksums             0.1.10               h4e93380_0    conda-forge
aws-sdk-cpp               1.8.70               h57dc084_1    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
basis_set_exchange        0.9                pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.11.1             pyha770c72_0    conda-forge
billiard                  3.6.4.0          py39hb9d737c_2    conda-forge
bleach                    5.0.0              pyhd8ed1ab_0    conda-forge
blosc                     1.21.1               hd32f23e_0    conda-forge
boost                     1.74.0           py39h5472131_5    conda-forge
boost-cpp                 1.74.0               hc6e9bd1_3    conda-forge
brotli                    1.0.9                h166bdaf_7    conda-forge
brotli-bin                1.0.9                h166bdaf_7    conda-forge
brotlipy                  0.7.0           py39hb9d737c_1004    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.18.1               h7f98852_0    conda-forge
ca-certificates           2022.5.18.1          ha878542_0    conda-forge
cached-property           1.5.2                hd8ed1ab_1    conda-forge
cached_property           1.5.2              pyha770c72_1    conda-forge
cachetools                5.0.0              pyhd8ed1ab_0    conda-forge
cairo                     1.16.0            h6cf1ce9_1008    conda-forge
celery                    5.2.7              pyhd8ed1ab_0    conda-forge
certifi                   2022.5.18.1      py39hf3d152e_0    conda-forge
cffi                      1.15.0           py39h4bc2ebd_0    conda-forge
charset-normalizer        2.0.12             pyhd8ed1ab_0    conda-forge
chemper                   1.0.0              pyh9f0ad1d_0    conda-forge
click                     8.1.3            py39hf3d152e_0    conda-forge
click-didyoumean          0.3.0              pyhd8ed1ab_0    conda-forge
click-option-group        0.5.3              pyhd8ed1ab_1    conda-forge
click-plugins             1.1.1                      py_0    conda-forge
click-repl                0.2.0              pyhd8ed1ab_0    conda-forge
codecov                   2.1.11             pyhd3deb0d_0    conda-forge
colorama                  0.4.4              pyh9f0ad1d_0    conda-forge
commonmark                0.9.1                      py_0    conda-forge
coverage                  6.4              py39hb9d737c_0    conda-forge
cryptography              37.0.1           py39h9ce1e76_0  
cudatoolkit               11.7.0              hd8887f6_10    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
dataclasses               0.8                pyhc8e2a94_3    conda-forge
debugpy                   1.6.0            py39h5a03fae_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
deprecated                1.2.13             pyh6c4a22f_0    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
executing                 0.8.3              pyhd8ed1ab_0    conda-forge
expat                     2.4.8                h27087fc_0    conda-forge
fastapi                   0.78.0             pyhd8ed1ab_0    conda-forge
fftw                      3.3.10          nompi_h77c792f_102    conda-forge
flit-core                 3.7.1              pyhd8ed1ab_0    conda-forge
fontconfig                2.14.0               h8e229c2_0    conda-forge
fonttools                 4.33.3           py39hb9d737c_0    conda-forge
forcebalance              1.9.3            py39hac2352c_0    conda-forge
freetype                  2.10.4               h0708190_1    conda-forge
future                    0.18.2           py39hf3d152e_5    conda-forge
geometric                 0.9.7.2                    py_0    conda-forge
gettext                   0.19.8.1          h73d1719_1008    conda-forge
gflags                    2.2.2             he1b5a44_1004    conda-forge
glog                      0.4.0                h49b9bf7_3    conda-forge
greenlet                  1.1.2            py39h5a03fae_2    conda-forge
grpc-cpp                  1.34.1               h2157cd5_4  
h11                       0.12.0             pyhd8ed1ab_0    conda-forge
h2                        4.1.0              pyhd8ed1ab_0    conda-forge
h5py                      3.6.0           nompi_py39h7e08c79_100    conda-forge
hdf5                      1.12.1          nompi_h4df4325_104    conda-forge
hpack                     4.0.0              pyh9f0ad1d_0    conda-forge
httpcore                  0.15.0             pyhd8ed1ab_0    conda-forge
httpx                     0.23.0           py39hf3d152e_0    conda-forge
hyperframe                6.0.1              pyhd8ed1ab_0    conda-forge
icu                       68.2                 h9c3ff4c_0    conda-forge
idna                      3.3                pyhd8ed1ab_0    conda-forge
importlib-metadata        4.11.4           py39hf3d152e_0    conda-forge
importlib_metadata        4.11.4               hd8ed1ab_0    conda-forge
importlib_resources       5.7.1              pyhd8ed1ab_1    conda-forge
iniconfig                 1.1.1              pyh9f0ad1d_0    conda-forge
ipykernel                 6.13.0           py39hef51801_0    conda-forge
ipython                   8.4.0            py39hf3d152e_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                7.7.0              pyhd8ed1ab_0    conda-forge
jedi                      0.18.1           py39hf3d152e_1    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_0    conda-forge
jpeg                      9e                   h166bdaf_1    conda-forge
jsonschema                4.5.1              pyhd8ed1ab_0    conda-forge
jupyter_client            7.3.1              pyhd8ed1ab_0    conda-forge
jupyter_core              4.10.0           py39hf3d152e_0    conda-forge
jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
jupyterlab_widgets        1.1.0              pyhd8ed1ab_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
kiwisolver                1.4.2            py39hf939315_1    conda-forge
kombu                     5.2.4            py39hf3d152e_1    conda-forge
krb5                      1.19.3               h08a2579_0    conda-forge
lcms2                     2.12                 hddcbb42_0    conda-forge
ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
libblas                   3.9.0           14_linux64_openblas    conda-forge
libbrotlicommon           1.0.9                h166bdaf_7    conda-forge
libbrotlidec              1.0.9                h166bdaf_7    conda-forge
libbrotlienc              1.0.9                h166bdaf_7    conda-forge
libcblas                  3.9.0           14_linux64_openblas    conda-forge
libcurl                   7.83.1               h2283fc2_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libevent                  2.1.10               h28343ad_4    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 12.1.0              h8d9b700_16    conda-forge
libgfortran-ng            12.1.0              h69a702a_16    conda-forge
libgfortran5              12.1.0              hdcd56e2_16    conda-forge
libglib                   2.70.2               h174f98d_4    conda-forge
libgomp                   12.1.0              h8d9b700_16    conda-forge
libiconv                  1.16                 h516909a_0    conda-forge
liblapack                 3.9.0           14_linux64_openblas    conda-forge
libnghttp2                1.47.0               he49606f_0    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libopenblas               0.3.20          pthreads_h78a6416_0    conda-forge
libpng                    1.6.37               h21135ba_2    conda-forge
libprotobuf               3.14.0               h780b84a_0    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libssh2                   1.10.0               ha35d2d1_2    conda-forge
libstdcxx-ng              12.1.0              ha89aaad_16    conda-forge
libthrift                 0.13.0               hfb8234f_6  
libtiff                   4.2.0                hbd63e13_2    conda-forge
libutf8proc               2.7.0                h7f98852_0    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libwebp-base              1.2.2                h7f98852_1    conda-forge
libxcb                    1.13              h7f98852_1004    conda-forge
libxml2                   2.9.10               h72842e0_4    conda-forge
libxslt                   1.1.33               h15afd5d_2    conda-forge
libzlib                   1.2.12               h166bdaf_0    conda-forge
lxml                      4.8.0            py39hb9d737c_3    conda-forge
lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
lzo                       2.10              h516909a_1000    conda-forge
markupsafe                2.1.1            py39hb9d737c_1    conda-forge
matplotlib-base           3.5.2            py39h700656a_0    conda-forge
matplotlib-inline         0.1.3              pyhd8ed1ab_0    conda-forge
mdtraj                    1.9.7            py39h138c130_1    conda-forge
mistune                   0.8.4           py39h3811e60_1005    conda-forge
msgpack-python            1.0.3            py39hf939315_1    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
nbclient                  0.6.3              pyhd8ed1ab_0    conda-forge
nbconvert                 6.5.0              pyhd8ed1ab_0    conda-forge
nbconvert-core            6.5.0              pyhd8ed1ab_0    conda-forge
nbconvert-pandoc          6.5.0              pyhd8ed1ab_0    conda-forge
nbformat                  5.4.0              pyhd8ed1ab_0    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
nest-asyncio              1.5.5              pyhd8ed1ab_0    conda-forge
networkx                  2.8.2              pyhd8ed1ab_0    conda-forge
nglview                   3.0.3              pyh8a188c0_0    conda-forge
nomkl                     1.0                  h5ca1d4c_0    conda-forge
notebook                  6.4.11             pyha770c72_0    conda-forge
numexpr                   2.8.0           py39h194a79d_102    conda-forge
numpy                     1.22.4           py39hc58783e_0    conda-forge
ocl-icd                   2.3.1                h7f98852_0    conda-forge
ocl-icd-system            1.0.0                         1    conda-forge
olefile                   0.46               pyh9f0ad1d_1    conda-forge
openeye-toolkits          2021.2.0                 py39_0    openeye
openff-bespokefit         0.1.1+15.gb7999db.dirty           dev_0    
openff-forcefields        2.0.0              pyh6c4a22f_0    conda-forge
openff-fragmenter-base    0.1.2              pyhd8ed1ab_0    conda-forge
openff-qcsubmit           0.3.1              pyhd8ed1ab_0    conda-forge
openff-toolkit-base       0.10.6             pyhd8ed1ab_0    conda-forge
openff-utilities          0.1.3              pyh6c4a22f_0    conda-forge
openjpeg                  2.4.0                hb52868f_1    conda-forge
openmm                    7.7.0            py39h15fbce5_1    conda-forge
openssl                   3.0.3                h166bdaf_0    conda-forge
orc                       1.6.6                h7950760_1    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandas                    1.4.2            py39h1832856_2    conda-forge
pandoc                    2.18                 ha770c72_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
parquet-cpp               1.5.1                         2    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pcre                      8.45                 h9c3ff4c_0    conda-forge
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    8.2.0            py39hf95b381_1    conda-forge
pint                      0.19.2             pyhd8ed1ab_0    conda-forge
pip                       22.1.1             pyhd8ed1ab_0    conda-forge
pixman                    0.40.0               h36c2ea0_0    conda-forge
plotly                    5.8.0              pyhd8ed1ab_1    conda-forge
pluggy                    1.0.0            py39hf3d152e_3    conda-forge
prometheus_client         0.14.1             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.29             pyha770c72_0    conda-forge
prompt_toolkit            3.0.29               hd8ed1ab_0    conda-forge
psutil                    5.9.1            py39hb9d737c_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                        1.11.0             pyh6c4a22f_0    conda-forge
py-cpuinfo                8.0.0              pyhd8ed1ab_0    conda-forge
pyarrow                   2.0.0           py39h3ebc44c_15_cpu    conda-forge
pycairo                   1.21.0           py39h0934665_1    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pydantic                  1.9.1            py39hb9d737c_0    conda-forge
pygments                  2.12.0             pyhd8ed1ab_0    conda-forge
pymbar                    3.0.7            py39hd257fcd_0    conda-forge
pyopenssl                 22.0.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyrsistent                0.18.1           py39hb9d737c_1    conda-forge
pysocks                   1.7.1            py39hf3d152e_5    conda-forge
pytables                  3.7.0            py39h2669a42_0    conda-forge
pytest                    7.1.2            py39hf3d152e_0    conda-forge
pytest-asyncio            0.18.3             pyhd8ed1ab_0    conda-forge
pytest-celery             0.0.0a1            pyh9f0ad1d_1    conda-forge
pytest-cov                3.0.0              pyhd8ed1ab_0    conda-forge
python                    3.9.13          h2660328_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.15.3             pyhd8ed1ab_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pytz                      2022.1             pyhd8ed1ab_0    conda-forge
pyyaml                    6.0              py39hb9d737c_4    conda-forge
pyzmq                     23.0.0           py39headdf64_0    conda-forge
qcelemental               0.24.0             pyhd8ed1ab_0    conda-forge
qcengine                  0.23.0             pyhd8ed1ab_0    conda-forge
qcportal                  0.15.8             pyhd8ed1ab_0    conda-forge
rdkit                     2022.03.2        py39h89e00b9_1    conda-forge
re2                       2020.11.01           h58526e2_0    conda-forge
readline                  8.1                  h46c0cb4_0    conda-forge
redis-py                  4.3.1              pyhd8ed1ab_0    conda-forge
redis-server              7.0.0                h1b5e8cb_0    conda-forge
regex                     2022.4.24        py39hb9d737c_0    conda-forge
reportlab                 3.5.68           py39he59360d_1    conda-forge
requests                  2.27.1             pyhd8ed1ab_0    conda-forge
requests-mock             1.9.3              pyhd8ed1ab_0    conda-forge
rfc3986                   1.5.0              pyhd8ed1ab_0    conda-forge
rich                      12.4.4             pyhd8ed1ab_0    conda-forge
scipy                     1.8.1            py39he49c0e8_0    conda-forge
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                62.3.2           py39hf3d152e_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
smirnoff99frosst          1.1.0              pyh44b312d_0    conda-forge
snappy                    1.1.9                hbd366e4_1    conda-forge
sniffio                   1.2.0            py39hf3d152e_3    conda-forge
soupsieve                 2.3.1              pyhd8ed1ab_0    conda-forge
sqlalchemy                1.4.36           py39hb9d737c_0    conda-forge
sqlite                    3.38.5               h4ff8645_0    conda-forge
stack_data                0.2.0              pyhd8ed1ab_0    conda-forge
starlette                 0.19.1             pyhd8ed1ab_0    conda-forge
tenacity                  8.0.1              pyhd8ed1ab_0    conda-forge
terminado                 0.15.0           py39hf3d152e_0    conda-forge
tinycss2                  1.1.1              pyhd8ed1ab_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
toml                      0.10.2             pyhd8ed1ab_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
tornado                   6.1              py39hb9d737c_3    conda-forge
torsiondrive              1.1.0              pyhd8ed1ab_0    conda-forge
tqdm                      4.64.0             pyhd8ed1ab_0    conda-forge
traitlets                 5.2.1.post0        pyhd8ed1ab_0    conda-forge
typing-extensions         4.2.0                hd8ed1ab_1    conda-forge
typing_extensions         4.2.0              pyha770c72_1    conda-forge
tzdata                    2022a                h191b570_0    conda-forge
unicodedata2              14.0.0           py39hb9d737c_1    conda-forge
urllib3                   1.26.9             pyhd8ed1ab_0    conda-forge
uvicorn                   0.17.6           py39hf3d152e_1    conda-forge
vine                      5.0.0              pyhd8ed1ab_1    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
webencodings              0.5.1                      py_1    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
widgetsnbextension        3.6.0            py39hf3d152e_0    conda-forge
wrapt                     1.14.1           py39hb9d737c_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.7.2                h7f98852_0    conda-forge
xorg-libxau               1.0.9                h7f98852_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xorg-libxext              1.3.4                h7f98852_1    conda-forge
xorg-libxrender           0.9.10            h7f98852_1003    conda-forge
xorg-renderproto          0.11.1            h7f98852_1002    conda-forge
xorg-xextproto            7.3.0             h7f98852_1002    conda-forge
xorg-xproto               7.0.31            h7f98852_1007    conda-forge
xz                        5.2.5                h516909a_1    conda-forge
yaml                      0.2.5                h7f98852_2    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge
zipp                      3.8.0              pyhd8ed1ab_0    conda-forge
zlib                      1.2.12               h166bdaf_0    conda-forge
zstd                      1.4.9                ha95c52a_0    conda-forge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants