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

Initial SOMD2 prototype #4

Merged
merged 149 commits into from
Nov 2, 2023
Merged

Initial SOMD2 prototype #4

merged 149 commits into from
Nov 2, 2023

Conversation

lohedges
Copy link
Contributor

@lohedges lohedges commented Nov 2, 2023

This PR brings the initial SOMD2 prototype into main. The command-line interface is designed to be near identical to SOMD1 so that it can be used as a drop-in replacement, allowing easy comparison.

Outstanding things that are not yet supported:

  • Command-line support for complex lambda schedules. Currently we only support standard_morph and charge_scaled_morph as keywords. More complex implementations require direct scripting. We might want to think about a separate configuration format for lambda schedules.
  • There is currently no support for restraints from the command-line. As above, we will probably want to think about a config format for these.
  • While we currently write checkpoint files, there isn't yet support for recovering a failed simulation or continuing from a previous run, e.g. if you want additional sampling. This is being worked on at present by @mb2055.

This PR supersedes and closes #3.

mb2055 added 30 commits August 4, 2023 16:00
…l as device flag in map (it's case sensitive)
… metadata (for now just temperature and lambda value) to outputs, and cleaned up some unneeded duplication
Analysis to be added in separate module for greater flexibility. _sire_merge_runsim now returns the raw energy trajectory as a pandas dataframe.
_analysis.py currently just finds gradients, reduced energies and forward and backward MC, doing so for all energy trajectories in a given folder, formatting them in to a list of dataframes for analysis with alchemlyb (not yet added)
Added handling of errors such that the whole process doesn't crash if a single simulation crashes - still very rudimentary, seems to only capture the last exception that occurs

Removed some redundant code, move dataframe_to_parquet inside of the controller class
Issues with openmm minimisation was causing certain lambda windows to fail outright, now added ufnctionality in which failed minimisation will be attempted again at lambda=0. Also added improved logging - still very much a WIP
analyse_all now returns a list of dataframes sorted by lambda value from smallest to largest, also removed columns with nan from equilibration
Options are now set by calling create_sim_options after initialising a controller object, passing in a dictionary of key value pairs, if options are not set they will default to pre-selected values, to see these values, as well as a full dictionary of all currently supported options, get_defaults can be called
Both parquet files and trajectories will be saved to user-specified output directory, if not specified they will be saved to the current working directory
@lohedges lohedges added the enhancement New feature or request label Nov 2, 2023
@lohedges lohedges merged commit 42129f2 into main Nov 2, 2023
6 checks passed
@lohedges lohedges deleted the feature_logging branch November 2, 2023 19:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants