יחידה 2 / 11

ייצוג מולקולרי ומבנה כימי: אימות באמצעות SMILES, InChI ו-RDKit

רווחים:

  • יכולת לזהות מולקולות לא לפי שם אלא לפי ייצוג מבנה (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

  1. זהה את המולקולה: תן ל-AI את השם, בקש SMILES. לדוגמה, "אמת SMILES קנוני עבור אקמול."
  2. אמת: נתח SMILES נכנס עם MolFromSmiles. אם אין, דחה.
  3. Canonicalize: אחזר איות קנוני עם MolToSmiles; תמיד השתמש בזה מעכשיו.
  4. חשב מספרים: קבל משקל מולקולרי, נוסחה, מספר טבעות, מספר תורמי/מקבלי קשרי מימן וכו' מ-RDKit, לא מ-AI.
  5. תיקון מזהה: צור 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.
  • [ ] אני מכיר מצבים שבהם סטריאוכימיה חשובה.