Давно уже не писал на эту тему (см.подробнее
http://crocodile2010.livejournal.com/2418.html), тем не менее есть, чем поделиться.
За это время удалось сделать:
- обратный синтез, т.е. имея на входе симптомы или результаты анализов, определить возможные причины, приведшие к данным результатом и отранжировать их; попутно опредляется, каким образом можно ликвидировать нежелательные проявления
- ранжирование с учетом возможных побочных эффектов
- ранжирование с учетом достоверности (важный момент: в базе содержится качественное описание взаимодействий A->B, но почти никогда неизвестны количественные характеристики. Поэтому, если мы, например возьмем отклонение метаболита от нормы на одну условную единицу, и попробуем просчитать, что будет с остальными, мы получим некий результат. Если же взять не единицу, а другое значение, то и результат будет другой. Если продолжать моделировать с разными значениями, то иногда конечный результат получается более-менее стабильным (по крайней мере, отклонение всегда будет в одну сторону), в других же случаях могут получиться противоположные по знаку, но одинаковын по абсолютной величине значения. В первом случае можно говорить, что результат достоверен, в последнем - недостоверен. Все что посередине, может быть отранжировано)
- загружены все гены, подкачиваются в словарь по мере необходимости
- начал осваивать Silverlight в связке с C#. Есть задумка часть результатов представлять в графическом виде. Здесь возникла сложность. В начале работы я полагал, что база будет содержать около 50000 взаимодействий, а результатом типовой расчетной модели будет граф с не более чем 500 узлами и связями. В реальности связанность оказалась значительно выше, и даже на базе с 3000 связей в результирующей модели их остается 1200. На экране это выглядит неудобоваримо. Придется еще подумать над формой представления информации.
В качестве целевой функции взята:
Увеличение продолжительности жизни ( Life Extension ) "1" - единица(со знаком плюс) означает, что мы хотим увеличить этот параметр
Старение организма "-1" - (единица со знаком минус) означает, что этот параметр желательно уменьшить
Мы хотим узнать, что нужно сделать, чтобы получить такой результат.
Можно перефразировать задачу и по-другому (результат при этом не изменится): мы имеем по факту увеличенную продолжительность жизни и замедленное старение и хотим узнать причины.
Для этого применим обратный синтез.
Отчет (Размер файла 1.17 Мб) состоит из нескольких частей.
В 1-й части моделирование проведено с отклонениями от нормы, равными одной условной единице, ведущие к удовлетворению целевой функции, без учета побочных эффектов и достоверности. Способы воздействия отфильтрованы (показаны только те, на которые можно повлиять доступными средствами) и отранжированы по степени воздействия (наиболее эффективные вверху, наименее эффективные - в середине (в области нулевых значений), в самом низу снова эффективные, но их эффективность возрастает при уменьшении относительно нормы)
В правой колонке таблицы показан один из вероятных путей. Значки "^" и "T" означают "увеличивает" и "уменьшает". Двойные значки "^^" говорят о каталитическом влиянии. В настоящий момент показан минимальный путь в графе, но он не всегда верный, поэтому если проследить по стрелкам, то можно обнаружить, что результат воздействия не совпал по знаку с тем, что в левой колонке. Это недоделка. Здесь нужно вычислять путь, внесший максимальный вклад в полученный результат. Кроме того, здесь не отражены редкие взаимосвязи, когда при моделировании использовались комплексы, обобщения и соотношения.
Типичный пример недоделки можно увидеть в строке "rapamicine". Почему при том, что путь показан правильный Рапамицин T Target of rapamicine T Life Extension , система сделала вывод, что его, наоборот, употреблять не надо? А потому, что при заданных параметрах моделирования, больший вклад внесли более длинные цепочки:
rapamicine T иммунитет T endometriosis ^ брюшинные макрофаги ^ Цитокины ^ Воспалительные цитокины ^ Воспалительные реакции в тканях ^ Atero ^ hypertension T VtB T HomoCys ^ AmMet T LE
Рапамицин T иммунитет T эндометриоз ^ перитонеальные макрофаги ^ Цитокины ^ Неполноценные клетки ^ Болезнь Альцгеймера T кортикотропин-высвобождающий гормон ^ адренокортикотропный гормон ^ тревога ^ дофамин T соматотропный гормон ^ инсулиноподобный фактор роста ^^ IRS proteins 1 ^ киназа которая фосфорилирует и инактивирует FOXO T FOXO ^ Life Extension
Здесь следует еще справедливо заметить, что эндометриоз - женская болезнь, и для мужчин модель должна выглядеть по-другому. Да, это так, см. ниже планы на будущее.
А вообще, одной из задач моделирования будет выявление таких неочевидных на первый взгляд цепочек.
По поводу чисел в левой колонке. Имеет значение только знак (да и то нет гарантии, что он не изменится при других параметрах моделирования). В остальном их следует расценивать не более, чем условный ранжир. Ну и еще диапазон от 2 до 3 говорит либо о наличии положительных обратных связей, либо об отсутствии в базе фактов, отражающих важные регуляторные связи, либо о неполноте модели.
Во 2-м разделе моделирование проведено с тем же отклонением от нормы в одну условную единицу, но с учетом минимизации побочных явлений. Побочными явлениями как правило являются болезни, симптомы, психологические состояния и т.д. Причем они не всегда бывают отрицательными, но и положительными (например, улучшение координации движений, память или заживление ран). Кроме того, умешьшение приявления отрицательного симптома рассматривается как положительный побочный эффект.
В левой части таблицы показана условная величина побочных эффектов (<0-польза превышает побочные эффекты, >0-побочные эффекты превышают пользу) и воздействия отсортированы по этой величине.
Во 2-й и 3-й колонке минимальная и максимальная степень побочных эффектов при моделировании. Моделировались отклонения от 0.2 до 5 (т.е. в 5 раз в разные стороны, общий разброс в 25 раз), причем по любому участвующему в расчете параметру, и брался наихудший результат.
4-я колонка - достоверность (от 0 до 1 - только при совпадающем знаке у min и max), если знак не совпадает, достоверность считаем равной нулю, а в колонке показана условная степень разброса (со знаком минус) в целях ранжирования.
6-я колонка - что за воздействия (иногда встречается 2 воздействия через точку с запятой, если кумулятивный эффект лучше раздельного воздействия), а в 5-й воздействие со знаком + или -, и если стоит звездочка, значит при разных параметрах моделирования целевая функция ушла в разнос, и эту строку целиком следует считать недостоверной.
В последней колонке перечислены конкретные побочные эффекты. Формат колонки:
-: перечень отрицательных побочных эффектов (в скобках условное отклонение от нормы)
+: перечень положительных побочных эффектов (в скобках условное отклонение от нормы)
В 3-м разделе добавлен учет достоверности. Для полноты представлены все строки из раздела 2, но достоверных оказалось всего 7. Строго говоря, и про них нельзя утверждать, что они достоверные. Во-первых база, далеко не полна (хорошо, если в ней есть 1% известных науке взаимосвязей). Во-вторых, ничтожно мало количественных данных.
И, наконец, в 4-м разделе строки отранжированы по усредненному значению, полученному при разных параметрах моделирования.
Может возникнуть вопрос, а зачем вообще это все нужно, если достоверных результатов почти нет?
На самом деле почти все факты в базе достоверны (если не допущена ошибка при вводе, или факт не достоверен). С короткими цепочками дела обстоят более-менее хорошо. А вот дальше чем длиннее цепочка, а точнее, насколько сильно она связана с другими цепочками, и чем больше в системе положительных обратных связей, тем менее достоверным оказывается результат. Человек может попытаться проанализировать цепочки вручную, но его возможности значительно меньше, чем у компьютера. Он, конечно, может обратиться к литературе, получить дополнительные данные, наконец, провести эксперимент, но программа может взять на себя рутинную работу, и подсказать варианты поиска. По своему опыту ручного анализа скажу, что даже имея подсказки, цепочки длиной свыше 6 звеньев анализировать очень долго.
Есть соображение, что не стоит рассчитывать слишком длинные цепочки (больше 7-8 звеньев). В первую очередь из-за снижения качества результатов, а во-вторую в связи с замедлением расчета при дальнейшнм росте базы.
В любом случае предлагаю посмотреть, что получилось, указать на явные ляпы (из тех, что я сам не перечислил), похвалить/обругать/просто высказаться.
Ближайшие планы:
- доделать поиск пути, вносящего максимальный вклад в достижение целевой функции (вместо самого короткого пути в 1-м разделе)
- ввести учет специфических признаков (присущих только мужчинам/женщинам, определенному возрасту и т.д.)
- ввести учет пространственного местонахождения метаболитов и их перемещение (транспорт)
- учесть время протекания процессов (для быстропротекающих в ряде случаев может понадобиться большее количество итераций, чтобы подстроиться под медленнотекущие)
- попробовать автоматизировать закачку фактов с сайтов, не предоставляющих базы в одном файле