Sensor Event Detection, Cross-Channel Correlation, and Binary Integrity Diagnostics for Time-Series Sensor Data

Sensor Event & Binary Integrity Analysis Tool
Data Source
Import Method
Sensor Manager
Sensor Samples Units Color Raw Int Enabled Hidden Actions
No channels loaded — import data above.
Event Detection Settings
Event Counts & Timing
Total Events
Spike Statistics
Mean Height
Median Height
Std Dev Height
Max Height
Min Height
Mean Duration smp
Burst & Energy
Events / sec Hz
Total Energy area
Recording Span smp
Export
Status & Warnings
Ready — import data to begin
Graphs

Multi-channel time series. Pan with click-drag, zoom with scroll wheel or pinch.

Each detected event as a card. Click Zoom to center the Time Plot on that event window.

Run detection to see events here.

Channel (raw int):

Hamming Distance Histogram — consecutive sample pairs

Pearson correlation coefficient between all pairs of enabled channels. Color scale: blue = −1 (anti-correlated), white = 0, red = +1 (fully correlated).

Enable ≥ 2 channels and click Compute Heatmap.
Ch A:
Ch B:

A peak at lag L means Channel A leads Channel B by L samples. Negative lag = B leads A.

All detected events overlaid. Each is centered at its peak (x = 0) and normalized to peak height = 1. Requires events to be detected first.

Channel:

Magnitude spectrum using the largest power-of-2 window (≤ 131 072 samples) centered on the signal. Hanning window applied to reduce spectral leakage.

Tables

Click column headers to sort. All detected events across all channels.

Channel ▽ Start ▽ Peak ▽ End ▽ Duration ▽ Height ▽ Area ▽ Rise ▽ Fall ▽
No events detected yet — run detection above.
Channel:
Bit Occupancy P(1) Toggle Rate Power-of-2 Jumps
Select a raw integer channel and run bit diagnostics.
Channel (raw int):

Integer values in the signal's observed range that never appear — gaps in ADC output can indicate missing codes, non-linearity, or quantization artifacts. Red bars = empty buckets.

Missing Value Neighbors (prev / next seen) Gap Size
Select a raw integer channel and click Compute.
Reference Guide — Sensor Event & Binary Integrity Analysis
01

How This Tool Works

This tool runs entirely in your web browser. No data leaves your machine — everything is processed locally using JavaScript. There is no server, no upload, and no account required. Simply import your data and the tool analyzes it on the spot.

The general processing pipeline works in three stages:

  • Import: Load time-series sensor data from a spreadsheet file (.xlsx/.csv) or by pasting raw binary or hex-encoded samples. Each column of data becomes a channel in the Sensor Manager.
  • Detection: Once you set your detection parameters (Threshold, Min Duration, Min Height, Debounce) and click Run Detection, each enabled channel is scanned independently. Detection runs in a background Web Worker thread so the page stays responsive during computation.
  • Analysis: Detected events are shown in the Event Table, summarized in the Output Properties panel, and visualized in the Spike Explorer and Time Plot tabs. For channels flagged as raw integers, the Bit Plot tab provides bit-level integrity diagnostics.
Accuracy disclaimer: This tool is a diagnostic aid, not a certified measurement instrument. Detection results depend entirely on the parameters you set. Always verify anomalies found here with appropriate instrumentation or data acquisition software before drawing engineering conclusions.
02

Supported Import Formats

Method A — File Upload

Accepted file extensions: .xlsx, .xls, .csv. Parsing is handled by SheetJS (xlsx library), running locally in the browser.

After selecting a file, a column preview appears showing the first 10 rows. Use the dropdown above each column to assign its role:

  • Timestamp — one column only; treated as the x-axis for all channels.
  • Sensor Channel — any number of columns; each becomes an independent channel in the Sensor Manager.
  • Ignore — column is excluded from import.

Auto-assignment applies when headers match (case-insensitive): Timestamp, Sensor A, Sensor B, Sensor C, etc. Override freely with the dropdowns. Click Confirm Import when satisfied. Importing a second file adds new channels without replacing existing ones.

Method B — Paste Binary / Hex

Paste raw data directly into the text box. The tool auto-detects format:

  • Binary string: a string of 0 and 1 characters, e.g. 0100110101100001
  • Prefixed hex: hex pairs with 0x prefix, e.g. 0xA2 0x3C
  • Bare hex: continuous hex characters (A–F, 0–9), e.g. A23CF400

Select the data type and endianness before converting. Supported types:

uint8 — 1 byte unsigned int8 — 1 byte signed uint16 — 2 bytes unsigned int16 — 2 bytes signed uint32 — 4 bytes unsigned int32 — 4 bytes signed float32 — 4 bytes IEEE 754 float64 — 8 bytes IEEE 754

Set Sample Rate (Hz) to assign real timestamps (index / sampleRate seconds). Without it, samples are indexed 0, 1, 2… The sample rate is important for meaningful timing statistics in the output panel.

