(no subject)

May 03, 2010 23:17

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

Перечень объектов для хранения в базе, на текущий момент видится так:

A->B
Увеличение A приводит к увеличению B или
Уменьшение A приводит к уменьшению B
в статьях часто звучит так:
A увеличивает B
A способствует B
A усиливает B
A вызывает B
A активирует B
на схемах обозначается стрелкой от A к B

A-|B
Увеличение A приводит к уменьшению B или
Уменьшение A приводит к увеличению B
в статьях выглядит так:
A ингибирует B
A сокращает B
A уменьшает B
A тормозит B
A угнетает B

Типичный пример схемы с участием первых двух взаимодействий


A~B
A влияет на B
A регулирует B
A модулирует B
Это "нехороший", но к сожалению, очень часто встречающийся способ описания взаимодействия. Из него нельзя понять, в какую сторону изменится B при изменении A, только констатация факта, что связь между этими объектами имеет место быть. Идеальным выходом является поиск дополнительной информации, как конкретно A влияет на B, в случае же отсутствия такой информации так и будем записывать A~B

A>B
A нормализует B
Означает, что наличие (увеличение) A приводит к уменьшению отклонения B от нормального (среднего) уровня, или, другими словами, приводит A в норму.

Катализаторы
C->(A->B)
C-|(A->B)
C->(A-|B)
C-|(A-|B)

C усиливает или ослабляет вес стрелки между A и B
Пример: фолиевая кислота (C) ускоряет превращение гомоцистеина (A) в метионин (B)

Комплексы
D=A+B+C
Вещество D образуется только при наличии всех составляющих его компонентов.
Довольно часто можно увидеть в графических схемах
Под это описание подходят как химические реакции соединения, так и объединение белковых субъединиц в единый комплекс.
Реакции разложения отдельно не описываю, т.к. они могут быть представлены в виде
A->B и A->C

Соотношения
A:B
Иногда бывает важно не просто наличие каких-либо веществ, а их соотношение, например, индекс атерогенности ЛПНП:ЛПВП, или соотношение полиненасыщенных кислот омега-6:омега-3
Пример описания, встречающегося в литературе:
подсолнечное масло -> Omega6:Omega3

И еще один объект, не описывающий процесс взаимодействия, но необходимый для моделирования

Обобщающие названия
Например, Catechin, Epicatechin, Procyanidins - это все Flavonoids
Если в одной статье будет упомянут, например, Catechin, а в другой Flavonoid, то формально описав взаимодействия, система не будет знать о том, что между ними существует какая-то связь, но она реально существует, и это можно учесть.

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

Все участвующие в реакциях компоненты заносятся в словарь. Систему собираюсь сделать гибкой, поэтому практически не будет никаких ограничений в словаре. В словарь можно будет включать как существительные (названия веществ, названия болезней и т.д.), так и номинативные предложения (например, "механизм получения энергии"). Можно будет вводить даже произвольные слова, но здесь уже сложность в том, чтобы другие люди поняли, о чем идет речь. Системе все равно, для нее
это всего лишь внутренние коды.
Приведу типичные группы слов, которые нарисовались после прочтения множества статей:
F ood (представляет собой еду или содержится в ней)
B ad (БАДы)
M edicine (лекарственные средства, медицинские вмешательства, то, что можно померить доступными анализами)
O ther (другое доступное воздействие, например, физические упражнения)
N ot available (недоступные воздействию, ненаблюдаемые внешне, обычно это различные белки, циркулирующие в организме)
E ffect (эффект, внешнее проявление, например, симптомы, болезни и др.)

каждому слову в словаре имеет смысл прописать уровень, к которому оно относится:
H uman (человек)
T issue (ткань)
C ell (клетка)
O rganell (органелла)
G ene (ген)
P rotein (протеин)
L owMolecular (низкомолекулярное соединение)

Теперь задачи, которые система сможет решать:
1) По заданному изменению (увеличение или уменьшение) одного или нескольких параметров, определить, в какую сторону изменятся остальные параметры системы Параметрами могут быть любые слова из словаря.
2) Если требуется изменить уровень какого-либо параметра, рассчитать, на какой из доступных параметров нужно повлиять (с учетом минимизации побочных эффектов)
3) Выявление противоречивых связей
4) Экспресс-оценка новых предлагаемых средств на предмет соответствия заявленным свойствам
5) Диагностика заболеваний по произвольному (возможно, неполному) набору данных

На первом этапе я ставлю задачу только качественного моделирования (не количественного), т.к. почти всегда мы не знаем количественных значений тех или иных показателей. Во многих случаях, система не сможет предсказывать правильно даже качественные изменения. Но это не должно смущать, т.к. cистема будет «обучаться?, и источником обучения будет внесение в нее результатов новых исследований..

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

Если заглянуть еще дальше, то всем взаимодействиям можно будет прописать их область действия (в какой ткани происходит взаимодействие, внутри или снаружи клетки и т.д.) и наложив это на скан тела конкретного человека (полученный, например, с помощью МРТ), просчитать, как то или иное вмешательство скажется в дальнейшем. Естественно, тут понадобятся знания о том, как те или иные процессы влияют на количество и функционирование клеток в той или иной ткани, знание законов гемодинамики и т.д.

Если кто желает (и может) помочь, имеются следующие задачи:

Простые:
- при чтении статей заносить в таблицу Excel описанные взаимодействия (если кто заинтересуется, напишу формат)
- попытаться найти аналогичные базы в интернете

Для программистов:
- продумать модуль визуализации и написать его (на входе будет текстовый файл с описанием узлов графа в количестве 30000-50000 и с количеством связей более 100000, и с выделенными путями в этом графе. Узлы и стрелки могут иметь подписи и цветовую раскраску. Нужно иметь возможность
просматривать граф как целиком, так и отдельные увеличенные фрагменты, уметь располагать узла графа так, чтобы минимизировать количество пересечений стрелок, и чтобы получившаяся картинка выглядела читабельно, иметь возможность группировки узлов (по некоему признаку), чтобы узлы группы располагались рядом)

Для суперпрограммистов-лингвистов:
- написать программу автоматического выуживания из текста статьи описанных взаимодействий (языки: русский и английский)
- написать парсер, прочесывающий определенный сайт (например, википедию или pubmed), и выбирающий релевантные статьи, которые могут содержать информацию о процессах, происходящих в организме с возможностью определения, к какому организму относится информация в статье (человек, мышь, нематода, дрожжи и т.д.)
Previous post Next post
Up