Najlepsza praktyka przechowywania hierarchicznych danych symulacyjnych

13

TL, DR

Jaka jest sprawdzona najlepsza praktyka w naukowych kręgach obliczeniowych do przechowywania dużych ilości danych o strukturze hierarchicznej? Na przykład SQL nie działa dobrze z dużymi rzadkimi macierzami. Czy istnieje dobre narzędzie do strukturyzacji, magazynowania i analizy tego rodzaju danych? Czego używają faceci z LHC?

Użyj szczegółów sprawy

Chcę przechowywać dane z symulacji białek zgodnie z następującą hierarchią:

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

Każde białko powinno być świadome każdej swojej reszty, każdy atom powinien znać warunki zastosowane do jego symulacji itp. I odwrotnie.

Początkowo pomyślałem, że relacyjna baza danych byłaby idealna dla tej aplikacji, dlatego napisałem program wykorzystujący Python i sqlalchemey, który przechowuje dane w bazie danych SQL. W praktyce jednak ten program nie działa tak dobrze.

Największy problem dotyczy faktu, że na poziomie danych konformatora istnieje macierz N x N, która przechowuje energię potencjalną ze względu na interakcje parami między każdą możliwą parą konformerów. Większość wpisów w macierzy jest zerowa, więc przechowuję macierz w osobnej tabeli w bazie danych w rodzaju rzadkiego formatu, jeden wiersz na wpis. Niestety, w przypadku symulacji obejmującej kilka tysięcy konformatorów tabela parowania wciąż kończy się na kilkuset tysiącach wierszy i:

a) buduje i wysyła zapytania bardzo powoli (godziny)
b) zajmuje o rząd wielkości więcej miejsca na moim dysku twardym niż równoważna reprezentacja danych w postaci zwykłego tekstu jako macierz niesparowana
c) zajmuje więcej niż dziesięć gigabajtów pamięci, gdy tabela jest wczytywana do pamięci

Moim ostatecznym celem jest przechowywanie dziesiątek tysięcy przebiegów (pochodzących z tysięcy białek w kilkudziesięciu warunkach symulacji) w bazie danych, aby wszystkie mogły być analizowane razem. Oznaczałoby to, że tabela reprezentująca macierze par prawdopodobnie wzrośnie do około miliarda wierszy. Obecnie wydaje się, że potrzebuję Craya lub innego potwora z pamięcią współużytkowaną, aby nawet uruchomić jedno zapytanie w tej bazie danych.

Czy mam tutaj jakieś lepsze opcje? Czego używają faceci z LHC?

tel
źródło

Odpowiedzi:

12

Rozważ użycie formatu pliku HDF5 . HDF5 to hierarchiczny format przechowywania danych z kilkoma przyjemnymi funkcjami:

  • niezależne od platformy przechowywanie: biblioteka dba o Ciebie w niewielkim / dużym stopniu
  • hierarchiczny układ zestawów danych: jak system plików w pliku
  • duża, rosnąca pamięć n-wymiarowa macierz
  • mieszane typy zestawów danych mogą istnieć w jednym pliku (np. liczby całkowite, zmiennoprzecinkowe itp.)
  • dostępna jest automatyczna kompresja
  • przechowywanie binarne
  • równoległe we / wy

Istnieją interfejsy C i Fortran, a także opakowania Pythona ( h5py i pytables ). MATLAB może również czytać HDF5. HDF5 jest dość elastyczny, prawie do winy, tzn. Nie jest „samoopisujący się”, stąd tworzenie XDMF .

Nie jestem do końca pewien, co rozumiesz przez „warunki używane do jego symulacji”, ale jeśli są to tylko małe zbiory parametrów, możesz je zapisać jako atrybuty .

Matthew Emmett
źródło
3
Dwukierunkowe łącza w HDF5 są trochę uciążliwe w utrzymaniu. Ponieważ formaty HDF5 i tak są w połowie drogi do własnego, możesz również rozważyć utrzymanie metadanych w relacyjnej bazie danych i przechowywanie cięższych danych w osobnych plikach (HDF5, jeśli chcesz).
Jed Brown
0

Korzystanie z bazy danych doskonale pomaga organizować / znajdować dane symulacyjne (Wyszukiwanie według białka, wyszukiwanie według parametrów symulacji). Baza danych powinna następnie powiedzieć, gdzie znaleźć odpowiednie informacje na dysku, gdzie, jak sądzę, najlepiej przechowywać je na podstawie przebiegu symulacji w dowolnym typie pliku, który jest najbardziej dogodny do załadowania do analizy (niestandardowej lub z dowolnego pakietu symulacji używa).

Pozwoli ci to szybko znaleźć pożądane symulacje i zapewni swobodę / wydajność korzystania z rzadkich matryc lub dowolnych narzędzi potrzebnych do wydajnej analizy.

Richmond Newman
źródło
-8

Sprawdź, czy TextMaster Data Editor PRO może ci pomóc. http://exnp.com/TM/

Nina
źródło
2
Nina, witaj w SciComp! Czy możesz wyjaśnić, dlaczego to oprogramowanie może być pomocne? Proszę również ujawnić swoją przynależność. Społeczność zwykle marszczy brwi podczas promocji bez szerszego wkładu w stronę; szczegóły w tej części FAQ .
Geoff Oxberry