openforcefield / open-forcefield-tools

Tools for open forcefield development
MIT License
8 stars 6 forks source link

Implement prototype calculation for dielectric constants with API #26

Open davidlmobley opened 6 years ago

davidlmobley commented 6 years ago

As part of getting the API working as laid out in the README.md (see WIP PR #14 on API and density discussion in #8 ) we want to get dielectric constant calculation working (along with density calculation, see #8 ).

The way to do this is already very clear and has been done on a large scale, see e.g. Beauchamp's LiquidBenchmark (https://github.com/choderalab/liquidbenchmark) which benchmarked density/dielectric constant calculations on a chunk of ThermoML (exactly what we want to get our API doing here as a starting point). Kyle also put together a more recent/somewhat better organized version of this at https://github.com/kyleabeauchamp/SolutionFFBench . @Lnaden , let me know if you want pointers to where specifically in these repos the density/dielectric constants are calculated, as we can basically use a similar protocol here.

Basically you'd just want to go about implementing the API as described in the README.md (https://github.com/openforcefield/open-forcefield-tools/blob/master/README.md), keeping in mind that we want to ultimately allow for other types of datasets aside from ThermoML (host-guest binding, hydration free energies, perhaps QM of some kind, ...), and get it working for density and dielectric constant calculations.

One issue is how to define the Substance being considered; we're thinking an interface somewhat like that used by SolvationToolkit will work well (https://github.com/mobleylab/solvationtoolkit) except that SolvationToolkit inherently specifies the size or extent of the system (box size or number of molecules or...) whereas here, this would be something which should get decided under the hood based on best practices as decided on by @mrshirts and @bmanubay , etc., depending on the type of property being computed, etc.

Please let me know what other questions you have/how we can help make sure you can get this implemented quickly. Thanks for being willing to help!