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?
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.
źródło
Sprawdź, czy TextMaster Data Editor PRO może ci pomóc. http://exnp.com/TM/
źródło