רווחים:
- יכולת לזהות מולקולות לא לפי שם אלא לפי ייצוג מבנה (SMILES עם בני אדם, InChI/InChIKey עם מסד נתונים)
- יכולת לזהות מבנים לא חוקיים או שגויים על ידי ניתוח, אימות וקנוניזציה של כל SMILES שניתן על ידי בינה מלאכותית עם RDKit
- היכולת להבין שכמויות דטרמיניסטיות כגון משקל מולקולרי ונוסחה צריכות להתקבל מהכלי מבוסס הכללים, ולא ממודל השפה.
התנאי הראשון לשימוש בטוח ב-AI בכימיה הוא לכתוב את המולקולה בשפה שגם המכונה וגם האדם יכולים להבין. אתה אומר "פנול", AI מבין את זה נכון; אבל כשאומרים "חומצה" יש אלפי אפשרויות. השמות מעורפלים; ייצוגי המבנה מדויקים. ביחידה זו נלמד את שני הסימונים הבסיסיים המתרגמים את המולקולה לטקסט (SMILES ו-InChI) ואת הכלי המאמת אותם באופן דטרמיניסטי (RDKit). המטרה שלנו: לתת את המולקולה ל-AI בצורה שלעולם לא תבין לא נכון, ולאשר את המבנה שמייצר בינה מלאכותית בעזרת כלי.
מה זה SMILES?
SMILES (Simplified Molecular-Input Line-Entry System) הוא פורמט של כתיבת מולקולה בשורה אחת של טקסט. אטומים מיוצגים על ידי אותיות, קשרים על ידי סמלים, וטבעות על ידי מספרים. דוגמאות:
- אתנול: CCO (פחמן–פחמן–חמצן; מימנים מרומזים).
- בנזן: c1ccccc1 (אותיות קטנות "c" מציינת פחמן ארומטי; 1 סוגרים את הטבעת).
- אספירין: CC(=O)Oc1ccccc1C(=O)O.
- קפאין: Cn1cnc2c1c(=O)n(C)c(=O)n2C.
הכוח של SMILES הוא בכך שהוא נושא את כל מבנה הקישור בשורה אחת; החולשה שלו היא שלאותה מולקולה יכולה להיות מספר SMILES חוקי (זה נקרא אי-קנוניות). נפתור את זה עם RDKit בעוד רגע.
רמז: ה"SMILES הקנוני" עבור מולקולה הוא האיות הסטנדרטי והיחיד עבור אותה מולקולה. כדי לראות אם שני SMILES הם אותה מולקולה, עשו קנוניזציה והשוו ביניהם; הן לא צריכות להיות שוות מבחינה טקסטואלית, אלא הן צריכות להיות מולקולות שוות.
מה זה InChI?
InChI (מזהה כימי בינלאומי) הוא מזהה סטנדרטי שפותח על ידי IUPAC. ההבדל מ-SMILES הוא שאותה מולקולה תמיד נותנת את אותו InChI; כלומר, הוא קנוני באופיו. הוא ארוך וקשה לקריאה, אך אידיאלי להתאמת מסדי נתונים. המקוצר "InChIKey" (תקציר של 27 תווים) משמש לחיפוש.
- אספירין InChIKey: BSYNRYMUTXBXSQ-UHFFFAOYSA-N.
כלל: אנשים מדברים SMILES (לקרוא), מכונות ומסדי נתונים תואמים ל-InChI/InChIKey (בדיוק). תן SMILES ל-AI; אשר במסד הנתונים באמצעות InChIKey.
RDKit: מנוע אימות דטרמיניסטי
RDKit היא ספריית כימיפורמטיקה בקוד פתוח. בניגוד למודל השפה, הוא מבוסס על כללים: מנתח SMILES, מחשב משקל מולקולרי, יוצר SMILES קנוני, מחזיר InChI/InChIKey, מצייר את המולקולה. אז RDKit "מחשב" את מה שה-AI "חוזה". זה הלב של זרימת העבודה: AI מייצר, RDKit מאמת.
זרימת אימות בסיסית:
from rdkit import Chemfrom rdkit.Chem import Descriptors, Drawsmiles = "CC(=O)Oc1ccccc1C(=O)O" Chem.MolToSmiles(mol)) print("מולקולרית נוסחה:", Chem.rdMolDescriptors.CalcMolFormula(mol)) print("MolecularDescriptors(Wol),.Molcular weight:",. "g/mol") print("InChIKey:", Chem.MolToInchiKey(mol))
אם MolFromSmiles מחזירה None, ה-AI נתן לך מולקולה לא חוקית; זו לבדה היא אזהרה חשובה מאוד. אם תקף, אינך צריך עוד לבקש ממודל השפה את המשקל המולקולרי; זה בידיים שלך באופן דטרמיניסטי.
צעד אחר צעד: פעולה הדדית של AI + RDKit
- זהה את המולקולה: תן ל-AI את השם, בקש SMILES. לדוגמה, "אמת SMILES קנוני עבור אקמול."
- אמת: נתח SMILES נכנס עם MolFromSmiles. אם אין, דחה.
- Canonicalize: אחזר איות קנוני עם MolToSmiles; תמיד השתמש בזה מעכשיו.
- חשב מספרים: קבל משקל מולקולרי, נוסחה, מספר טבעות, מספר תורמי/מקבלי קשרי מימן וכו' מ-RDKit, לא מ-AI.
- תיקון מזהה: צור InChIKey, חפש במסד נתונים (PubChem), אשר שהמולקולה היא אכן התרכובת שאתה רוצה.
ארבע תבניות הניתנות להעתקה
1) בקשת SMILES (משם עצם למבנה):
משימה: תן את ה-SMILES הקנוני עבור התרכובת הבאה. תרכובת: אקמול (פרצטמול). כלל: תן רק את המחרוזת SMILES ואת InChIKey, אל תוסיף שום הסבר נוסף. אם אינך בטוח, כתוב "לא בטוח", אל תמציא.
2) בקשת אימות SMILES (מהמבנה לבקרה):
בחנו את ה-SMILES שלהלן: CC(=O)Nc1ccc(O)cc1שאלות:1) האם זהו SMILES חוקי?2) לאיזו תרכובת הוא מתאים (שם נפוץ)?3) מהי הנוסחה המולקולרית?הערה: אני אחשב את המשקל המולקולרי המדויק עם RDKit; אתה רק נותן את פרשנות המבנה שלך.
3) השוואה בין שני ייצוגים:
יש לי שני חיוכים:א) OCCB) CCOשאלה: האם אלו אותה מולקולה או שונות? כתוב את הנימוקים שלך. הערה: אני אבדוק את התשובה שלך על ידי קנוניזציה שלה ב-RDKit.
4) הסבר מבנה (למטרות למידה):
SMILES: Cn1cnc2c1c(=O)n(C)c(=O)n2CTמשימה: קרא את SMILES זה חלק אחר חלק והסביר מה משמעות כל סמל (אטום, קשר, טבעת, ארומטיות) בטורקית פשוטה. ספרו גם באיזה מתחם מדובר.
הנחיה חלשה / הנחיה חזקה
חלש:
תן את התכונות של פרצטמול.
"תכונה" מעורפלת; בינה מלאכותית מייצרת מספרים אקראיים ממשקל מולקולרי ועד לנקודת התכה, שחלקם יהיו שגויים.
חזק:
תרכובת: acetaminophen.1) Canonical SMILES ו-InChIKey ver.2) תן את הנוסחה המולקולרית. כלל: אין לתת ערכים מספריים כגון משקל מולקולרי, נקודת התכה וכו'; אני אקבל אותם עם RDKit/PubChem. רק תן את מזהה הבנייה.
הבדל: כיוונו את ה-AI לעבר מה שהוא חזק בו (זהות מבנה) והרחק ממה שהוא חלש בו (מספרים ניסויים).
השוואה בין רשמים
תכונה
חיוכים
InChI / InChIKey
קריאה
גבוה (ידידותי לאנשים)
נמוך (ידידותי למכונה)
קנוניות
נתון לשינוי (צריך קנוניזציה)
רווק באופן טבעי
שימוש
תקשורת אנושית, ציור, קלט
התאמה למסד נתונים, זהות
סטריאוכימיה
תומך (סמלים @)
תומך (שכבתי)
לתת ל-AI
אידיאלי
אידיאלי לאישור
מיני תיקים
מקרה 1 - שני שמות, מולקולה אחת. תלמיד חשב ש"N-אצטיל-פארא-אמינופנול" ו"אקמול" הם תרכובות שונות ותכנן שני ניסויים נפרדים. כשקינו את ה-SMILES שלהם ב-RDKit, שניהם התבררו כ-CC(=O)Nc1ccc(O)cc1; זו הייתה אותה מולקולה. אבודים: חצי יום של תכנון; רווח: ניתן היה להימנע עם בדיקת קנוניזציה של 2 דקות.
מקרה 2 - לכידת SMILES לא חוקית. ה-AI החזיר CC(=O)Nc1ccc(O)cc1C( עבור גרסה (סוגריים לא סגורים). התלמיד הפעיל את MolFromSmiles, הוא החזיר ללא, מיד ראה את השגיאה וביקש SMILES מתוקן. ללא אימות, המבנה הפגום היה מתפשט לכל החשבונות.
מקרה 3 - משקל מולקולרי שגוי. YZ אמר "משקל מולקולרי 214.3 גרם/מול" עבור איבופרופן (C13H18O2). חישוב RDKit נתן 206.28 גרם/מול. הפרש עבור 0.1 מול: 21.43 גרם עם YZ, למעשה 20.63 גרם. הפרש זה של 3.9% ישבש את הסטוכיומטריה ואת חישוב התשואה. זה הביא חשבון דטרמיניסטי.
טעויות נפוצות
- מתן שמו של המולקולה. מילים נרדפות/שמות מסחריים מבולבלים. כלול תמיד SMILES או InChI.
- השוואת SMILES מבלי לעשות זאת בקנוניזציה. OCC ו-CCO שונים בטקסט אך זהים במולקולות.
- שאלת המשקל המולקולרי למודל הלשון. זהו חישוב דטרמיניסטי; זה נעשה מ-RDKit או באופן ידני מהנוסחה.
- לא מבחין ב-SMILES לא חוקי. לא בודק את החזרה של MolFromSmiles None וממשיך עם המבנה הלא נכון.
- הזנחת סטריאוכימיה. שני האננטיומרים (איזומרי תמונת מראה) עשויים להפגין השפעות ביולוגיות שונות; דילוג על סימני @/@@ ב-SMILES.
שימו לב: אותה נוסחה מולקולרית אין פירושה מולקולות שונות. C2H6O הוא גם אתנול (CCO) וגם דימתיל אתר (COC). שוויון נוסחה אינו שוויון זהות; השתמש ב-InChIKey לזיהוי.
לסיכום
- זהה מולקולות לפי סימון מבנה, לא לפי שם: SMILES עם אדם, InChI/InChIKey עם מסד נתונים.
- RDKit הוא דטרמיניסטי; AI מנבא, RDKit מחשב ומאמת.
- נתח כל AI SMILES עם MolFromSmiles ובדוק את האפשרות None, ואז קנוניזציה.
- קבל מספרים כמו משקל מולקולרי ונוסחה מ-RDKit, לא ממודל השפה.
- שוויון בנוסחה אינו אומר זהות מולקולרית; השתמש ב-InChIKey לזיהוי.
משימת יישום
בחר שלוש תרכובות (למשל קפאין, איבופרופן, גליצין). בקש מה-AI SMILES קנוני עבור כל אחד מהם. לאחר מכן כתוב סקריפט RDKit (השתמש בתבנית למעלה) וצור: SMILES קנוני, נוסחה מולקולרית, משקל מולקולרי, InChIKey. כמה מה-SMILES שניתנו על ידי ה-AI היו תקפים? אם YZ נתן גם את המשקל המולקולרי, חשב את ההפרש כאחוז עם ערך RDKit. רשמו את הממצאים בטבלה קטנה.
רשימת בדיקה
- [ ] אני יודע מה הם SMILES ו-InChI/InChIKey ומתי להשתמש בהם.
- [ ] אני מאמת כל SMILES שניתן על ידי AI עם MolFromSmiles.
- [ ] אני עושה קנוניזציה של SMILES לפני שאני משווה ביניהם.
- [ ] אני מקבל את המשקל המולקולרי והנוסחה מ-RDKit, לא ממודל השפה.
- [ ] אני מאשר את זהות המולקולה במסד הנתונים עם InChIKey.
- [ ] אני מכיר מצבים שבהם סטריאוכימיה חשובה.