Consumer Physics SCiO CSV¶
Status: Supported · Vendor: Consumer Physics · Extensions:
.csv
CSV exports from the Consumer Physics SCiO handheld NIR sensor and its developer
app. nirs4all-formats recognises the SCiO-specific band-prefixed and grouped
channel layouts and is registered ahead of the generic CSV readers so SCiO
column groups are not mistaken for target-only tables.
Instruments & software¶
Produced by the SCiO mobile/developer app; committed fixtures come from the
kebasaa/SCIO-read project. The sensor’s spectral range is roughly 740–1070 nm.
File structure¶
Two SCiO layouts are detected (both .csv):
Band export — a header with at least 32
band<wavelength>columns (band740…band1070). Each row is one spectrum.Developer export — recognised by the
num_wavelengthsandwavelengths_startmarkers. A header row carriessample_idplus three channel groups —spectrum_*,wr_raw_*andsample_raw_*— optionally followed by anint,…type row, then one record per row. Lines before the header are collected as preamble metadata.
The axis is read from the numeric suffix of each band/channel column name.
What nirs4all-formats extracts¶
Signals — one
SpectralRecordper row. The band export emits a singlespectrumsignal (typeUnknown); the developer export emits three signals:spectrum(Reflectance),wr_raw(RawCounts, unitcounts) andsample_raw(RawCounts, unitcounts).Axis — wavelength in
nm, kindWavelength, from the column-name suffixes (≈740–1070 nm).Targets —
ProteinandFatcolumns map totargets.Metadata — preamble key/values and per-row scan/sample/device fields (including temperature and acquisition labels) are kept;
row_indexand a layout marker are recorded.Provenance — source file + SHA-256, reader name and version.
Variants & support status¶
Variant |
Status |
Notes |
|---|---|---|
Band export ( |
Supported |
Single |
Developer export (grouped channels) |
Supported |
|
Calibration plate (axis-first) |
Supported (via row table) |
Decoded by the row-oriented spectral table reader, not this one. |
Limitations & known gaps¶
SCiO native mobile-app / project containers are not decoded.
The plain
band*export does not declare whether values are absorbance, reflectance or another processed spectrum, so its signal type staysUnknown.CSV parsing assumes comma-separated exports without quoted embedded commas.
The axis-first SCiO calibration plate is handled by the generic row-table reader by design, because it is an axis-first table rather than a SCiO grouped export.
Reference readers¶
The kebasaa/SCIO-read project parses the same developer/app exports;
nirs4all-formats adds channel grouping, signal typing, target/metadata separation and
provenance.
Samples & validation¶
Fixtures live under samples/scio/, covered by golden summaries in
crates/nirs4all-formats/tests/goldens/ (scio_*):
scio_app_scan.csv yields 1 spectrum record over a 740–1070 nm axis;
scio_scans_from_tech_support.csv yields 145 records with spectrum/wr_raw/
sample_raw signals; scio_calibration_plate_Polypen.csv (324–790 nm
reflectance) is routed to the row-table reader. The probe reports format
scio-csv at Confidence::Definite.