Meeko
Meeko prepara l'entrada per vina i processa la seva sortida.
Introducció
Section titled “Introducció”Projecte de suport: https://gitlab.com/xtec/bio/meeko
Es desenvolupa conjuntament amb AutoDock-GPU i AutoDock Vina.
Meeko parametritza tant molècules orgàniques petites (lligands) com proteïnes i àcids nucleics (receptors).
Meeko exposa una API de Python per permetre la programació d’scripts.
Entorn de treball
Section titled “Entorn de treball”uv init meeko -p 3.11 --name meeko-projectcd meekouv add meeko molscrub urllib3
Docking bàsic
Section titled “Docking bàsic”Aquest és un exemple bàsic d’acoblament que utilitza l’executable AutoDock Vina per executar un acoblament bàsic d’una petita molècula flexible similar a un fàrmac sobre un receptor proteic rígid.
En aquest exemple, un lligand de molècula petita (Imatinib, token PDB STI) s’acobla de nou a una estructura proteica buida de ratolí c-Abl (token PDB 1IEP) per reproduir l’estructura complexa. S’espera que entre les poses més ben classificades hi hagi una posició acoblada que s’assembli molt a la posició original del lligand.
Imatinib és una molècula petita inhibidora de quinases que va revolucionar el tractament del càncer, particularment la leucèmia mieloide crònica, l’any 2001. Va ser considerat un “fàrmac miracle” a causa del seu èxit clínic.
En aquest enllaç tens l’script que crearem: basic.py
Preparació del Lligand
Section titled “Preparació del Lligand”La preparació del lligand és el procés que genera els fitxers PDBQT d’entrada del lligand per al càlcul d’acoblament i cribratge virtual.
Pots trobar la cadena SMILES per a l’Imatinib en diverses bases de dades químiques fiables, incloent-hi PubChem i DrugBank.
Crea el fitxer basic.py
:
import osimport subprocessimport sys
os.makedirs("data", exist_ok=True)
# Ligand Preparation
ligand = "CC1=C(C=C(C=C1)NC(=O)C2=CC=C(C=C2)CN3CCN(CC3)C)NC4=NC=CC(=N4)C5=CN=CC=C5"
scrub = os.path.join(os.getcwd(), '.venv', 'Scripts', 'scrub.py')subprocess.run( [sys.executable, scrub, ligand, "--out", "data/imatinib.sdf", "--skip_tautomers", "--ph_low", "5", "--ph_high", "9"])
scrub.py
és un script de línia de comandes de Scrubber que genera conformers 3D de protòmers i tautòmers per a molècules petites donades a un pH específic (o rang de pH).
Donat un rang de pH de 5 a 9, els protòmers de sortida inclouran aquells que constitueixin no menys de l’1% de la població total a pH = 7. Basant-se en els valors de pKa de referència, es consideraran els nitrogens de les amines i el nitrogen de la piridina per a l’enumeració àcid/base.
El fitxer de sortida imatinib.sdf
contindrà dos protòmers d’Imatinib, un amb un grup piridina neutre i l’altre amb un grup piridini (+1). Tots els nitrogens d’amoni alifàtic estaran protonats.
Scrub completed.Summary of what happened:Input molecules supplied: 1mols processed: 1, skipped by rdkit: 0, failed: 0nr isomers (tautomers and acid/base conjugates): 2 (avg. 2.000 per mol)nr conformers: 2 (avg. 1.000 per isomer, 2.000 per mol)
A continuació utilitzarem l’script mk_prepare_ligand.py
per preparar el lligand.
En aquest enllaç tens les opcions que accepta l’script: mk_prepare_ligand.py options
En cas que hi hagi múltiples molècules a l’arxiu SDF, mk_prepare_ligand.py
necessita saber el prefix dels noms dels arxius (mitjançant --multimol_prefix
) o alternativament on generar (mitjançant --multimol_outdir
) els múltiples arxius PDBQT.
Aquí, donarem als arxius PDBQT un prefix data/imatinib
en els noms. Els arxius PDBQT de sortida seran data/imatinib-1.pdbqt
i data/imatinib-1.pdbqt
.
from meeko.cli import mk_prepare_ligand
# ...
sys.argv = ["", "-i", "data/imatinib.sdf", "--multimol_prefix", "data/imatinib"]mk_prepare_ligand.main()
Visualitza els fitxers amb PyMOL
Preparació del receptor
Section titled “Preparació del receptor”La preparació del receptor és el procés que genera els fitxers d’entrada del receptor per al càlcul d’acoblament i cribratge virtual. Normalment, comença amb un fitxer PDB d’un sistema biomacromolecular, amb o sense coordenades d’hidrògens explícits.
A continuació utilitzarem l’script mk_prepare_receptor.py
per preparar el receptor.
En aquest enllaç tens les opcions que accepta l’script: mk_prepare_receptor.py options
L’acoblament amb Vina requereix els següents fitxers d’entrada del receptor:
- Fitxer PDBQT del receptor
- (Opcional) un fitxer TXT que conté les especificacions de la caixa, que es pot reutilitzar com a fitxer de configuració per a Vina.
El primer que fem és descarregar l’estructura del receptor del servidor de RCSB:
import urllib3
# ...
# Receptor Preparation
response = urllib3.request("GET", f"http://files.rcsb.org/view/1iep.pdb")with open("data/1iep.pdb", 'wb') as f: f.write(response.data)
Partint d’un fitxer PDB proporcionat a data/1iep.pdb
, la generació d’un fitxer Receptor PDBQT és molt senzilla:
from meeko.cli import mk_prepare_ligand, mk_prepare_receptor
# ...
sys.argv = ["", "--read_pdb", "data/1iep.pdb", "--out", "data/1iep", "-p"]mk_prepare_receptor.main()
Aquí, utilitzem --out
per establir el nom base dels fitxers de sortida a data/1iep
amb la petició -p
. L’execució generarà només el fitxer receptor PDBQT, data/1iep.pdbqt
.
Per generar el fitxer TXT que té la dimensió de la caixa, hem de trobar una manera de definir la caixa d’acoblament desitjada.
Exportar Poses de l’Acoblament
Section titled “Exportar Poses de l’Acoblament”Amb Vina, els fitxers necessaris (generats dels passos anteriors) i la comanda per executar un càlcul bàsic d’acoblament d’un sol lligand són els següents:
config_txt="rec_1iep.box.txt"./vina --ligand $lig_pdbqt --receptor $rec_pdbqt --config $config_txt
Sense donar a Vina un nom de sortida personalitzat, el fitxer PDBQT de sortida per defecte s’anomenarà imatinib_protomer-1_out.pdbqt
. Utilitzant els Smiles i la informació de mapatge emmagatzemada a la secció REMARKS
del fitxer PDBQT, mk_export.py
és capaç de reconstruir les estructures completes dels àtoms del lligand acoblat i exportar les poses a un fitxer SDF, imatinib_protomer-1_vina_out.sdf
, que inclou les coordenades reconstruïdes de tots els àtoms d’hidrogen:
docked_pdbqt="imatinib_protomer-1_out.pdbqt"mk_export.py $docked_pdbqt -s imatinib_protomer-1_vina_out.sdf
API de Python
Section titled “API de Python”Meeko pren com a entrada una molècula RDKit que té posicions 3D i tots els hidrogens com a àtoms reals, i crea un objecte anomenat MoleculeSetup que emmagatzema tots els paràmetres, com ara tipus d’àtoms, càrregues parcials o enllaços rotables. RDKit verifica la valència dels àtoms, fent difícil tenir molècules amb ordres d’enllaç o càrregues formals incorrectes. L’addició d’hidrogens i posicions 3D no és realitzada per Meeko.
La classe MoleculePreparation
emmagatzema tota la configuració necessària per parametritzar un lligand, i conté els mètodes que prenen una molècula RDKit com a entrada i retornen un MoleculeSetup parametritzat. El MoleculePreparation ofereix diverses opcions per controlar com es parametritzen les molècules.
Vina utilitza el format PDBQT per a les molècules d’entrada. Els fitxers PDBQT, o cadenes en Python, es produeixen a partir d’una instància parametritzada de MoleculeSetup
. Els mètodes per escriure PDBQT es troben a la classe PDBQTWriterLegacy
. Les cadenes PDBQT es poden passar directament a Vina utilitzant la seva API de Python.
El següent script llegeix un fitxer anomenat molecules.sdf
utilitzant RDKit, configura una instància de MoleculePreparation
amb opcions predeterminades, i crea cadenes PDBQT per a totes les molècules del fitxer d’entrada:
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 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.
Batched Ligand Preparation from a .smi File
Section titled “Batched Ligand Preparation from a .smi File”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/
AutoDock
Section titled “AutoDock”El contingut d'aquest lloc web té llicència CC BY-NC-ND 4.0.
©2022-2025 xtec.dev