Sending a tenth of the bytes and keeping faults visible
Lossless storage of machine waveforms needs about 1.5 bytes per sample. A cellular or low-power uplink affords a tenth of that or less. Our third report asks which approximation keeps the most of what diagnosis needs at 0.05–0.3 bytes per sample, and whether a small device can produce it in real time.
The candidate is a plain transform coder: an orthogonal wavelet transform, one absolute threshold for all levels, uniform quantization, varint and deflate coding, and rate control by bisection on the threshold. Per-level noise levels let the receiver decode plainly or with noise filling. Study F2 was frozen before its confirmation data were loaded and used five held-out datasets: two bearing test rigs, screwdriving, seismic stations and CNC milling.
What we found
- Lower error per byte. The coder had lower median error than SZ3 and ZFP on 4, 5, 5 and 4 of the 5 datasets at 0.05, 0.1, 0.2 and 0.3 bytes per sample. At 0.1, for example, 0.55 against SZ3’s 0.72 on Paderborn bearings, and 0.056 against 0.093 on seismic data.
- Bearing faults stay visible. On the seven run-to-failure bearings where the original data reveal the fault, the approximation detected it no later than allowed. SZ3 was late on five, raised a false detection on one and never detected another.
- It fits a Raspberry Pi. On one core of a Pi 3B+, the Python prototype encoded 64 kHz vibration at 3.06 times real time at 0.099 bytes per sample, peaking at 55.5 MB.
- No Bayesian machinery needed. A heavy-tailed prior for selecting coefficients was better than the plain threshold by more than 5% only once.
Where it falls short
- Diagnosis did not survive everywhere. With noise filling, seismic STA/LTA triggered on 91 of the 96 catalogued arrivals the original found (94.8%; the frozen bar was 95%). On short screwdriving cycles, where kurtosis separates failed cycles only weakly even on the original (AUROC 0.566), the approximation weakened it to 0.529. So the diagnosis hypothesis is refuted.
- Earlier alarms. Thresholding makes envelope spectra peakier. The approximation detected faults early on four bearings and raised more isolated alarms before the fault, 50 against 1 on the longest run. Alarm thresholds should be calibrated on approximated data.
- Short cycles are hard. Most screwdriving cycles could not reach 0.05 bytes per sample, and decimation was slightly better there at 0.05 and 0.1. On one bearing set SZ3 won at 0.3 (0.387 against 0.400).
- A dropped idea. Version 0.1 proposed a label-free relevance score. After development it was dropped: it was not better than kurtosis.
- Thin evidence. One run per dataset, one machine, one device of one kind. Relative error and five diagnostic proxies stand in for an engineer’s judgment.
This is research. The coder is not part of any MorletDB release, and it is not a substitute for exact data in trigger-based event detection or on short cycles.
Read it
Version 0.3, a draft. Not peer reviewed, not yet released. Text and figures under CC BY 4.0, code under Apache-2.0.