Найкраща практика зберігання даних про ієрархічне моделювання


13

TL, DR

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

Використовуйте реквізити справи

Я хочу зберігати дані з білкового моделювання відповідно до наступної ієрархії:

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

Кожен білок повинен знати про кожен його залишок, кожен атом повинен знати умови, що використовуються для його моделювання тощо, і навпаки.

Спочатку я вважав, що реляційна база даних буде ідеальною для цього додатка, і тому я написав програму, використовуючи python та sqlalchemey, що зберігає дані в базі даних SQL. На практиці, однак, ця програма працює не так добре.

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

а) будує та запитує дуже повільно (години)
б) займає на порядок більше місця на моєму жорсткому диску, ніж еквівалентне представлення даних у простому тексті у вигляді нерозрідженої матриці;
c) займає більше десяти гігабайт пам'яті, коли таблиця зачитується в пам'ять

Моя кінцева мета - зберігати десятки тисяч пробіжок (отриманих з тисяч білків за декількох десятків умов моделювання) в базі даних, щоб їх можна було аналізувати разом. Це означало б, що таблиця, що представляє парні матриці, ймовірно, виросте приблизно до мільярда рядків. В даний час здається, що мені знадобиться 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! Не могли б ви детальніше пояснити, чому це програмне забезпечення може бути корисним? Також, будь ласка, розкрийте свою приналежність. Громада схильна нахмуритися на просування без більшого внеску на сайт; Детальну інформацію див. у цій частині поширених запитань .
Джефф Оксберрі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.