Skip to content
Novus Examples
h56.1 KB

HDF5 Hard, Soft and Dangling Links (.h5)

One array reachable under four names: itself, a hard link sharing its object address, a soft link resolved at access time, and a soft link pointing nowhere. A walker that counts names instead of object addresses reports four arrays and then crashes on the dangling one.

Preview — schema + first 4 rowsh5
NameKindResolves to
/canonicaldatasetthe array itself
/hard_linkhard linkthe same object address as /canonical
/soft_linksoft link/canonical, resolved at access time
/danglingsoft link/does/not/exist — resolution must fail cleanly
One real array, four names. Deduplicate by object address, not by name.

Specifications

Datasets
1
Hard Links
1
Soft Links
2
Dangling Links
1
Target
/canonical
Dangling Target
/does/not/exist
Trap
a naive walk counts one array four times

Testing contract

Expected to recover
Scenario
Enumerate the root group, classify each name as dataset, hard link or soft link, and attempt to resolve every one.
Expected result
Three names resolve to the same nine-element array with /canonical and /hard_link sharing an object address, while /dangling raises a clean broken-link error rather than aborting the walk.

What is a .h5 file?

HDF5 (.h5) is a binary container format for large, heterogeneous scientific data. It stores multidimensional arrays (datasets) in a hierarchical group structure with attributes and chunked, compressed storage, and is standard in ML, physics, and geoscience.

How to use this file

Use an example .h5 file to test HDF5 readers (h5py, PyTables), group and dataset traversal, and attribute extraction.

How to use this file for testing

“HDF5 Hard, Soft and Dangling Links (.h5)” is a deterministic Novus Examples fixture for Scientific data, Serialization testing, Error handling. Citation catalogs (BibTeX, RIS), chemistry structures (MDL Molfile, PDB), and gridded binary data (NetCDF, FITS) — for testing reference managers, molecule viewers, and scientific-data loaders.

Documented properties for this file: H5 · 6,216 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Scientific fixtures are small, valid, and fully synthetic — no real organism, patient, sample, or observation. Point your parser or loader at the file and check it reads the documented records, variables, or headers; binary formats ship a readable twin or metadata listing for comparison.

Generated by generation/scientific.py. Free for any use, no attribution required — license.