-
Notifications
You must be signed in to change notification settings - Fork 164
Prototype for heterogenous mass repartitioning #1186
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
Merged
Merged
Conversation
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
This is a draft implementation of the two-tier mass repartitioning strategy recently published by the Sugita group. The main change is that an additional "alternate" target hydrogen mass is supplied for hydrogens that are connected to a ring. The complete strategy proposed for AMBER force fields is: 1. reduce the target mass from 3*1.008 to 2.5*1.008 2. use an alternate target mass of 2*1.008 Changes to the code: - A new optional keyword `altmass` has been added to the HMassRepartition action that supplies the alternative mass. - A quick scheme to produce rdkit mol objects from single-residue ParmEd molecules has been added so that we can access the IsInRing() method for determining which atoms are in rings. Things to improve: The use of rdkit molecules seems to work fine in practice, but is obviously terribly inefficient -- a new molecule is created for each and every atom to check rather than the other way around. I can think of multiple ways to restructure this, but I'll kick that to the development community. The current implementation seems to work very robustly regardless.
Original implementation was a bit seat-of-my-pants. Remove the need to mess with sys.stdout.
swails
reviewed
Aug 3, 2021
- various cosmetic changes (idx instead of number attribute) - altmass is now ring_hmass - rdkit is now optional and a warning is raised if it is needed but not present (fallback to the standard approach) - look-up table based on residue idx should significantly speed-up repartitioning on large proteins, etc.
Contributor
|
Can we add a test case so when I finally do get around to adding ring perception to ParmEd I can make sure I don't break this? |
Would like to include a method/property in the Atom class that determines if atom.is_in_ring.
swails
reviewed
Sep 14, 2021
Co-authored-by: Jason Swails <[email protected]>
swails
approved these changes
Sep 14, 2021
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 implementation of the two-tier mass repartitioning
strategy recently published by the Sugita group. The main change is that
an additional "alternate" target hydrogen mass is supplied for hydrogens
that are connected to a ring. The complete strategy proposed for AMBER
force fields is:
Changes to the code:
altmasshas been added to the HMassRepartitionaction that supplies the alternative mass.
molecules has been added so that we can access the IsInRing() method for
determining which atoms are in rings.
Things to improve:
The use of rdkit molecules seems to work fine in practice, but is
obviously terribly inefficient -- a new molecule is created for each and
every atom to check rather than the other way around. I can think of
multiple ways to restructure this, but I'll kick that to the development
community. The current implementation seems to work very robustly
regardless.