Принципы поиска по спектру - ч.2
Продолжаем рассказывать о том, как работает/может работать поиск по спектру. В прошлый раз мы остановились на том, что классические поиски по библиотеке спектров работают по принципу того или иного сравнения профилей спектров. Алгоритм сравнивает каждую точку в спектре-запросе с соответствующей точкой в библиотечном спектре. Ограничение этого подхода - невозможность разумными средствами собрать базу ЯМР для новых молекул и быстро ее обновлять.
Наша идея заключается в том, что надо как-то оцифровать строковые описания спектров и искать по ним. Текстовый поиск в данном случае - плохая идея. Описания "7.95 (d, J = 7 Hz, 1H)" и "8.0 (m, 1H)" вполне могут соответствовать одному и тому же мультиплету. Да и само количество описанных сигналов может отличаться в зависимости от сложности спектра.
Поэтому мы сделали так: основной режим поиска в OdanChem по спектру отвечает не на вопрос "Насколько один спектр соответствует другому?", а на вопрос "Насколько литературный спектр НЕ ПРОТИВОРЕЧИТ запрошенному?". Иначе говоря, насколько молекулы, для которых в литературе были описаны спектры, МОГУТ присутствовать в СМЕСИ, для которой получен спектр в запросе? Технически, система смотрит, насколько в литературном спектре присутствуют сигналы, которых нет на спектре в запросе с учетом допустимых отклонений в положении сигнала.
Покажем на примере (картинка). Допустим, вы загрузили спектр с положениями сигналов, условно, 10, 20, 30 и 40 ppm. Пока не важно какой тип спектра. В нашей библиотеке есть спектр 1 с сигналами 10, 20, 30, 40, спектр 2 с сигналами 10, 15, 20, 30, 40, и спектр 3 с сигналами 10, 20, 40. Первый спектр полностью совпадает с запросом, он, очевидно, будет в выдаче. Второй спектр - ему противоречит, поскольку в нем есть один лишний сигнал. Третий спектр, напротив, соответствует запросу, так как соответствующее ему вещество вполне могло присутствовать в спектре, по которому выполнен поиск.
Таким образом, мы можем сравнительно быстро понять, а стоит ли вообще рассматривать конкретный литературный спектр дальше, или нет. А потом уже нужно отсортировать найденные хиты по проценту перекрывания с исходным запросом. Явно, что, если мы загрузили 10 пиков и нашлось два литературных спектра, в одном - 7 сигналов, в другом - 5, то первый будет явно лучше соответствовать.
Очевидно, что у такого подхода есть ряд слабых мест, и его эффективность варьируется в зависимости от типа спектра. Об этих аспектах будет следующий пост.
Продолжаем рассказывать о том, как работает/может работать поиск по спектру. В прошлый раз мы остановились на том, что классические поиски по библиотеке спектров работают по принципу того или иного сравнения профилей спектров. Алгоритм сравнивает каждую точку в спектре-запросе с соответствующей точкой в библиотечном спектре. Ограничение этого подхода - невозможность разумными средствами собрать базу ЯМР для новых молекул и быстро ее обновлять.
Наша идея заключается в том, что надо как-то оцифровать строковые описания спектров и искать по ним. Текстовый поиск в данном случае - плохая идея. Описания "7.95 (d, J = 7 Hz, 1H)" и "8.0 (m, 1H)" вполне могут соответствовать одному и тому же мультиплету. Да и само количество описанных сигналов может отличаться в зависимости от сложности спектра.
Поэтому мы сделали так: основной режим поиска в OdanChem по спектру отвечает не на вопрос "Насколько один спектр соответствует другому?", а на вопрос "Насколько литературный спектр НЕ ПРОТИВОРЕЧИТ запрошенному?". Иначе говоря, насколько молекулы, для которых в литературе были описаны спектры, МОГУТ присутствовать в СМЕСИ, для которой получен спектр в запросе? Технически, система смотрит, насколько в литературном спектре присутствуют сигналы, которых нет на спектре в запросе с учетом допустимых отклонений в положении сигнала.
Покажем на примере (картинка). Допустим, вы загрузили спектр с положениями сигналов, условно, 10, 20, 30 и 40 ppm. Пока не важно какой тип спектра. В нашей библиотеке есть спектр 1 с сигналами 10, 20, 30, 40, спектр 2 с сигналами 10, 15, 20, 30, 40, и спектр 3 с сигналами 10, 20, 40. Первый спектр полностью совпадает с запросом, он, очевидно, будет в выдаче. Второй спектр - ему противоречит, поскольку в нем есть один лишний сигнал. Третий спектр, напротив, соответствует запросу, так как соответствующее ему вещество вполне могло присутствовать в спектре, по которому выполнен поиск.
Таким образом, мы можем сравнительно быстро понять, а стоит ли вообще рассматривать конкретный литературный спектр дальше, или нет. А потом уже нужно отсортировать найденные хиты по проценту перекрывания с исходным запросом. Явно, что, если мы загрузили 10 пиков и нашлось два литературных спектра, в одном - 7 сигналов, в другом - 5, то первый будет явно лучше соответствовать.
Очевидно, что у такого подхода есть ряд слабых мест, и его эффективность варьируется в зависимости от типа спектра. Об этих аспектах будет следующий пост.