L17 · 24 دقيقة
بحث التشابه والتجميع
تانيموتو عملياً.
أهداف التعلّم
- حساب Tanimoto على بصمات Morgan عبر واجهة RDKit المعروفة.
- تفسير العتبة كقرار مشروع مرتبط بنوع البصمة.
- استخدام التشابه للتجميع قبل الشراء لا كدليل نشاط.
تانيموتو عملياً
البصمة الدائرية Morgan/ECFP تمثيل شائع. في RDKit الحالي تُستدعى غالباً عبر rdMolDescriptors.GetMorganFingerprintAsBitVect ثم DataStructs.TanimotoSimilarity. نصف القطر 2 و2048 بت إعداد شائع يُذكر في methods لا يُقدَّس.
from rdkit import Chem
from rdkit.Chem import rdMolDescriptors, DataStructs
m1 = Chem.MolFromSmiles("c1ccccc1")
m2 = Chem.MolFromSmiles("c1ccncc1")
fp1 = rdMolDescriptors.GetMorganFingerprintAsBitVect(m1, radius=2, nBits=2048)
fp2 = rdMolDescriptors.GetMorganFingerprintAsBitVect(m2, radius=2, nBits=2048)
print(DataStructs.TanimotoSimilarity(fp1, fp2))الغرض: تشابه Tanimoto بين بنزين وبيريدين كمثال تعليمي.
المُدخل: جزيئان صالحان بعد MolFromSmiles.
المُخرج: عدد في [0,1].
المعنى: القيمة تعتمد على radius وnBits؛ لا تُقارن عبر إعدادات مختلفة صامتة.
أخطاء شائعة: None من SMILES فاشل؛ أو خلط بصمة كثيفة مع أخرى طولها مختلف.
استخدامات مشروعة
- أقرب جار لنطاق تطبيق QSAR.
- تجميع hits قبل الشراء (مثلاً Butina-style clustering كمفهوم).
- خط أساس: هل نموذجك يهزم nearest-neighbour؟
لماذا؟ — لماذا نثبّت nBits؟
لأن الطول جزء من تعريف البصمة. تغييره يغيّر التصادمات bit collisions وبالتالي كل العتبات التاريخية في مشروعك.
ماذا لو؟ — ماذا لو أخذت كل مركّب Tanimoto ≥ 0.9 من hit واشتريت المئة كلها؟
اشتريت السلسلة نفسها مراراً. خذ ممثلين من كل عنقود واترك ميزانية لـ scaffold مختلف.
تمرين
اكتب جملة methods لبصمة مستخدمة في AD.
مواضيع مرتبطة