Мысли и теория

Базовое молекулярное представление для машинного обучения

От улыбок к встраиванию слов и графов

Машинное обучение применялось для решения многих задач в хеминформатике и науках о жизни, например, исследование свойств молекул и разработка новых лекарств. Одним из критических вопросов в конвейере решения проблем для этих приложений является выбор правильного молекулярного представления, которое характеризует целевой набор данных и обслуживает последующую модель. Рисунок 1 показывает концептуальную основу для различных молекулярных представлений. Обычно молекула представлена ​​линейной формой в виде строки SMILES или формой графа в виде смежной матрицы, возможно вместе с матрицей атрибутов узлов для атомов и матрицей атрибутов ребер для связей. Строка SMILES может быть дополнительно преобразована в различные форматы, такие как молекулярный отпечаток, одноразовое кодирование или встраивание слов. С другой стороны, графическая форма молекулярного представления может напрямую использоваться последующей моделью или быть преобразована во встраивание графа для задачи.

В этом посте описаны некоторые коды, используемые при реализации вышеупомянутой концептуальной основы, в том числе:

  • чтение, рисование, анализ молекулы,
  • создание молекулярного отпечатка пальца из строки SMILES,
  • генерация быстрого кодирования из строки SMILES,
  • создание вложения слов из строки SMILES, и
  • создание молекулярного представления на графике.

Чтение, рисование и анализ молекулы

RDKit - это библиотека для хеминформатики с открытым исходным кодом. На рисунке 2 показан код для чтения строки кофеин SMILES и рисования ее молекулярной структуры. Обратите внимание, что C - углерод, N - азот и O - кислород в строке SMILES. Молекула может отображаться без маркировки углерода, как показано на рисунке 3, или с маркировкой углерода, как показано на рисунке 4.

На рисунке 5 показан код для отображения атомов и связей в молекуле кофеина.

На рисунках 6 и 7 показаны детали атомов и связей в молекуле кофеина соответственно. Примечания:

  1. Термин «ароматический» можно рассматривать просто как «кольцо» в следующих таблицах. GetIsAromatic на рисунке 6 указывает, находится ли атом в кольце или нет, а GetBondType на рисунке 7 указывает, находится ли связь в кольце или нет.
  2. Рисунок 6 и рисунок 7 можно рассматривать как простую матрицу атрибутов атомов и простую матрицу атрибутов связей в концептуальной структуре, показанной на рисунке 1.
  3. Список связей на рисунке 7 может представлять форму графа для молекулы, то есть список связей матрицы смежности.

Создание молекулярного отпечатка пальца из строки SMILES

RDKit поддерживает несколько функций отпечатков пальцев, выходные данные которых могут использоваться для вычисления молекулярного сходства или в качестве входных данных для последующих моделей машинного обучения. На рисунке 8 показаны коды для получения RDKit Fingerprint и Morgan Fingerprint, а на рисунке 9 показаны результаты этих функций отпечатков пальцев.

Генерация One-Hot Encoding из строки SMILES

Если рассматривать строки SMILES как текст на естественном языке, возможно, самый простой способ представления строк SMILES - это горячая кодировка на уровне символов. На рисунке 10 показан код для генерации быстрого кодирования на уровне символов строки SMILES.

Обратите внимание, что одноразовое кодирование также может использоваться на уровне атома или в матрице атрибутов атом / связь.

Создание вложения слова из строки SMILES

В контексте языкового моделирования более сложным подходом к генерации молекулярного представления является применение метода встраивания слов к субструктурам молекулы. Код на Рисунке 11 показывает процесс использования mol2vec и word2vec для генерации встраивания слов для всех молекул в наборе данных HIV. В наборе данных 41127 молекул (рис. 12), и каждая молекула закодирована как 300-мерный вектор (рис. 13). Обратите внимание, что код взят из Simple ML In Chemistry Research: RDkit & mol2vec », в котором подробно объясняется решение для прогнозирования активности ВИЧ.

Создание молекулярного представления в виде графика

Процесс манипулирования молекулами / атомами / связями в RDKit обеспечивает основу для создания графической формы молекулярного представления. На рисунках 5, 6 и 7 выше показаны матрица смежности, матрица атрибутов узлов и сеть атрибутов границ для кофеина. Однако преобразование молекулы в RDKit в граф в NetworkX (библиотека с открытым исходным кодом для сетевого анализа) может использовать исследования традиционных алгоритмов графов и современных моделей графов для исследования молекулярной структуры и свойств. На рисунке 14 показан код для преобразования молекулы в RDKit в граф в NetworkX. На рисунке 15 показаны молекулярные графики, построенные RDKit и NetworkX.

Одной из важных областей исследований сетей графов является встраивание графов. Вообще говоря, внедрение графов состоит из трех тем: внедрение на уровне узлов (которое кодирует узлы в графе как векторы), внедрение на уровне ребер (которое кодирует ребра в графе. как векторы) и g встраивание на уровне raph (которое кодирует весь граф как вектор). В этом посте мы рассматриваем термин встраивание графа как граф на уровне внедрения, который находит вектор для молекулы, который может использоваться в качестве входных данных для последующих моделей. На рисунке 16 показан код для преобразования молекул из RDKit в графы в NetworkX и генерации его вложений графов с помощью Graph2Vec в KarateClub. Graph2Vec - это алгоритм встраивания графов, а KarateClub - это пакет, предоставляющий модели машинного обучения без учителя для данных графов. На рисунке 17 показано встраивание Graph2Vec для молекул в наборе данных ВИЧ. KarateClub рассмотрел несколько алгоритмов встраивания графов в библиотеку.

Выводы

В этом посте было описано несколько молекулярных представлений, в том числе строковый формат, формат на основе графа и некоторые варианты, такие как встраивание слов и встраивание графов. Эти молекулярные представления вместе с различными алгоритмами машинного обучения, включая модели глубокого обучения и графовые нейронные сети, могут служить основой для решения проблем молекулярного машинного обучения.

Спасибо за прочтение. Если у вас есть какие-либо комментарии, напишите мне.