From 9a2d476066cf6d9002be4777035f3ac100507575 Mon Sep 17 00:00:00 2001 From: Mike Henry <11765982+mikemhenry@users.noreply.github.com> Date: Tue, 5 Mar 2024 15:15:39 -0700 Subject: [PATCH 1/5] use new openfe & gufe rc --- devtools/conda-envs/alchemiscale-client.yml | 6 ++++-- devtools/conda-envs/alchemiscale-compute.yml | 7 +++++-- devtools/conda-envs/alchemiscale-server.yml | 8 ++++++-- devtools/conda-envs/test.yml | 6 ++++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/devtools/conda-envs/alchemiscale-client.yml b/devtools/conda-envs/alchemiscale-client.yml index 09b47062..3e347732 100644 --- a/devtools/conda-envs/alchemiscale-client.yml +++ b/devtools/conda-envs/alchemiscale-client.yml @@ -3,13 +3,15 @@ channels: - jaimergp/label/unsupported-cudatoolkit-shim - conda-forge - openeye + - conda-forge/label/openfe_rc + - conda-forge/label/gufe_rc dependencies: - pip - python =3.10 # alchemiscale dependencies - - gufe=0.9.5 - - openfe=0.14.0 + - gufe=1.0.0rc0 + - openfe=1.0.0rc0 - openmmforcefields>=0.12.0 - requests - click diff --git a/devtools/conda-envs/alchemiscale-compute.yml b/devtools/conda-envs/alchemiscale-compute.yml index dd55d74c..6b6639e3 100644 --- a/devtools/conda-envs/alchemiscale-compute.yml +++ b/devtools/conda-envs/alchemiscale-compute.yml @@ -2,14 +2,17 @@ name: alchemiscale-compute channels: - conda-forge - openeye + - conda-forge/label/openfe_rc + - conda-forge/label/gufe_rc + dependencies: - pip - python =3.10 - cudatoolkit <=11.7 # many actual compute resources are not yet compatible with cudatoolkit >=11.8 # alchemiscale dependencies - - gufe=0.9.5 - - openfe=0.14.0 + - gufe=1.0.0rc0 + - openfe=1.0.0rc0 - openmmforcefields>=0.12.0 - requests - click diff --git a/devtools/conda-envs/alchemiscale-server.yml b/devtools/conda-envs/alchemiscale-server.yml index 26759cb4..fc86b797 100644 --- a/devtools/conda-envs/alchemiscale-server.yml +++ b/devtools/conda-envs/alchemiscale-server.yml @@ -3,13 +3,17 @@ channels: - jaimergp/label/unsupported-cudatoolkit-shim - conda-forge - openeye + - conda-forge/label/openfe_rc + - conda-forge/label/gufe_rc + dependencies: - pip - python =3.10 # alchemiscale dependencies - - gufe=0.9.5 - - openfe=0.14.0 + - gufe=1.0.0rc0 + - openfe=1.0.0rc0 + - openmmforcefields>=0.12.0 - requests - click diff --git a/devtools/conda-envs/test.yml b/devtools/conda-envs/test.yml index 14b41d89..2fa6ad48 100644 --- a/devtools/conda-envs/test.yml +++ b/devtools/conda-envs/test.yml @@ -2,12 +2,14 @@ name: alchemiscale-test channels: - jaimergp/label/unsupported-cudatoolkit-shim - conda-forge + - conda-forge/label/openfe_rc + - conda-forge/label/gufe_rc dependencies: - pip # alchemiscale dependencies - - gufe>=0.9.5 - - openfe>=0.14.0 + - gufe=1.0.0rc0 + - openfe=1.0.0rc0 - openmmforcefields>=0.12.0 - pydantic<2.0 From 328aa66831d9302975aefac99875ff2219a22f75 Mon Sep 17 00:00:00 2001 From: David Dotson Date: Tue, 12 Mar 2024 22:06:01 -0700 Subject: [PATCH 2/5] Fix for create_network in interface API, properly deserializing AlchemicalNetwork Previously, we were relying on `fastapi` to decode the JSON form of the request, which was not using `gufe.tokenization.JSON_HANDLER.decoder`. This resulted in `Settings` objects not being turned into `pydantic` models from `dict` form, which silently worked until now before changes in `gufe` for 1.0, in which `Protocol` now requires `settings` to be an actual `Settings` object on init. --- alchemiscale/interface/api.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/alchemiscale/interface/api.py b/alchemiscale/interface/api.py index 704e4d67..d723720d 100644 --- a/alchemiscale/interface/api.py +++ b/alchemiscale/interface/api.py @@ -9,7 +9,7 @@ import json from collections import Counter -from fastapi import FastAPI, APIRouter, Body, Depends, HTTPException +from fastapi import FastAPI, APIRouter, Body, Depends, HTTPException, Request from fastapi import status as http_status from fastapi.middleware.gzip import GZipMiddleware from gufe import AlchemicalNetwork, ChemicalSystem, Transformation @@ -108,15 +108,21 @@ def check_existence( @router.post("/networks", response_model=ScopedKey) -def create_network( +async def create_network( *, - network: List = Body(...), - scope: Scope, + request: Request, n4js: Neo4jStore = Depends(get_n4js_depends), token: TokenData = Depends(get_token_data_depends), ): + # we handle the request directly so we can decode with custom JSON decoder + # this is important for properly handling GUFE objects + body = await request.body() + body_ = json.loads(body.decode('utf-8'), cls=JSON_HANDLER.decoder) + + scope = Scope.parse_obj(body_['scope']) validate_scopes(scope, token) + network = body_['network'] an = KeyedChain(network).to_gufe() try: From 4a841942ea850e6fbe9dcfd196ef4eb49c342eb6 Mon Sep 17 00:00:00 2001 From: David Dotson Date: Tue, 12 Mar 2024 22:09:37 -0700 Subject: [PATCH 3/5] Black! --- alchemiscale/interface/api.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/alchemiscale/interface/api.py b/alchemiscale/interface/api.py index d723720d..91ef80e2 100644 --- a/alchemiscale/interface/api.py +++ b/alchemiscale/interface/api.py @@ -117,12 +117,12 @@ async def create_network( # we handle the request directly so we can decode with custom JSON decoder # this is important for properly handling GUFE objects body = await request.body() - body_ = json.loads(body.decode('utf-8'), cls=JSON_HANDLER.decoder) + body_ = json.loads(body.decode("utf-8"), cls=JSON_HANDLER.decoder) - scope = Scope.parse_obj(body_['scope']) + scope = Scope.parse_obj(body_["scope"]) validate_scopes(scope, token) - network = body_['network'] + network = body_["network"] an = KeyedChain(network).to_gufe() try: From 8394a53f8bf529de9367022adc68d033ac1bd41c Mon Sep 17 00:00:00 2001 From: Ian Kenney Date: Wed, 1 May 2024 11:38:36 -0700 Subject: [PATCH 4/5] Bumped alchemiscale to v0.4.1-beta.1 in conda envs * devtools/conda-envs/alchemiscale-client.yml * devtools/conda-envs/alchemiscale-compute.yml * devtools/conda-envs/alchemiscale-server.yml --- devtools/conda-envs/alchemiscale-client.yml | 2 +- devtools/conda-envs/alchemiscale-compute.yml | 2 +- devtools/conda-envs/alchemiscale-server.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/devtools/conda-envs/alchemiscale-client.yml b/devtools/conda-envs/alchemiscale-client.yml index af3b3315..4e949ecc 100644 --- a/devtools/conda-envs/alchemiscale-client.yml +++ b/devtools/conda-envs/alchemiscale-client.yml @@ -33,5 +33,5 @@ dependencies: - pip: - nest_asyncio - async_lru - - git+https://github.com/openforcefield/alchemiscale.git@v0.4.0 + - git+https://github.com/openforcefield/alchemiscale.git@v0.4.1-beta.1 - git+https://github.com/choderalab/perses.git@protocol-neqcyc diff --git a/devtools/conda-envs/alchemiscale-compute.yml b/devtools/conda-envs/alchemiscale-compute.yml index a713843c..7e40a151 100644 --- a/devtools/conda-envs/alchemiscale-compute.yml +++ b/devtools/conda-envs/alchemiscale-compute.yml @@ -30,5 +30,5 @@ dependencies: - pip: - async_lru - - git+https://github.com/openforcefield/alchemiscale.git@v0.4.0 + - git+https://github.com/openforcefield/alchemiscale.git@v0.4.1-beta.1 - git+https://github.com/choderalab/perses.git@protocol-neqcyc diff --git a/devtools/conda-envs/alchemiscale-server.yml b/devtools/conda-envs/alchemiscale-server.yml index 12a1c544..9b0c4d85 100644 --- a/devtools/conda-envs/alchemiscale-server.yml +++ b/devtools/conda-envs/alchemiscale-server.yml @@ -50,5 +50,5 @@ dependencies: - pip: - async_lru - - git+https://github.com/openforcefield/alchemiscale.git@v0.4.0 + - git+https://github.com/openforcefield/alchemiscale.git@v0.4.1-beta.1 - git+https://github.com/choderalab/perses.git@protocol-neqcyc From 33dc86166672bedc29e59c07ef3dfe35db839be1 Mon Sep 17 00:00:00 2001 From: David Dotson Date: Tue, 4 Jun 2024 16:29:10 -0700 Subject: [PATCH 5/5] Update conda envs to use openfe and gufe 1.0 versions --- devtools/conda-envs/alchemiscale-client.yml | 7 +++---- devtools/conda-envs/alchemiscale-compute.yml | 6 ++---- devtools/conda-envs/alchemiscale-server.yml | 6 ++---- devtools/conda-envs/docs.yml | 1 + devtools/conda-envs/test.yml | 7 +++---- 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/devtools/conda-envs/alchemiscale-client.yml b/devtools/conda-envs/alchemiscale-client.yml index 4e949ecc..b1005a8e 100644 --- a/devtools/conda-envs/alchemiscale-client.yml +++ b/devtools/conda-envs/alchemiscale-client.yml @@ -3,15 +3,14 @@ channels: - jaimergp/label/unsupported-cudatoolkit-shim - conda-forge - openeye - - conda-forge/label/openfe_rc - - conda-forge/label/gufe_rc + dependencies: - pip - python =3.10 # alchemiscale dependencies - - gufe=1.0.0rc0 - - openfe=1.0.0rc0 + - gufe=1.0.0 + - openfe=1.0.1 - openmmforcefields>=0.12.0 - requests - click diff --git a/devtools/conda-envs/alchemiscale-compute.yml b/devtools/conda-envs/alchemiscale-compute.yml index 7e40a151..ecdbac80 100644 --- a/devtools/conda-envs/alchemiscale-compute.yml +++ b/devtools/conda-envs/alchemiscale-compute.yml @@ -2,8 +2,6 @@ name: alchemiscale-compute channels: - conda-forge - openeye - - conda-forge/label/openfe_rc - - conda-forge/label/gufe_rc dependencies: - pip @@ -11,8 +9,8 @@ dependencies: - cudatoolkit <=11.7 # many actual compute resources are not yet compatible with cudatoolkit >=11.8 # alchemiscale dependencies - - gufe=1.0.0rc0 - - openfe=1.0.0rc0 + - gufe=1.0.0 + - openfe=1.0.1 - openmmforcefields>=0.12.0 - requests - click diff --git a/devtools/conda-envs/alchemiscale-server.yml b/devtools/conda-envs/alchemiscale-server.yml index 9b0c4d85..a1dc2484 100644 --- a/devtools/conda-envs/alchemiscale-server.yml +++ b/devtools/conda-envs/alchemiscale-server.yml @@ -3,16 +3,14 @@ channels: - jaimergp/label/unsupported-cudatoolkit-shim - conda-forge - openeye - - conda-forge/label/openfe_rc - - conda-forge/label/gufe_rc dependencies: - pip - python =3.10 # alchemiscale dependencies - - gufe=1.0.0rc0 - - openfe=1.0.0rc0 + - gufe=1.0.0 + - openfe=1.0.1 - openmmforcefields>=0.12.0 - requests diff --git a/devtools/conda-envs/docs.yml b/devtools/conda-envs/docs.yml index 6e20b645..b0718227 100644 --- a/devtools/conda-envs/docs.yml +++ b/devtools/conda-envs/docs.yml @@ -1,6 +1,7 @@ name: alchemiscale-docs channels: - conda-forge + dependencies: - sphinx>=5.0,<6 - sphinx_rtd_theme diff --git a/devtools/conda-envs/test.yml b/devtools/conda-envs/test.yml index 2fa6ad48..fdab69d7 100644 --- a/devtools/conda-envs/test.yml +++ b/devtools/conda-envs/test.yml @@ -2,14 +2,13 @@ name: alchemiscale-test channels: - jaimergp/label/unsupported-cudatoolkit-shim - conda-forge - - conda-forge/label/openfe_rc - - conda-forge/label/gufe_rc + dependencies: - pip # alchemiscale dependencies - - gufe=1.0.0rc0 - - openfe=1.0.0rc0 + - gufe>=1.0.0 + - openfe>=1.0.1 - openmmforcefields>=0.12.0 - pydantic<2.0