Draft
Conversation
This was referenced Jan 27, 2026
lilyminium
commented
Jan 27, 2026
| ..., | ||
| description="The type of OpenMM custom force to create.", | ||
| ) | ||
| force_name: str = pydantic.Field( |
Collaborator
Author
There was a problem hiding this comment.
Maybe we should cut out the middleman here and just specify the force group (int).
lilyminium
commented
Jan 27, 2026
| for smiles, fraction in smiles_and_fractions: | ||
| n_molecules = fraction * n_max_mols | ||
|
|
||
| if "." in smiles: # this is multi-molecule |
Collaborator
Author
There was a problem hiding this comment.
hack to support ion specifications (see #11)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a draft PR to prototype some functionality where the higher-level overview is in these slides: https://docs.google.com/presentation/d/1pbhua2YHi7Xohw_t2EEndB7_Y4BHWudJ8llPYKxvDTQ/edit?slide=id.g3bbe24ca41d_0_8#slide=id.g3bbe24ca41d_0_8
Here are the broad modules:
configs-- specifying how to execute particular protocols, and what simulations/settings should be run for different properties.store_last_frame_of_accepted_step(for storing boxes from the last accepted iteration), and possibly stuff likedelete_working_data(whether to delete simulations from previous iterations to save disk space). Perhaps also settings currently in the protocol configs, such as the path to the coordinate store in the equilibration config, and whether to save the lowest energy of three replicates, etc., should be in this overall config.ops-- for calculating properties differentiably. Only Osmotic coefficient is filled out at the moment, but the density and enthalpy should be simpler and straightforward. Potentially the osmotic coefficient should actually just be the osmotic pressure and the coefficient part can occur incompute_property. We need some way to pass the correct force group into this op -- poassibly it's most straightforward to change theOsmoticCoefficient.force_nameto aOsmoticCoefficient.force_group.protocols-- for executing protocols. None of this is filled out, except for creating the OpenMM system.workflow-- a prototyped workflow for getting from dataset + force field, to predicted properties and closure function.server/client-- draft Client with the basic functionality we'd need. It's a very thin wrapper over dask at the moment, but I have checked that all current functionality is easily extensible to Ray.Many bad choices were made here, including the naming of particular classes, and especially the construction of the many intermediate classes that basically only exist so we can easily track what's going on (e.g.
_Task,BoxKey,EntrySimulation). While I think the general separation of configs vs protocols vs properties vs ops would be helpful to have, I don't think this PR is structured super well. I've opened it because working through it was helpful for me to think through what would really be needed to get from dataset + force field --> computed properties.