Hiyerarşik simülasyon verilerini depolamak için en iyi uygulama


13

TP, DR

Bilimsel hesaplama çevrelerinde, büyük miktarlarda hiyerarşik olarak yapılandırılmış verilerin depolanması için kabul edilen en iyi uygulama nedir? Örneğin, SQL büyük seyrek matrislerle iyi oynamaz. Bu tür verileri yapılandırmak, depolamak ve analiz etmek için iyi bir araç var mı? LHC'deki çocuklar ne kullanıyor?

Vaka ayrıntılarını kullan

Aşağıdaki hiyerarşiye göre protein simülasyonlarından veri depolamak istiyorum:

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

Her protein, kalıntılarının her birinin farkında olmalıdır, her atom, simülasyonu için kullanılan koşulları vb. Bilmelidir ve bunun tersi de geçerlidir.

Başlangıçta ilişkisel bir veritabanının bu uygulama için mükemmel olacağını düşündüm ve bu yüzden verileri bir SQL veritabanında saklayan python ve sqlalchemey kullanarak bir program yazdım. Ancak uygulamada, bu program çok iyi çalışmıyor.

En büyük sorun, uyumlu her veri çifti arasındaki ikili etkileşimler nedeniyle potansiyel enerjiyi depolayan, uyumlu veri düzeyinde bir N x N matrisinin bulunmasıyla ilgilidir. Matristeki girişlerin çoğu sıfırdır, bu yüzden matrisi veritabanında ayrı bir tabloda seyrek formatta, giriş başına bir satır saklıyorum. Ne yazık ki, birkaç bin konformer içeren bir simülasyon için ikili tablo hala birkaç yüz bin satır ile sonuçlanıyor ve:

a) çok yavaş inşa eder ve sorgular (saat)
b) sabit diskimde, seyrek olmayan bir matris olarak verilerin eşdeğer düz metin sunumundan çok daha fazla yer kaplar
c) on gigabayttan fazla bellek alır tablo belleğe okunur

Nihai hedefim, onbeş koşuyu (birkaç düzine simülasyon koşulu altında binlerce proteinden türetilmiş) veritabanında depolamaktır, böylece hepsi birlikte analiz edilebilir. Bu, çift matrisleri temsil eden tablonun muhtemelen bir milyar satıra çıkacağı anlamına gelir. Şu anda bu veritabanında tek bir sorgu çalıştırmak için bir Cray veya başka bir paylaşılan bellek canavarına ihtiyacım var gibi görünüyor.

Burada daha iyi seçeneklerim var mı? LHC'deki çocuklar ne kullanıyor?

Yanıtlar:


12

HDF5 dosya biçimini kullanmayı düşünün . HDF5 çeşitli hoş özelliklere sahip hiyerarşik bir veri depolama formatıdır:

  • platformdan bağımsız depolama: kütüphane sizin için küçük / büyük endianiteye dikkat eder
  • veri kümelerinin hiyerarşik düzeni: dosya içindeki bir dosya sistemi gibi
  • geniş, büyütülebilir n-boyutlu dizi depolama
  • karışık veri kümesi türleri bir dosyada bulunabilir (yani tamsayılar, kayan noktalar vb.)
  • otomatik sıkıştırma mevcuttur
  • ikili depolama
  • paralel giriş / çıkış

C ve Fortran arabirimlerinin yanı sıra Python ( h5py ve pytables ) sarmalayıcıları vardır. MATLAB HDF5'i de okuyabilir. HDF5 oldukça esnektir, neredeyse bir hataya karşıdır , yani "kendini tanımlayan" değildir, dolayısıyla XDMF'nin oluşturulmasıdır .

"Simülasyonu için kullanılan koşullar" ile ne kastettiğinizden tam olarak emin değilim, ancak bunlar sadece küçük parametre koleksiyonlarıysa bunları nitelikler olarak saklayabilirsiniz .


3
HDF5'teki iki yönlü bağlantılar bakımı biraz acıdır. HDF5 biçimleri yine de kendinize ait olanın yarısı kadar olduğundan, ilişkisel bir veritabanında meta verileri korumayı ve daha ağır verileri ayrı dosyalarda (isterseniz HDF5) tutmayı da düşünebilirsiniz.
Jed Brown

0

Bir veritabanının kullanımı, simülasyon verilerini düzenlemenize / bulmanıza yardımcı olmak için mükemmeldir (Proteine ​​göre arama, simülasyon parametrelerine göre arama). Veritabanı daha sonra diskte ilgili bilgileri nerede bulacağınızı söylemelidir, burada en iyi olasılıkla analiz için yüklenecek en uygun dosya türünde (özel veya hangi simülasyon paketinden) olsun, dosya başına en iyi şekilde her bir simülasyon çalıştırması temelinde saklanır. kullanıyorsunuz).

Bu, istediğiniz simülasyonları hızlı bir şekilde bulmanızı ve seyrek matrisleri veya verimli analiz yapmak için ihtiyacınız olan araçları kullanma özgürlüğünü / performansını size vermenizi sağlayacaktır.


-8

TextMaster Data Editor PRO'nun size yardımcı olup olmayacağını görün. http://exnp.com/TM/


2
Nina, SciComp'a hoş geldin! Bu yazılımın neden yararlı olabileceğini açıklayabilir misiniz? Ayrıca lütfen bağlılığınızı açıklayın. Topluluk, siteye daha fazla katkıda bulunmadan tanıtım üzerine kaşlarını çatma eğilimindedir; bkz ayrıntılar için SSS bu bölümü .
Geoff Oxberry
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.