L5 · 30 دقيقة
RDKit عملياً
تحضير ليغند، معايير، تشابه.
أهداف التعلّم
- تنفيذ تحضير ligand أساسي: قراءة SMILES، إضافة H، توليد هيئة، واصفات، تشابه.
- معرفة أن EmbedMolecule قد يفشل، وأن AddHs قبل الـ embed قرار.
RDKit مختبر تمثيل
المكتبة تُحوّل العقد (SMILES) إلى رسم ثم إلى 3D. كل خطوة تفشل بصمت إن لم تفحص القيم المُعادة. التحضير الجيد: تقنين، إزالة أملاح إن لزم، تعيين stereochemistry، بروتنة بأداة مختصة لا بـ AddHs الأعمى وحده، ثم embed وoptimize تحت حقل صغير.
from rdkit import Chem
from rdkit.Chem import AllChem, Descriptors, DataStructs
from rdkit.Chem import rdFingerprintGenerator
mol = Chem.MolFromSmiles("CCO")
mol = Chem.AddHs(mol)
AllChem.EmbedMolecule(mol, randomSeed=42)
print(Descriptors.MolWt(mol))الغرض: مسار تعليمي: إيثانول من SMILES إلى هيئة وMW.
المُدخل: SMILES صالح.
المُخرج: 0 من EmbedMolecule تعني نجاحاً نمطياً؛ MW مطبوع. البذرة تثبّت العشوائية.
المعنى: هذا ليس تحضير docking كامل: لا tautomer enumerator ولا pKa.
أخطاء شائعة: MolFromSmiles → None؛ EmbedMolecule → غير 0: حلقات كبيرة، تداخل، أو stereo مستحيل. لا تمرّر الجزيء للالتحام.
لماذا؟ — لماذا نُثبّت randomSeed في التوليد ثلاثي الأبعاد؟
التضمين عشوائي. بلا بذرة لا يُعاد إنتاج الإحداثيات، فتفشل مقارنة هيئات وQA. البذرة لا تجعل الهيئة bioactive؛ تجعل الحساب قابلاً للإعادة.
ماذا لو؟ — ماذا لو تجاهلتَ قيمة إرجاع EmbedMolecule وشغّلت UFF على جزيء بلا إحداثيات؟
خطأ صريح أو هندسة صفرية تُكتب إلى SDF فاسد. QC بسيط يمنع ساعات docking على ملفات فارغة.