Единицы
1. Введение в искусственный интеллект в химии: роли, границы, валидация и этика 2. Молекулярное представление и химическая структура: проверка с помощью SMILES, InChI и RDKit 3. Прогнозирование и механизм реакции: прогноз продукта, состояния и побочных реакций 4. Поддержка интерпретации спектра: ЯМР, ИК и масс-спектрометрия 5. Обзор литературы и планирование обобщения: источник, процедура и дорожная карта 6. Химический анализ данных и Python: панды, стехиометрия и калибровка 7. Прогнозирование молекулярных свойств и QSAR: разрешение, pKa и пределы модели 8. Лабораторная документация: журнал экспериментов, ELN и воспроизводимость. 9. Оценка безопасности и опасностей: GHS, SDS и пределы искусственного интеллекта 10. Подтверждение, галлюцинация и научная честность 11. Человек в эксперименте: этика, конфиденциальность, ответственность и сквозной рабочий процесс
Единица 2 / 11

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

Прибыль:

  • Способность идентифицировать молекулы не по названию, а по представлению структуры (УЛЫБКИ с людьми, InChI/InChIKey с базой данных)
  • Возможность обнаруживать недействительные или неправильные структуры путем анализа, проверки и канонизации каждого SMILES, предоставленного искусственным интеллектом, с помощью RDKit.
  • Способность понимать, что детерминированные величины, такие как молекулярная масса и формула, должны быть получены с помощью инструмента, основанного на правилах, а не из языковой модели.

Первое условие безопасного использования ИИ в химии — написать молекулу на языке, понятном как машине, так и человеку. Вы говорите «фенол», ИИ понимает это правильно; но когда вы говорите «кислота», открываются тысячи возможностей. Имена неоднозначны; представления структур являются точными. В этом модуле мы изучим две основные нотации, которые переводят молекулу в текст (SMILES и InChI), а также инструмент, который их детерминированно проверяет (RDKit). Наша цель: передать молекулу ИИ так, чтобы он никогда не понял ее неправильно, и подтвердить структуру, созданную ИИ, с помощью инструмента.

Что такое УЛЫБКИ?

SMILES (упрощенная система молекулярного ввода) — это формат записи молекулы в одну строку текста. Атомы обозначаются буквами, связи — символами, кольца — цифрами. Примеры:

  • Этанол: CCO (углерод-углерод-кислород; подразумеваемые атомы водорода).
  • Бензол: c1cccc1 (строчная буква «c» обозначает ароматический углерод; 1 замыкает кольцо).
  • Аспирин: CC(=O)Oc1ccccc1C(=O)O.
  • Кофеин: Cn1cnc2c1c(=O)n(C)c(=O)n2C.

Преимущество SMILES в том, что он переносит всю структуру ссылок в одну строку; Его слабость в том, что одна и та же молекула может иметь несколько действительных УЛЫБОК (это называется неканоничностью). Мы решим эту проблему с помощью RDKit через мгновение.

Подсказка: «Канонические УЛЫБКИ» для молекулы — это единственное стандартное написание этой молекулы. Чтобы увидеть, являются ли две УЛЫБКИ одной и той же молекулой, канонизируйте и сравните их; Текстуально они не должны быть равными, но должны быть равными молекулами.

Что такое ИнЧИ?

InChI (Международный химический идентификатор) — стандартный идентификатор, разработанный ИЮПАК. Отличие от SMILES в том, что одна и та же молекула всегда дает один и тот же InChI; то есть оно канонично по своей природе. Он длинный и трудный для чтения, но идеально подходит для сопоставления с базами данных. Для поиска используется сокращенный вариант «InChIKey» (27-значный дайджест).

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

Правило: Люди говорят УЛЫБКАМИ (читай), машины и базы данных соответствуют InChI/InChIKey (точно). Подарите УЛЫБКИ ИИ; Подтвердить в базе данных с помощью InChIKey.

RDKit: механизм детерминированной проверки

RDKit — это хемоинформатическая библиотека с открытым исходным кодом. В отличие от языковой модели, она основана на правилах: анализирует SMILES, вычисляет молекулярную массу, генерирует канонические SMILES, возвращает InChI/InChIKey, рисует молекулу. Итак, RDKit «вычисляет» то, что «предсказывает» ИИ. Это суть рабочего процесса: ИИ генерирует, RDKit проверяет.

Базовый процесс проверки:

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

Если MolFromSmiles возвращает None, ИИ дал вам недопустимую молекулу; Уже одно это является очень ценным предупреждением. Если это действительно так, вам больше не нужно запрашивать молекулярную массу у языковой модели; Это определенно в ваших руках.

Шаг за шагом: взаимодействие AI + RDKit

  1. Определите молекулу: дайте ИИ имя, попросите УЛЫБКУ. Например, «проверьте канонические УЛЫБКИ на предмет парацетамола».
  2. Проверка: анализ входящих SMILES с помощью MolFromSmiles. Если нет, отклонить.
  3. Канонизировать: получить каноническое написание с помощью MolToSmiles; Всегда используйте это с этого момента.
  4. Рассчитывайте числа: получайте молекулярную массу, формулу, количество колец, количество доноров/акцепторов водородных связей и т. д. из RDKit, а не из AI.
  5. Идентификатор исправления: создайте InChIKey, выполните поиск в базе данных (PubChem), подтвердите, что молекула действительно является тем соединением, которое вам нужно.

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

1) Просьба УЛЫБКИ (от существительного к структуре):

Задание: Приведите канонические УЛЫБКИ к следующему составному слову. Соединение: парацетамол (ацетаминофен). Правило: Укажите только строку SMILES и InChIKey, никаких дополнительных пояснений не добавляйте. Если не уверены, напишите «НЕ УВЕРЕНЫ», не придумывайте.