03

Event Detection Parameters Explained

Threshold

The absolute sample value above which the detector is "armed." Any sample with value > Threshold is considered above the threshold. If a channel's values are all below this number, no events will be detected.

Choose a threshold by eyeballing your data in the Time Plot, or by starting with a value slightly above the typical noise floor.

Min Duration

The minimum number of contiguous above-threshold samples (or milliseconds if you select ms units) that must occur before the segment is recognized as an event. This filter rejects brief noise spikes that momentarily cross the threshold.

Example: if Min Duration = 3 samples, a 2-sample blip above threshold is ignored, but a 4-sample run above threshold is detected as an event.

Min Height

The minimum peak value above baseline within the above-threshold region. Baseline is computed as the mean of the samples just before and just after each candidate event window (local average). Events whose peak doesn't exceed baseline + Min Height are discarded.

Debounce

If two detected events are separated by fewer than this many samples (or milliseconds), they are merged into a single event. The merged event spans from the start of the first to the end of the second, and the peak is taken as the higher of the two original peaks.

This is useful when a single physical event causes brief sub-threshold dips in the middle, which would otherwise split it into two separate events.

Tip: Start with Threshold and Min Duration. Add Min Height only if you are getting events from channel drift. Use Debounce only if you know your events have internal dips.
04

Bit-Level Diagnostics Explained

Bit Occupancy

For each bit position (bit 0 = LSB through bit N-1 = MSB, where N is the type's bit width), bit occupancy measures the fraction of samples where that bit is 1:

Bit Occupancy P(bit k = 1) = count(bit k is 1) / total_samples

A healthy ADC or sensor should show occupancy near 0.5 for mid-range bits. Bits that are always 0 or always 1 may indicate a stuck bit, saturation, or a resolution problem. Very low occupancy on upper bits is expected for signals that don't use the full dynamic range.

Bit Toggle Rate

The fraction of consecutive sample pairs where a given bit changes state:

Toggle Rate T(bit k) = count(bit k[n] ≠ bit k[n-1]) / (N-1)

A bit that never toggles (rate = 0) is stuck. A bit that always toggles (rate = 1) is either noise-dominated or driven by a toggle pattern. Expected rates vary by bit position — lower bits toggle more frequently in a counting sequence.

Hamming Distance

The Hamming distance between two consecutive integer samples is the number of bit positions that differ between them:

Hamming Distance H(n) = popcount(sample[n] XOR sample[n-1])

The histogram shows how often each distance (0 through bit-width) occurs across all consecutive pairs. A spike at distance 1 in otherwise large-jump data may suggest isolated bit flips. Systematic spikes at specific distances can reveal encoding artifacts.

Power-of-Two Jump Detector

Computes the absolute difference between each consecutive sample pair and flags any difference whose absolute value is exactly a power of two (1, 2, 4, 8, 16…):

Power-of-2 Jump |sample[n] - sample[n-1]| = 2^k, k ∈ {0, 1, ..., width-1}

A power-of-two jump is the direct signature of a single-bit flip in a binary-encoded value. The Bit Occupancy table shows a count of flagged jumps per bit position (a jump of 2^k flags bit k). A red badge with a non-zero count warrants investigation of that bit position.

Note: Power-of-two jumps are consistent with bit flips but not conclusive proof — legitimate signal steps can also produce power-of-two deltas. Use alongside occupancy and toggle rate data.
05

Glossary & Formula Reference

Event Shape Fields
FieldDefinition
startTimestamp of first above-threshold sample
peakTimestamp of maximum value within the event
endTimestamp of last above-threshold sample
durationend − start
heightPeak value minus local baseline
areaTrapezoidal integral over start…end, baseline-subtracted
risepeak − start (in same units as timestamps)
fallend − peak
Event Area (Trapezoidal Integration)
Trapezoidal Area Area = ∑i=startend-1 (v[i] + v[i+1] - 2·baseline) · (t[i+1] - t[i]) / 2

Where baseline is the local mean computed from samples outside the event window. If timestamps are just sample indices (no sample rate set), Δt = 1 for all pairs and area is in units of (value · samples).

Debounce Merge Logic
Merge Condition if event[i+1].start - event[i].end < debounce: merged.start = event[i].start merged.end = event[i+1].end merged.peak = argmax(value[merged.start..end])

Applied iteratively: after merging a pair, the result is immediately checked against the next event. This means a series of closely-spaced events can cascade-merge into one.

Hamming Distance (popcount)
Popcount (bit count) popcount(x) = number of 1-bits in binary representation of x H(a, b) = popcount(a XOR b)
Shannon Entropy (reference)
Shannon Entropy (V2) H = − ∑k pk · log2(pk)

Where pk is the probability of value k in a rolling window. A fully random signal has maximum entropy (log2(N) for N possible values). The Entropy Monitor is scheduled for a future update.

Cite This Work