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

NEq cycling rebase #4

Merged
merged 12 commits into from
Oct 13, 2023
Merged

NEq cycling rebase #4

merged 12 commits into from
Oct 13, 2023

Conversation

ijpulidos
Copy link
Contributor

@ijpulidos ijpulidos commented Oct 2, 2023

This set of changes aim to rebase the NonEquilibriumCyclingProtocol to use the openfe objects in order to have a common code base for both protocols (openfe and neq cycling).

A significant portion of the settings and code for creating the individual OpenMM topologies and systems should be able to be shared between both protocols, as well as the creation of the creation of the Hybrid Topology.

Resolves #1

@dotsdl
Copy link
Member

dotsdl commented Oct 3, 2023

Awesome @ijpulidos! Excited for this!

@codecov-commenter
Copy link

Welcome to Codecov 🎉

Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.

Thanks for integrating Codecov - We've got you covered ☂️

@ijpulidos ijpulidos changed the title [WIP] NEq cycling rebase NEq cycling rebase Oct 10, 2023
@ijpulidos ijpulidos requested a review from dotsdl October 10, 2023 20:07
@ijpulidos
Copy link
Contributor Author

@dotsdl I think this one should be ready to go to start working on optimizing the DAG units and thinking about what components migrate to openmmtools that should be shared between different protocols. Those changes I think are more suited for future iterations/PRs.

)
####### END OF SETUP #########
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Basically up to here can be moved to a separate unit for #3 and also to help thinking about the openmmtools API points that should be doing these things.

Copy link
Member

Choose a reason for hiding this comment

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

Awesome! Thank you for this!

Copy link
Member

@dotsdl dotsdl left a comment

Choose a reason for hiding this comment

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

@ijpulidos looking great! Only one blocking question on hardcodes in HybridTopologyFactorModded init. Otherwise mostly clarification questions.

Comment on lines +16 to +18
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true
Copy link
Member

Choose a reason for hiding this comment

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

Oh cool, didn't know this was a thing now.

Comment on lines +20 to +22
defaults:
run:
shell: bash -l {0}
Copy link
Member

Choose a reason for hiding this comment

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

This too!

fail-fast: false
matrix:
os: ["ubuntu"]
pydantic-version: [">1"]
Copy link
Member

Choose a reason for hiding this comment

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

Where does this actually get used below?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We shouldn't need this, you are correct.

Comment on lines -12 to -17
# Perses depends (TODO: Remove once we don't depend on perses)
- openmoltools
- cloudpathlib
- dask
- openeye-toolkits

Copy link
Member

Choose a reason for hiding this comment

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

Love this!

@@ -2,26 +2,17 @@ name: feflow-test
channels:
- conda-forge
- defaults
- openeye # TODO: Remove once we don't depend on openeye
Copy link
Member

Choose a reason for hiding this comment

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

🙌

)
####### END OF SETUP #########
Copy link
Member

Choose a reason for hiding this comment

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

Awesome! Thank you for this!

@@ -79,7 +79,7 @@ distance-dirty = "{base_version}+{distance}.{vcs}{rev}.dirty"
method = "git" # <- The method name
# Parameters to pass to the method:
match = ["*"]
default-tag = "1.0.0"
default-tag = "0.1.0"
Copy link
Member

Choose a reason for hiding this comment

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

I'm actually not sure what this does? For alchemiscale we have it set to "0.0.0"...

@@ -67,7 +67,7 @@ feflow = [
]

[tool.versioningit]
default-version = "1+unknown"
default-version = "0.1.0+unknown"
Copy link
Member

Choose a reason for hiding this comment

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

Not sure what this does; we leave it as "1+unknown" in alchemiscale. @mikemhenry?

Comment on lines 67 to 72
use_dispersion_correction=False,
softcore_alpha=0.5,
softcore_LJ_v2=True,
softcore_LJ_v2_alpha=0.85,
interpolate_old_and_new_14s=False,
flatten_torsions=False,
Copy link
Member

Choose a reason for hiding this comment

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

Are these intended to be hardcodes? The args in above will have no effect.

Copy link
Member

Choose a reason for hiding this comment

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

Also, if there is no change to the base __init__, is it necessary to include it here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good catch! These should indeed be passed from the __init__. And I just thought that even if the signature of the method is the same, I figured it would be convenient to have them explicitly as helping documentation.

# Lambda settings
lambda_functions = DEFAULT_ALCHEMICAL_FUNCTIONS

# alchemical settings
softcore_LJ_v2 = True
interpolate_old_and_new_14s = False
alchemical_settings: AlchemicalSettings
Copy link
Member

Choose a reason for hiding this comment

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

There may be some settings, such as lambda_windows, which don't actually apply here, I think?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, definitely, there are settings in AlchemicalSettings that do not apply to this protocol, but I think we would need to stick with these for now until we can come up with a base alchemical settings object that should cover the common settings for both protocols. Raised the issue in #6

@ijpulidos ijpulidos merged commit cf0c2de into main Oct 13, 2023
4 checks passed
@dotsdl dotsdl deleted the neq-cyc-openfe-rebase branch October 13, 2023 18:13
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.

Migrate Nonequilibrium cycling protocol from perses
3 participants