Best practice per l'archiviazione di dati di simulazione gerarchici


13

TL, DR

Qual è la migliore pratica accettata nei circoli di informatica scientifica per l'archiviazione di grandi quantità di dati strutturati gerarchicamente? Ad esempio, SQL non funziona bene con matrici sparse di grandi dimensioni. Esiste un buon strumento per strutturare, archiviare e analizzare questo tipo di dati? Cosa usano i ragazzi dell'LHC?

Usa i dettagli del caso

Voglio archiviare i dati dalle simulazioni proteiche secondo la seguente gerarchia:

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

Ogni proteina dovrebbe essere a conoscenza di ciascuno dei suoi residui, ogni atomo dovrebbe conoscere le condizioni utilizzate per la sua simulazione, ecc. E viceversa.

Inizialmente ho pensato che un database relazionale sarebbe stato perfetto per questa applicazione, e quindi ho scritto un programma usando python e sqlalchemey che memorizza i dati in un database SQL. In pratica, tuttavia, questo programma non funziona così bene.

Il problema maggiore riguarda il fatto che esiste una matrice N x N a livello di dati conforme che immagazzina l'energia potenziale a causa delle interazioni a coppie tra ogni possibile coppia di conformatori. La maggior parte delle voci nella matrice sono zeri, quindi sto memorizzando la matrice in una tabella separata nel database in una sorta di formato sparse, una riga per voce. Sfortunatamente, per una simulazione che coinvolge diverse migliaia di conformatori la tabella a coppie finisce ancora con diverse centinaia di migliaia di righe e:

a) crea e interroga molto lentamente (ore)
b) occupa un ordine di grandezza più spazio sul mio disco rigido rispetto a una rappresentazione in testo normale equivalente dei dati poiché una matrice non sparsa
c) occupa più di dieci gigabyte di memoria quando la tabella viene letta in memoria

Il mio obiettivo finale è archiviare decine di migliaia di esecuzioni (derivate da migliaia di proteine ​​in diverse dozzine di condizioni di simulazione) nel database in modo che possano essere analizzate tutte insieme. Ciò significherebbe che la tabella che rappresenta le matrici a coppie probabilmente crescerebbe fino a circa un miliardo di righe. Attualmente sembra che avrò bisogno di un Cray o di qualche altro mostro a memoria condivisa per eseguire anche una singola query su questo database.

Ho delle opzioni migliori qui? Cosa usano i ragazzi dell'LHC?

Risposte:


12

Prendi in considerazione l'utilizzo del formato file HDF5 . HDF5 è un formato di archiviazione dei dati gerarchico con diverse funzioni interessanti:

  • archiviazione indipendente dalla piattaforma: la libreria si occupa di poca / grande endianness per te
  • layout gerarchico di set di dati: come un filesystem all'interno di un file
  • archiviazione array n-dimensionale di grandi dimensioni e coltivabile
  • all'interno di un file possono esistere tipi di set di dati misti (es. numeri interi, float, ecc.)
  • la compressione automatica è disponibile
  • archiviazione binaria
  • I / O parallelo

Esistono interfacce C e Fortran e Python ( h5py e wrapper e pytables ). MATLAB può anche leggere HDF5. L'HDF5 è abbastanza flessibile, quasi per colpa di un errore, vale a dire che non si "auto-descrive", da cui la creazione di XDMF .

Non sono esattamente sicuro di cosa si intenda per "condizioni utilizzate per la sua simulazione", ma se si tratta solo di piccole raccolte di parametri, è possibile memorizzarle come attributi .


3
I collegamenti a due vie in HDF5 sono un po 'difficili da mantenere. Poiché i formati HDF5 sono comunque a metà strada per il roll-your-own, puoi anche considerare di mantenere i metadati in un database relazionale e mantenere i dati più pesanti in file separati (HDF5 se preferisci).
Jed Brown,

0

L'uso di un database è ottimo per aiutarvi a organizzare / trovare i dati di simulazione (Ricerca per proteina, ricerca per parametri di simulazione). Il database dovrebbe quindi dirti dove trovare le informazioni rilevanti sul disco, dove immagino che sia probabilmente meglio archiviato in base alla corsa per simulazione in qualunque tipo di file sia più conveniente da caricare per l'analisi (personalizzato o da qualsiasi suite di simulazione tu stai usando).

Ciò ti consentirà di trovare rapidamente le simulazioni che desideri e di offrirti la libertà / le prestazioni di utilizzo di matrici sparse o di qualsiasi strumento di cui hai bisogno per eseguire un'analisi efficiente.


-8

Verifica se TextMaster Data Editor PRO potrebbe esserti di aiuto. http://exnp.com/TM/


2
Nina, benvenuta su SciComp! Potresti approfondire il motivo per cui questo software potrebbe essere utile? Inoltre, ti preghiamo di rivelare la tua affiliazione. La comunità tende a disapprovare la promozione senza contributi più ampi al sito; vedere questa parte delle FAQ per i dettagli .
Geoff Oxberry,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.