На правах рукописи Диссертация допущена к защите Зав

advertisement
На правах рукописи
Диссертация допущена к защите
Зав. кафедрой
Омельченко А.В.
”
”
2015 г.
ДИССЕРТАЦИЯ
НА СОИСКАНИЕ УЧЕНОЙ СТЕПЕНИ
МАГИСТРА
Тема: Создание уникального репертуара малых молекул на основе образца
Направление:
010900.68 – Прикладные математика и физика
Выполнил студент
Т.С. Бондарев
(подпись)
Руководитель
П.А. Яковлев
(подпись)
Рецензент
М.В. Рехарский
к.х.н.
(подпись)
Санкт-Петербург
2015 г.
Реферат
С. 27, рис. 9, табл. 1.
В работе представлены алгоритмы для получения уникального репертуара молекул, полученных на базе молекулы-образца с использованием описанных техник изменения. Рассмотренные методы позволяют каждый раз использовать для генерации новых структур минимальный набор позиций атомов, сокращая тем самым время работы программы.
Для разметки молекул, записанных в формате SMILES, описан формат
STAR-SMILES, позволяющий указать дополнительную информацию об атомах.
Для сокращения объёма получаемых молекул производится исключение
совпадающих структур, используя поиск автоморфизмов графа.
Отбор совпадающих молекул после каждого поколения генерации производится с помощью ядер графов.
Ключевые слова: молекулы, наращивание молекулы, генерация графов,
graph kernel
2
ОГЛАВЛЕНИЕ
Стр.
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1 Постановка задачи и обзор методов решения
1.1 Прошлые исследования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Генераторы на основе химических реакций . . . . . . . . . . . . . . . . . .
1.1.2 Комбинаторные генераторы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Исследования, затрагивающие предполагаемое решение . .
6
7
8
8
8
9
2 Разработанные методы
2.1 Общий обзор методов и алгоритмов . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Разметка атомов молекулы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Определение набора атомов для изменения . . . . . . . . . . . . . . . . . . . .
2.4 Генерация набора молекул . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
13
13
17
19
3 Результаты и сравнения с существующими решениями
3.1 Оценка скорости работы и потребляемых ресурсов . . . . . . . . . . .
3.2 Сравнение с существующими решениями . . . . . . . . . . . . . . . . . . . . . .
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
22
23
25
26
3
Введение
В фармакологии малыми молекулами обозначают химические соединения, имеющие молекулярную массу не более 900 а.е.м. Малые молекулы
широко применяются лечения самых различных заболеваний. Одной из проблем, стоящей перед исследователями, является поиск таких малых молекул,
которые будут связываться с белком, вызывающим болезнь. Связывание может изменить свойства белка так, что он не сможет вредить организму.
Существуют два подхода к осуществлению поиска: создание нового лекарства с нуля и изменение существующего соединения, у которого уже обнаружены лекарственные свойства.
До активного развития технологий и алгоритмов компьютерной обработки молекул и их взаимодействия поиск производился вручную. Проблемы,
возникающие в этом случае, понятны: низкая скорость и высокая стоимость
лабораторных испытаний молекулы ограничивает максимальное количество
проверяемых химических соединений. Это в свою очередь требует от исследователя высокой квалификации для аргументированного выбора следующего кандидата на проверку. Соответственно, успех поиска и надёжность
результатов сильно завязываются на уровень компетентности исследователя.
Тем не менее, подобный способ используется и сейчас, и некоторые его
минусы обращаются в плюсы. Использование вспомогательного программного обеспечения позволяет быстро узнавать некоторую информацию об интересующих молекулах, визуализировать их, указывать области, обладающие потенциально важными свойствами (например, гидрофильность или гидрофобность). На основании опыта исследователь может понимать, что какието молекулы не подходят и можно их не проверять. В итоге, на проверку
отправляется малое количество молекул, но каждая из них уже проверена
исследователем и потенциально достаточно качественная.
Автоматические и полуавтоматические методы поиска позволяют упростить подобную работу. Например, программа может искать молекулу по
4
шаблону или заданным свойствам [1], что несомненно ускоряет исследования.
Автоматические программы построены вокруг различных способов получения набора молекул, а также над способами определения качества молекул.
Первая проблема решается обычно через использование существующей
базы для поиска, либо через создание новой базы на основе молекул, полученных генерацией из набора известных фрагментов молекул [2]. Недостаток
первого способа в том, что поиск ограничен содержимым базы, а недостаток
второго – что искомая молекула не обязательно будет найдена среди сгенерированного материала.
В данной работе представлен метод получения набора молекул на основе
молекулы-образца. Требование к последнему состоит в том, что он уже должен связываться с белком-мишенью. Метод использует также набор фрагментов молекул, которыми будет модифицироваться образец. Перед генерацией молекула-образец проходит предобработку, позволяющую получать
меньше совпадающих структур. Алгоритм реализован на языке Python версии 2, использует библиотеки rdKit для получения информации о молекуле
по строке в формате SMILES, networkx для представления графов, EDeN
для подсчёта ядер графов. Работа опубликована на хостинге GitHub (https:
//github.com/biocad/GenWithSmile) под лицензией New BSD, что
позволяет использовать результаты в любых проектах.
Диссертация состоит из трёх глав. В первой главе приводится описание
предметной области и обзор методов решения задачи поиска лекарственных
средств, представляющих собой малые молекулы. Вторая глава содержит
описание метода, точную формулировку задач, а также детально описывает
использующиеся алгоритмы. В третьей главе указаны полученные результаты, приведены сведения о времени работы программы и объёме получаемых
результатов.
5
1. Постановка задачи и обзор методов решения
Ещё в 1988 году лауреат Нобелевской премии по физиологии и медицине
Джеймс Блэк сказал: «The most fruitful basis for the discovery of a new drug is to
start with an old drug» [3], что в вольном переводе звучит так: «Для хорошего начала исследований нового лекарства стоит начать работу со старого».
Таким образом, перед химиками-исследователями периодически возникает
ситуация, когда найдено соединение (будь оно известным лекарством или
получено впервые), известна его структура и структура белка, с которым оно
взаимодействует, и требуется улучшить связываемость исходной молекулы,
уменьшить токсичность, увеличить проникаемость и т. п.
Многие лекарственные средства являются малыми молекулами. В фармакологии малыми называются молекулы, имеющие молекулярную массу
не более 900 а.е.м.
Изначальным способом улучшения характеристик найденных молекул
была ручная обработка имеющейся информации, состоящая в том, что производился анализ области связывания и других механизмов, влияющих на
взаимодействие молекул, после чего исследователь должен был попробовать изменить имеющуюся структуру, добавив или удалив атомы, заменив
некоторые атомы на другие. Изменяя таким образом энергию связывания,
пространственную структуру молекулы и способ взаимодействия, исследователь стремится улучшить связывание исследуемого вещества с целевой
молекулой.
Этот подход всё ещё довольно активно используется [4]. Его плюсом является наличие у исследователя доступа к достаточно большому объёму информации, в том числе к трёхмерной структуре мишени и механизму её взаимодействия с исследуемым соединением, к длинам связей между парами
атомов, к информации об участках гидрофобности и гидрофильности исследуемых молекул и т. п. Может быть доступна дополнительная информация,
основанная на собственном опыте, а также просто плохо формализованная,
но от этого не теряющая актуальности. Это позволяет исследователю чаще
выполнять те изменения, которые с большой вероятностью приведут к улучшению требуемых характеристик. Как итог такого подхода, количество молекул для тщательной проверки и отправки на клинические испытания сокра6
щается, что сильно снижает стоимость и время разработки нового продукта.
Проблемой подобного решения являются большие затраты времени исследователя на разработку модификаций соединения, высокая требовательность
к квалификации исследователя, а также сокращённое множество перебора
структур. Это может привести к тому, что оптимальное соединение просто не
будет найдено из-за превышения объёма работ, с которым может справиться
исследователь, а также за счёт прошлого опыта человека и его привычек.
Изменение структуры известного лекарства в поисках новых его применений используется и в таком подходе, как SOSA (Selective optimization of
side activities) [5]. Общим преимуществом решений, основанных на изменении изученных соединений являются меньшие затраты на проверку лекарства, что привлекает большое количество исследователей и компаний.
За счёт распространённости задачи, существует довольно много программных средств, позволяющих изменять молекулу. Одни просто позволяют редактировать молекулу в визуальном редакторе [6], другие самостоятельно
генерируют набор молекул по известным шаблонам химических реакций [7],
третьи заменяют одни подструктуры молекулы на похожие [8]. В основном,
автоматические решения полагаются на монотонное изменение характеристик при модификации молекулы и, при итеративной генерации соединений,
на каждом этапе отсеивают малоперспективные химические структуры.
Подход, в котором автоматически перебираются химические соединения
и производится выбор лучших представителей позволяет разгрузить исследователя от монотонной работы одновременно с расширением пространства
поиска и уменьшением времени на обработку каждого соединения.
1.1
Прошлые исследования
Генерация структур на основе базовой довольно активно исследуется [7—
9], но представленные решения обычно сочетают в себе не только генераторы изменённых структур, но и фильтрацию полученных результатов на каждом шаге. В итоге, подобные инструменты требуют больше информации на
вход и склонны терять некоторые варианты соединений за счёт отсеивания
на промежуточных шагах.
7
1.1.1
Генераторы на основе химических реакций
Одним из последних представителей этого направления является программа DOGS [7], которая выполняет перебор структур молекул на основе базы
химических реакций. Подобный подход имеет свои преимущества в том, что
для получаемых соединений известен способ синтеза и его сложность, однако мощность пространства перебора зависит от качества составленной базы
реакций, что сильно уступает комбинаторным способам получения молекулярных структур.
1.1.2
Комбинаторные генераторы
Решения, позволяющие использовать комбинаторный перебор молекулярных структур [8; 9] более распространены. В рассмотренных работах молекула разбивается на составляющие части, которые впоследствии заменяются на похожие соединения из базы. Такое изменение позволяет не сильно
изменять основную структуру, таким образом, они с большой вероятностью
оставляют в молекуле существующие области связывания.
1.2
Постановка задачи
В существующих решениях используется подход, основанный на предположении о монотонности характеристик молекулы, по которым производится отбор кандидатов для последующих этапов генерации. Это позволяет уменьшить объём пространства перебора, отказавшись от большинства
неперспективных соединений. Тем не менее, среди возможных потомков отсеянных молекул могут находиться соединения, имеющие более подходящие
характеристики.
Основываясь на этом предположении, в работе предлагается создать генератор структур, позволяющий комбинаторно перечислить все уникальные
молекулы, полученные на основе заданных способов модификации исходной. Эти структуры используются в дальнейших исследованиях в качестве
базы данных молекул, среди которых уже и производится поиск подходящих
химических соединений.
8
1.2.1
Исследования, затрагивающие предполагаемое решение
Получение набора молекул, используя базовую, имеет смысл рассматривать в рамках теории графов, так как граф является естественной структурой
представления молекулы (атомы соответствуют вершинам, связи – рёбрам,
вершины покрашены химическими элементами, рёбра – типами связи), а также позволяет использовать в химии достижения из области теории графов,
пришедшие из других областей науки. Например, довольно популярны исследования по подсчёту количества изомеров молекул определённой структуры [10; 11], основывающиеся на комбинаторных способах перечисления
графов, соответствующих этим соединениям.
Генерация же множества неизоморфных молекул в общем виде является
довольно сложной задачей. Однако, из этой большой задачи можно выделить
меньшую: поиск таких вершин графа, изменения которых достаточно для
получения полного множества неизоморфных графов. Эта задача решается
посредством поиска орбит вершин графа. Одно из последних исследований
[12] в том числе описывает алгоритм поиска орбит и его реализацию в виде
набора программ.
Алгоритм может использоваться на графах с покрашенными вершинами.
Графы с покрашенными рёбрами приводятся к предыдущему случаю с помощью описанного в статье преобразования, которое в случае с молекулами
увеличит количество вершин до трёх раз.
К сожалению, этот набор программ имеет лицензию, запрещающую коммерческое использование, так что в рамках этой работы он не используется.
9
2. Разработанные методы
Для начала формализуем постановку цели работы.
Значимыми будем называть атомы, не являющиеся атомами водорода.
Написать программу, которая принимает четыре аргумента: базовую молекулу M , множество молекул замещения S , множество молекул дополнения R (см. рис. 2.1, а) и количество поколений генерации n. Программа должна комбинаторно перебрать все возможные изменения базовой молекулы, используя молекулы из множеств S и R.
Рассматриваются два способа изменения молекулы:
– Замена атома на молекулу замещения (см. рис. 2.1, б).
– Замена у атома связей с атомами водорода на связь с молекулой дополнения (см. рис. 2.1, в).
Формат, используемый для передачи молекул в программу, должен предоставлять возможность отметить значимые атомы, для которых доступны описанные выше изменения.
Каждая молекула дополнения должна иметь атомы с меткой, указывающей на тип связи, которой она прицепляется к другой молекуле. Связь может
быть одинарной, двойной или тройной. На рис. 2.1, а приведены три примера
молекул дополнения с разными типами связей.
Для описания результата работы программы нужно описать несколько
дополнительных терминов.
Применение молекулы m1 к атому молекулы m2 — это соответствующее
типу m1 изменение структуры m2 .
Применение молекулы m1 к молекуле m2 — это список химических соединений, полученный применением m1 к помеченным и допустимым для неё
атомам m2 .
Поколение генерации — это множество молекул, получаемых за счёт применения каждой молекулы из S и R к каждой молекуле прошлого поколения.
Для первого поколения прошлым поколением считается множество из одной
базовой молекулы (см. рис. 2.2).
Результатом работы программы будет считаться множество молекул, полученных на всех поколениях генерации.
10
Рисунок 2.1 — Механизм работы программы: (а) набор начальных структур, подаваемых на вход программе; (б) пример изменений, реализуемых через молекулы замещения (замещающий атом помечен окружностью); (в) пример изменений, реализуемых через молекулы дополнения. Атомы, к которым применялось
изменение, помечены стрелками.
На рисунке видно, что даже если все вершины как-то помечены, можно
сократить их количество, если молекула имеет геометрически симметричную структуру (см. рис. 2.2, б).
В примере пары вершин (4 и 2) и (5 и 1) симметричны относительно центральной оси, проходящей через середину нижнего ребра и противоположную вершину, поэтому можно использовать только одну из каждой пары. Если учесть содержимое множества S, окажется, что несмотря на то, что вершины 1 – 3, 6 помечены для замещения, подобное изменение возможно только
в вершинах 2 и 6, так как воздействие на вершину 1 не меняет молекулу, а
атом в вершине 3 имеет большую валентность (см. рис. 2.2, в).
Также можно заметить, что вершины 2 и 6 не имеют связей с атомами водорода, следовательно, ни одна молекула дополнения не может их изменить.
Таким образом, для молекул из R остаётся только вершина 1 (см. рис. 2.2, г).
Набор молекул, полученный после работы программы не должен содержать молекул с одинаковой структурой. Однако, в ходе работы скрипта могут
возникать ситуации, когда этого не получается избежать (см. рис. 2.3 и 2.4)
11
Рисунок 2.2 — Пример получения одного поколения генерации: (а) начальный
набор молекул с помеченными вершинами. Атомы для замещения помечены зелёной пунктирной окружностью, атомы для дополнения — синей пунктирной
окружностью, атомы, к которым применимы оба типа изменения — красной
сплошной окружностью; (б) сокращение числа помеченных атомов за счёт симметричности молекулы; все изменения, помещённые в первое поколение генерации за счёт молекул замещения (в), за счёт молекул добавления (г). Атомы, к
которым применялось изменение, помечены стрелками.
Рисунок 2.3 — Пример получения совпадающих молекул в первом поколении
генерации.
12
Рисунок 2.4 — Пример получения совпадающих молекул во втором поколении
генерации.
2.1
Общий обзор методов и алгоритмов
Для выполнения поставленной цели были сформулированы следующие
задачи:
1. Задать способ обозначения атомов исходной молекулы, изменения в
которых разрешено производить.
2. Определить минимальный набор атомов исходной молекулы, достаточный, чтобы с помощью изменения в них получить полный набор модификаций (т. е. удалить из списка помеченных атомов те, изменение в которых
приведёт к появлению совпадающей молекулы).
3. Произвести изменения в полученных атомах и сохранить итоговый набор молекул.
2.2
Разметка атомов молекулы
Для передачи молекул в программу было решено использовать популярную для этой цели спецификацию SMILES [13], которая позволяет записывать структуру молекулы со всей необходимой для её восстановления информацией в строку. Описание самой спецификации в работе дано не будет,
так как полное описание доступно в указанной статье.
Для указания дополнительной информации об атомах была разработана
надстройка над SMILES, которая вводила новые символы-метки. Далее она
будет называться STAR-SMILES.
Метки могут применяться к любым значимым атомам. Будем приписы13
вать к атому справа символ * для пометки возможности применения к атому
молекулы дополнения, ** — молекулы замещения, *** — обоих типов молекул.
Добавлена также возможность использовать фигурные скобки для массового применения меток к атомам. Метка, следующая после фигурных скобок,
применяется ко всем атомам внутри. Если после фигурных скобок не указано
никакой метки, считается, что указана метка ***.
Рассмотрим применение расширения STAR-SMILES на основе разобранного на рис. 2.2 случая. SMILES, соответствующий молекуле, можно записать так: N1OC(=O)ON1. Пометим вершины соответствующим образом:
N1*O*C**(=O***)O**N1**. В таком виде и будут подаваться все молекулы, обрабатываемые программой.
Для молекул дополнения предоставлена возможность указания нескольких выделенных связей. Для этого после каждого атома, к которому будет относиться связь, в угловых скобках необходимо указать список разрешённых
для него типов связей. Типы связей обозначаются стандартным для формата
SMILES образом: - задаёт одинарную связь, = — двойную, # — тройную.
На рис. 2.5 примедён пример, когда удобно использовать разметку выделенных связей для молекулы дополнения. Есть четыре атома, в сумме семь
способов связи этой молекулы с базовой. Исходный SMILES соединения выглядит следующим образом: OC(=O)NS1C=C(N)C(C)=C1. STAR-SMILES
запись этой молекулы с учётом желаемых выделенных связей будет выглядеть так: O<->C(=O)N<->S1C=C(N<-=>)C(C<-=#>)=C1. Блоки выделяют группы соединений, полученных только за счёт изменения типа связи молекулы дополнения. Подобный способ записи довольно удобно описывает
способы работы с молекулой дополнения.
Для того, чтобы изымать информацию о метках атомов, была формализована грамматика надстройки STAR-SMILES, которая считает части, соответствующие SMILES, просто текстом:
14
# STAR-SMILES
SSM = ε | B | SSB | B SSM
# блок с меткой
B
= ’{’ IBS ’}’ | ’{’ IBS ’}’ SM
# разрешённые внутри блока элементы
IBS = T | T BM | T IBS | T BM IBS
# SMILES строка, после которой идёт метка
SSB = T | T BM | T SM | T BM SM | T SM BM
# метка для указания типа связи
BM = ’<’ T ’>’ | ’<’ ’>’
# метка для указания разрешимого изменения атома
SM = ’*’ | ’**’ | ’***’
# текст, относящийся к SMILES
T
= text
Для реализации этой грамматики был написана связка лексера и парсера,
которая принимает на вход строку с молекулой в формате STAR-SMILES, а
возвращает строку с молекулой в формате SMILES, метки атомов и позиции
в строке SMILES, к которым эти метки относятся.
Например, если на вход приходит STAR-SMILES запись вида
C***<-#>C(=O**)O*<->, после обработки будет возвращена SMILES
строка CC(=O)O, будет указано, что атом на позиции 0 имеет одинарную
и тройную выделенные связи, а также может изменяться любым способом;
атом на позиции 4 может изменяться молекулами замещения; атом на позиции 6 может изменяться молекулой дополнения, а также имеет одинарную
выделенную связь.
Подобный подход позволил проверять правильность использования расширенной спецификации STAR-SMILES и выдавать осмысленные сообщения при обнаружении неожиданных и потенциально ошибочных символов в
строке.
Дополнительным преимуществом такого подхода является простота дальнейшего расширения формата, в случае, если потребуются дополнительные
типы меток.
15
Рисунок 2.5 — Пример получения нескольких молекул добавления из одной за
счёт добавления разметки выделенных связей.
16
2.3
Определение набора атомов для изменения
Воспользуемся стандартной моделью представления молекулы в виде графа. Вершинам соответствуют значимые атомы, дополнительно сохраняется
информация о химическом элементе атома, валентности, количестве смежных атомов водорода и метках о возможностях изменения. Рёбрам соответствуют связи между значимыми атомами, дополнительно сохраняется информация о типе связи (например, одинарная или двойная).
Преобразование в граф выполняется с помощью библиотеки rdKit, имеющей реализацию на Python 2, которая позволяет получить информацию о
структуре молекулы, записанной в формате SMILES, дополнительные метки вершин графа расставляются самостоятельно с использованием информации, полученной от парсера. Граф сохраняется в формате библиотеки
networkx для Python 2.
В полученной структуре, среди всех помеченных вершин графа, остаётся
найти только те вершины, изменение в которых достаточно для получения
полного набора изменённых молекул.
Заметим, что если после изменения молекулы в двух разных вершинах
получены изоморфные графы, то из этих двух вершин всегда достаточно будет изменять только одну (см. рис. 2.6). Польза от такого подхода заметна на
примере молекулы и её разметки, изображённых на рис. 2.2.
Очень наглядным случаем полезности этого действия является пример,
изображённый на рис. 2.7. При правильном подходе к изменению структуры бензольного кольца на третьем поколении будет получено всего три отличающихся структуры, в то время как при простейшей реализации будет
6 ∗ 5 ∗ 4 = 120 вариантов молекул, среди которых будет только три уникальных, остальные можно будет получить поворотами и переворачиванием
изображения молекулы.
Для обнаружения подобных случаев используется следующая техника:
function generate_marked_graphs(graph)
marked_graphs ← Empty list
for vertex in graph.all_change_positions do
Add mark_graph_vertex(graph, vertex) to marked_graphs
17
end for
return marked_graphs
end function
function f ilter_graph_marks(graph)
marked_graphs ← generate_marked_graphs(graph)
f iltered_graphs ← Empty list
for marked_graph in marked_graphs do
is_new_graph ← True
for f iltered_graph in f iltered_graphs do
if marked_graph is isomorphic to f iltered_graph then
is_new_graph ← False
Break
end if
end for
if is_new_graph then
Add marked_graph to f iltered_graphs
end if
end for
graph.all_change_positions ←
marked_graphs_to_positions(f iltered_graphs)
end function
Иными словами, каждой помеченной вершине в графе сопоставляется новый граф (функция generate_marked_graphs), где вместо информации о химическом элементе, записывается одна и та же метка, не встречающаяся в
остальном графе (функция mark_graph_vertex).
Рисунок 2.6 — Пример получения совпадающих графов при отсутствии проверки
структуры графа на автоморфизм.
18
Рисунок 2.7 — Резкое сокращение количество получаемых графов у симметричных структур при правильном подходе к выбору вершин для модификации. (а)
– базовая молекула бензола; (б) – молекулы, получаемые на третьем поколении
генерации при использовании молекулы дополнения -N
После этого полученные графы попарно проверяются на изоморфизм, с
учётом всех меток вершин и рёбер. Если нашлась пара изоморфных графов,
то один из них выбрасывается из списка и не участвует в дальнейших проверках (функция f ilter_graph_marks).
Для проверки на изоморфизм используются методы, реализованные в библиотере networkx. Сначала с помощью метода f aster_could_be_isomorphic,
выполняется быстрая проверка, и если она возвращает False, то переходим
к следующей паре графов, иначе выполняется точный поиск изоморфизма.
Оставшийся после фильтрации изоморфных графов список содержит только графы, изменение помеченной вершины которых достаточно для получения всех необходимых структур.
Из полученного набора графов извлекается информация о номерах помеченных вершин (функция marked_graphs_to_positions). В результате работы этого алгоритма получаем сокращённый список вершин, доступных для
каждого типа изменения.
2.4
Генерация набора молекул
Для начала определим способ, которым получается одно поколение генерации.
На этом шаге имеется граф с помеченными вершинами и набор графов,
которыми будет производится модификация.
19
Каждый граф из этого набора используется для изменения следующим
образом:
1. Если граф является молекулой дополнения, для каждой помеченной
соответствующим образом вершины выполняются следующие шаги:
1.1. Проверяется, что количество смежных атомов водорода этой вершины не меньше кратности связи, которой присоединяется граф молекулы дополнения.
1.2. Производится объединение графов, добавляется ребро с соответствующей меткой типа связи.
2. Если граф является молекулой замещения, для каждой помеченной соответствующим образом вершины выполняются следующие шаги:
2.1. Проверяется, что замена корректная: атом, замещающий исходный,
должен иметь достаточную валентность, чтобы была возможность корректно
присоединить к нему рёбра исходного.
2.2. Производится замена атома, полученный граф сохраняется.
К сожалению, подобная процедура всё же может привести к появлению
изоморфных графов, а значит, и совпадающих молекул, им соответствующих
(см. рис. 2.3 и 2.4). Поэтому требуется дополнительный этап фильтрации результата работы от совпадений.
Учитывая, что на этом этапе может быть уже довольно большое количество графов, проверка на точный изоморфизм будет занимать слишком много времени, поэтому реализован другой подход.
В работе для поиска похожих графов используется приближённое сравнение с помощью алгоритма вычисления ядра графа (Graph Kernel [14]). Техника ядер графа оказывается довольно полезной для работы с графами молекул
[7]. Конкретно было выбрано ядро NSPDK (Neighborhood Subgraph Pairwise
Distance Kernel), так как оно имеет окололинейную скорость вычисления,
реализованную библиотеку для языка Python, и показало достаточную точность работы на тестовых примерах.
Алгоритм вычисления ядра графа позволяет преобразовать граф в разреженный вектор, который уже можно использовать в алгоритмах машинного обучения. В нашем случае использовался алгоритм попарного сравнения
ядер, использующий косинусный коэффициент для получения расстояния
20
между векторами. Графы считались изоморфными, если алгоритм выдавал
значение выше какой-то заданной отсечки. В нашем случае использовалась
отсечка 0.9999.
xy T
k(x, y) =
||x||||y||
Отсеянный подобным образом набор графов преобразуется обратно в формат молекулы библиотеки rdKit, преобразуется в SMILES формат и возвращается, как результат работы программы.
21
3. Результаты и сравнения с существующими решениями
3.1
Оценка скорости работы и потребляемых ресурсов
Измерение скорости и потребляемых ресурсов производится на ОС Arch
Linux, использовался интерпретатор Python 2.7.9, процессор Intel(R) Core(TM)
i7-3517U CPU @ 1.90GHz.
Для проверки были выбраны две молекулы: циклогексан как пример молекулы с простым строением, а также пенициллин (бензилпенициллин) как
пример более сложной малой молекулы.
Для простоты укажем множество молекул замещения из одной молекулы
N и множество молекулы дополнения из -N.
Разберём три запуска работы скрипта (см. рис. 3.1):
1. Циклогексан с возможностью изменения любого атома.
2. Пенициллин с возможностью изменения бензольного кольца и двух соседних метильных радикалов (пенициллин, частичный).
3. Пенициллин с возможностью изменения любого атома (пенициллин,
полный).
В каждом запуске генерация будет идти три поколения.
Таблица 3.1 — Характеристики работы программы при запусках с разными параметрами
Случай
Молекул получено Время, сек Память, Мб
Циклогексан
43
0.97
73
Пенициллин, частичный
87
6.63
72
1787
220.62
134
Пенициллин, полный
В таблице 3.1 указаны результаты тестовых запусков скрипта. Как и ожидалось, время работы растёт довольно быстро, но это связано в первую очередь с соизмеримым увеличением множества структур, которые приходится
обрабатывать, так что результат можно считать приемлемым для поставленной цели.
22
Рисунок 3.1 — Структуры и разметка молекул для замера производительности:
(а) циклогексан со всеми помеченными атомами; (б) пенициллин с выделенным
бензольным кольцом и двумя метильными радикалами; (в) пенициллин со всеми
выделенными атомами
3.2
Сравнение с существующими решениями
В остальных работах по этой теме [2; 8; 9], в основном, рассматриваются
инструменты, построенные следующим образом: на вход подаётся молекула,
в некоторых случаях база данных, а также информация о белке, с которым
молекула должна связываться. Молекула и база по определённым правилам
разбиваются на молекулярные фрагменты, которые передаются на следующий этап генерации новых химических веществ. По информации о белке
строится оценивающая функция, значение которой должно увеличиваться
от генерации к генерации. С помощью этой функции полученные молекулы
сортируются и выбираются только ограниченное количество лучших. Эти
молекулы снова попадают на вход программе и так до тех пор, пока оценивающей функции не окажется подходящим для поставленной задачи.
У подобного подхода есть свои плюсы и минусы. К плюсам метода относится то, что ни в какой момент времени не возникает ситуации, когда рассматривается слишком много соединений. Этот подход в том числе позволяет перебрать довольно большие пространства структур молекул и часто позволяет добиться приемлемого результата. Авторы также заявляют, что полученные молекулы будут синтезируемыми за счёт особых правил получения
фрагментов генерации и их объединения в структуры.
Минусами подхода является некоторая случайность поиска структуры –
нет гарантии, что требуемое соединение будет найдено в используемом про23
странстве перебора – молекулы случайно генерируются в надежде, что среди
полученных встретится подходящая; также конкретно в этих работах используется проверка на совпадение молекул через использование канонической
формы SMILES [15], которая не гарантирует абсолютной точности.
Описанное в работе решение предлагается использовать несколько иным
образом: приложению на вход подаётся молекула, уже связывающаяся с какойто силой с белком, а также набор подобранных радикалов. Полученные на
любом этапе структуры выводятся в качестве результата работы скрипта. Это
приводит к тому, что среди всех молекул будет либо молекула с лучшими
характеристиками, либо можно использовать начальную. За счёт осознанного выбора используемых радикалов, полученные молекулы также будут
иметь достаточный потенциал к «синтезируемости», что достаточно важно
для практического применения.
Примерная цепочка работ может выглядеть следующим образом: с помощью системы Reaxys от Elsevier производится первоначальное исследование
области, подбираются базовая молекула и множества изменяющих молекул.
Далее эти сведения передаются на вход программе-генератору, являющейся
результатом этой работы. На выходе имеется большое множество молекул,
которые проверяются с помощью инструмента QikProp от Schrödinger, которая может быстро вычислить некоторые важные для лекарств характеристики, что позволяет отбросить плохих кандидатов из выборки. После этого
производится более подробная проверка с использованием программы Glide
Docking от Schrödinger, которая просчитывает силу связывания молекулы с
целевым белком. Лучшие молекулы отправляются на дообработку более точными методами, что выходит за рамки рассматриваемой темы.
24
Заключение
Изменение подхода к получению химических структур, планируемых к
использованию в качестве лекарственных средств, позволило создать решение, обладающее некоторым набором преимуществ по сравнению с предыдущими. Например, подробное покрытие области поиска без полного перебора всех возможных структур. Более того, алгоритм генерации не содержит вероятностных факторов, что позволяет следить за пространством просмотренных решений. Правильный выбор радикалов для изменения базовой
молекулы позволяет ожидать получения синтезируемых молекул на выходе
программы. Генерация производится таким образом, чтобы производилось
как можно меньше совпадающих молекулярных структур, что возволяет избегать повторной работы на всех этапах исследования.
Тем не менее важно учитывать, что система создана в предположении о
хороших исходных данных, так как не она не использует никакой информации о структуре белка, с которым связывается образец, ни о каких-либо других условиях. Таким образом, программа является инструментом, позволяющем получить базу структур молекул для последующего анализа и выбора
подходящей, и не искажает за счёт этого получаемое множество молекул.
Решение было написано на языке Python 2. Полученное решение было
внедрено в процессы исследований лекарственных средств компании BIOCAD,
на базе которой проводилась данная работа.
Дальнейшее исследование работы может быть направлено на добавление новых механизмов модификации образца, а также ускорения генерации
структур за счёт обработки множеств радикалов.
25
Список литературы
1. Pence H. E., Williams A. ChemSpider: an online chemical information resource // Journal of Chemical Education. — 2010. — Vol. 87, no. 11. —
Pp. 1123–1124.
2. MOARF, an Integrated Workflow for Multiobjective Optimization: Implementation, Synthesis, and Biological Evaluation / N. C. Firth [et al.] // Journal
of Chemical Information and Modeling. — 2015. — DOI: 10.1021/acs.jcim.5b00073
3. Raju T. N. The Nobel Chronicles // The Lancet. — 2000. — Vol. 355, no.
9208. — P. 1022.
4. Kubinyi H. Success stories of computer-aided design // Computer Applications in Pharmaceutical Research and Development. — 2006. — Vol. 2. —
P. 377.
5. Wermuth C. G. Selective optimization of side activities: the SOSA approach //
Drug discovery today. — 2006. — Vol. 11, no. 3. — Pp. 160–164.
6. Avogadro: An advanced semantic chemical editor, visualization, and analysis platform. / M. D. Hanwell [et al.] // J. Cheminformatics. — 2012. —
Vol. 4, no. 1. — P. 17.
7. DOGS: reaction-driven de novo design of bioactive compounds / M. Hartenfeller [et al.].
8. Pirard B., Ertl P. Evaluation of a Semi-Automated Workflow for Fragment
Growing // Journal of chemical information and modeling. — 2015. — Vol.
55, no. 1. — Pp. 180–193.
9. Ertl P., Lewis R. IADE: a system for intelligent automatic design of bioisosteric analogs // Journal of Computer-Aided Molecular Design. — 2012. —
Vol. 26, no. 11. — Pp. 1207–1215.
10. Pólya G., Read R. C. Chemical Compounds // Combinatorial Enumeration of
Groups, Graphs, and Chemical Compounds. — Springer, 1987. — Pp. 58–
74.
11. Milicevic A., Trinajstic N. Combinatorial enumeration in chemistry // Chemical modelling: applications and theory. — 2006. — Vol. 4. — Pp. 405–69.
26
12. McKay B. D., Piperno A. Practical graph isomorphism, {II} // Journal of
Symbolic Computation. — 2014. — Vol. 60. — Pp. 94–112.
13. Weininger D. SMILES, a chemical language and information system. 1. Introduction to methodology and encoding rules // Journal of chemical information and computer sciences. — 1988. — Vol. 28, no. 1. — Pp. 31–36.
14. Kondor R. I., Lafferty J. Diffusion kernels on graphs and other discrete structures // Proceedings of the 19th international conference on machine learning. — 2002. — Pp. 315–322.
15. O’Boyle N. M. Towards a Universal SMILES representation-A standard method
to generate canonical SMILES based on the InChI. // J. Cheminformatics. —
2012. — Vol. 4. — P. 22.
27
Download