единици
1. Въведение в изкуствения интелект в химията: роли, граници, валидиране и етика 2. Молекулярно представяне и химическа структура: Валидиране със SMILES, InChI и RDKit 3. Прогноза за реакцията и механизъм: Прогноза за продукт, състояние и нежелана реакция 4. Поддръжка на спектрална интерпретация: NMR, IR и мас спектрометрия 5. Преглед на литературата и планиране на синтез: източник, процедура и пътна карта 6. Анализ на химически данни и Python: pandas, стехиометрия и калибриране 7. Прогноза за молекулярни свойства и QSAR: разделителна способност, pKa и граници на модела 8. Лабораторна документация: Тетрадка за експерименти, ELN и възпроизводимост 9. Оценка на безопасността и опасността: GHS, SDS и границите на изкуствения интелект 10. Потвърждение, халюцинация и научна почтеност 11. Човекът в експеримента: етика, поверителност, отговорност и работен процес от край до край
единица 2 / 11

Молекулярно представяне и химическа структура: Валидиране със SMILES, InChI и RDKit

Печалби:

  • Възможност за идентифициране на молекули не по име, а по структурно представяне (SMILES с хора, InChI/InChIKey с база данни)
  • Възможност за откриване на невалидни или неправилни структури чрез анализиране, валидиране и канонизиране на всеки SMILES, даден от изкуствен интелект с RDKit
  • Да бъдеш в състояние да разбереш, че детерминистичните величини като молекулно тегло и формула трябва да бъдат получени от базирания на правила инструмент, а не от езиковия модел.

Първото условие за безопасното използване на AI в химията е да напишете молекулата на език, който и машината, и човекът могат да разберат. Казвате "фенол", AI го разбира правилно; но когато кажете "киселина", има хиляди възможности. Имената са двусмислени; представянията на структурата са точни. В тази част ще научим двете основни обозначения, които превеждат молекулата в текст (SMILES и InChI) и инструмента, който ги проверява детерминистично (RDKit). Нашата цел: да дадем молекулата на AI по начин, който той никога няма да разбере погрешно, и да потвърдим структурата, произведена от 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 след малко.

Подсказка: „Каноничните УСМИВКИ“ за една молекула е единственото стандартно изписване за тази молекула. За да видите дали две УСМИВКИ са една и съща молекула, канонизирайте ги и ги сравнете; Не трябва да са равни текстово, но трябва да са равни молекули.

Какво е InChI?

InChI (International Chemical Identifier) ​​е стандартен идентификатор, разработен от IUPAC. Разликата от SMILES е, че една и съща молекула винаги дава същия InChI; тоест има каноничен характер. Той е дълъг и труден за четене, но е идеален за съпоставяне на бази данни. За търсене се използва съкратеното "InChIKey" (дайджест от 27 знака).

  • Аспирин InChIKey: BSYNRYMUTXBXSQ-UHFFFAOYSA-N.

Правило: Хората говорят УСМИВКИ (четене), машините и базите данни съвпадат с InChI/InChIKey (точно). Дайте УСМИВКИ на AI; Потвърдете в базата данни с InChIKey.

RDKit: детерминистична машина за проверка

RDKit е библиотека за химична информатика с отворен код. За разлика от езиковия модел, той е базиран на правила: анализира SMILES, изчислява молекулно тегло, генерира канонични SMILES, връща InChI/InChIKey, рисува молекулата. Така RDKit "изчислява" това, което AI "предсказва". Това е сърцето на работния процес: AI генерира, RDKit проверява.

Основен поток на проверка:

от rdkit import Chemfrom rdkit.Chem import Дескриптори, Drawsmiles = "CC(=O)Oc1ccccc1C(=O)O" Chem.MolToSmiles(mol)) print("Молекулна формула:", Chem.rdMolDescriptors.CalcMolFormula(mol)) print("Молекулно тегло:", round(Descriptors.MolWt(mol), 2), "g/mol") print("InChIKey:", Chem.MolToInchiKey(mol))

Ако MolFromSmiles върне None, AI ви е дал невалидна молекула; Само по себе си това е много ценно предупреждение. Ако е валиден, вече не е необходимо да питате езиковия модел за молекулното тегло; Детерминистично е във вашите ръце.

Стъпка по стъпка: AI + RDKit взаимодействие

  1. Идентифицирайте молекулата: Дайте името на AI, поискайте УСМИВКИ. Например „проверете каноничните SMILES за парацетамол“.
  2. Проверете: Анализирайте входящите SMILES с MolFromSmiles. Ако няма, отхвърлете.
  3. Canonicalize: Извличане на каноничен правопис с MolToSmiles; Винаги използвайте това отсега нататък.
  4. Изчислете числа: Вземете молекулно тегло, формула, брой пръстени, брой донори/акцептори на водородни връзки и т.н. от RDKit, не от AI.
  5. Fix ID: Генерирайте InChIKey, потърсете в база данни (PubChem), потвърдете, че молекулата наистина е съединението, което искате.

Четири копируеми шаблона

1) Искане на УСМИВКИ (от съществително към структура):

Задача: Дайте каноничните УСМИВКИ за следното съединение. Съединение: парацетамол (ацетаминофен). Правило: Дайте само низа SMILES и InChIKey, не добавяйте допълнителни обяснения. Ако не сте сигурни, напишете "НЕ СИГУРЕН", не се гримирайте.

2) Заявка за валидиране на SMILES (от структура към контрол):

