Renishaw WDF

Status: Supported (scoped) · Vendor: Renishaw · Extensions: .wdf

WDF is the native chunked container written by Renishaw’s WiRE software for inVia confocal Raman spectrometers. It stores single spectra, maps, line scans, depth profiles, time series and StreamLine acquisitions in one file. nirs4all-formats reads the spectral payload subset and emits one record per stored spectrum. The format is Raman, adjacent to the core NIRS point-spectrum scope; it is included for spectroscopy interchange and disambiguation.

Instruments & software

Produced by Renishaw WiRE on inVia (including Qontor and Apollo) Raman microscopes. Spatial maps, line scans, depth/Z scans, time series and StreamLine fast-mapping acquisitions all share the WDF container.

File structure

A WDF file is a sequence of named blocks. Every block starts with a 16-byte header (name[4], block_uid: u32le, block_size: u64le), and the leading WDF1 block is a fixed 512-byte file header. The reader sniffs the WDF1 magic (never the extension) and reads:

  • WDF1 fixed header — point count, capacity, stored spectrum count, accumulation count, scan and measurement type, spectral unit, laser wavenumber, application name/version, user and title;

  • DATA — float32 ordinate payload (one spectrum after another);

  • XLST — float32 spectral axis with leading data-type and unit codes;

  • YLST — ordinate unit metadata when present;

  • ORGN — navigation axes (spatial X/Y/Z, FocusTrack Z, acquisition time, exposure time, multiwell coordinates);

  • WMAP — 48-byte map descriptor (map type, XYZ offsets/scales/sizes, linefocus size);

  • WHTL — white-light image container metadata (not the pixel payload);

  • MAP — derived analysis-block inventory with bounded dataRange extraction.

What nirs4all-formats extracts

  • Signals — one SpectralRecord per stored spectrum, each with a single raw_counts signal typed RawCounts (counts unit when declared by YLST).

  • Axis — values and unit from XLST; unit code 1 maps to wavenumber (cm-1), codes 2/3 to wavelength (nm), others to an Index axis.

  • Metadata — container fields plus per-record navigation copied from ORGN: spatial_x/y/z, focus_track_z, time_filetime_100ns, elapsed_time_seconds and exposure/multiwell fields. WMAP adds map_width, map_height, map_x_index, map_y_index and, for xyline maps, spatial_distance. WHTL adds a white_light_image object (JPEG MIME type, byte length, SHA-256, dimensions, JFIF density, EXIF fields). MAP blocks add map_analysis_blocks, and map_analysis_values per record when a decoded dataRange length matches the spectrum count.

  • Provenance & warnings — every record carries renishaw_wdf_reverse_engineered_chunks; interrupted acquisitions and unnormalised map types are flagged as warnings.

Variants & support status

Variant

Status

Notes

Single spectrum

Supported

One record.

Regular map / line scan (xyline) / depth (Z) scan

Supported

WMAP-derived X/Y indices; line scans expose spatial_distance.

Time series

Supported

Elapsed time derived from FILETIME origin axis.

FocusTrack acquisitions

Supported

FocusTrack Z copied to metadata.

StreamLine fast mapping

Supported

Column-major map; one record per stored spectrum.

Interrupted acquisition

Supported

Reads the stored count, preserves positions, warns about truncated capacity.

MAP PSET analysis maps

Supported (scoped)

Observed dataRange tail layout decoded as per-record metadata, not spectral signals; other layouts stay inventory-only.

measurement_type=0 containers

Detected / refused

Refused with an explicit undefined-measurement error.

Limitations & known gaps

  • The reader covers the spectral payload subset; WHTL images are described but pixels are not decoded into records.

  • Derived MAP analysis values are surfaced as metadata only, because they are WiRE-computed output rather than primary acquisition data; only the observed f32le-tail PSET layout is decoded.

  • Authoritative units/algorithms for derived blocks, broader MAP layouts and per-model inVia Qontor/Apollo fixtures are still wanted.

  • Full-array conformance is pending (see below).

Reference readers

Layout and conventions cross-checked against rsciio.renishaw 0.13.0 (broad WDF coverage, ORGN/WMAP conventions), renishawWiRE 0.1.16 / py-wdf-reader (the single-spectrum and ORGN path) and SpectroChemPy read_wire (chunk and enum cross-checking).

Samples & validation

Fifteen spectral fixtures under samples/raman_renishaw/ cover single, map, line, depth/Z, FocusTrack, time-series, StreamLine and interrupted acquisitions; renishaw_test_map2.wdf (400 records) and wire_depth.wdf (40 records, with two MAP PSET dataRange analysis maps) are golden-backed. renishaw_test_undefined.wdf and wire_undefined.wdf are negative fixtures that fail with the undefined measurement_type=0 message. The probe reports renishaw-wdf at Confidence::Definite. Full-array external conformance remains future work.