openforcefield / openff-toolkit

The Open Forcefield Toolkit provides implementations of the SMIRNOFF format, parameterization engine, and other tools. Documentation available at http://open-forcefield-toolkit.readthedocs.io
http://openforcefield.org
MIT License
302 stars 89 forks source link

A Charge Model API #208

Open j-wags opened 5 years ago

j-wags commented 5 years ago

@leeping @MSchauperl @jchodera @davidlmobley @dgasmith

I'd like to restart the discussion of semiempirical charge methods, and how we can encode them in the SMIRNOFF spec.

Currently, users have two options to charge their molecules: 1) adding the <ToolkitAM1BCC/> tag in an OFFXML file, which will go run AM1-BCC with either Quacpac or Antechamber/sqm on the backend. 2) importing charges from the reference molecules loaded into the openforcefield toolkit

We do not currently have a complete implementation of the <ChargeIncrementModel> behavior from the SMIRNOFF spec, as it didn't seem like the format laid out there was general enough.

In this Issue, I'd like for us (and anyone else interested in working with our charge model) to start collecting input and moving toward an API for our charge-generating QM methods. This API should be general enough to support our method development for a year or two.

Even if you don't have a complete solution in mind, it would be good to collect requirements or ideas.

As an added dimension, there's a good amount of interest in a graph-based charge model (lacking geometry), so we can think of how that might tie in as well.

jchodera commented 5 years ago

We do not currently have a complete implementation of the behavior from the SMIRNOFF spec, as it didn't seem like the format laid out there was general enough.

The problem isn't that the spec laid out there isn't general enough---it's plenty flexible!---it's that we need more open source tools available to us before we can implement it. We would need:

As noted above, we also are interested in graph-based initial charge determination, inspired by

We may also want to investigate ML based charge assignment methods:

So it may indeed be best to generalize this into multiple stages:

We'd also like to support polarizable sites and multipoles in the future, so we want this approach to be modular and remixable if possible.

davidlmobley commented 5 years ago

@j-wags I think I basically agree with John. Right now we need good tools to give us semiempirical charges in the first place. It sounds like MolSSI may be able to help with this some in the not-too-distant future (cc @dgasmith ). .

j-wags commented 5 years ago

I just spoke with @MSchauperl about what he needs from the ChargeIncrementModel tag. We think it would be good to discuss possible solutions to the questions raised in this Issue at the upcoming charge models meeting.

So that Mike can start prototyping his BCC pipeline, I'll open up a development branch of the toolkit with initial support for the <ChargeIncrementModel> tag, which will only support method="AM1", number_of_conformers="1", and partial_charge_method="Mulliken". The user will need to provide their own conformer, since we don't have a way to deterministically generate them. Hopefully, we can gradually iterate this into our full implementation as we discuss the spec at charge model meetings.

davidlmobley commented 5 years ago

That sounds like a great start, @j-wags