PerkinElmer Spectrum / IR¶
Status: Supported (scoped) · Vendor: PerkinElmer · Extensions:
.sp(.fsmimaging out of v1 scope)
PerkinElmer’s Spectrum and Spotlight software write the PEPE block container.
nirs4all-formats reads the .sp single-spectrum flavour of that container; the .fsm
Spotlight imaging flavour shares the family magic but is intentionally left out of
the v1 scope.
Instruments & software¶
Produced by PerkinElmer Spectrum software across the FT-IR / FT-NIR ranges and by
Spotlight imaging systems. The committed .sp fixture comes from the specio
project.
File structure¶
A PEPE magic at offset 0, a fixed description field, then a root block (id 120)
whose payload is a recursive sequence of typed little-endian blocks. Each block
has a 6-byte header (id + signed payload length); container blocks nest further
block sequences. Data-bearing blocks are tagged: f64 pair (0x751d), single f64
(0x751b), i32 (0x752b), string (0x7523) and f64 array (0x7516). The
ordinate array, axis bounds, step and point count are read from their specific
block ids and tags.
Newer Spectrum 10 FT-MIR exports append one or more trailing top-level blocks
after the DataSet root block (e.g. a CustomColumn audit/history block, ~187
bytes). These siblings are tolerated: the reader records them structurally and
keeps reading from the canonical root block, so the spectral data is unaffected.
What nirs4all-formats extracts¶
Signals — one
SpectralRecordper file with the f64 ordinate array. The signal type is inferred from the signal label, and falls back toabsorbancewhen the signal unit isA.Axis — generated from the typed
first_x/step/point_countblocks (withlast_xused to infer the step when needed). The axis kind follows the declared unit: wavenumber (cm-1), wavelength (nm/um), otherwise index.Metadata — description, signal min/max, x-step and point count, plus string blocks for sample id, instrument, instrument serial, software, detector, source type, beam splitter, apodization, measurement / processing / ordinate modes, accessory, ratio mode and scan date when present.
Provenance & warnings — a
perkin_elmer_reverse_engineered_blockswarning, source file and SHA-256. Files that carry trailing top-level blocks after the root also raiseperkin_elmer_reverse_engineered_trailing_blocks(the audit block is recorded structurally but its content is not surfaced).
Variants & support status¶
Variant |
Status |
Notes |
|---|---|---|
|
Supported |
Typed block table, f64 ordinate array, rich instrument metadata. |
FT-MIR |
Supported |
Same single-spectrum path; trailing top-level audit/ |
|
Detected / refused |
Recognised by the |
PE NIR / Lambda variants |
Planned |
Need sample-backed validation. |
Limitations & known gaps¶
.fsmSpotlight imaging is deliberately out of scope for v1; an image cube is never interpreted as a single spectrum.The committed
.spfixture carries a footer whose scan range disagrees with the typed axis blocks; the reader treats the typed blocks as canonical and leaves the footer text for future reverse-engineering. Likewise, the trailing top-level audit/CustomColumnblocks of Spectrum 10 FT-MIR exports are recorded structurally only — their content is left for future reverse-engineering and flagged withperkin_elmer_reverse_engineered_trailing_blocks.Malformed input yields clean errors, never a panic: a negative point count is rejected and container-block recursion is depth-capped.
PE NIR / Lambda variants are not yet sample-backed. A future split of
.spfrom.fsmwould let the.spscope be promoted on its own.
Reference readers¶
specio reads the same .sp container and is the practical cross-check for this
format.
Samples & validation¶
The real specio fixture samples/perkin_elmer/spectra.sp (1 record, cm-1,
3301 points, absorbance with unit A) is golden-backed and exercised by a
direct semantic test. The synthetic fixture
samples/perkin_elmer/synthetic_trailing.sp carries a trailing top-level block
after the root and is golden-backed to lock in the trailing-block tolerance. The
probe reports perkin-elmer-sp at Confidence::Definite, and perkin-elmer-fsm
(also Definite) for the recognised-but-refused imaging variant.
The local-only FT-MIR corpus under samples_local/perkin_elmer/ (31 .sp with
paired cm-1;Absorbance CSV exports, private, licence TBD) was validated: every
.sp parses to a descending cm-1 axis (4000→450, 3551 points) and matches its
paired CSV to export precision (~5e-5).