File formats¶
SPM-Kit exposes a small built-in image registry and a broader capability-based
reader registry used by load_any. Optional adapters are named explicitly so
that dependency coverage is not mistaken for a native implementation.
| Extension or detection | Vendor/source | Images | Spectroscopy | Read | Write | Implementation | Optional dependency | Status and evidence | Limitations |
|---|---|---|---|---|---|---|---|---|---|
.nid |
NanoSurf classic | Yes | Yes | Yes | No | core/io/nid.py |
None | Implemented; synthetic tests, byte tracing, and selected comparisons | Variants beyond demonstrated files remain unassessed |
.nhf |
NanoSurf HDF5 | Yes | No | Yes | No | core/io/nhf.py |
h5py via spmkit[hdf5] |
Experimental | Dataset layout varies; no broad public corpus |
.gwy |
Gwyddion | Yes | No | Yes | Yes | core/io/gwy.py |
gwyfile via spmkit[gwy] |
Implemented interoperability | Not a claim of feature parity or universal equivalence with Gwyddion |
.spm; Nanoscope magic in numbered files |
Bruker / Digital Instruments | Yes | No | Yes | No | core/io/bruker_spm.py |
None | Partial; six demonstrated Nanoscope III files | Only demonstrated header/pixel variants; .00N family not broadly assessed |
.jpk-force, .jpk |
JPK | No | Single curve | Yes | No | core/io/jpk.py |
None | Implemented with synthetic fixtures | Vendor variants and calibration metadata need more redistributable fixtures |
| TIFF detected by JPK private tags | JPK export | No | Yes | Yes | No | core/io/jpk_tiff.py |
tifffile via spmkit[jpk] |
Experimental, content detected | Generic TIFF is not treated as JPK data |
.jpk-qi-data, .jpk-force-map, .jpk-qi-series |
JPK | Adapter-dependent | Yes | Yes | No | core/io/afmformats_reader.py |
afmformats via spmkit[afm] |
Experimental adapter path | Capability follows installed afmformats version |
.ibw |
Asylum / Igor Binary Wave | Adapter-dependent | Adapter-dependent | Yes | No | core/io/afmformats_reader.py |
afmformats via spmkit[afm] |
Experimental adapter path | Not a native IBW implementation on the default branch |
.h5 |
Generic HDF5 through adapter | Adapter-dependent | Adapter-dependent | Yes | No | core/io/afmformats_reader.py |
afmformats via spmkit[afm] |
Experimental adapter path | .h5 alone does not identify a vendor or scientific role |
.npz |
SPM-Kit Phantoms interchange | Yes | No | Yes | No | core/io/npz.py |
None | Implemented for declared bundle keys | Not a generic NumPy archive reader |
Which loader?¶
from spmkit import load # compact built-in image registry
from spmkit.core.io import load_any # images or force data by capability
load_any first inspects a registered reader and then loads the requested
image or force kind. It also performs content detection for JPK TIFF and
numbered Nanoscope files.
Contributing a fixture¶
Do not attach a restricted instrument file to a public issue. A fixture proposal should state the format and instrument family, acquisition mode, expected channels and orientation, physical units, file checksum, redistribution license, and whether sample identity may remain private. See the fixture contribution template.