Calculate volume of the binding site and molecules
Written by Trent Balius, Dec. 2016.
The script to calculate volume is available here: volume_cal_sph.py
syntax: python volume_cal_sph.py input.sph spacing output_prefix
example: python volume_cal_sph.py binding_site.sph 0.5 binding_site
how the volume calculation works.
- First, Lay a grid over the spheres.
- Count the number or points contained in the spheres (Ns).
- Count the number of points in the grid box (Ng).
- Calculate the volume of the grid box (Vb).
Vs = Ns/Ng * Vb
- This method also produces dx files, so you can visualize (using chimera or VMD)the volume as grids.
Calculating the volume of a binding site.
You can run blastermaster.py which is distributed with DOCK3.7 and then use the lowdielectric.sph to define the pocket.
Alternatively, you can do the following:
- run dms (or you can also generated the molecular surface with Chimera) to generate a molecular surface.
- Use the sphgen program(distributed with all versions of DOCK) to flood the surface of the protein with spheres, which are then cluster by distance.
- Select the cluster that defines the binding site of interest by visualization in Chimera.
- Copy the sphere file. Using a text editor (vim) remove all clusters except the one of interest.
- Calculate the volume using the following script: volume_cal_sph.py
Calculating the volume of a small molecule.
Convert ligands to spheres using the following script: mol2toSPH_radius.py
Say, you would like to calculate how much two docking poses overlap in volume:
Convert the mol2 files to sph files:
python ~/zzz.scripts/mol2toSPH_radius.py molone.mol2 molone.sph python ~/zzz.scripts/mol2toSPH_radius.py moltwo.mol2 moltwo.sph
Create a combined sphere file:
cat molone.sph > bothmol.sph sed -e 's/cluster 1 /cluster 2 /g' moltwo.sph | grep -v DOCK >> bothmol.sph
>> python ~/zzz.scripts/volume_cal_sph.py molone.sph 0.5 molone input file = molone.sph scale = 0.5 outputprefix = molone max corner = 51.964 41.34 37.041 min corner = 39.322 31.367 28.854 0.5 26 20 17 0.5 0.5 0.5 [39.321999999999996, 31.366999999999997, 28.853999999999999] molN= 1502 boxN= 8840 boxV= 1105.0 molV= 187.75
>> python ~/zzz.scripts/volume_cal_sph.py moltwo.sph 0.5 moltwo input file = moltwo.sph scale = 0.5 outputprefix = moltwo max corner = 49.176 38.767 36.529 min corner = 39.059 31.2 27.753 0.5 21 16 18 0.5 0.5 0.5 [39.058999999999997, 31.199999999999996, 27.753] molN= 1257 boxN= 6048 boxV= 756.0 molV= 157.125
>> python ~/zzz.scripts/volume_cal_sph.py bothmol.sph 0.5 bothmol input file = bothmol.sph scale = 0.5 outputprefix = bothmol max corner = 51.964 41.34 37.041 min corner = 39.059 31.2 27.753 0.5 26 21 19 0.5 0.5 0.5 [39.058999999999997, 31.199999999999996, 27.753] molN= 1868 boxN= 10374 boxV= 1296.75 molV= 233.5
157.125 + 187.75 - 233.5 = 111.375