Лучшие практики для хранения данных иерархического моделирования

13

TL, DR

Какова общепринятая практика в научных вычислительных кругах для хранения большого количества иерархически структурированных данных? Например, SQL плохо работает с большими разреженными матрицами. Есть ли хороший инструмент для структурирования, складирования и анализа таких данных? Что используют ребята на LHC?

Использовать детали случая

Я хочу хранить данные моделирования белка в соответствии со следующей иерархией:

protein
  |__simulation conditions
  |____|__residues
  |____|____|__conformers
  |____|____|____|__atoms

Каждый белок должен знать о каждом своем остатке, каждый атом должен знать условия, используемые для его моделирования и т. Д., И наоборот.

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

Самая большая проблема связана с тем фактом, что на уровне данных конформера существует матрица N x N, которая хранит потенциальную энергию из-за парных взаимодействий между каждой возможной парой конформеров. Большинство записей в матрице являются нулями, поэтому я храню матрицу в отдельной таблице в базе данных в своего рода разреженном формате, по одной строке на запись. К сожалению, для моделирования, включающего несколько тысяч конформеров, парная таблица все еще заканчивается несколькими сотнями тысяч строк и:

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

Моя конечная цель - сохранить в базе данных десятки тысяч прогонов (полученных из тысяч белков при нескольких десятках условий моделирования), чтобы их можно было анализировать вместе. Это будет означать, что таблица, представляющая попарные матрицы, вероятно, вырастет примерно до миллиарда строк. В настоящее время мне кажется, что мне понадобится Cray или какой-нибудь другой монстр с общей памятью, чтобы даже выполнить один запрос к этой базе данных.

У меня есть варианты получше? Что используют ребята на LHC?

телефон
источник

Ответы:

12

Попробуйте использовать формат файла HDF5 . HDF5 - это иерархический формат хранения данных с несколькими приятными функциями:

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

Существуют интерфейсы C и Fortran, а также оболочки Python ( h5py и pytables ). MATLAB также может читать HDF5. HDF5 является достаточно гибким, почти ошибочным, то есть он не «самоописывает», следовательно, создание XDMF .

Я не совсем уверен, что вы имеете в виду под «условиями, используемыми для его моделирования», но если это просто небольшие наборы параметров, вы можете сохранить их как атрибуты .

Мэтью Эмметт
источник
3
Двусторонние ссылки в HDF5 немного трудны для поддержания. Так как форматы HDF5 в любом случае являются полноправными, вы можете также рассмотреть возможность сохранения метаданных в реляционной базе данных и хранения более тяжелых данных в отдельных файлах (HDF5, если хотите).
Джед Браун
0

Использование базы данных отлично подходит для организации / поиска данных моделирования (поиск по белку, поиск по параметрам моделирования). Затем база данных должна сообщить вам, где найти соответствующую информацию на диске, где, как я полагаю, ее лучше всего хранить отдельно для каждого прогона моделирования в любом типе файла, который удобнее всего загрузить для анализа (независимо от того, какой пользователь вы выбрали - из какого-либо набора для моделирования). Используешь).

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

Ричмонд Ньюман
источник
-8

Посмотрите, может ли TextMaster Data Editor PRO вам чем-то помочь. http://exnp.com/TM/

Нина
источник
2
Нина, добро пожаловать в SciComp! Не могли бы вы уточнить, почему это программное обеспечение может быть полезным? Также, пожалуйста, раскрывайте свою принадлежность. Сообщество имеет тенденцию не одобрять продвижение без более широкого вклада в сайт; см. эту часть FAQ для деталей .
Джефф Оксберри