Authors: J. Jasmin Güven
Software requirements:
Useful software:
- Start with a pdb file of the protein. You can save it in e.g.
inputs/protein/
in your project directory. The pdb file can contain crystallographic waters or metal cofactors. - Create ligand files in
*.sdf
or*.mol2
formats and save in the same directory, e.g.inputs/ligands/
You can set up an environment variable $MEZEHOME
in your bash_profile
or bashrc
. More details here:
export={path-to-metalloenzymes}/metalloenzymes/meze/
The workflow starts by setting up the project directory tree with the use of a python script called prepare.py
. For example, with KPC-2 with ligands whose net charge is -1:
python $MEZEHOME/prepare.py --input-file inputs/protein/kpc2.input.pdb --ligand-charge -1 --group-name kpc2 --non-metal
Note, that for proteins not containing metals it is important to define the --non-metal
flag!
For VIM-2:
python $MEZEHOME/prepare.py --input-file inputs/protein/vim2.input.pdb --ligand-charge -2 --group-name vim2
Example output:
WARNING:root:Warning: importing 'simtk.openmm' is deprecated. Import 'openmm' instead.
INFO:numexpr.utils:Note: NumExpr detected 32 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8.
INFO:numexpr.utils:NumExpr defaulting to 8 threads.
No separate water file detected in working directory. Continuing without it.
Successfully prepared meze network for AFE calculations.
Run scripts saved in: /home/jguven/projects/alchemistry/kpc2/afe/
For help with prepare.py
run: python prepare.py -h
The project directory tree will then look something like:
/path/to/project/
|--- inputs/ Input files (set-up by user)
| |--- ligands/ Ligand .sdf or .mol2 files (set-up by user)
| |--- protein/ Protein .pdb file (set-up by user)
|--- outputs/ Folder for saving the results of AFE runs
|--- afe/ Input files for running the meze workflow and AFE runs
| |--- protocol.dat Datafile with network information
| |--- ligands.dat Datafile containing ligand names, e.g. ligand_1, ligand_2, ...
| |--- meze_network.csv Dataframe of transformations from lomap, including ligand names, lomap scores and lambda windows
| |--- 02_add_water.sh Bash script to carry out solvation of unbound and bound ligands with solvate.py
| |--- 03_heat_meze.sh Bash script to carry out minimisation and equilibration of unbound and bound ligands with equilibrate.py
| |--- 04_meze.sh Bash script to carry out AFE preparation with meze.py
| |--- run_SOMD.sh Bash script to run an individual AFE transformation with a given engine, e.g. SOMD
| |--- slurm_all.sh SLURM script which executes all of the above bash scripts
|--- equilibration/ Folder for saving the minimisation and equilibration outputs for unbound and bound ligands
|--- logs/ Folder for keeping SLURM log files
It is a good idea to check that all the generated slurm scripts have the correct directory paths and slurm options.
To run the entire workflow using SLURM, simply run:
/path/to/project/afe/./slurm_all.sh
This executes all of the above scripts (02-04) using SLURM.
Example output:
dos2unix: converting file /home/jguven/projects/alchemistry/kpc2/partially_protonated_ligand///afe/ligands.dat to Unix format...
dos2unix: converting file /home/jguven/projects/alchemistry/kpc2/partially_protonated_ligand///afe//meze_network.csv to Unix format...
Adding water with slurm job 41654
Heating meze with slurm job 41655
Preparing AFE with slurm job
Submitted AFE slurm job 41657
Submitted AFE slurm job 41658
Submitted AFE slurm job 41659
Submitted AFE slurm job 41663
Submitted AFE slurm job 41664
Submitted AFE slurm job 41665
Submitted AFE slurm job 41666
Submitted AFE slurm job 41667
Submitted AFE slurm job 41668
Submitted AFE slurm job 41669
Submitted AFE slurm job 41670
Submitted AFE slurm job 41671
Submitted AFE slurm job 41672
Submitted AFE slurm job 41673
Submitted AFE slurm job 41674
Submitted AFE slurm job 41675
Submitted AFE slurm job 41676
Submitted AFE slurm job 41677
Submitted AFE slurm job 41678
Submitted AFE slurm job 41679
Submitted AFE slurm job 41680
Submitted AFE slurm job 41681
To check the status of submitted jobs, use squeue
.
The above project directory three will then be updated as:
/path/to/project/
|--- inputs/ Input files (set-up by user)
| |--- ligands/ Ligand .sdf or .mol2 files (set-up by user)
| |--- protein/ Protein .pdb file (set-up by user)
|--- outputs/ Folder for saving the results of AFE runs
| |--- SOMD_1/ First AFE run directory
| | |--- ligand_1~ligand_2/ AFE transformation of ligand_1 to ligand_2
| | | |--- bound/ Bound stage
| | | | |--- lambda_0.0000/ First lambda window 0.0
| | | | |--- ... [Rest of the lambda windows until lambda 1.0]
| | |--- ... [Other transformations]
| |--- SOMD_2/ Second AFE run repeat (depends on given number of repeats)
| |--- SOMD_3/ Third AFE run repeat (depends on given number of repeats)
|--- afe/ Input files for running the meze workflow and AFE runs [same as above]
|--- equilibration/ Folder for saving the minimisation and equilibration outputs for unbound and bound ligands
| |--- bound/
| | |--- ligand_1
| | | |--- min/ Minimisation
| | | |--- bb_r_nvt/ Backbone-restrained NVT equilibration
| | | |--- r_nvt/ Restrained NVT equilibration
| | | |--- nvt/ NVT equilibration
| | | |--- r_npt/ Restrained NPT equilibration
| | | |--- npt/ NPT equilibration
| | |--- ...
| |--- unbound/
| | |--- ligand_1
| | | |--- min/ Minimisation
| | | |--- r_nvt/ Restrained NVT equilibration
| | | |--- nvt/ NVT equilibration
| | | |--- r_npt/ Restrained NPT equilibration
| | | |--- npt/ NPT equilibration
| | |--- ...
|--- logs/ Folder for keeping SLURM log files
| |--- add_water_1.slurm.out Solvation SLURM output for ligand 1 etc
| |--- add_water_1.slurm.err Solvation SLURM error output for ligand 1 etc
| |--- heat_meze_1.slurm.out Minimisation and equilibration SLURM output for ligand 1 etc
| |--- heat_meze_1.slurm.err Minimisation and equilibration SLURM error output for ligand 1 etc
| |--- meze_1.slurm.out AFE preparation SLURM output for ligand 1 etc
| |--- meze_1.slurm.err AFE preparation SLURM error output for ligand 1 etc
| |--- ligand_1_ligand_2_1.slurm.out AFE calculation SLURM output for the first lambda window for transformation ligand_1~ligand_2
| |--- ligand_1_ligand_2_1.slurm.err AFE calculation SLURM error output for the first lambda window for transformation ligand_1~ligand_2
| |--- ...
To plot finished AFE calculations, run:
python $MEZEHOME/plot.py afe/protocol.dat afe/experimental_K_i.csv
There is also a jupyter notebook for plotting, used in the publication, called plots.ipynb
.