Interaction Filtering
This is the 1st version (20200210) of Interaction Filtering. Please copy the code to your current directory.
FIRST AND FOREMOST, if you find any version conflicts between python3 and python2, you need to comment out inside ~/.cshrc: # source /nfs/soft/dock/versions/dock37/DOCK-3.7-trunk/env.csh
$ cp -r /mnt/nfs/home/sgu/code/interfilter .
To run the code, you need to install OpenEye (version 2019.Oct.2) by following the instruction: https://docs.eyesopen.com/toolkits/python/quickstart-python/linuxosx.html
On our cluster, you may source my environment.
$ source /nfs/home/sgu/anaconda3/etc/profile.d/conda.csh $ conda activate oepython $ source /nfs/soft/openeye/license.csh
Running the code:
$ python interfilter.py -protein rec.crg.pdb -ligand poses.mol2
If you want to know the interaction (hydrogen bond or salt bridge) for a specific residue (e.g. ASP115A, A means chain A):
In rec.crg.pdb, some residue like HIS is converted to HID or HIE. Please use the converted name instead of HIS.
$ python interfilter.py -protein rec.crg.pdb -ligand poses.mol2 -residue ASP115A
If you want to plot the paired/unpaired interaction (figure generation can be slow, but tens of thousands should be fine):
$ python interfilter.py -protein rec.crg.pdb -ligand poses.mol2 -residue ASP115A -plot
The output is a txt file, containing 15 columns: 1ligand 2clash 3hbond_clash+sbridge_clash 4unpairedl_donor+unpairedl_sbridge 5unpairedl_acceptor 6unpairedp_donor+unpairedp_acceptor 7unpairedp_sbridge 8contact 9hbond+hbond_nonideal 10hbond_ligand 11sbridge 12stacking 13cationpi 14halogen 15residue
To filter out compounds, you may be interested in:
Column3: #hydrogen bond clash + #salt bridge clash
Column4: #unpaired ligand donor + #unpaired ligand salt bridge
Column9: #hydrogen bond + #non-ideal hydrogen bond
Column11: #salt bridge
Column15: interaction (hydrogen bond or salt bridge) for you specified residue (0 means no, 1 means yes) $ awk '$3==0 && $4==0 && $9+$11>0 {print $0}' $ awk '$3==0 && $4==0 && $9+$11>0 && $15>0 {print $0}' (if you provided residue)