This is part of the MolSSI Molecular Mechanics Interoperable Components (MMIC) project. This package provides a code-agnostic or generic component and schemas for running molecular docking components.
Docking is a computational technique used to determine the optimal binding modes of a ligand-receptor system. A ligand is typically a small (e.g. drug) molecule that binds to a macromolecular receptor such as a protein. A docking simulation estimates the strength of the binding (or a quantitative "score") in the vicinity of the receptor's binding site. Each score corresponds to the 3D conformation and orientation of the ligand relative to the receptor (or the "pose").
Applications of docking include:
- Virtual screening (hit identification)
- Drug discovery (lead optimization)
- Binding site identification (blind docking)
- Protein-protein interactions
- Enzymatic reaction mechanisms
- Protein engineering
# Import MM molecule data model
from mmelemental.models import Molecule
# Construct MM molecules
receptor = Molecule.from_file(pdb_file)
ligand = Molecule.from_data(smiles_code, dtype="smiles")
# Construct docking input data from MMSchema molecules
dock_input = {
"molecule": {
"ligand": ligand,
"receptor": receptor
},
"search_space": (xmin, xmax, ymin, ymax, zmin, zmax),
"search_space_units": "angstrom",
}
To run the computation, you need a specific component that connects to a docking engine such as mmic_autodock_vina.
# Import docking simulation component for autodock vina
from mmic_docking.components import DockComponent
# Run autodock vina
dock_output = DockComponent.compute(dock_input)
# Extract output
scores, ligands = dock_output.scores, dock_output.poses.ligand
Copyright (c) 2021, MolSSI
Project based on the Computational Molecular Science Python Cookiecutter version 1.1.