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

Adjust SMIRFF format spec to address generalization of format #180

Merged
merged 5 commits into from
Nov 11, 2016

Conversation

davidlmobley
Copy link
Contributor

  • Discuss how other mixing/combination rules would be handled
  • Discuss how other functional forms for the nonbonded term would be selected
  • Discuss how other functional forms for valence terms such as angle terms would be selected (and mention switch to AngleForce rather than HarmonicAngleForce, as per Replace HarmonicAngleForce with AngleForce (and likewise for bonds?) in SMIRFF #179
  • Remove id/parent_id from formal spec, just mentioning id in a usage example
  • Put in mention of GB parameters
  • Add line breaks for better change logs

@jchodera , anything else I'm missing?

The SMIRFF format provides XML `ffxml` files that are parseable by the `ForceField` class of the `smarty.forcefield` module. These encode parameters for a force field based on a SMIRKS-based specification of the chemical environment the parameters are to be applied to. The file has tags corresponding to OpenMM force terms (`HarmonicBondForce`, `HarmonicAngleForce`, `PeriodicTorsionForce`, etc., as discussed in more detail below); these specify units used for the different constants provided for individual force terms, for example (see the [AlkEthOH example ffxml](https://github.com/open-forcefield-group/smarty/blob/master/smarty/data/forcefield/Frosst_AlkEtOH.ffxml)):
The SMIRFF format provides XML `ffxml` files that are parseable by the `ForceField` class of the `smarty.forcefield` module.
These encode parameters for a force field based on a SMIRKS-based specification of the chemical environment the parameters are to be applied to.
The file has tags corresponding to OpenMM force terms (`HarmonicBondForce`, `HarmonicAngleForce`, `PeriodicTorsionForce`, etc., as discussed in more detail below); these specify units used for the different constants provided for individual force terms, for example (see the [AlkEthOH example ffxml](https://github.com/open-forcefield-group/smarty/blob/master/smarty/data/forcefield/Frosst_AlkEtOH.ffxml)):
```XML
<HarmonicAngleForce angle_unit="degrees" k_unit="kilocalories_per_mole/radian**2">
```
which introduces following `Angle` terms which will use units of degrees for the angle and kilocalories per mole per square radian for the force constant.

Under each of these force terms, there are tags for individual parameter lines such as these:
```XML
Copy link
Member

Choose a reason for hiding this comment

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

I'd add the <AngleForce>...</AngleForce> tags here to make it very clear that the <Angle.../> tags have to go inside this block.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Wait, hold on -- that's different from what I thought we were saying. I thought we were saying we'd just be replacing the HarmonicAngleForce tag with an AngleForce tag and whether it is harmonic or not would be specified by an attribute of the SMIRFF tag, as per what I wrote in the new docs:

... Selection of the type of angle force applied would be handled in a similar manner, via an AngleForce="harmonic" tag or similar. This feature is being planned.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@jchodera - any further comments on this?

Copy link
Member

Choose a reason for hiding this comment

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

Wait, hold on -- that's different from what I thought we were saying. I thought we were saying we'd just be replacing the HarmonicAngleForce tag with an AngleForce tag and whether it is harmonic or not would be specified by an attribute of the SMIRFF tag, as per what I wrote in the new docs:

We're in agreement here! But it still says HarmonicAngleForce and not AngleForce. Same thing with HarmonicBondForce.

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, totally agree. Just need to make the associated change in the code and then we can do that. I'll rebase/merge.

...
</HarmonicAngleForce>
```

**AMBER functional forms drop the factor of 2 in the angle energy term, which we elect not to do here.** Thus, comparing a SMIRFF file to a corresponding AMBER parameter file or .frcmod will make it appear that force constants here are twice as large as they ought to be.
**AMBER functional forms drop the factor of 2 in the angle energy term, which we elect not to do here.**
Thus, comparing a SMIRFF file to a corresponding AMBER parameter file or .frcmod will make it appear that force constants here are twice as large as they ought to be.

### PROPER TORSIONS

Torsions are implemented as a [`PeriodicTorsionForce`](http://docs.openmm.org/7.0.0/userguide/theory.html#periodictorsionforce) tag with child tags for `Proper` (discussed here) and `Improper` (discussed below) parameters, for example:
```
Copy link
Member

Choose a reason for hiding this comment

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

Forgot XML after '```'

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks.

@jchodera
Copy link
Member

jchodera commented Nov 3, 2016

Are you planning to change the <Harmonic*Force.../> tags to drop the Harmonic part in this PR?

@davidlmobley
Copy link
Contributor Author

@jchodera :

Are you planning to change the <Harmonic*Force.../> tags to drop the Harmonic part in this PR?

I was going to wait til we change the code to do that. Right now it's listed here under things we are GOING to do. When we do it, then I'll drop the Harmonic.

@jchodera
Copy link
Member

jchodera commented Nov 3, 2016

How about this plan:

  • Commit this PR once ready
  • Create a new branch for the new updates (e.g. 0.2.0) and make the updates to the spec
  • I'll then update the code to match the spec
  • We then merge the whole branch into master.

@jchodera
Copy link
Member

jchodera commented Nov 3, 2016

Actually, we may want to split off the SMIRFF forcefield stuff to a new repo before doing that.

@davidlmobley
Copy link
Contributor Author

@jchodera - regarding splitting into separate repo, yes, that was what we discussed by phone the other day. I made an issue and assigned it to you, but let me know if you want me to do it instead.
#175

(Whoever does it needs to get travis going, etc., on the new repo, as well as connect it up to omnia).

@jchodera
Copy link
Member

jchodera commented Nov 3, 2016

Yep, I've got it slated for the weekend. Do we need it earlier than that?

@davidlmobley
Copy link
Contributor Author

No, weekend is fine. But I'd be happy to do it myself if it would free up time for you to do the property calculator for densities or GB solvation.

@jchodera
Copy link
Member

I've fallen behind again here, but I realized I needed to finish the GBSA PR before peeling of the SMIRFF code to another repo.

@jchodera
Copy link
Member

You should be good to rebase or merge from master and then we can merge this in.

@davidlmobley davidlmobley changed the title [WIP] Adjust SMIRFF format spec to address generalization of format Adjust SMIRFF format spec to address generalization of format Nov 11, 2016
@davidlmobley davidlmobley merged commit e31d600 into master Nov 11, 2016
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.

2 participants