Praktik terbaik untuk menyimpan data simulasi hierarkis

13

TL, DR

Apa praktik terbaik yang diterima dalam lingkaran komputasi ilmiah untuk menyimpan sejumlah besar data terstruktur secara hierarkis? Sebagai contoh, SQL tidak bermain dengan baik dengan matriks jarang yang besar. Apakah ada alat yang bagus untuk penataan, pergudangan, dan analisis data seperti ini? Apa yang orang-orang di LHC gunakan?

Gunakan detail kasus

Saya ingin menyimpan data dari simulasi protein sesuai dengan hierarki berikut:

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

Setiap protein harus mengetahui masing-masing residunya, setiap atom harus mengetahui kondisi yang digunakan untuk simulasi, dll. Dan sebaliknya.

Awalnya saya mengira bahwa database relasional akan sempurna untuk aplikasi ini, jadi saya menulis sebuah program menggunakan python dan sqlalchemey yang menyimpan data dalam database SQL. Namun dalam praktiknya, program ini tidak berfungsi dengan baik.

Masalah terbesar berkaitan dengan fakta bahwa ada matriks N x N pada tingkat data konformer yang menyimpan energi potensial karena interaksi berpasangan antara setiap pasangan konformer yang mungkin. Sebagian besar entri dalam matriks adalah nol, jadi saya menyimpan matriks dalam tabel terpisah dalam database dalam bentuk format yang jarang, satu baris per entri. Sayangnya, untuk simulasi yang melibatkan beberapa ribu konformer, tabel berpasangan masih berakhir dengan beberapa ratus ribu baris dan:

a) membangun dan permintaan dengan sangat lambat (jam)
b) membutuhkan urutan lebih banyak ruang pada hard drive saya daripada representasi data teks biasa yang setara sebagai matriks non-jarang
c) membutuhkan lebih dari sepuluh gigabyte memori saat tabel dibaca ke dalam memori

Tujuan utama saya adalah untuk menyimpan puluhan ribu lintasan (berasal dari ribuan protein dalam beberapa lusin kondisi simulasi) dalam basis data sehingga semuanya dapat dianalisis bersama. Ini berarti bahwa tabel yang mewakili matriks berpasangan kemungkinan akan tumbuh sekitar satu miliar baris. Saat ini sepertinya saya akan membutuhkan Cray atau monster memori bersama lainnya untuk menjalankan satu query pada database ini.

Apakah saya punya opsi yang lebih baik di sini? Apa yang orang-orang di LHC gunakan?

tel
sumber

Jawaban:

12

Pertimbangkan untuk menggunakan format file HDF5 . HDF5 adalah format penyimpanan data hierarkis dengan beberapa fitur menarik:

  • platform independent storage: perpustakaan menangani sedikit / endianness besar untuk Anda
  • tata letak hirarki dataset: seperti sistem file dalam suatu file
  • penyimpanan array n-dimensi yang besar dan dapat tumbuh
  • tipe dataset campuran dapat ada dalam satu file (yaitu, bilangan bulat, mengapung dll)
  • kompresi otomatis tersedia
  • penyimpanan biner
  • paralel i / o

Ada antarmuka C dan Fortran, serta pembungkus Python ( h5py dan pytables ). MATLAB juga dapat membaca HDF5. HDF5 cukup fleksibel, hampir merupakan suatu kesalahan, yaitu, itu bukan "menggambarkan diri sendiri", maka penciptaan XDMF .

Saya tidak yakin apa yang Anda maksud dengan "kondisi yang digunakan untuk simulasi", tetapi jika ini hanya kumpulan parameter kecil Anda bisa menyimpannya sebagai atribut .

Matthew Emmett
sumber
3
Tautan dua arah dalam HDF5 agak sulit dipertahankan. Karena format HDF5 setengah jalan untuk roll-Anda-sendiri, Anda juga dapat mempertimbangkan mempertahankan metadata dalam database relasional dan menyimpan data yang lebih berat dalam file yang terpisah (HDF5 jika Anda suka).
Jed Brown
0

Penggunaan database sangat bagus untuk membantu Anda mengatur / menemukan data simulasi (Cari berdasarkan protein, cari berdasarkan parameter simulasi). Basis data kemudian akan memberi tahu Anda di mana menemukan informasi yang relevan pada disk, di mana saya bayangkan kemungkinan besar tersimpan dengan baik pada setiap proses simulasi dalam jenis file apa pun yang paling nyaman untuk dimuat untuk analisis (apakah khusus atau dari suite simulasi mana pun yang Anda sedang menggunakan).

Ini akan memungkinkan Anda dengan cepat menemukan simulasi yang Anda inginkan, dan memberi Anda kebebasan / kinerja menggunakan matriks jarang atau alat apa pun yang Anda butuhkan untuk melakukan analisis yang efisien.

Richmond Newman
sumber
-8

Lihat apakah TextMaster Data Editor PRO mungkin bisa membantu Anda. http://exnp.com/TM/

Nina
sumber
2
Nina, selamat datang di SciComp! Bisakah Anda menguraikan mengapa perangkat lunak ini mungkin bermanfaat? Juga, mohon ungkapkan afiliasi Anda. Komunitas cenderung tidak menyukai promosi tanpa kontribusi yang lebih luas ke situs; lihat bagian FAQ ini untuk detailnya .
Geoff Oxberry