Разгледайте SMILES по-долу: CC(=O)Nc1ccc(O)cc1Въпроси:1) Това валиден SMILES ли е?2) На какво съединение отговаря (общоприето име)?3) Каква е молекулната формула? Забележка: Ще изчисля точното молекулно тегло с RDKit; Вие просто давате вашата интерпретация на структурата.

3) Сравняване на две представяния:

Имам две УСМИВКИ: A) OCCB) CCOTask: Това една и съща молекула ли е или различни? Напишете аргументите си. Забележка: Ще проверя кръстосано отговора ви, като го канонизирам в RDKit.

4) Обяснение на структурата (за учебни цели):

SMILES: Cn1cnc2c1c(=O)n(C)c(=O)n2CTask: Прочетете този SMILES част по част и обяснете какво означава всеки символ (атом, връзка, пръстен, ароматичност) на чист турски език. Кажете също кое е съединението.

Слаба подкана / Силна подкана

Слаб:

Дайте свойствата на ацетаминофена.

„Характеристика“ е неясна; AI генерира произволни числа от молекулно тегло до точка на топене, някои от които ще бъдат грешни.

Силен:

Съединение: ацетаминофен.1) Canonical SMILES и InChIKey ver.2) Дайте молекулната формула.Правило: НЕ ДАВАЙТЕ ЧИСЛОВИ стойности като молекулно тегло, точка на топене и др.; Ще ги взема с RDKit/PubChem. Просто дайте ID на компилацията.

Разлика: Насочихме AI към това, в което е силен (идентичност на структурата) и далеч от това, в което е слаб (експериментални числа).

Сравнение на впечатленията

функция

УСМИВКИ

InChI / InChIKey

Четивност

Висок (приятелски настроен към хората)

Нисък (удобен за машината)

каноничност

Подлежи на промяна (има нужда от канонизация)

естествено необвързан

Използване

човешка комуникация, рисуване, въвеждане

Съвпадение на база данни, самоличност

стереохимия

Поддържа (символи @)

Поддържа (на слоеве)

да даде на AI

идеален

Идеален за потвърждение

мини калъфи

Случай 1 — Две имена, една молекула. Студент смята, че "N-ацетил-пара-аминофенол" и "парацетамол" са различни съединения и планира два отделни експеримента. Когато канонизираха техните SMILES в RDKit, и двамата се оказаха CC(=O)Nc1ccc(O)cc1; Това беше същата молекула. Загубени: половин ден планиране; усилване: можеше да бъде избегнато с 2-минутна проверка за канонизиране.

Случай 2 — Невалидно заснемане на SMILES. AI върна CC(=O)Nc1ccc(O)cc1C( за вариант (незатворени скоби). Ученикът стартира MolFromSmiles, той върна None, веднага видя грешката и поиска коригирани SMILES. Без проверка дефектната структура щеше да се разпространи във всички акаунти.

Случай 3 — Неправилно молекулно тегло. YZ каза "молекулно тегло 214,3 g/mol" за ибупрофен (C13H18O2). Изчислението на RDKit даде 206,28 g/mol. Разлика за 0,1 mol: 21,43 g с YZ, всъщност 20,63 g. Тази разлика от 3,9% би нарушила стехиометрията и изчислението на добива. Донесе детерминистично смятане.

Често срещани грешки

  • Даване на молекулата по име. Синонимите/търговските имена са объркани. Винаги включвайте SMILES или InChI.
  • Сравняване на SMILES без канонизиране. OCC и CCO са различни в текста, но еднакви в молекулите.
  • Задаване на молекулното тегло на модела на езика. Това е детерминистично изчисление; Прави се от RDKit или ръчно от формулата.
  • Незабелязване на невалидни УСМИВКИ. Не се проверява връщането на MolFromSmiles None и се продължава с грешна структура.
  • Пренебрегване на стереохимията. Двата енантиомера (огледални изомери) могат да проявяват различни биологични ефекти; Пропускане на знаци @/@@ в SMILES.
Внимание: Една и съща молекулна формула не означава различни молекули. C2H6O е както етанол (CCO), така и диметилов етер (COC). Равенството на формулата не е равенство на идентичността; Използвайте InChIKey за идентификация.

В обобщение

  • Идентифицирайте молекулите чрез нотация на структурата, а не по име: SMILES с човек, InChI/InChIKey с база данни.
  • RDKit е детерминиран; AI прогнозира, RDKit изчислява и проверява.
  • Анализирайте всеки AI SMILES с MolFromSmiles и проверете за None, след което канонизирайте.
  • Вземете числа като молекулно тегло и формула от RDKit, а не от езиковия модел.
  • Формулното равенство не означава молекулярна идентичност; Използвайте InChIKey за идентификация.

Задача за приложение

Изберете три съединения (напр. кофеин, ибупрофен, глицин). Помолете AI ​​за канонични УСМИВКИ за всеки. След това напишете RDKit скрипт (използвайте шаблона по-горе) и генерирайте: канонични SMILES, молекулна формула, молекулно тегло, InChIKey. Колко от УСМИВКИТЕ, дадени от AI са валидни? Ако YZ даде и молекулното тегло, изчислете разликата като процент със стойността на RDKit. Поставете констатациите си в малка таблица.

контролен списък

  • [ ] Знам какво представляват SMILES и InChI/InChIKey и кога да ги използвам.
  • [ ] Потвърждавам всяка УСМИВКА, дадена от AI с MolFromSmiles.
  • [ ] Канонизирам SMILES преди да ги сравня.
  • [ ] Получавам молекулното тегло и формулата от RDKit, а не от езиковия модел.
  • [ ] Потвърждавам идентичността на молекулата в базата данни с InChIKey.
  • [ ] Познавам ситуации, в които стереохимията е важна.