Добро пожаловать в очередной учебник по PlayMolecule! Сегодня мы рассмотрим одно из наиболее часто используемых приложений на PlayMolecule, KDeep, веб-приложение для прогнозирования сродства связывания белок-лиганд с использованием предиктора нейронной сети на основе сверточных графов.

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

Случаи применения

Чтобы показать вам, на что способен KDeep, мы продемонстрируем вам несколько распространенных вариантов использования, которые вы также можете выполнить самостоятельно, следуя этому руководству.

Обучение модели

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

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

KDeepTrainer принимает наборы данных в двух форматах. У вас может быть отдельная папка для каждого комплекса, в которой у вас будет ваш белок в файле pdb и связанный лиганд (ы) в файле sdf. Вы можете включить несколько лигандов в sdf. Файл sdf должен содержать свойство с именем «Label», указывающее известное сходство привязки, и свойство с именем «Labeltype», указывающее метрику сходства, такую ​​как pkd, pki, ic50 или любую другую. Модель KDeep специально сконструирована таким образом, чтобы она могла параллельно изучать различные метрики сходства. Это также означает, что позже он сможет давать прогнозы для всех метрик сходства, на которых он был обучен.

У вас также может быть набор данных, в котором у вас будут отдельные папки для каждого комплекса, но теперь, помимо файла pdb белка, у вас будут отдельные файлы sdf лиганда для каждого лиганда, связанного с вашим белком. Затем вместе с этими папками вы также включите индексный файл в формате csv, содержащий следующие заголовки:

Мы на полпути! Загрузите свой собственный набор данных или тот, который предоставлен в приложении KDeepTrainer. Затем укажите максимальное количество эпох, для которых вы хотите, чтобы модель обучалась. Эпоха — это термин, используемый в машинном обучении для обозначения того, когда все данные в вашем наборе данных были представлены модели хотя бы один раз. Для KDeep мы обычно рекомендуем значения около 500 эпох, но сейчас я установлю его на 50, чтобы убедиться, что нам не придется долго ждать завершения нашего примера обучения.
Наконец, вы можете предоставить Имя задания для вашего запуска. К настоящему времени ваш ввод в приложении KDeepTrainer должен выглядеть так:

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

И это все! Теперь просто отправьте заявку, и ваше обучение начнется.

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

В нижней части экрана вы также можете проверить ход тренировки и кнопку «Отмена», если вы хотите прервать тренировку раньше.

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

Переобучение модели

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

Для переобучения существующей модели мы снова открываем приложение KDeepTrainer. Мы снова предоставляем новый набор данных в одном из двух поддерживаемых форматов, количество эпох и имя задания. Обычно для переобучения рекомендуется использовать меньше эпох, чем для обучения новой модели, но это во многом зависит от имеющихся у вас данных, поэтому не забудьте попробовать разные количества, чтобы найти то, что лучше всего подходит для ваших данных.
Теперь мы также будет включать веса нашей модели KDeep, которую мы обучили в первом варианте использования. Когда вы нажимаете Начальные веса, вы найдете некоторые веса по умолчанию, которые были обучены на специальном наборе данных, взятом из набора данных PDBbind2016, и которые обычно дают хорошие результаты. Вы также найдете веса модели, которую мы предварительно обучили.

Если вы не помните название прогона, вы всегда можете найти его в левой части экрана в сеансах KDeepTrainer.
Мы также включим второй набор данных, который будет смешан с новыми данными, которые мы предоставим. в настоящее время. Это не обязательно делать, но в некоторых случаях переобучение может проходить более плавно, особенно если у вас не так много доступных новых данных. Итак, давайте загрузим набор данных, который мы использовали во время первоначального обучения нашей модели. Чтобы иметь возможность загрузить его как второй набор данных, мы сначала должны загрузить его в центр обработки данных Playmolecule, где хранится вся информация, необходимая для каждого приложения в PlayMolecule. Поэтому откройте приложение DataCenter и загрузите набор данных, который вы использовали во время первоначального обучения KDeep. Убедитесь, что вы вошли в свою учетную запись на PlayMolecule и предоставьте следующую информацию для удаленного пути и тегов, чтобы приложение KDeepTrainer могло найти набор данных в центре обработки данных:

Теперь вернитесь в приложение KDeepTrainer и загрузите дополнительный набор данных в поле ввода. Вы должны увидеть это сейчас в центре обработки данных:

Если не найдете, попробуйте обновить страницу.

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

И это снова! Начните переобучение и посмотрите, как ваша модель KDeep станет лучше!

Создание прогнозов

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

Для этого мы запустим чистый интерфейс KDeep, на этот раз выбрав приложение KDeep. Когда вы откроете приложение, вы увидите, что оно имеет такой же макет, как и приложение KDeepTrainer.

Приложение KDeep принимает как отдельные файлы pdb белка, так и файлы sdf лиганда или набор данных, содержащий индексный файл. Для урока мы будем использовать примеры файлов pdb и sdf, представленные в разделе примеров:

После предоставления белка и лиганда вы сможете увидеть их трехмерную структуру на средней панели.

Мы также предоставляем веса нашей модели, поэтому давайте выберем веса нашей недавно переобученной модели KDeep и дадим имя нашему эксперименту. Наконец, если ваш файл sdf лиганда содержит истинную метку сродства, вы также можете указать имя свойства sdf для расчета корреляций с полученным прогнозом.

Теперь вы готовы представить свои комплексы и получить результаты предсказания от KDeep.

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

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

Итак, на этом мы можем завершить сегодняшнее руководство, в котором вы узнали больше о модели KDeep и ее приложениях в Playmolecule, а также о том, как их использовать для выполнения общих операций, таких как обучение новых моделей KDeep, переобучение существующих и создание прогнозов для невидимых данных. Мы надеемся, что вам понравился сегодняшний урок, и вы нашли его полезным и информативным. Так что теперь отправляйтесь на Playmolecule, чтобы применить эти новые знания KDeep.
Если вы хотите узнать больше о том, как работает KDeep, обязательно ознакомьтесь с TorchMD framework и соответствующей статьей. Эта структура построена с использованием Pytorch и позволяет пользователям выполнять моделирование молекулярной динамики, дополненное методами машинного обучения. Наша модель KDeep была построена с использованием этого фреймворка. Также вы можете ознакомиться с этой статьей о Schnet, модели, которой был вдохновлен KDeep.

О, и не забудьте указать веб-приложения KDeep на случай, если ваши эксперименты дадут интересные или даже новаторские результаты, которые вы хотели бы опубликовать впоследствии. В конце концов, нам бы очень хотелось узнать, помогли ли вам KDeep, Playmolecule и Acellera в ваших открытиях и исследованиях. Также оцените наши приложения на https://www.playmolecule.com или свяжитесь с нами для любых комментариев или запросов по адресу [email protected].

использованная литература

  • Дорр С., Маевски М., Перес А., Кремер А., Клементи С., Ноэ Ф. и др. TORCHMD: платформа глубокого обучения для молекулярного моделирования. Журнал химической теории и вычислений. 2021;17(4):2355–63.
  • Шютт К.Т., Киндерманс П.Дж., Соседа Х.Е., Хмиела С., Ткатченко А., Мюллер К.Р. SchNet: сверточная нейронная сеть с непрерывной фильтрацией для моделирования квантовых взаимодействий. Достижения в области нейронных систем обработки информации, 2018 г.; 148(24): 995.
  • 3Синий1Коричневый. Но что такое нейронная сеть? | Глава 1, Глубокое обучение [Видео]. 2017