Commit Graph

378 Commits

Author SHA1 Message Date
Alyssa Travitz
2c8feff5a8 feat: experimental openfe gather-septop & openfe gather-abfe support (#1710)
* feat: support `openfe gather` for septop (#1638)

* copy septop analysis notebook over

* add todos

* add plan and test

* format

* add failing tests

* comment out secondary tests

* add cli tmp

* clean up imports

* fix type hints in gather.py

* test passes for gather raw

* test passes for ddg

* tests pass for dg

* pull more error handling into septop

* condense code a bit

* MBAR uncertainty

* remove planning stub

* Revert "MBAR uncertainty"

This reverts commit bf32aa3c6e.

* format

* test with tolerances

* precommit format

* remove accidentally committed file

* Apply suggestions from code review

Co-authored-by: Hannah Baumann <43765638+hannahbaumann@users.noreply.github.com>

---------

Co-authored-by: Hannah Baumann <43765638+hannahbaumann@users.noreply.github.com>

* feat: add abfe gathering support first draft (#1686)

* add abfe MVP with tests

* Apply suggestions from code review

Co-authored-by: Hannah Baumann <43765638+hannahbaumann@users.noreply.github.com>

* fix incorrect var name

* fix abfe legs extraction

* fix merge bug

* remove unused import

---------

Co-authored-by: Hannah Baumann <43765638+hannahbaumann@users.noreply.github.com>

* gather: fix septop rounding (#1696)

* only apply precision rounding at the end

* clean up code

* gather: update names parsing (septop and abfe) (#1698)

* update abfe names parsing

* update septop names parsing

* add todo

* get names from alchemical_components

* remove todo

* gather: refactor/unify rounding behavior (#1697)

* format septop outputs with format_df_with_precision

* only apply precision rounding at the end

* update gather abfe formatting to use format_df_with_precision

* remove unused import

* switch back to checking final outputs for abfes

* clean up code

* add rounding for dg mle

* simplify code

* gather: unify code structure between rbfe, septop, & abfe (#1700)

* format septop outputs with format_df_with_precision

* only apply precision rounding at the end

* update gather abfe formatting to use format_df_with_precision

* remove unused import

* switch back to checking final outputs for abfes

* clean up code

* add rounding for dg mle

* simplify code

* make gather_septop.py code more similar to gather.py

* make gather_abfe.py code more similar to gather.py

* remove unused function

* add stdout message for experimental gathering support (#1703)

* add warnings for experimental gathering

* use click to make output look nicer, not a true warning

* add warning text

* make yellow

* add tests

* remove unused code

* add news item

* speed up names gathering

* names should always return str

* add single repeat tests for abfe and septop

* remove unused imports

* make `gather septop/abfe` output headers accurately reflect error type (#1712)

* gather septop/abfe output headers accurately reflect error type

* split into func

* label all uncertainty columns more specifically

* add docstring

* update test data

* update error calculation

---------

Co-authored-by: Hannah Baumann <43765638+hannahbaumann@users.noreply.github.com>
2025-12-04 07:34:20 -08:00
Alyssa Travitz
b57d3e12a6 remove unused fetch command (#1732) 2025-12-04 00:07:48 +00:00
Alyssa Travitz
78d0f901f8 make sure all names are returned as strings (#1711) 2025-12-02 07:07:55 -08:00
Alyssa Travitz
8ab0f8668d pull names directly from ligandmapping (#1702)
* pull names directly from ligandmapping

* update news entry
2025-12-01 18:01:33 +00:00
Alyssa Travitz
013b4b3213 fix pandas applymap deprecation warning (#1701) 2025-11-26 21:49:29 +00:00
David W.H. Swenson
20ae9f88a0 Add docstring to explain the rounding in gather (#1687)
* Add docstring to explain the rounding in gather

* Update openfecli/commands/gather.py

Co-authored-by: David W.H. Swenson <david.swenson@omsf.io>

* formatting: one sentence per line

* Apply suggestions from code review

Co-authored-by: Alyssa Travitz <31974495+atravitz@users.noreply.github.com>

---------

Co-authored-by: Alyssa Travitz <31974495+atravitz@users.noreply.github.com>
Co-authored-by: Alyssa Travitz <alyssa.travitz@omsf.io>
2025-11-24 07:16:26 -08:00
Alyssa Travitz
f710d3c1e9 Feat/improve names gathering (#1691)
* first pass at querying names from gufe objects

* code clean up

* adding (bloated) test, needs trimming still

* fix unit_results error handling

* updating test data

* Apply suggestion from @jthorton

Co-authored-by: Josh Horton <Josh.Horton@newcastle.ac.uk>

* use ChemicalSystem

* add news item

---------

Co-authored-by: Josh Horton <Josh.Horton@newcastle.ac.uk>
2025-11-22 00:01:49 +00:00
Alyssa Travitz
82703bec21 Refactor/gather use pandas (#1690)
* add return type hints

* first pass at using pd dataframes

* add helper function

* it works but is ugly

* fix copy pasta

* do it better with pandas

* docstrings

* var names

* add docstring

* add example to docstring

* make string check more rigorous
2025-11-21 20:49:59 +00:00
Mike Henry
b0789ff0ae Add logging control (#1585)
* do we test this at all?

* start of logging improvements

* first pass at logging, worried about performance

* setup a base class + add type hints

* add placeholder url ref

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* update to new logging control

* Fix imports

* remove bit left over from being able to delete these log controlers

* looks like ... is used more than pass

* formatting fix

* Grab new format rule from main

* run ruff check --fix on conflicting files

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Added tests

* see if this fixes the doc build

* add back debugging code

* update openmm doc url

* add note about jax warning

* bump

* Remove debugging code to see if that fixes doc build

* ruff format

* Add url

* switch to using module instead of class w/ static methods

* Update docs/guide/troubleshooting.rst

Co-authored-by: Alyssa Travitz <31974495+atravitz@users.noreply.github.com>

* ruff fixes

* Ruff fix

* Added news entry

* Refactor to move things to private namespace

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Alyssa Travitz <31974495+atravitz@users.noreply.github.com>
2025-11-21 07:30:53 -08:00
Alyssa Travitz
b693d37c8a ruff: address pycodestyle changes (#1668)
* apply E741: ambiguous variable name check

* apply E713: 'not in' fixes

* address E721 with isintance() checks

* fix bare excepts

* precommit
2025-11-11 11:34:29 -07:00
Alyssa Travitz
18f211db97 ruff linting: f-strings and whitespace (#1667)
* apply F541: unused f-strings

* apply W29: whitespace fixes

* add pyflakes check

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-11-11 00:19:12 +00:00
Alyssa Travitz
588f552ca9 add ruff isort linting rule (#1665)
* isort for docs and utils

* isort for top-level openfe, analysis, setup

* isort setup/

* isort storage/

* isort protocols

* isort openn_afe

* isort openmm_rfe

* isort all protocols

* apply isort to openfe/tests

* apply isort to openfecli

* apply isort to devtools/

* add TODO for setup init
2025-11-10 21:58:30 +00:00
Alyssa Travitz
036869ae81 Ci/add ruff format part4 - the final format! (#1623)
* format cli tests top level

* format cli commands tests

* format cli parameters tests
2025-10-24 23:50:52 +00:00
Alyssa Travitz
2311a2f2d9 ruff formatting part 2 - everything but the tests (#1610)
* add more checks

* make precommit manual

* apply formatting to pyproject.toml

* add TODO

* remove unneeded, add a few more

* add ruff, but turn everything off

* add openfe known first party

* format highest-level files

* first half of openfe protocols

* second half of openfe protocols

* openfe protocols formatting, with alyssa's fmt skips

* add ruff formatter to precommit

* fmt: off all vendored _rfe_utils code

* addressing review comments

* format openfe/utils

* format openfe/setup

* first batch of cli formatting

* second batch of cli formatting

* formatting the rest of openfecli commands

* format openfecli/parameters

* format openfe/storage

* run precommit

* Update openfecli/commands/gather.py

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>

* update example notebooks branch for v1.7.0 docs changes (#1615)

* bump example notebooks branch

* add ipykernel to env

* roll back to fixing septop branch

* i dont think we want ipykernel

* bump to tmp_fix_docs branch

* point to branch revert-237-v1.7_cookbooks

* point to latest example notebooks release

* remove colab button, point to updated example notebooks, reorg landing page (#1618)

* remove colab button from example notebooks in docs

* point to example notebooks 2025.10.2

* replace 'try' with CLI

---------

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
2025-10-24 14:09:45 -07:00
Josh Horton
774c42ed48 Fast/ adaptive settings (#1523)
* add adaptive settings method

* remove env file change

* expose the adaptive settings via the CLI

* fix indent, stop using frozen copy

* pr feedback

* typo

* gj pycharm

* update tests

* update base settings

* fix tests, add option to supply input settings

* fix tests, remove redundant septop settings changes

* Update openfe/protocols/openmm_rfe/equil_rfe_methods.py

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>

* fix nb tests, add news

* Update news/rbfe_settings_update.rst

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>

* Apply suggestion from @IAlibay

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>

* Apply suggestion from @IAlibay

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>

---------

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
Co-authored-by: Alyssa Travitz <31974495+atravitz@users.noreply.github.com>
Co-authored-by: Hannah Baumann <43765638+hannahbaumann@users.noreply.github.com>
2025-10-20 11:32:16 -07:00
Alyssa Travitz
b9f7593b2d migrate to pydantic v2 (#1535) 2025-10-10 23:02:57 +00:00
Mike Henry
a312bc2f39 Fix test to check if we are printing --allow-partial when a user uses --allow-partial (#1564)
* escape string correctly

* Fix test to check if string is printed

This test used to use pytest.warns to check if we printed a string to
the terminal. This isn't the right way to test if things get printed to
terminal since it only checks warnings raised in python-land. The test
passed since the regex used to match warnings ended up matching warnings
raised since it was a negated character class which matches a single
character that is not any of the characters listed inside.
2025-10-10 20:16:45 +00:00
Josh Horton
3453c57fb3 Update openfecli/parameters/plan_network_options.py
Co-authored-by: Alyssa Travitz <31974495+atravitz@users.noreply.github.com>
2025-10-07 14:35:49 +01:00
Josh Horton
c7428f8f33 check the default CLI settings in testing 2025-09-25 09:37:38 +01:00
Josh Horton
9d938576a6 Change the default atom mapping in the CLI to Kartograf 2025-09-22 17:29:40 +01:00
Mike Henry
a0154ef488 Bump number of retires when fetching data with pooch (#1487)
I've seen a few cases in the wild where CI fails because a file failed
to download. I think we should try bumping to 5 since with each retry it
increases the wait time and I think that ~3s might be too fast so I want
to try 5s.

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
Co-authored-by: Alyssa Travitz <31974495+atravitz@users.noreply.github.com>
2025-08-26 07:38:49 -07:00
Alyssa Travitz
b63d63761b try using as_file wrapper 2025-07-15 10:52:56 -07:00
Alyssa Travitz
7be2225ff7 update docs to show default as element_change=True (#1380)
* update docs to show default as element_change=True

* Update openfecli/commands/plan_rbfe_network.py

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>

---------

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
2025-06-23 10:14:40 -07:00
Alyssa Travitz
cdfead0616 make tutorial data use parallel repeats instead of serial repeats 2025-06-12 09:12:49 -07:00
Alyssa Travitz
9f386ab933 Update CLI help messages (#1265)
* updating misc help messages

* add view ligand network help message and docstirng

* minor language changes

* whitespace :(

* fixing whitespace
2025-06-05 13:12:02 -07:00
Alyssa Travitz
098c0a8a84 updating syntax for click 8.2 (#1276) 2025-05-27 18:35:44 +00:00
Mike Henry
d2e84eef9e Exit with return value from pytest.main (#1297)
* exit with the return value of pytest.main when running openfe test

* always restore env
2025-05-27 08:27:04 -07:00
Alyssa Travitz
0bd14c7b79 add retries for flaky notebooks (#1278) 2025-05-21 17:11:16 +00:00
Alyssa Travitz
e4cced26c3 updating nb name (#1281) 2025-05-21 09:28:10 -07:00
Alyssa Travitz
148af2694c Update cli docs (#1264) 2025-04-30 13:46:11 -07:00
Alyssa Travitz
b6c7f19c81 immediate print planning cli output (#1254)
* immediate print planning cli output

* adding news item
2025-04-24 14:35:03 -07:00
Alyssa Travitz
3dc10653d1 require -o option for CLI charge generation (#1255)
* require -o option for charge generator

* adding a test for missing -o
2025-04-24 14:08:12 -07:00
Alyssa Travitz
e42432d5b0 pretty print tables with rich (#1246)
* add pandas construction

* removing csv writer

* replicating original behavior

* add rich table

* split into function

* make names clearer

* adding adjustments from rebase

* put it in a box

* adding tsv flag

* update tests to use tsv flag

* add smoke test for pretty print

* adding file creation test

* adding news item

---------

Co-authored-by: Irfan Alibay <IAlibay@users.noreply.github.com>
Co-authored-by: Mike Henry <11765982+mikemhenry@users.noreply.github.com>
2025-04-24 10:02:26 -07:00
Alyssa Travitz
aedc719aa5 Single repeat error handling (#1243)
* fail on first leg with too few repeats

* pass through all failed edges

* adding news entry

* improve error message

* fix test
2025-04-23 17:58:21 +00:00
Alyssa Travitz
38f0c6a3ef print message to stderr when no valid results files are found (#1245)
* print message to stderr when no valid results files are found

* fix check

* move check into main function to keep single responsibility

* fix cmet test bug

* adding test
2025-04-23 17:33:52 +00:00
Alyssa Travitz
1bbe2d9299 use pandas (#1244)
* add pandas construction

* replicate current behavior, but with pandas

* removing csv writer

* fixing type check

* replicating original behavior
2025-04-23 09:23:06 -07:00
Alyssa Travitz
d811614e8c fixing test's allow partial test (#1247) 2025-04-23 07:44:10 -07:00
Alyssa Travitz
e640424817 Pass through failed simulations to output (#1227)
* reorg for clarity

* moving try/except into function for clarity

* reorg data parsing for clarity

* remove unused function

* add try/except to pass through info about failed edges

* updating tests for new expected failed simulation checking behavior

* pass through for raw and ddg

* pass through failures for dgs

* remove unused import

* adding a missing check

* docstrings

* cleaning up logic

* cleaning up logic

* docstrings and formatting

* fixing conditionals bug

* more docstrings

* make 'name' a tuple for consistency

* make functions private

* updating output statement for clarity (hopefully)

* remove unused dg raw expected output

* adding comment description

* updating tests

* cleaning up test to not use tmp dir

* only use non-None legs for deciding whether to do rbfe/rhfe

* fix typo

* pass empty list instead of None through to ddg

* add cmet data

* add assert success tests - still need output validation

* light reordering for clarity

* adding pytest regressions

* don't include stderr in file regression

* making output more legible

* switch from runtime error to exit(1)

* add missing complex legs test

* adding regressoin tsvs  to manifest

* reordering functions for clarity

* updating tests

* adding test for disconnected network

* updating warning message, not throwing error for now

* updating tests for missing runs

* add disconnected network check

* switch from NaN to Error

* removing unused regression files

* fixing typo

* adding test coverage

* fix typo

* adding news entry
2025-04-22 07:24:31 -07:00
Alyssa Travitz
0dfa9a2e50 Merge branch 'main' into fix/charge_molecules_cli_formatting 2025-04-07 07:14:02 -07:00
Alyssa Travitz
8cc3c4f291 cli gather should allow lists of filepaths (#1212)
* allowing multiple paths

* first pass at allowing filepaths and wildcards

* updating docstring

* adding missing /

* add tests and sorting

* add news

* updating docstring

* updating docs

* fixing whitespace diff

---------

Co-authored-by: Mike Henry <11765982+mikemhenry@users.noreply.github.com>
2025-04-07 07:13:08 -07:00
Alyssa Travitz
be13099aee fix formatting 2025-04-04 16:27:24 -07:00
Alyssa Travitz
d7f89cd6e2 making it look better in sphinx 2025-04-04 10:41:09 -07:00
Alyssa Travitz
f58e5372ec fix cli list formatting 2025-04-04 10:22:50 -07:00
Alyssa Travitz
cd219bc002 only show --allow-partial suggestion if user hasn't used it (#1208)
* only show --allow-partial suggestion if user hasn't used it

* adding a test
2025-03-27 13:31:16 -07:00
Alyssa Travitz
01c3b5601e 1002: improve missing data error handling (#1199)
* add check for missing protocol result data

* renaming vars for  clarity

---------

Co-authored-by: Mike Henry <11765982+mikemhenry@users.noreply.github.com>
2025-03-27 07:18:30 -07:00
Alyssa Travitz
e044ec4a61 pooch - add triplicate retries (#1213)
* add triplicate retries

* use openfe cache

* add internet check to openfe

* isort as a treat

* whitespace :(

* remove unused pytest.mark.download
2025-03-26 14:54:27 -07:00
Alyssa Travitz
66ac2bdc64 migrate json loading to new gufe syntax (#1177)
* updates to cli from_json

* replacing dump instances with to_json

* Remove unnecessary imports of JSON_HANDLER

* addressing review

---------

Co-authored-by: Mike Henry <11765982+mikemhenry@users.noreply.github.com>
Co-authored-by: David L. Dotson <dotsdl@gmail.com>
2025-03-25 23:32:26 +00:00
Alyssa Travitz
b798454425 1104 gather check json files (#1112)
* adding output for failed edges

* adding print statements, tests don't pass yet because of extra output

* remove straggler

* Update openfecli/commands/gather.py

Co-authored-by: Josh Horton <Josh.Horton@newcastle.ac.uk>

* comment out exception check temporarily

* adding exception check back (test data was wrong)

* adding tests in progress

* trying different mocking

* adding unit tests

* cleaning up

* updating zenodo doi to use correct parallel rbfe dataset

---------

Co-authored-by: Josh Horton <Josh.Horton@newcastle.ac.uk>
2025-03-19 17:53:00 +00:00
Alyssa Travitz
a823546bab fix rbfe parallel results dataset (#1196)
* placeholder

* move to new zenodo community
2025-03-18 13:54:15 -07:00
Alyssa Travitz
984ba90116 Fix breaking tests from gufe updates (#1107)
* switch to assert_click_success to make debugging easier

* fixing tests to look for logger.INFO instead of warnings (due to gufe change)

* updating expected output due to gufe changes

* updating expected transformations

* remove easy prefix, passing 2fe7741b9448

* define _settings_cls, tests pass against g3c6d5f9

* update string match for partial charge logging
2025-03-04 06:57:27 -08:00