Meeko
Meeko prepares the input for AutoDock and processes its output.
It is developed alongside AutoDock-GPU and AutoDock-Vina. Meeko parameterizes both small organic molecules (ligands) and proteins and nucleic acids (receptors).
Meeko exposes a Python API to enable scripting.
Entorn de treball
Section titled “Entorn de treball”uv init docking -p 3.12cd dockinguv add meekoLigand Preparation
Section titled “Ligand Preparation”Ligand Preparation is the process that generates ligand input files for docking calculation and virtual screening.
At present, AutoDock Vina and AutoDock-GPU need the ligand input files in the PDBQT format.
Prepare a Single Ligand from a Smiles String
Section titled “Prepare a Single Ligand from a Smiles String”Scrubber generates 3D conformers of protomers and tautomers for given small molecules at a specified (range of) pH.
uv add molscrubImatinib is a small-molecule drug. You can find the SMILES string for Imatinib from various reliable chemical databases and resources, including but not limited to PubChem and DrugBank.
from rdkit import Chemfrom scrubber import Scrub
# imatinibsmiles = "CC1=C(C=C(C=C1)NC(=O)C2=CC=C(C=C2)CN3CCN(CC3)C)NC4=NC=CC(=N4)C5=CN=CC=C5"mol = Chem.MolFromSmiles(smiles)scrub = Scrub(ph_low=5, ph_high=9, skip_tautomers=True)
for mol_state in scrub(mol): print(Chem.MolToSmiles(mol_state), "nr conformers: %d" % mol_state.GetNumConformers())
Chem.SDWriter("imatinib.sdf").write(mol)Given a pH range of 5 to 9, the output protomers will include those which make up no less than 1% of the total population at pH = 7. Based on the reference pKa values, the amine nitrogens and the pyridine nitrogen will be considered for acid/base enumeration
The output file imatinib.sdf will contain two protomers of Imatinib, one with a neutral pyridine group and the other with a (+1) pyridinium group. All of the aliphatic ammonium nitrogens will be protonated.
PDBQT file
Section titled “PDBQT file”Meeko takes as input an RDKit molecule that has 3D positions and all hydrogens as real atoms, and creates an object called MoleculeSetup that stores all the parameters, such as atom types, partial charges, or rotatable bonds. RDKit checks the valence of atoms, making it difficult to have molecules with incorrect bond orders or formal charges. Adding hydrogens and 3D positions is not performed by Meeko.
In this example, we will use mk_prepare_ligand.py, a command-line script in Meeko, to prepare such ligand PDBQT files.
from meeko import MoleculePreparationfrom meeko import PDBQTWriterLegacyfrom rdkit import Chem
input_filename = "molecules.sdf"
# iterate over molecules in SD filefor mol in Chem.SDMolSupplier(input_filename, removeHs=False): mk_prep = MoleculePreparation() molsetup_list = mk_prep(mol)
molsetup = molsetup_list[0]
pdbqt_string = PDBQTWriterLegacy.write_string(molsetup)The following script reads a file named molecules.sdf using RDKit, configures an instance of MoleculePreparation with default options, and creates PDBQT strings for all molecules in the input file:
The pdbqt_string can be written to a file for docking with AutoDock-GPU or AutoDock-Vina, or passed directly to Vina within Python using Vina’s Python API, and avoiding writing PDBQT files to the filesystem.
Note that calling mk_prep returns a list of molecule setups. As of v0.6.0, this list contains only one element unless mk_prep is configured for reactive docking, which is not the case in this example. This is why we are considering the first (and only) molecule setup in the list.
This is a basic docking example that uses the AutoDock Vina executable to run a basic docking of a flexible small drug-like molecule onto a rigid protein receptor.
In this example, a small molecule ligand (Imatinib, PDB token STI) is docked back to a hollow protein structure of mouse c-Abl (PDB token 1IEP) to reproduce the complex structure. A docked pose that closely resembles the original position of the ligand is expected among the top-ranked poses.
Major Python packages used
- RDKit https://rdkit.org/
- Molscrub https://github.com/forlilab/molscrub
- Meeko https://github.com/forlilab/Meeko
- ProDy http://www.bahargroup.org/prody/
- cctbx-base (for reduce2) https://github.com/cctbx/cctbx_project
- py3Dmol https://3dmol.org/
Data
- Phenix-project/geostd (for reduce2) https://github.com/phenix-project/geostd/
Ligand Preparation
Section titled “Ligand Preparation”The ligand molecule is prepared from a Smiles string. A protonated 3D conformer of ligand is generated by scrub.py, and the conversion to a tangible ligand PDBQT file is done by mk_prepare_ligand.py.
AutoDock
Section titled “AutoDock”Python
Section titled “Python”Python offers a range of libraries and tools that facilitate molecular docking simulations and analysis. Some popular Python libraries used in molecular docking are:
-
PyAutodock: PyAutodock is a Python wrapper for the popular docking software AutoDock Vina. It allows you to perform molecular docking studies using AutoDock Vina from within Python and enables programmatic control of the docking process.
-
PyRx (Python Prescription): PyRx is a virtual screening tool that utilizes Autodock Vina under the hood. It provides a user-friendly graphical interface but also offers a Python API for more advanced users who want to automate tasks or perform custom analyses.
-
Open Babel: Open Babel is a chemical toolbox designed to speak the many languages of chemical data. It can be used to convert molecular file formats and manipulate molecular structures, which is often useful in preparing input files for docking simulations.
-
RDKit: RDKit is another versatile cheminformatics library that can handle molecular data, including 2D and 3D molecule rendering, chemical transformations, and property calculations, which can be beneficial in preparing ligands and protein structures for docking studies.
-
BioPython: BioPython is a widely-used library for computational biology that can handle various biological data, including protein structures, DNA/RNA sequences, and molecular interactions. It provides tools for parsing and handling PDB files (protein structure files) and can be useful for extracting protein-ligand interactions after docking.
These libraries provide functionalities to set up docking simulations, analyze docking results, visualize interactions, and perform further analysis. Additionally, with Python’s extensive scientific ecosystem, you can combine these libraries with others for data manipulation, visualization, and statistical analysis, making it a popular choice for researchers and scientists in the field of molecular docking.
El contingut d'aquest lloc web té llicència CC BY-NC-ND 4.0.
©2022-2025 xtec.dev