Waters Empower ASCII exports (.arw)
Waters Empower keeps raw data and results inside its own database, so data leaves Empower only through exports. The ASCII raw-data export, saved with the .arw extension, holds one chromatogram as text. OpenReadout returns it as one trace with the sample, method and injection fields the export includes. The AIA/ANDI netCDF export (.cdf) is read by the andi-chrom reader. Sony .ARW camera files share the extension but are TIFF and never start with a quote.
Format id empower-arw. Code: crates/openreadout-chrom/src/empower_arw.rs. How each fact was
established: docs/provenance/empower-arw.md.
Layout
Text (ANSI/UTF-8), rows separated by CR, LF or CRLF, cells by tabs:
- the names of the fields the export method includes, each in double quotes
(
"SampleName","Channel","Sample Set Name","Instrument Method Name", …); - their values, in double quotes, as many as names;
- one row per point: retention time (minutes) and the detector value, unquoted decimal numbers.
The value’s unit is not in the export (it is the detector’s: mV, AU, EU for fluorescence, …). Times are printed to 7 significant digits, so an evenly sampled run shows steps that differ in the last digit; points within 10⁻⁶ of the grid (relative to the time) are a regular trace.
Detection: a first line of tab-separated, double-quoted cells (with or without the .arw
extension). Rows of more than two columns (a multi-wavelength PDA export) are refused (exit 6);
a header whose value count differs from its name count, or a data row that is not two numbers,
is corrupt (exit 4).
Mapping to the data model
- One trace named
<SampleName> / <Channel>(or the channel alone), one channel named afterChannel(elsevalue),dtypefloat64, no unit. Evenly spaced times:sample_rate_hz,start_sandextra.axis(retention time, minutes); otherwisesample_rate_hz0 and a first channeltime(minutes). extra:fields(every exported name and value), and from themsample_name,channel,sample_set,instrument_method,processing_method,vial,injection,injection_volume,acquired_by,acquired_atwhen exported;line_ending,x_start_min,x_end_min,time_channel.check:time_not_increasing(warning),irregular_times,no_channel_field(info).
Validation
- Six exports of Appia’s test data (MIT, two fluorescence channels of three samples, 6,601
points each): every value equal to Appia’s own reading (
processed-tests/…hplc-wide.csv, an independent reader) and the times within Appia’s single-precision rounding (2·10⁻⁶ min).
Known gaps
- Multi-column (3D PDA) exports: no licensed public example; refused.
- Empower’s native data (database) and its report exports are not read; AIA/netCDF exports are
read by
andi-chrom.
Vocabulary (every public identifier in empower_*.rs must appear here)
| identifier | meaning |
|---|---|
EmpowerArwReader, EmpowerArwDataset, EMPOWER_ARW_ID, open, export |
reader, opened export, the id empower-arw, open by path, the parsed export |
MAX_ARW_BYTES |
largest export read (512 MiB) |
ArwExport, fields, times, values, line_ending, field, regular_step |
a parsed export: header names and values, points, line ending; a named field’s value; the step of an evenly spaced export |
ArwError { Corrupt, Unsupported }, parse_arw, looks_like_arw |
why an export was not read; the parser; detection |
How this reader was derived, file by file: provenance log.