Domanda

Qualcuno là fuori ha abbastanza esperienza w / NetCDF e HDF5 per dare alcuni vantaggi / svantaggi su di loro come un modo di memorizzare i dati scientifici?

Ho usato HDF5 e vorrei lettura / scrittura tramite Java ma l'interfaccia è essenzialmente un wrapper per le librerie C, che ho trovato molto chiaro, quindi NetCDF sembra intrigante ma so quasi nulla su di esso.

modifica la mia domanda è "solo" per la registrazione dei dati, in modo che ho un file che ha un formato autodescrittivi. Caratteristiche importanti per me stanno essendo in grado di aggiungere metadati arbitrari, avendo accesso in scrittura veloce per l'aggiunta di array di byte, e avendo un solo scrittore / multiple-reader concorrenza (fortemente preferita ma non un must-have. docs NetCDF dicono di avere SWMR ma don 't dire se supportano alcun meccanismo per garantire che due scrittori non possono aprire lo stesso file in una sola volta con risultati disastrosi). Mi piace l'aspetto gerarchico di HDF5 (in particolare I amore la gerarchia diretto-aciclico-grafico, molto più flessibile di una gerarchia del file system simile a "regolare"), sto leggendo la documentazione NetCDF ora ... se si consente a un solo set di dati per file allora probabilmente non funzionerà per me. : (

Aggiorna - si presenta come NetCDF-Java legge da netCDF-4 file ma scrive solo dal netCDF-3 file che non supportano i gruppi gerarchici. maledettamente.

Aggiornamento 2009-lug-14 : Sto iniziando a diventare davvero arrabbiato con HDF5 in Java. La biblioteca a disposizione non è quel grande e ha alcuni importanti ostacoli che hanno a che fare con i livelli di astrazione di Java (tipi di dati composti). Un grande formato di file per C, ma sembra che ho appena perso. >: (

È stato utile?

Soluzione

Vi consiglio caldamente di HDF5 invece di NetCDF. NetCDF è piatta, e diventa molto sporco dopo un po 'se non si è in grado di classificare roba. Naturalmente la classificazione è anche una questione di dibattito, ma almeno si ha questa flessibilità.

Abbiamo eseguito una valutazione accurata della HDF5 vs. NetCDF quando ho scritto Q5Cost, e il risultato finale è stato per HDF5 giù le mani.

Altri suggerimenti

dovrò ammettere usando HDF5 è molto più facile nel lungo periodo. Non è difficile da ottenere semplici strutture di dati in formato NetCDF, ma li manipolando lungo la strada è una specie di dolore.

La "H" in HDF5 sta per "gerarchica", che tradotto (per me comunque) in un modo molto semplice per manipolare i dati, semplicemente spostando i nodi intorno e fa riferimento i nodi da altri luoghi.

Posso chiedere che tipo di progetto si tratta? Io uso questi sia per un sacco di HPC attività di modellazione scientifica. Posso supporre che stai facendo la stessa cosa? Se è così, la tendenza che sto vedendo è persone che si spostano a HDF5, ma che potrebbe essere diverso nel vostro settore particolare.

Tuttavia si finisce per andare, buona fortuna!

NetCDF, a partire dalla versione 4.0 (2008) in grado di leggere e scrivere maggior parte dei file HDF5, e consente di accedere alle funzioni gerarchiche del HDF5 tramite il modello di dati migliorata.

HDF5 è estremamente ricco di funzionalità, e ha alcune caratteristiche grandi prestazioni.

NetCDF ha un'API più semplice, e una base strumento molto più ampia. Ci sono molti strumenti che gestiscono i dati netCDF.

So che questo è un posto più vecchio, e il manifesto originale ha indicato hanno spostato su, ma per tutti coloro che finisce qui ... la libreria netCDF-Java (come del 4.3.13) ha netCDF-4 write sostegno tramite la libreria netCDF C. E 'ancora in fase beta, ma lo fa riscontro positivo lavoro e è certamente apprezzato !

Si prega di consultare la netCDF-Java riferimento docs per maggiori dettagli.

Provare a scrivere qualche piccola applicazione di esempio in ogni, e confrontare l'esperienza. Se scalabilità futura del vostro codice per l'esecuzione parallela (tramite MPI o simili) è importante per voi, so che HDF dispone di un'implementazione in parallelo, che le persone sono costantemente al lavoro per migliorare. Io non sono sicuro di NetCDF.

Fine edit: Per NetCDF, v'è ora parallelo NetCDF da Argonne . Funziona abbastanza bene, e il team di sviluppo è molto attivo nel migliorare ulteriormente.

1) NetCDF-4 C Library è un livello sopra biblioteca HDF-5 C. L'API è considerata più semplice rispetto alla libreria di HDF5, ma alla fine si ha praticamente la stessa funzionalità. NetCDF non supporta i grafici, ma HDF5 fa. In realtà, HDF non impedisce cicli nel grafico credo.

2) il gruppo HDF ha un'API Java in cima al grimorio HDF-5 C.

3) Unidata ha biblioteca NetCDF-Java che è puro Java, ma può solo leggere HDF-5.

NetCDF, che si traduce HDF5 nel proprio modello di dati, appare e funziona alla grande ... fino a scoprire che NetCDF non supporta i valori senza segno ! Vedere mia domanda su come rilevare i valori senza segno nei file HDF5 esistente utilizzando NetCDF.

Aggiornamento: In realtà, si scopre che, sebbene NetCDF-3 non supporta valori con segno, NetCDF-4 supporta valori con segno, anche se l'API NetCDF in Java per la determinazione signedness è un po 'contorto .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top