Hierarkiskt dataformat
Filnamnstillägg |
.hdf , .h4 , .hdf4 , .he2 , .h5 , .hdf5 , .he5
|
---|---|
Internet mediatyp | application/x-hdf, application/x-hdf5 |
Magiskt nummer | \211HDF\r\n\032\n |
Utvecklad av | HDF-gruppen |
Senaste släppningen | 5-1.12.2 19 april 2022 |
Typ av format | Vetenskapligt dataformat |
Öppna format ? | Ja |
Hemsida |
|
Hierarchical Data Format ( HDF ) är en uppsättning filformat ( HDF4 , HDF5 ) utformade för att lagra och organisera stora mängder data. Ursprungligen utvecklad vid US National Center for Supercomputing Applications , stöds den av The HDF Group, ett icke-vinstdrivande företag vars uppdrag är att säkerställa fortsatt utveckling av HDF5-teknologier och fortsatt tillgänglighet för data som lagras i HDF.
I enlighet med detta mål är HDF-biblioteken och tillhörande verktyg tillgängliga under en liberal, BSD-liknande licens för allmänt bruk. HDF stöds av många kommersiella och icke-kommersiella programvaruplattformar och programmeringsspråk. Den fritt tillgängliga HDF-distributionen består av biblioteket, kommandoradsverktyg, testsvitskälla, Java-gränssnitt och den Java-baserade HDF Viewer (HDFView).
Den nuvarande versionen, HDF5, skiljer sig markant i design och API från den stora äldre versionen HDF4.
Tidig historia
Jakten på ett bärbart vetenskapligt dataformat, ursprungligen kallat AEHOO (All Encompassing Hierarchical Object Oriented format) började 1987 av Graphics Foundations Task Force (GFTF) vid National Center for Supercomputing Applications (NCSA). NSF-bidrag som erhölls 1990 och 1992 var viktiga för projektet. Runt denna tid NASA 15 olika filformat för användning i projektet Earth Observing System ( EOS). Efter en tvåårig granskningsprocess valdes HDF ut som standarddata- och informationssystem.
HDF4
HDF4 är den äldre versionen av formatet, även om det fortfarande stöds aktivt av The HDF Group. Den stöder en mängd olika datamodeller, inklusive flerdimensionella arrayer, rasterbilder och tabeller. Var och en definierar en specifik aggregerad datatyp och tillhandahåller ett API för att läsa, skriva och organisera data och metadata. Nya datamodeller kan läggas till av HDF-utvecklare eller användare.
HDF är självbeskrivande, vilket gör att en applikation kan tolka strukturen och innehållet i en fil utan extern information. En HDF-fil kan innehålla en blandning av relaterade objekt som kan nås som en grupp eller som individuella objekt. Användare kan skapa sina egna grupperingsstrukturer som kallas "vgroups".
HDF4-formatet har många begränsningar. Den saknar en tydlig objektmodell, vilket försvårar fortsatt stöd och förbättring. Att stödja många olika gränssnittsstilar (bilder, tabeller, arrayer) leder till ett komplext API. Stöd för metadata beror på vilket gränssnitt som används; SD- objekt (Scientific Dataset) stöder godtyckliga namngivna attribut, medan andra typer endast stöder fördefinierade metadata. Kanske viktigast av allt är att användningen av 32-bitars signerade heltal för adressering begränsar HDF4-filer till maximalt 2 GB, vilket är oacceptabelt i många moderna vetenskapliga tillämpningar.
HDF5
HDF5-formatet är utformat för att ta itu med några av begränsningarna i HDF4-biblioteket och för att möta nuvarande och förväntade krav från moderna system och applikationer. 2002 vann den ett R&D 100 Award.
HDF5 förenklar filstrukturen så att den bara inkluderar två huvudtyper av objekt:
- Datauppsättningar, som är typade flerdimensionella arrayer
- Grupper, som är containerstrukturer som kan innehålla datamängder och andra grupper
Detta resulterar i ett verkligt hierarkiskt, filsystemliknande dataformat. [ förtydligande behövs ] [ citat behövs ] Faktum är att resurser i en HDF5-fil kan nås med den POSIX -liknande syntaxen /path/to/resource . Metadata lagras i form av användardefinierade namngivna attribut kopplade till grupper och datauppsättningar. Mer komplexa lagrings-API:er som representerar bilder och tabeller kan sedan byggas upp med hjälp av datauppsättningar, grupper och attribut.
Utöver dessa framsteg i filformatet innehåller HDF5 ett förbättrat typsystem och datarymdsobjekt som representerar urval över datauppsättningsregioner. API:et är också objektorienterat med avseende på datamängder, grupper, attribut, typer, datarymder och egenskapslistor.
Den senaste versionen av NetCDF , version 4, är baserad på HDF5.
Eftersom den använder B-träd för att indexera tabellobjekt, fungerar HDF5 bra för tidsseriedata som aktiekursserier, nätverksövervakningsdata och 3D-meteorologiska data. Huvuddelen av data går till enkla arrayer (tabellobjekten) som kan nås mycket snabbare än raderna i en SQL- databas, men B-trädåtkomst är tillgänglig för icke-arraydata. HDF5-datalagringsmekanismen kan vara enklare och snabbare än ett SQL- stjärnschema . [ exempel behövs ]
Respons
Kritik mot HDF5 följer av dess monolitiska design och långa specifikation.
- HDF5 upprätthåller inte användningen av UTF-8 , så klientapplikationer kan förvänta sig ASCII på de flesta ställen.
- Datauppsättningsdata kan inte frigöras i en fil utan att skapa en filkopia med hjälp av ett externt verktyg (h5repack).
Gränssnitt
Officiellt stödda API:er
- C
- C++
- CLI - .Net
- Fortran , Fortran 90
- HDF5 Lite (H5LT) – ett lättviktsgränssnitt för C
- HDF5 Image (H5IM) – ett C-gränssnitt för bilder eller raster
- HDF5 Table (H5TB) – ett C-gränssnitt för tabeller
- HDF5 Packet Table (H5PT) – gränssnitt för C och C++ för att hantera "paketdata", nås med hög hastighet
- HDF5 Dimension Scale (H5DS) – gör att dimensionsskalor kan läggas till HDF5
- Java
Tredje parts bindningar
- CGNS använder HDF5 som huvudlagring
- Vanligt Lisp- bibliotek hdf5-cffi
- D erbjuder bindningar till C API , med en högnivåh5py-stil D-omslag under utveckling
- Dymola introducerade stöd för HDF5-export med en implementering som heter SDF (Scientific Data Format) med release Dymola 2016 FD01
- Erlang , Elixir och LFE kan använda bindningarna för BEAM-språk
- GNU Data Language
- Go - gonums hdf5 - paket.
- HDFql gör det möjligt för användare att hantera HDF5-filer via ett högnivåspråk (liknande SQL) i C, C++, Java, Python, C#, Fortran och R.
- Huygens Software använder HDF5 som primärt lagringsformat sedan version 3.5
- IDL
- IGOR Pro erbjuder fullt stöd för HDF5- filer.
- JHDF5, en alternativ Java- bindning som tar ett annat tillvägagångssätt än den officiella HDF5 Java-bindningen som vissa användare tycker är enklare
- jHDF En ren Java- implementation som ger skrivskyddad åtkomst till HDF5-filer
- JSON till hdf5-json .
- Julia tillhandahåller HDF5-stöd genom HDF5 -paketet.
- LabVIEW kan få HDF-stöd genom tredjepartsbibliotek, som h5labview och lvhdf5 .
- Lua genom lua-hdf5 -biblioteket.
- MATLAB , Scilab eller Octave – använd HDF5 som primärt lagringsformat i de senaste utgåvorna
- Mathematica erbjuder omedelbar analys av HDF- och HDF5-data
- Perl
- Python stöder HDF5 via h5py (både hög- och lågnivååtkomst till HDF5-abstraktioner) och via PyTables (ett högnivågränssnitt med avancerad indexering och databasliknande frågemöjligheter). HDF4 är tillgängligt via Python-HDF4 och/eller PyHDF för både Python 2 och Python 3. Det populära datamanipuleringspaketet pandor kan importera från och exportera till HDF5 via PyTables.
- R erbjuder stöd i paketen rhdf5 och hdf5r .
- Rust kan få HDF-stöd genom tredjepartsbibliotek som hdf5 .
Verktyg
- Apache Spark HDF5-kontakt HDF5-kontakt för Apache Spark
- Apache Drill HDF5 Plugin HDF5 Plugin för Apache Drill möjliggör SQL-frågor över HDF5-filer.
- HDF Product Designer Interoperabelt HDF5-verktyg för att skapa GUI för dataprodukter
- HDF Explorer Ett datavisualiseringsprogram som läser datafilformaten HDF, HDF5 och netCDF
- HDFView En webbläsare och redigerare för HDF-filer
- ViTables En webbläsare och redigerare för HDF5- och PyTables-filer skrivna i Python
- Panoply En netCDF, HDF och GRIB Data Viewer
Se även
- Common Data Format (CDF)
- FITS , ett dataformat som används inom astronomi
- GRIB (GRIdded Binary), ett dataformat som används inom meteorologi
- HDF Explorer
- NetCDF , Netcdf Java-biblioteket läser HDF5, HDF4, HDF-EOS och andra format med ren Java
- Protokollbuffertar – Googles format för datautbyte