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

Client for FAH resources, reference implementation for compute service #7

Merged
merged 79 commits into from
Jul 23, 2024
Merged
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
c4bc367
Added initial client for FAH resources, init for compute service
dotsdl Sep 27, 2023
8e2970a
Added async_cycle, async_execute to compute service; cleaned up settings
dotsdl Sep 29, 2023
250cbd1
Added custom execute_DAG to compute service
dotsdl Sep 29, 2023
82b559b
Black!
dotsdl Sep 29, 2023
2e7e075
Added env file, moving some things around for live prototyping
dotsdl Sep 30, 2023
0149ae0
Added compute models for FahAdaptiveSamplingClient
dotsdl Oct 3, 2023
f9cd028
Working on FahOpenMMSimulationUnit, where each unit execution corresp…
dotsdl Oct 10, 2023
690d69f
Added FahCoreSettings structure, still populating
dotsdl Oct 17, 2023
bd9a681
Refining adaptive sampling client; added in project files manipulation
dotsdl Oct 24, 2023
5ae1d7f
Adding more methods to adaptive sampling client
dotsdl Oct 24, 2023
395de86
Added openmm-core settings
dotsdl Oct 31, 2023
23dd61f
Black!
dotsdl Oct 31, 2023
0a8db84
Live testing, env file trimming
dotsdl Oct 31, 2023
1b250a8
Fixes to urljoin usage
dotsdl Oct 31, 2023
2049f75
Small fix to list_projects
dotsdl Oct 31, 2023
4d1c173
Hammering away...
dotsdl Nov 25, 2023
f6c72bb
Additional model fixes for FahAdaptiveSamplingClient
dotsdl Nov 28, 2023
24d3365
Added ability to create projects using CLI
dotsdl Dec 27, 2023
5194e8b
Added FahComputeServiceIndex; fleshing out execution codepaths
dotsdl Dec 29, 2023
6dedd5d
Almost finished with a workable protocolunit
dotsdl Dec 29, 2023
2420ad5
Few more additions
dotsdl Dec 29, 2023
1bd9170
Adding in selection of Tasks based on eligible Protocols
dotsdl Jan 9, 2024
688b887
Black!
dotsdl Feb 13, 2024
1e95d6e
Added mock WS RESTful API for test suite
dotsdl Feb 20, 2024
e6df371
Moving some things around
dotsdl Feb 27, 2024
b7efa69
Additional test apparatus, more mock WS endpoints, etc.
dotsdl Feb 28, 2024
d08155a
Black!
dotsdl Feb 28, 2024
7550472
Added project file upload and download to mock API, tests
dotsdl Feb 29, 2024
6a7c9d6
Black!
dotsdl Feb 29, 2024
57e2e41
Finished out FahAdaptiveSamplingClient test coverage for methods we u…
dotsdl Mar 1, 2024
8699f00
Black!
dotsdl Mar 1, 2024
c23ea38
Added CI
dotsdl Mar 1, 2024
0c1d22f
Added black check workflow
dotsdl Mar 1, 2024
fb1e5aa
Added alchemiscale to test env
dotsdl Mar 1, 2024
1eba72a
Dropping Python 3.9 from testing; unclear why it's failing, but we wo…
dotsdl Mar 2, 2024
532e7d1
Finished out protocol content for nonequilibrium cycling
dotsdl Mar 6, 2024
cd894d4
Black!
dotsdl Mar 6, 2024
b571df9
Added integration test for nonequilibrium cycling protocol
dotsdl Apr 12, 2024
6b4fcfb
Black!
dotsdl Apr 12, 2024
04e656a
Update conda envs, in particular add `pytest-asyncio`
dotsdl Apr 12, 2024
ee41806
Added certificate updates to Fah client
dotsdl Apr 15, 2024
13d6340
Black!
dotsdl Apr 15, 2024
f2a99b5
Added content for service integration tests, automatic cert renewal o…
dotsdl May 29, 2024
2e1c21b
Black!
dotsdl May 29, 2024
86c4eef
Compute service integration tests passing!
dotsdl May 30, 2024
20a61b2
Black!
dotsdl May 30, 2024
a7daa27
Updated testing env to use feflow branch for now
dotsdl May 30, 2024
d02e64d
Pin test env to use openfe 0.14.0, gufe 0.9.5, same as prod alchemiscale
dotsdl May 31, 2024
743cdb5
Added CLI point for service startup, template config file
dotsdl Jun 1, 2024
c2bab40
Black!
dotsdl Jun 1, 2024
be1610d
Reorganized integration tests with single conftest; finished CLI test…
dotsdl Jun 10, 2024
732fc0a
Black!
dotsdl Jun 10, 2024
6abc0b9
Added coverage of cert refreshes in client, enabled in service
dotsdl Jun 11, 2024
1da6b33
Black!
dotsdl Jun 11, 2024
17abc4c
Changes in response to @ianmkenney review
dotsdl Jun 25, 2024
e7f3bd8
Merge branch 'main' into fahcompute
dotsdl Jun 26, 2024
0ff636f
Added key and CSR generation entrypoints to CLI
dotsdl Jul 8, 2024
ed5a072
Fixed mapping of Task -> FAH CLONE to be Task-ProtocolUnit -> FAH CLONE
dotsdl Jul 15, 2024
4bea37f
Added marker files for clones that have completed use by alchemiscale
dotsdl Jul 15, 2024
8e6f1f6
Black!
dotsdl Jul 15, 2024
d5a6972
Set test env to use `feflow` main
dotsdl Jul 15, 2024
de09323
Switch to using `gufe` and `openfe` 1.x for testing
dotsdl Jul 15, 2024
d63c73a
Settings fixes for openfe 1.0
dotsdl Jul 15, 2024
a6c8569
Working to fix CI
dotsdl Jul 18, 2024
3be2523
Fixes to test suite given OpenFe and feflow changes; also some bugfixes
dotsdl Jul 19, 2024
3dc57f7
Black!
dotsdl Jul 19, 2024
16e100f
Attempt to use setup-micromamba in CI on @hmacdope suggestion
dotsdl Jul 23, 2024
aaf3ede
CI fix
dotsdl Jul 23, 2024
b07f967
Another CI fix
dotsdl Jul 23, 2024
70cbaa0
Added core_id validation to ProjectData on @hmacdope suggestion
dotsdl Jul 23, 2024
2473239
Fixes given core_id validation
dotsdl Jul 23, 2024
0ea7894
Black
dotsdl Jul 23, 2024
0d683ea
Migrated mock WS to integration test tree
dotsdl Jul 23, 2024
4a30a60
Updates from @hmacdope and @ianmkenney review
dotsdl Jul 23, 2024
e6963af
More validation to models and inputs
dotsdl Jul 23, 2024
97e4dbf
Update alchemiscale_fah/compute/service.py
dotsdl Jul 23, 2024
20b60a6
Review suggestion implementations
dotsdl Jul 23, 2024
abb4d02
Add Python 3.11 to CI testing
dotsdl Jul 23, 2024
d0e7923
Reverting to Enum over StrEnum for Python 3.10 compatibility
dotsdl Jul 23, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/black.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: "Formatting - black"
on:
pull_request:
branches:
- main
push:
branches:
- main

concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

defaults:
run:
shell: bash -l {0}

jobs:
black:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: "Install steps"
run: |
python -m pip install black

- name: "Run the black check"
run: black --check --diff alchemiscale_fah
64 changes: 64 additions & 0 deletions .github/workflows/ci-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: "CI - Integration"
on:
pull_request:
branches:
- main
push:
branches:
- main
schedule:
# At 07:00 UTC on Monday and Thursday.
- cron: "0 7 * * 1,4"

concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

defaults:
run:
shell: bash -l {0}

jobs:
tests:
runs-on: ${{ matrix.OS }}-latest
name: "tests"
strategy:
fail-fast: false
matrix:
os: ['ubuntu']
python-version:
- "3.10"

steps:
- uses: actions/checkout@v2

- uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
use-mamba: true
python-version: ${{ matrix.python-version }}
miniforge-variant: Mambaforge
environment-file: devtools/conda-envs/test.yml
activate-environment: alchemiscale-fah-test


- name: "Install"
run: python -m pip install --no-deps -e .

- name: "Environment Information"
run: |
mamba info -a
mamba list

- name: "Run tests"
run: |
pytest -v --cov=alchemiscale_fah --cov-report=xml alchemiscale_fah/tests

- name: codecov
if: ${{ github.repository == 'openforcefield/alchemiscale-fah'
&& github.event != 'schedule' }}
uses: codecov/codecov-action@v2
with:
file: coverage.xml
fail_ci_if_error: False
verbose: True
164 changes: 164 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
# data files for docker deployment
docker/data
letsencrypt/

# custom ignores
.xxrun
.idea/

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
*~

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

# vim
*.swp
Loading
Loading