Replies: 4 comments 2 replies
|
I support this effort! |
I think it'd be nice to have a policy about what we make promises about in the docs. I think there are a few issues that have encouraged us to hedge in the past:
There's one other area where I've resisted giving warnings:
Each of these I think deserves separate reasoning:
We should not warn people about this, that's what SEMVER is for. The exception might be if we literally have a ticket on the board to make the change, the design work is all done, and we can give an accurate ETA - in that case, it might make sense to warn users that we're about to break something.
This is a real problem that Matt solved nicely with the experimental decorator and environment variable, and the Python warning associated with that decorator should provide enough heads up that we don't need to repeat it in the examples (especially if we then forget to remove it when it becomes out-of-date). The decorator even generates a little warning in the API docs that then gets automatically removed when the decorator is removed! I think should adopt this more widely - it's tightly scoped, highly visible in the code, it's easy to tell it to go away, and the whole shebang gets removed in one fell swoop when the feature is no longer experimental.
We need a policy for force fields we're not sure about - maybe a more formal release candidate or pre-release thing? - but surely ff14sb is no longer one of them
We need a policy on combining force fields, and it might be as simple as "Parsley and Sage are compatible with Amber force fields".
I think this should be an explicit non-goal of our documentation. Our responsibilities to accuracy end when the user has system parameters in their engine of choice, and what they do with that engine is up to them. In examples I write, I try to signal this by doing obviously wrong things like writing to disk constantly, running only very short simulations, omitting equilibration, not doing analysis, and (frankly) running the simulation inside the notebook. It's nice to be able to give the user the pay-off of seeing their system wiggle, but the purpose of the notebook was finished several steps before. I admit that this has resulted in an issue or two in the past, I suspect from 1st year grad students and other beginners, but I think the appropriate response is "yeah, this example isn't about the simulation protocol". I would love to write a Lemkul-style beginners guide to MD using OpenFF and OpenMM, and if I ever get to do that then we can make promises about the protocol in that guide, but in general our documentation is targeted at people who already know their way around their engine of choice. This is an important separation-of-concerns issue that allows us to focus on force fields, rather than trying to do the whole simulation pipeline. |
|
I broadly agree too; my students keep telling me they can't do X because there's a warning about it not being production ready, and I keep having to convince them it is OK to ignore the warning. The reality is most code all of us use (from other products) is academic and "not production ready" so the different standard we're holding ourselves too creates lots of confusion. |
|
Adding PackMol wrapper in Interchange to the list, which sometimes get tagged with ''experimental Interchange PackMOL wrapper". |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Continuing from OpenFreeEnergy/IndustryBenchmarks2024#314 (comment)
@mattwthompson had brought up the extent to which we recommend against using our products or speak inconsistently about recommended ways to do things. Matt led an effort to dig up all the instances of this and the report is at the end of this message.
The big action I'd propose is to change the messaging around our ff14SB port to NOT use the phrase "not ready for production", because:
The major courses of action I can think of here are:
In our testing, we've found that the SMIRNOFF ff14SB port has very minor (0.X%) energy differences from the original AMBER implementation due to unavoidable differences in parameter assignment methodology. People have used it in their workflows for years and not reported any major energy discrepancies or incompatibilities with OpenFF's Parsley and Sage line of force fields.OpenFF tooling attempts to provide the same charges for the same molecular graph (independent of the input conformation) by generating one or more conformers internally before running AM1BCC during parameter assignment. While we try to get consistent behavior from this conformer generation step, this method is not perfect and the resulting charges may vary somewhat between runs. Our upcoming force fields will use a [charge assignment method](NAGL) that only considers the 2D structure of input molecules to assign partial charges deterministically to a given molecular graph.I'm interested if folks have major hesitations or alternatives for this plan!
Matt's report
More than zero of our examples have warnings which prevent people from believing our products are suitable for production. Some of these warnings are significantly out of date and likely a barrier to adoption in their current state. Here is one such example: openmm/openmm#4806 (comment)
Specific examples
Toolkit showcase (openff-toolkit):
Protein-ligand systems (openff-interchange)
OpenFF force fields in Amber and GROMACS
(note: somewhat unclear which example this refers to - I don't see these here or here)
Mixture simulation
Conformer energies
Interchange.minimizeMixing parameters
Inspect parameters
Other inconsistencies
All reactions