fix H5 scaling and 3D view, carousel reset
This commit is contained in:
69
scripts/inspect_h5.py
Normal file
69
scripts/inspect_h5.py
Normal file
@@ -0,0 +1,69 @@
|
||||
"""
|
||||
Inspect DimScaling and DimExtents metadata in an Asylum Research HDF5 file.
|
||||
|
||||
Usage:
|
||||
python scripts/inspect_h5.py /path/to/your/file.h5
|
||||
"""
|
||||
import sys
|
||||
import numpy as np
|
||||
|
||||
try:
|
||||
import h5py
|
||||
except ImportError:
|
||||
print("pip install h5py")
|
||||
sys.exit(1)
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python scripts/inspect_h5.py <file.h5>")
|
||||
sys.exit(1)
|
||||
|
||||
path = sys.argv[1]
|
||||
|
||||
with h5py.File(path, "r") as f:
|
||||
channels_path = "Image/DataSetInfo/Global/Channels"
|
||||
grp = f.get(channels_path)
|
||||
if grp is None:
|
||||
print("No Image/DataSetInfo/Global/Channels group found")
|
||||
sys.exit(1)
|
||||
|
||||
for ch_name in grp:
|
||||
dims_path = f"{channels_path}/{ch_name}/ImageDims"
|
||||
dims_grp = f.get(dims_path)
|
||||
if dims_grp is None:
|
||||
print(f"{ch_name}: no ImageDims group")
|
||||
continue
|
||||
|
||||
print(f"\n=== Channel: {ch_name} ===")
|
||||
|
||||
scaling = dims_grp.attrs.get("DimScaling")
|
||||
if scaling is not None:
|
||||
s = np.asarray(scaling, dtype=float)
|
||||
print(f" DimScaling shape: {s.shape}")
|
||||
print(f" DimScaling[0,:]: {s[0]} (row 0)")
|
||||
print(f" DimScaling[1,:]: {s[1]} (row 1)")
|
||||
print(f" --- If [start, end] interpretation ---")
|
||||
print(f" xreal (row1 range) = {abs(s[1,1] - s[1,0])}")
|
||||
print(f" yreal (row0 range) = {abs(s[0,1] - s[0,0])}")
|
||||
print(f" --- If [step, offset] interpretation ---")
|
||||
print(f" row0: step={s[0,0]} offset={s[0,1]}")
|
||||
print(f" row1: step={s[1,0]} offset={s[1,1]}")
|
||||
else:
|
||||
print(" DimScaling: not found")
|
||||
|
||||
dim_units = dims_grp.attrs.get("DimUnits")
|
||||
print(f" DimUnits: {dim_units}")
|
||||
|
||||
data_units = dims_grp.attrs.get("DataUnits")
|
||||
print(f" DataUnits: {data_units}")
|
||||
|
||||
for child_name in dims_grp:
|
||||
child = dims_grp[child_name]
|
||||
if isinstance(child, h5py.Group) and "DimExtents" in child.attrs:
|
||||
ext = np.asarray(child.attrs["DimExtents"])
|
||||
print(f" DimExtents ('{child_name}'): {ext}")
|
||||
|
||||
print("\n=== 2D dataset shapes ===")
|
||||
def _visit(name, obj):
|
||||
if isinstance(obj, h5py.Dataset) and obj.ndim == 2:
|
||||
print(f" {name} shape={obj.shape}")
|
||||
f.visititems(_visit)
|
||||
Reference in New Issue
Block a user