Как я уже много раз говорил в докладах, публикациях и своей диссертации, «дизайн de novo означает проектирование с нуля». Тем не менее, мы довольно редко начинаем с нуля при проектировании молекул, поскольку оказывается, что это чертовски сложно сделать. Итак, в этом посте я собираюсь описать самый «чистый» дизайн de novo , который я когда-либо делал, а также некоторые из концепций, которые я использовал в процессе.

Сначала немного предыстории, чтобы объяснить, как я в итоге написал то, что считаю довольно странной концепцией для поста. Полгода назад я защитил кандидатскую диссертацию. в группе медицинской химии in silico в Институте исследования рака в Лондоне (не путать с другим ICR), и мои исследования были сосредоточены на автоматической оптимизации молекул с использованием кусочка разработанное мной программное обеспечение под названием MOARF. С тех пор я работаю в UCL над моделями нейродегенерации, в частности, изучая, как ухудшается когнитивная функция при атипичной болезни Альцгеймера. Теперь, когда вы можете себе представить, что эти две области исследований включают совершенно разные модели, теперь я трачу больше времени на размышления о данных временных рядов, а раньше я больше думал о том, как лучше всего представить молекулы в моделях.

Недавно я изучал вездесущую концепцию глубокого обучения, чтобы лучше понять некоторые данные временных рядов, и при просмотре различных доступных моделей меня поразило, что очень легко проектировать молекулы без какой-либо химии. Я мог спроектировать молекулы, просто используя большой список упрощенных систем линейного ввода молекулярного ввода (SMILES) и рекуррентную нейронную сеть (RNN).

УЛЫБКИ

Представление молекулы в SMILES — это удивительно простой и аккуратный способ записи химической структуры в тексте. Каждому типу атома присваивается текстовое представление, для удобства мы можем использовать периодическую таблицу, затем определяется некоторая грамматика, чтобы мы могли обойти проблему, заключающуюся в том, что в отличие от текста не все молекулы линейны.

  • Цифры используются для обозначения колец

  • Скобки используются для представления отдельного пути к «основному» линейному.

  • Другой синтаксис используется для представления большего количества химических понятий, таких как стереохимия, заряды, протонирование, порядок связей и ароматичность.

Итак, теперь, надеюсь, вы видите, что представить молекулу в виде текстовой строки не так уж и сложно! Если вам интересно, оригинальную статью об SMILES можно найти здесь, а более поздние публикации о канонических представлениях можно найти здесь.

RNN

Небольшое замечание о нейронных сетях: они отлично учатся (как видно из теоремы универсальности). Но до сих пор я не видел применения нейронных сетей в химии, поскольку я просто не видел достаточно большого набора данных, чтобы узнать что-то значимое (при условии, что приведенное ниже имеет смысл).

Я не буду вдаваться в подробности, так как есть много впечатляющих туториалов по RNN, пару можно найти здесь и здесь. По сути, рекуррентная сеть — это нейронная сеть, в которой нейроны на каждом слое имеют связи, что позволяет слоям иметь память о предыдущих временных шагах (отсюда мой интерес к временным рядам). Хорошо известным примером архитектуры RNN является char-rnn Андрея Карпаты, который использовался для воссоздания произведений Шекспира. Так что, если это работает с Шекспиром, значит, это может работать и с молекулами, верно!?

Данные

Я всегда выбираю ChEMBL из большого тщательно отобранного набора данных о молекулах, не по какой-то особой причине, просто с ним легко работать, и люди там помогают. Ниже приведены шаги, которые я использовал для распаковки, удаления лишней информации и заголовка.

gunzip chembl_21_chemreps.txt.gz
cut -f 2 chembl_21_chemreps.txt > chembl21_SMILES.txt
tail -n +2 chembl21_SMILES.txt > my_data.txt

Модель

Я использовал более новую, более быструю версию char-rnn torch-rnn, которую можно легко загрузить и установить, следуя инструкциям на сайте (я использовал инструкции для Mac, ссылки на которые приведены в README.md). Как только я это сделал, я переместил свои данные в тот же каталог и обработал данные

python scripts/preprocess.py — input_txt my_data.txt — output_h5 my_data.h5 — output_json my_data.json

Тогда я был готов к работе! Я тренировал модель на своем ноутбуке, поэтому я не использовал графический процессор, и в результате я не закончил целую эпоху. Если вы хотите воссоздать мои результаты, вы можете подумать о том, чтобы запустить его на графическом процессоре, поскольку обучение на ноутбуке занимает целую вечность (и в результате ноутбук очень нагревается).

th train.lua -input_h5 my_data.h5 -input_json my_data.json -num_layers 3 -rnn_size 512 -gpu -1

Затем модель запустится и будет печатать потери для каждой мини-партии, а также потери на проверочном наборе после каждой тысячной итерации. Эта потеря основана на том, насколько хорошо модель предсказывает следующий символ в последовательности букв, учитывая предыдущие буквы. Я только что позволил моей модели работать и работать, и приведенные ниже результаты получены с использованием модели, которая лучше всего спрогнозировала проверочный набор.

Результаты

Прежде всего, мы можем видеть, что генерируется без ввода, поэтому модель свободно проектирует молекулы (до 2000 символов, что является произвольным максимумом, который я выбрал), для этого образца я установил температуру («коэффициент новизны») на 1, что является макс. Из 36 сгенерированных молекул 26 могут быть прочитаны RDKit, что довольно впечатляет, учитывая, что модель еще даже не закончила целую эпоху!

Там есть крутые молекулы! Я не проверял их все, но, по крайней мере, некоторые из этих молекул также являются новыми (то есть не входят в состав ChEBML).

Мы также можем предоставить модели начало строки SMILES и посмотреть, что она спроектирует. Я выбрал начало Seliciclib, с которым я работал во время моей докторской диссертации.

Для этого мне пришлось немного отрегулировать температуру, пока модель не выдаст что-то с правильной грамматикой (кольца открыты, но не закрыты, а также протезы открыты, но не закрыты). Любой химик сможет увидеть, что эта молекула не поддается синтетическому анализу, но она добирается туда.

Выводы

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

Нет новых идей на свете:

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