Привет всем!
После написания этой статьи в декабре я подумывал о том, чтобы сделать что-то похожее, но другое, используя язык запросов Neo4j Cypher.
Вот где я пришел к идее искать топологические паттерны с помощью большого подмножества сети белок-белковых взаимодействий, включенного в Bio4j, вместо того, чтобы сосредоточиться на нескольких белках, выбранных априори.
Я решил собрать данные, чтобы найти схемы / простые циклы длиной 3, где хотя бы один белок из набора данных Swiss-Prot :
Я хотел бы отметить, что направление здесь важно и эти два цикла:
- A -> B -> C -> A
- A -> C -> B -> A
не то же самое.
Итак, как только это будет сказано, давайте посмотрим, как выглядит запрос Cypher:
START d=node:dataset_name_index(dataset_name_index = "Swiss-Prot") MATCH d <-[r:PROTEIN_DATASET]- p, circuit = (p) -[:PROTEIN_PROTEIN_INTERACTION]-> (p2) -[:PROTEIN_PROTEIN_INTERACTION]-> (p3) -[:PROTEIN_PROTEIN_INTERACTION]-> (p) return p.accession, p2.accession, p3.accession
Как видите, это действительно просто и понятно. В первых двух строках мы сопоставляем белки из набора данных Swiss-Prot для последующего извлечения тех, которые образуют цикл с 3 длинами, как описано ранее.
После завершения запроса вы должны получить что-то вроде этого:
cypher>
==> + —————————————————— +
p.accession | p2.accession | p3.accession |
==> + —————————————————— +
Q08465 P35189 P3421
Q08465 P34218 P35189
Q8GXA4 Q8L7E5 Q9LE82
Q8GXA4 Q9FH18 Q8L7E5
….
==> + ——————————————————— +
==> 6632 строки, 1019211 мс
Как вы можете видеть , что запрос занял около 17 минут , чтобы быть завершены в 100% свежей БД — не было никакой информации кэшируется все еще ; с машиной AWS m1.large — эта машина имеет 7,5 ГБ оперативной памяти .
Неплохо, верно!
Мы должны остерегаться чего-то, хотя этот запрос возвращает такие циклы, как:
- A -> B -> C -> A
- B -> C -> A -> B
как разные циклы, когда они на самом деле нет.
Вот почему я разработал простую программу для удаления этих повторений, а также для получения некоторой статистической информации.
После запуска программы вы получаете два файла:
- PPICircuitsLength3NoRepeats файл: скачать его здесь
- PPICircuitsProteinsFreq file: загрузите его здесь .
В окончательных схемах найдены были снижены после выполнения фильтрации для 2226 записей.
Наконец, я также создал действительно простую диаграмму, включающую абсолютную частоту первых 20 белков, которые встречаются чаще в найденных циклах.
Ну, это пока все.
Хорошего дня!
Источник: http://blog.bio4j.com/2012/01/mining-bio4j-data-finding-topological-patterns-in-ppi-networks/