Добрый день,
посоветуйте, пожалуйста, сабж. Условия таковы:
есть две молекулы, которые надо сравнить, для каждой имеется насчитанных несколько конформеров, причем число конформеров и точность их расчетов могут сильно варьироваться.
По задаче предполагается, что одна молекула является как-бы составной частью другой, например радикалом. А может и не сильно повезти, то есть радикал с замещенным чем-то. Грубо говоря в сравнении может попасть что-то типа фенилбензоата C6H5 - COO - C6H5, с толуолом и надо найти, что у фенилбензоата есть C6H5-С группа, которая сильно похожа на такую же у толуола (толуол без трех водородов у метила).
Поиск нужен не по графам, а именно по геометрии, то есть если в одной молекуле есть какая-то хиральная группа, а в другой - есть его стериоизомер - то это различные вещества, хотя графы могут быть довольно схожими или одинаковыми.
На графов алгоритмов полно и многие мне известны, но они-то как раз мне не сильно интересны.
Нужна именно нечеткая логика, "примерно равно", "почти точно равно", "почти точно не равно", и т.д. и я планирую напускать огромный набор радикалов на сравнение с искомой молекулой, и хочу найти тот радикал, что наиболее похож.
Иногда у меня нет связей, есть только координаты атомов. В принципе связи построить не сильно сложно, но, так как координаты заданы не точно, то граф связей может получиться очень дурацким.
Сам вижу решение - искать трансформацию каждого атома первой молекулы во вторую, сравнивать эти трансформации, и, если найдено много очень похожих трансформаций, то ее применить к первой молекуле, и сравнить поатомно на сколько все совпало. Я его попробовал - пока если конформеров много, считается довольно медленно, хотя более-менее надежно.
Скажите, пожалуйста, как такие алгоритмы правильно называются если конечно они есть в природе, где о них можно почитать и что Вы бы могли бы посоветовать в качестве альтернативы?
Спасибо!
Алгоритмы сравнения молекул и их частей
Re: Алгоритмы сравнения молекул и их частей
Гляньте Open Babel obgrep obfit. Может, что-то пригодится
Re: Алгоритмы сравнения молекул и их частей
Спасибо большое, да, там уже все, что смог вычитал и высмотрел, даже по статьям авторов Бабеля гулял, но всяко обязательно еще раз посмотрю, может что-то и пропустил.
В Бабеле много сравнений по графам, и это - здорово, но тут основная проблема в том, что радикал (или фрагмент, который я хочу сравнить с остальными - часто задан с не правильными связями и тогда тут не все хорошо работает.
Re: Алгоритмы сравнения молекул и их частей
А имеет ли решение такая задача? Например, если задали циклопропан атомами углерода с расстояниями между ними 1.5, 1.5 и 2.0, то как можно догадаться, что имеется в виду не пропан?
Re: Алгоритмы сравнения молекул и их частей
Ну в рамках "нечеткой логики" это скажем на 40% пропан, на 30 - циклопропан, на 20 - пропилен, на 10 - аллен, а дальше исходя из окружения (водородов).
Re: Алгоритмы сравнения молекул и их частей
Спасибо за интересные вопросы!
Попробовал в свою программу подставить, и получил, что наиболее подходят циклобутан, оксетан, тиетан, вернее те его части, что содержат C3H6. То есть тут как раз нечеткая логика нужна, а потом перебираем все из табличных, и смотрим какая молекула наиболее похожа и похожесть достигается на максимально большом числе атомов.
Классно, пример суперский!!!
Попробовал в свою программу подставить, и получил, что наиболее подходят циклобутан, оксетан, тиетан, вернее те его части, что содержат C3H6. То есть тут как раз нечеткая логика нужна, а потом перебираем все из табличных, и смотрим какая молекула наиболее похожа и похожесть достигается на максимально большом числе атомов.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 20 гостей