Bruker OPUS

Status: Supported (scoped) · Vendor: Bruker · Extensions: native numeric (.0, .1, .001, .0000, often no fixed extension); .dpt ASCII export

OPUS is Bruker’s native FT-IR / FT-NIR / Raman file format, written by the OPUS software that ships with Bruker spectrometers. A single OPUS file is a binary container that can hold several related blocks (absorbance, reflectance, raw sample/reference single-beam spectra, interferograms and phase) for one acquisition. nirs4all-formats reads modern OPUS binaries and the two-column .dpt text export.

Instruments & software

Produced by Bruker OPUS software across the FT-NIR and FT-IR ranges — e.g. MPA / MPA II, Tango, Matrix, Vertex and Alpha. The committed corpus includes Bruker MPA soil fixtures (AfSIS). .dpt is the plain ASCII export OPUS can write for interchange.

File structure

  • Native binary — detected by binary magic (0a 0a fe fe), never by extension; OPUS files commonly use numeric extensions such as .0 or .001. The layout is a header + a directory of typed blocks: parameter blocks (integer/float/string) and data blocks, with each data block paired to a matching data-status parameter block that carries its axis bounds and scaling.

  • .dpt export — two-column ASCII (wavenumber, value); the wavenumber axis is in cm⁻¹.

What nirs4all-formats extracts

  • Signals — one SpectralRecord per file with a signals map using semantic names rather than OPUS abbreviations: absorbance, reflectance, sample_spectrum, reference_spectrum, sample_interferogram, reference_interferogram, sample_phase, match and match_2ch when present. Duplicate block names get stable suffixes (e.g. absorbance_2).

  • Axis — generated from the data-status FXV/LXV bounds and NPT point count, with CSF scaling and NPT trimming applied. DXU=MIN axes are typed as AxisKind::Time.

  • Metadata — header/directory under bruker_opus; per-signal data-status parameters under bruker_opus_signal_params; other parameter blocks under bruker_opus_params.

  • Provenance & warnings — unsupported or unpaired data blocks are preserved as provenance warnings rather than dropped.

Variants & support status

Variant

Status

Notes

OPUS 7/8 native, MPA

Supported

New magic, directory, parameter + 1D data/status blocks.

Multi-signal acquisition

Supported

Absorbance, reflectance, sample/reference spectra, interferograms, phase.

.dpt ASCII export

Supported

Two-column, cm⁻¹ axis.

Bruker Tango / Matrix native

Planned

MPA is covered; dedicated Tango/Matrix fixtures still wanted.

OPUS 5/6 legacy (old magic 0a 0a 1a 1a)

Blocked

The sniff emits a Possible candidate so dispatch routes here, then the decoder refuses explicitly with “unsupported or missing Bruker OPUS magic”.

3D / time-resolved series, imaging, report tables

Out of scope (v1)

Not decoded yet.

Limitations & known gaps

  • Old-magic (OPUS 5/6) files are deliberately refused rather than mis-routed.

  • 3D/time-resolved data series, image blocks and report/subreport tables are not decoded; quantitative report values are not yet promoted into targets.

  • Full parameter-label expansion and typed promotion of sample properties are pending.

Reference readers

Cross-checked against brukeropus (used as the naming/order reference for duplicate 1D blocks), opusFC (directory content and primary arrays), brukeropusreader, opusreader2 (spectral-cockpit) and SpectroChemPy.

Samples & validation

The full samples/bruker_opus/ corpus is golden-backed, with direct semantic tests over cross-reader fixtures from opusreader2, opusreader, brukeropus, SpectroChemPy and AfSIS Bruker MPA. Spot-checked control values include 617262_1TP_C-1_A5.0 (absorbance first X 7497.697861, first Y 0.552472949) and test_spectra.0 (reflectance first X 7498.291691, first Y 0.524343193). Readers disagree on some older or report-like blocks; those are tracked as provenance warnings. Full-array external conformance scripts are listed as next work in docs/CONFORMANCE.md.