2) Запрос на проверку SMILES (от структуры к элементу управления):

Изучите УЛЫБКИ ниже: CC(=O)Nc1ccc(O)cc1Вопросы:1) Это действительный SMILES?2) Какому соединению оно соответствует (общее название)?3) Какова молекулярная формула?Примечание. Я рассчитаю точную молекулярную массу с помощью RDKit; Вы просто даете интерпретацию своей структуры.

3) Сравнение двух представлений:

У меня есть две УЛЫБКИ: А) OCCB) CCOT Задача: Это одна и та же молекула или разные? Напишите свои аргументы. Примечание. Я перепроверю ваш ответ, канонизировав его в RDKit.

4) Объяснение структуры (в целях обучения):

УЛЫБКИ: Cn1cnc2c1c(=O)n(C)c(=O)n2CЗадание: Прочитайте эти УЛЫБКИ по частям и объясните, что означает каждый символ (атом, связь, кольцо, ароматичность) на простом турецком языке. Также скажите, что это за соединение.

Слабая подсказка / Сильная подсказка

Слабый:

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

«Особенность» расплывчата; ИИ генерирует случайные числа от молекулярной массы до температуры плавления, некоторые из которых будут неправильными.

Сильный:

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

Разница: мы направили ИИ в сторону того, в чем он силен (идентичность структуры), и от того, в чем он слаб (экспериментальные цифры).

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

особенность

УЛЫБКИ

ИнЧИ / ИнЧИКей

Читабельность

Высокий (дружественный к людям)

Низкий (совместим с машиной)

каноничность

Возможны изменения (нужна канонизация)

естественно одинокий

Использование

человеческое общение, рисование, ввод

Соответствие базы данных, идентичность

стереохимия

Поддерживает (@ символы)

Опоры (многослойные)

отдать ИИ

идеальный

Идеально для подтверждения

мини-чехлы

Случай 1 — Два имени, одна молекула. Студент подумал, что «N-ацетил-парааминофенол» и «парацетамол» — это разные соединения, и запланировал два отдельных эксперимента. Когда их SMILES канонизировали в RDKit, они оба оказались CC(=O)Nc1ccc(O)cc1; Это была та же самая молекула. Проиграно: полдня планирования; выигрыш: можно было избежать с помощью двухминутной проверки канонизации.

Случай 2 — Неверный захват SMILES. ИИ вернул CC(=O)Nc1ccc(O)cc1C( для варианта (скобки не закрыты). Студент запустил MolFromSmiles, он вернул None, сразу увидел ошибку и запросил исправленные SMILES. Без проверки ошибочная структура распространилась бы на все учетные записи.

Случай 3 — Неверная молекулярная масса. YZ сообщил, что ибупрофен (C13H18O2) имеет «молекулярную массу 214,3 г/моль». Расчет RDKit дал 206,28 г/моль. Разница для 0,1 моля: 21,43 г с YZ, реально 20,63 г. Эта разница в 3,9% может нарушить стехиометрию и расчет выхода. Оно принесло детерминистическое исчисление.

Распространенные ошибки

  • Даём молекуле имя. Синонимы/торговые названия перепутаны. Всегда включайте SMILES или InChI.
  • Сравнение УЛЫБОК без канонизации. OCC и CCO различаются по тексту, но одинаковы по молекулам.
  • Задаем молекулярный вес модели языка. Это детерминированный расчет; Делается это из RDKit или вручную по формуле.
  • Не замечая недействительных УЛЫБОК. Не проверять возврат MolFromSmiles None и продолжать работу с неправильной структурой.
  • Пренебрежение стереохимией. Два энантиомера (изомеры зеркального отображения) могут проявлять разные биологические эффекты; Пропуск знаков @/@@ в УЛЫБКАХ.
Внимание: одна и та же молекулярная формула не означает разные молекулы. C2H6O представляет собой одновременно этанол (CCO) и диметиловый эфир (COC). Равенство формулы не есть равенство тождества; Используйте InChIKey для идентификации.

В заключение

  • Идентифицируйте молекулы по структурным обозначениям, а не по названию: SMILES с человеком, InChI/InChIKey с базой данных.
  • RDKit является детерминированным; ИИ прогнозирует, RDKit рассчитывает и проверяет.
  • Проанализируйте каждый AI SMILES с помощью MolFromSmiles и проверьте «Нет», а затем канонизируйте.
  • Получайте такие числа, как молекулярная масса и формулы, из RDKit, а не из языковой модели.
  • Равенство формул не означает молекулярную идентичность; Используйте InChIKey для идентификации.

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

Выберите три соединения (например, кофеин, ибупрофен, глицин). Попросите у ИИ канонические УЛЫБКИ для каждого. Затем напишите скрипт RDKit (используйте шаблон выше) и сгенерируйте: канонические SMILES, молекулярную формулу, молекулярную массу, InChIKey. Сколько УЛЫБОК, выданных ИИ, были действительными? Если YZ также указал молекулярную массу, рассчитайте разницу в процентах со значением RDKit. Запишите свои выводы в небольшую таблицу.

контрольный список

  • [ ] Я знаю, что такое SMILES и InChI/InChIKey и когда их использовать.
  • [ ] Я проверяю каждую УЛЫБКУ, предоставленную ИИ, с помощью MolFromSmiles.
  • [ ] Я канонизирую УЛЫБКИ, прежде чем сравнивать их.
  • [ ] Я получаю молекулярную массу и формулу из RDKit, а не из языковой модели.
  • [ ] Подтверждаю идентичность молекулы в базе данных InChIKey.
  • [ ] Я знаю ситуации, когда важна стереохимия.