martimunicoy / peleffy-benchmarks

A compilation of benchmarks to validate the parameterization of peleffy (PELE Force Field Yielder).
MIT License
0 stars 0 forks source link

Hydration energies benchmark #10

Closed martimunicoy closed 4 years ago

martimunicoy commented 4 years ago

Description

This benchmark evaluates the implicit solvent implementation by predicting the hydration free energy on a database of compounds with reported experimental data (FreeSolv).

Remarks

offpele version

Please, note that several changes have been introduced to offpele in order to have good performance in this benchmark as much as possible. Thus, we should use, at least, version 0.3.0 or newer.

Requirements

When using OPLS parameters we need access to Schrodinger's ffld_server. For this reason, PELE needs to know the path to Schrodinger's installation folder. This path must be set with an environment variable before calling offpele. Otherwise, offpele will complain when trying to execute the ffld_server. The environment variable that is required is:

export SCHRODINGER='/path/to/Schrodinger/installation/schrodinger2020-2

How to manage parameters

Now, we can assign parameters from two different sources. By default, the main source is the Open Force Field Toolkit. However, we can use OPLS2005' nonbonding parameters with the command below:

python offpele/main.py input_ligand.pdb --use_OPLS_nonbonding_params

or

molecule = Molecule('input_ligand.pdb')
molecule.parameterize('openff_unconstrained-1.2.0.offxml', use_OPLS_nonbonding_params=True)

The OPLS2005 parameters can be also assigned to bonds and angles. In this case, we need the following command:

python offpele/main.py input_ligand.pdb --use_OPLS_nonbonding_params --use_OPLS_bonds_and_angles

or

molecule = Molecule('input_ligand.pdb')
molecule.parameterize('openff_unconstrained-1.2.0.offxml', use_OPLS_nonbonding_params=True, use_OPLS_bonds_and_angles=True)

Finally, different charge methods can also be defined with the following commands:

python offpele/main.py input_ligand.pdb --charges_method 'charges_method_name'

or

molecule = Molecule('input_ligand.pdb')
molecule.parameterize('openff_unconstrained-1.2.0.offxml', charges_method='charges_method_name')

The list of available charges methods (charges_method_name) is:

Benchmark

The following scenarios should be benchmarked:

Maybe other protocols can also be interesting.

Extra

laumalo commented 4 years ago

To benchmark all the mentioned scenarios, the following bash file, benchmark.sh, has been implemented:

.\benchmark.sh

Each scenario can be benchmarked individually by the following command, for instance:

python main.py OFFOPLS -solvent VDGBNP -c am1bcc -nb -ba -p -o OFFOPLS_out9

where the flag -p indicates that the corresponding plots (histogram of the absolute difference and regression Experimental value vs. Energetic difference) will be created inside the output folder.

And, OFFOPLS is the method used.
Three methods can be distinguish:

The results of the scenarios benchmarked can be found under the following folders:

laumalo commented 4 years ago

Results from the regressions and histograms of this benchmark

laumalo commented 4 years ago

Results from the regressions and histograms of this benchmark (after fixing the bug in OBC implementation)

OFF benchmarks

OPLS benchmarks

OFF-OPLS benchmarks