If you are a scientist analysing interactions between many different proteins, this code could be a great help to you in your research, saving you time and giving you the maximum amount of information. Molecular docking is a practical, cheap and "fast" way of predicting how two or more molecular structures interact. Is worth mention that there are more precise and detailed methods for predicticg interactions such as molecular dynamics simulation, however, if the number of simulations is elevated, this task become computationally expensive. That is why molecular docking can be used as a preliminary tool to predict interactions across many different molecules.
I developed this code for a research study that was looking for human receptors that were most prone to interact with a protein extracted from a rattlesnake venom called "crotamine." This way we could build an hypothesis on how will the venom will afect the body's metabolism and discover which pathways could be disrupting that could explain an observed rapid weight loss in cancer patiens treated with crotamine. Although, selection of human receptors according to molecular docking results is not a definitive way to determine its molecular mechanism, it can considerably reduce the search space between molecular candidates which shortens research time and saves resources within research. You can read about this research here. I also must thank David Melendez and Adriana Melendez for introducing me to this topic.
This process is carried out thanks to the open access tool called Cluspro by the Vajda lab and the ABC group at Boston University and Stony Brook University. All jobs can be submitted here and after a few hours the results can be downloaded. Your results are ordered by two parameters: Score and Members. We can easily see which models have more possibilities to relate to what is really happening, but for some curators this is not enough information to determine if the molecular docking pose is relevant and accurate. This is where these new scripts come into the picture. The main goal is to increase the resolution when filtering the results, by extracting all possible non-bond interactions by type for each molecular docking pose. It's also helpful in studies where there's a comparison between a ligand and different receptors, not only to select the best fitting pose within a receptor, but also to select the best fitting receptor.
Before we continue, we need to look at the main pipeline of actions for each job:
- The results are downloaded from cluspro and extracted into a dedicated folder.
- All models (or poses) must be opened in UCSF Chimera and inmediately saved to correct the format in the pdf files
- Open the models in BIOVA Discovery Studio Visualizer (DSV) to start the analysis.
- Select the ligand and the receptor to display their interactions.
- Save the results in a tsv (tab separated values) table
- Interactions are grouped by type and counted
- Finally, results are merged with the cluspro results and saved in a csv table.
- Perform our desired analysis to select the best poses
Please make sure you have UCSF Chimera and BIOVA Discovery Studio Visualizer installed before proceeding.
This includes a zip file (example: cluspro.961006.tar.bz2), and 4 score files (example: cluspro_scores.961006.002.csv)
For crotamine dockings with receptor crystals, we are using receptorkey+receptorPDB+docking_mode (example folder: ./cluspro/Corrida040723/AMYR_7TYF_R)
It was doing it manually for each job but it can be automated
It's a python code that needs to be run within chimera environment, so the command for launching from the Unix-based terminal is
chimera --nogui save_all.py
It will create a directory in ./cluspro/Corrida######/jobname/clusproID/chimera_output with all processed pdb files.
This step is nessesary because Discovery Studio can not read directly the pdb files from cluspro.
This is an API integration script that opens each pdb docking file, select the ligand (in this case, selects specifically for crotamine as it is 42 residues long), and the rest of the molecules are considered as receptor. Then receptor-ligand interactions are calculated and the results are saved to a tsv file in the folder ./cluspro/Corrida######/jobname/clusproID/interactions
When running several jobs, a list of job paths can be defined in line 19 (within @job_folders variable).
- Open BIOVA DSV
- Click on
Newtab and selectNew Script Window - Copy all the code from
extract_interactions.pland paste it in the script window - Update paths for your own jobs
- Click run and wait (must take around 5 seconds per model or one minute per job)
Here is an example of how it looks when it's running:

This code can be run directy in the terminal with
python interaction_analysis.py
It will create a new folder in ./interactions (do not confuse with "./cluspro/jobname/clusproID/interactions")
Each job will have a final output called "JobName_JobID_analysis.csv" (example AMYR_7TYF_R_969022_analysis.csv)
It contains the extracted scores values, members and the count for each model's number of interactions by type
If you have ways to improve this code or need more information to properly run it, please send me an email
Hope it is useful,
Raquel Cossío
A Biotechnology Engineer interested in Bioinformatics