This directory contains a bash script that automates molecular docking of one, two, and four ligand molecules, taken from a list, to the human BK channel using AutoDock Vina and Vinardo scoring functions. Vinardo was selected as an additional scoring function as it is well suited for ion channel targets. This script follows the guidelines from the AutoDock Vina manual, available at: AutoDock Vina documentation guidelines.
├── dock.sh # Main docking script - see Script WorkFlow section for details
├── CAS_IDs.txt # List of CID numbers for ligands of interest
├── protein.pdbqt # BK Channel for docking
├── config.txt # Box grid parameters for docking
├── environment_docking.yml # — YAML file listing all dependencies and package versions for the conda environment used in this project
├── fetched_sdf/ # Directory with ligand structures in SDf format, with and without added hydrogens
├── vina_results/ # Directory with obtained docking poses for each ligand in PDBQT format and TXT file containing information about obtained docking poses using AutoDock Vina scoring function.
└── vinardo_results/ # Directory with obtained docking poses for each ligand in PDBQT format and TXT file containing information about obtained docking poses using Vinardo scoring function.
environment_docking.yml contains all dependencies and packages needed for dock.sh to work. Set up the environment by running:
conda env create -f environment_docking.ymlTwo additional Python scripts are required that are not available via conda:
- scrub.py — from molscrub, used for protonation and 3D coordinate generation
- mk_prepare_ligand.py — from Meeko, used to convert ligands to PDBQT format for AutoDock Vina
Install both into your environment from source:
git clone https://github.com/forlilab/molscrub.git && cd molscrub && git checkout develop && pip install -e . && cd ..
git clone https://github.com/forlilab/Meeko.git && cd Meeko && pip install -e . && cd ..The receptor file protein.pdbqt was prepared from the BK channel crystal structure using AutoDock Tools (ADT) v1.5.7.
-
Load structure
File → Read Molecule— load the cleaned PDB file
-
Remove water molecules and potassium ions
Edit → Delete Water- manually select and delete potassium ions
-
Add polar hydrogens
Edit → Hydrogens → Add → Polar Only
-
Add Kollman charges
Edit → Charges → Add Kollman Charges
-
Merge non-polar hydrogens
Edit → Hydrogens → Merge Non-polar
-
Assign AutoDock 4 atom types
Edit → Atoms → Assign AD4 typ
-
Save receptor as PDBQT
Grid → Macromolecule → Choose→ select protein → save asprotein.pdbqt- only
ATOMrecords are saved (CONECT, CRYST1, END excluded)
-
Define the docking grid box
Grid → Grid Box— center and dimensions set to cover the BK channel binding site- grid parameters saved to
config.txt
-
Logging All terminal output is echoed to
run.logviatee -
Create necessary directories The script creates the following directories if they don't exist:
fetched_sdf— stores ligand structures with and without hydrogen in SDF format and prepared PDBQT filesvina_results— stores obtained docking poses for each ligand in PDBQT format and TXT file containing information about obtained docking poses using AutoDock Vina scoring functionvinardo_results— stores obtained docking poses for each ligand in PDBQT format and TXT file containing information about obtained docking poses using Vinardo scoring function
-
Fetch molecules by CAS IDs For each CAS number in
CAS_IDs.txt:- Obtains CID from CAS number by querying PubChem
- Fetches the SDF file for the CID
-
Ligand Preparation
- For each SDF file runs
mk_prepare_ligand.pyto prep ligand for the docking
- For each SDF file runs
-
Molecular Docking For each prepped ligand, performs docking against a BK channel (
protein.pdbqt) with--exhaustiveness=32using two scoring functions and three ligand copy configurations:- Vina docking with 1, 2 and 4 ligand copies
- Vinardo docking with 1, 2 and 4 ligand copies
-
Clean-up Moves all docking outputs to appropriate folders.
Perform the docking by running:
./dock.sh- The list of docked ligands can be updated by modifying the
CAS_IDs.txtfile. - This script uses
protein.pdbqtfile, which contains a BK channel structure but it can be replaced by any protein of interest - in that case grid box parameters have to be updated inconfig.txtfile to match the binding site of the new protein.
Cheers! :)