Skip to content

Signal Intelligence

Signal Intelligence is the first intelligence layer in RAPID AI. It answers the fundamental question: What is the machine doing? Raw sensor signals enter the pipeline and emerge as validated, classified, and entropy-scored fault evidence. Three modules and one sub-module work together: Module A (GUARD), Module B (Fault Detection), Module B.2 (Trend Analysis), and Module B.3 (SEDL Entropy).


Module A — GUARD (Signal Validation and Feature Extraction)

Section titled “Module A — GUARD (Signal Validation and Feature Extraction)”

Module A is the gatekeeper. It ensures signal reliability before any analysis begins. A diagnostic system is only as trustworthy as its input data. Module A applies 16 guard rules to detect flatline sensors, corrupted data, clipped signals, sensor saturation, and environmental anomalies. Data that fails hard gates is blocked entirely. Data that triggers soft penalties passes through with a degraded quality score that reduces confidence in all downstream results.

From the raw time-domain vibration signal, Module A computes the statistical features that every downstream module depends on:

RMS = sqrt(Sum(x_i^2) / N)
Peak = max(|x|)
Crest Factor = Peak / RMS
Kurtosis = E[((x - mu) / sigma)^4] - 3 (excess kurtosis; Gaussian = 0)

The Quality Score is computed as the product of all triggered soft-penalty rules:

Quality Score = Product(penalty_i) for all triggered rules

Each penalty_i is a multiplicative factor less than 1.0, so accumulating soft penalties progressively degrades quality. Hard-block rules set Quality Score = 0.

Phase 1 — Hard blocks (pre-computation). These stop the pipeline:

RuleConditionActionRationale
DG001std_dev < 0.001Block (flatline)Sensor disconnected or frozen
DG002nan_fraction > 5%Block (corrupt)Data transmission failure
DG005Sampling rate outside 1,000-100,000 HzBlock (invalid)Cannot compute valid FFT
DG006n_samples < 256Block (insufficient)Not enough data for statistics
DG011saturation_run_count > 3Block (saturated)Sensor at range limit

Phase 2 — Soft penalties (post-statistics). These degrade confidence:

RuleConditionPenaltyRationale
DG003clip_fraction > 1%Warn (clipping)Peak values truncated
DG007dc_offset_ratio > 3.0Warn (DC offset)Signal bias from mounting or electronics
DG008aliasing_indicator > 0.1WarnSampling below Nyquist
DG010outlier_burst_count > 5Warn (burst noise)Electromagnetic interference
DG015snr_db < 10.0Warn (low SNR)Signal too close to noise floor
DG016Temperature outside (-50, 250) CWarnEnvironmental anomaly

Module A classifies the measured velocity RMS against ISO 20816-1 zones, which provide the first-pass severity assessment:

Machine GroupZone A (mm/s)Zone BZone CZone D
Small (<=15 kW)< 0.710.71-1.81.8-4.5> 4.5
Medium (15-75 kW)< 1.121.12-2.82.8-7.1> 7.1
Large rigid (75-300 kW)< 1.81.8-4.54.5-11.2> 11.2
Large flexible (>300 kW)< 2.82.8-7.17.1-18.0> 18.0

For pumps specifically, ISO 10816-7 defines separate thresholds by hazard category: Category I (hazardous service) uses tighter boundaries (A/B at 2.3, B/C at 4.5, C/D at 7.1 mm/s) while Category II (general service) uses wider boundaries (A/B at 3.5, B/C at 7.1, C/D at 11.0 mm/s).

Zones map to severity scores: A = 0.05, B = 0.25, C = 0.60, D = 0.90.

When external Digital Signal Processing results are available (e.g., from a specialized analyzer), Module A can cross-validate them against internally computed features. A trust threshold of 0.7 determines acceptance, with a per-metric tolerance of +/- 0.15. This allows RAPID AI to leverage existing plant instrumentation while maintaining diagnostic independence.

Module A passes downstream: extracted features (RMS, Peak, Kurtosis, Crest Factor, spectral features), quality_score (0.0-1.0), ISO zone classification, and pass/block status. Every downstream module multiplies its confidence by quality_score, ensuring that poor data quality propagates honestly through the entire pipeline.


Module B — Fault Detection (119 Initiator Rules)

Section titled “Module B — Fault Detection (119 Initiator Rules)”

Module B is the diagnostic core of Signal Intelligence. It applies 119 physics-based fault rules across 12 component categories to detect failure initiators — the physical root conditions that begin degradation. Each rule encodes the directional vibration ratios, statistical indicators, and supplementary evidence that identify a specific failure mechanism.

The foundational diagnostic principle is that directional vibration ratios reveal the failure mechanism more reliably than absolute amplitudes. A bearing vibrating at 3.5 mm/s might be perfectly healthy on a large flexible machine or dangerously damaged on a small rigid one. But a Horizontal-to-Vertical ratio of 3.0 tells you something definitive about the load path regardless of machine size.

RAPID AI uses three directional measurements — Axial (A), Horizontal (H), and Vertical (V) — to form diagnostic ratios:

  • Axial loading (misalignment, thermal growth) pushes A/H upward
  • Radial loading (imbalance, looseness) pushes H/V upward
  • Isotropic conditions (lubrication failure) drive H/V toward 1.0

The isotropic signature is particularly important. A healthy bearing has directional bias because the machine structure is not symmetric. When the lubrication film collapses, metal-to-metal contact creates vibration equally distributed in all directions — the bearing’s own structural stiffness is no longer the dominant path. Isotropy (H/V approaching 1.0), combined with high kurtosis, is the signature of lubrication failure.

CategoryRule IDsCountExample Rule
Anti-Friction Bearing (AFB)AFB01-AFB1616A/H > 1.2; V/H < 0.8 — Excessive preload
Journal Bearing (JB)JB01-JB1212H/V > 1.3; temp > 70 — Low oil film
Tilting-Pad Journal Bearing (TPJB)TPJB01-TPJB1313H/V > 1.4; A/H > 0.6 — Pad misalignment
CouplingCOUP01-COUP089A/H > 1.3; 2x peak — Angular misalignment
AC MotorAC01-AC099H/V 0.8-1.2; HF > 3 — Broken rotor bar
DC MotorDC01-DC077Commutator, brush wear, armature imbalance
GearsGEAR01-GEAR1010Mesh frequency sidebands, tooth wear
FoundationFND01-FND1010Looseness, structural resonance, soft foot
BeltsB01-B055Belt frequency, tension, wear
ChainsC01-C044Chain frequency, elongation, sprocket wear
Fluid/FlowFL01-FL10, FC01-FC0515Cavitation, recirculation, vane pass
ShaftsS01-S099Crack, bow, runout

The 16 AFB rules demonstrate the depth of physics-based reasoning. Consider a bearing showing A/H > 1.2 and V/H < 0.8: the axial direction dominates while vertical is suppressed. This reveals increased axial stiffness — the bearing is being squeezed axially by excessive preload. This is AFB01, and the correct action is to check preload torque and verify shims/spacers — not to replace the bearing.

Key diagnostic patterns:

RuleRatio SignatureSupplementaryDiagnosis
AFB01A/H > 1.2, V/H < 0.8Crest > 1.4Excessive preload
AFB03H/V 0.9-1.1, kurtosis > 5CF > 2.0, temp > 60CLubrication starvation
AFB06H/V 1.2-2.0, A/H < 0.3Stable 1x peakUnbalance
AFB07A/H > 1.32x peak observedMisalignment
AFB09H > 3.0x baseline, H/V > 3.0CF > 1.8Resonance
AFB12Kurtosis > 6.0, CF > 3.0HF 8-15 kHz burstsVFD bearing currents

Each rule includes a three-stage severity cascade that tracks degradation progression:

  • Early stage: Ratio threshold exceeded, low supplementary evidence. Severity 0.2-0.4.
  • Mid stage: Amplitude rising above baseline, supplementary indicators confirming. Severity 0.5-0.7.
  • Late stage: Crest factor elevated, multiple indicators aligned. Severity 0.8-1.0.

Rules are evaluated sequentially against the extracted features. All 121 rules are tested — the system evaluates every failure hypothesis, not just the most obvious one. (A previous ThreadPoolExecutor(max_workers=4) implementation was removed because the GIL prevents true parallelism for CPU-bound Python work.) The output is a ranked list of matched initiators with severity scores and confidence weights.


Purpose: This gallery provides the characteristic vibration signatures that RAPID AI’s 275+ SENSE rules are designed to detect. Each pattern maps directly to specific fault rules and FRETTLSM causal factors.

Frequency Domain:

  • Dominant 1X (1x running speed) peak
  • 1X amplitude proportional to unbalance mass x eccentricity
  • Minimal harmonics (2X < 25% of 1X indicates pure unbalance)
  • Phase: single-plane unbalance shows stable ~0 degrees or ~180 degrees at 1X

Time Domain:

  • Sinusoidal at running speed
  • Low crest factor (< 3.0)
  • Low kurtosis (< 3.5)

Severity Indicators:

Level1X Amplitude (mm/s)ISO ZoneAction
Acceptable< 1.8A-BMonitor
Marginal1.8 - 4.5CPlan balance
Unacceptable> 4.5DImmediate balance

RAPID AI Rules: UNB01-UNB06 FRETTLSM: Force (mass distribution), Surface (erosion/buildup)

Common Misdiagnoses:

  • Misalignment mistaken for unbalance: check axial component (A/H < 0.3 for pure unbalance) and 2X amplitude (2X < 25% of 1X for pure unbalance). If axial is elevated or 2X is significant, suspect misalignment.
  • Bent shaft: shows 1X dominant but amplitude does not respond to balance weights; phase is locked to the shaft, not the trial weight position. Check for 1X amplitude that is stable across multiple balance runs.
  • Eccentric rotor (electrical): disappears instantly on power cut (mechanical unbalance coasts down). Perform a power-cut test to differentiate.

Angular Misalignment:

  • Elevated 1X axial
  • Axial-to-radial ratio > 0.5 (key discriminator from unbalance)
  • Phase: 180 degrees across coupling in axial direction

Parallel (Offset) Misalignment:

  • 2X radial dominant (often > 1X)
  • Elevated axial vibration
  • 2X/1X ratio > 0.5 indicates significant offset
  • Harmonics up to 4X possible in severe cases

Combined Pattern:

  • Both 1X and 2X elevated in radial AND axial
  • Phase shifts across coupling in all directions
  • Temperature rise at coupling and bearings

Time Domain:

  • Waveform shows 2 peaks per revolution (2X dominance)
  • Moderate crest factor (3.0-4.5)

Severity Indicators:

MeasurementAcceptableMarginalUnacceptable
Axial/Radial ratio< 0.30.3 - 0.5> 0.5
2X/1X ratio< 0.30.3 - 0.75> 0.75
Coupling temp rise< 10 C10 - 25 C> 25 C

RAPID AI Rules: ALN01-ALN08 FRETTLSM: Force (coupling load), Foundation (thermal growth), Temperature

Common Misdiagnoses:

  • Unbalance mistaken for misalignment: pure unbalance has minimal axial content and no significant 2X. If 2X/1X < 0.3 and A/H < 0.3, suspect unbalance rather than misalignment.
  • Cocked bearing: produces axial vibration similar to angular misalignment but at a single bearing location. Check if axial elevation is localized to one bearing or spans the coupling.
  • Pipe strain: external forces from connected piping mimic misalignment symptoms. Check if vibration changes when pipe supports are loosened — if it improves, pipe strain is the initiator.

Bearing Defect Frequencies:

BPFO = (N/2) x RPM x (1 - Bd/Pd x cos(alpha)) Outer race
BPFI = (N/2) x RPM x (1 + Bd/Pd x cos(alpha)) Inner race
BSF = (Pd/(2xBd)) x RPM x (1 - (Bd/Pd x cos(alpha))^2) Ball spin
FTF = (RPM/2) x (1 - Bd/Pd x cos(alpha)) Cage
Where: N = number of rolling elements
Bd = ball diameter
Pd = pitch diameter
alpha = contact angle

Stage 1 — Early Degradation (kurtosis 4-5):

  • Subtle high-frequency ringing (natural frequency of bearing race)
  • Envelope analysis shows BPFO/BPFI sidebands
  • Still within ISO Zone A-B
  • Pain point: Often missed without envelope analysis capability

Stage 2 — Developing Fault (kurtosis 5-7):

  • Clear bearing defect frequency peaks emerge
  • Sidebands at +/-1X around defect frequency
  • Broadband noise floor rising
  • Temperature starting to trend up

Stage 3 — Advanced Degradation (kurtosis 7-10):

  • Harmonics of defect frequency (2xBPFO, 3xBPFO, etc.)
  • Broadband noise elevated
  • Significant temperature rise
  • Pain point: At this stage, damage is irreversible — replacement is required

Stage 4 — Failure Imminent (kurtosis > 10):

  • Defect frequencies may disappear (geometry lost)
  • Broadband “haystack” spectrum
  • Extreme noise and heat
  • 1X often reduces (shaft “floating” in damaged bearing)

Common Bearing Quick Reference:

BearingN (elements)BPFO (x RPM)BPFI (x RPM)BSF (x RPM)FTF (x RPM)
620593.5855.4152.3570.398
630572.9354.0651.8710.419
620893.5785.4222.3280.398
631083.0524.9481.9510.382

Note: Multipliers are approximate. Exact values depend on internal geometry, contact angle, and clearance class. Always verify against manufacturer data for the specific bearing variant installed.

RAPID AI Rules: BRG01-BRG12 (outer race), BRG13-BRG20 (inner race), BRG21-BRG28 (rolling element), BRG29-BRG32 (cage) FRETTLSM: Lubrication, Surface, Material, Force

Common Misdiagnoses:

  • Gear mesh mistaken for bearing defect: gear mesh frequencies can fall near bearing defect frequencies. Check for RPM-synchronous sidebands (gears) vs. non-synchronous patterns (bearings). Gear mesh sidebands are evenly spaced at 1X of the faulty gear.
  • Flow-induced noise mistaken for bearing: cavitation and turbulence produce broadband high-frequency energy similar to Stage 3-4 bearing damage. Check if the high-frequency energy correlates with flow rate changes — bearing damage is flow-independent.
  • Electrical discharge machining (EDM): VFD-induced shaft currents produce bearing damage with a characteristic frosted/pitted appearance on both races. The vibration signature may mimic early bearing damage but does not follow the normal 4-stage progression. Check for even pitting distribution and install shaft grounding brushes.

Normal Gear Mesh:

  • Gear Mesh Frequency (GMF) = N_teeth x RPM
  • Clean sidebands at +/-1X around GMF
  • Uniform sideband pattern (symmetric)

Worn Gears:

  • Multiple harmonics of GMF (2x, 3x, 4x GMF)
  • Elevated broadband noise around GMF harmonics
  • Non-uniform sidebands (amplitude modulation)

Cracked/Broken Tooth:

  • Strong amplitude modulation of GMF
  • Sidebands spaced at +/-RPM of faulty gear
  • Time-domain: sharp impulse once per revolution
  • Very high crest factor (> 6.0)
  • Kurtosis spike (> 8.0)

Misaligned Gears:

  • 2x GMF > 1x GMF
  • Axial vibration elevated at GMF
  • Non-contact pattern on tooth face

RAPID AI Rules: GR01-GR15 FRETTLSM: Force (tooth loading), Lubrication (film breakdown), Surface (pitting/spalling)

Common Misdiagnoses:

  • Bearing defect mistaken for gear fault: bearing defect frequencies can modulate the gear mesh frequency, producing sidebands that appear gear-related. Check if the sideband spacing matches a bearing defect frequency rather than shaft RPM.
  • Misaligned gears confused with worn gears: misaligned gears show 2x GMF > 1x GMF with axial vibration, while worn gears show broadband modulation around multiple GMF harmonics. Check tooth contact pattern (misalignment shows edge loading; wear shows full-face contact with pitting).
  • Process load variation: variable load on a healthy gearbox modulates GMF amplitude, mimicking a developing fault. Check if sideband amplitude correlates with load changes — a true fault produces consistent sidebands regardless of load.

Type A — Structural (base/foundation):

  • Sub-harmonics (0.5X, 1.5X)
  • Multiple harmonics (1X through 10X+)
  • Directional: primarily vertical
  • Phase unstable

Type B — Component (bearing/housing):

  • Directional vibration (one direction much higher)
  • Truncated waveform (flat top or bottom)
  • 2X often dominant

Type C — Rotating (shaft/rotor):

  • Sub-harmonics (0.5X, 0.33X)
  • Erratic vibration levels
  • Phase changes with speed

Time Domain:

  • High crest factor (> 4.5)
  • Waveform clipping or asymmetry
  • Impact signatures

RAPID AI Rules: FND01-FND10 (foundation), LOO01-LOO06 (component) FRETTLSM: Foundation, Force (bolt torque), Material (fatigue)

Common Misdiagnoses:

  • Looseness dismissed as “noise”: sub-harmonics (0.5X, 1.5X) are often filtered out or dismissed as measurement artifacts. If sub-harmonics are present with multiple integer harmonics, the pattern is diagnostic of looseness — not noise.
  • Structural resonance mistaken for looseness: both produce multiple harmonics, but resonance shows speed-dependent amplitude variation and phase instability near the resonant frequency. Run a speed sweep (coast-down or VFD ramp) to distinguish — looseness amplitude is proportional to speed squared; resonance amplitude peaks at a specific speed.
  • Misalignment producing 2X mistaken for Type B looseness: both show elevated 2X, but misalignment has consistent phase relationship across the coupling while looseness has unstable phase. Check phase stability over multiple measurements.

Rotor Bar Defects:

  • Sidebands at 1X +/- 2 x slip x line_freq
  • Sideband amplitude indicates severity:
    • -50 dB relative to 1X: 1-2 broken bars

    • -40 dB: 3-5 broken bars

    • -35 dB: multiple bars, imminent failure

Stator Eccentricity:

  • 2x line frequency (2FL) dominant
  • If 2FL varies with load: electrical origin
  • If 2FL constant: mechanical origin

VFD-Induced Issues:

  • Broadband noise from PWM switching
  • Sub-harmonics if carrier frequency too low
  • Resonance excitation across speed range
  • Pain point: VFDs expose resonances that were hidden at fixed speed

Severity Scale (Rotor Bar Defects by Sideband Amplitude Relative to 1X):

dB Relative to 1XInterpretationEstimated Bars
> -55 dBHealthy0
-55 to -50 dBSuspectPossible 1
-50 to -44 dBDeveloping1-2 broken bars
-44 to -40 dBSignificant2-3 broken bars
-40 to -35 dBSevere3-5 broken bars
< -35 dBCriticalMultiple bars, imminent failure

RAPID AI Rules: AC01-AC09 (AC motors), DC01-DC07 (DC motors) FRETTLSM: Reactive/Electromagnetic, Temperature

Common Misdiagnoses:

  • Mechanical 2X mistaken for electrical 2FL: for a 2-pole motor at 60 Hz supply, 2FL = 120 Hz and 2X is approximately 118-119.3 Hz. Without adequate frequency resolution (< 1 Hz), the two peaks merge. The definitive test: if the vibration at the suspect frequency disappears instantly on power cut (does not coast down), it is electrical. Mechanical 2X coasts down with the rotor.
  • Soft foot producing 2FL-like vibration: a motor with soft foot can amplify the normal 2FL magnetic vibration to abnormal levels. The 2FL is always present in motors — soft foot changes the transmission path, making it appear as a fault when the motor itself is healthy. Check for soft foot before condemning the motor.
  • VFD harmonic interference: VFDs produce switching harmonics that can excite structural resonances, producing vibration signatures that appear electrical but are actually structural. Check if the vibration frequency tracks with VFD carrier frequency or motor speed — carrier-frequency-related vibration is VFD-induced, not motor-induced.

Module B.2 — Trend Analysis (5 Trend Classes)

Section titled “Module B.2 — Trend Analysis (5 Trend Classes)”

Module B.2 tracks how parameters evolve over time. Failure begins when trends shift, not necessarily when amplitude rises. A bearing vibrating at 2.0 mm/s that has been stable for a year is healthy. A bearing vibrating at 2.0 mm/s that was at 1.2 mm/s last month is in trouble. Module B.2 captures this temporal dimension.

All trend analysis operates in the log domain to linearize exponential degradation:

slope_log = polyfit(t, ln(values), degree=1)[0]
slope_first = polyfit(t[:N/2], ln(values[:N/2]))[0]
slope_second = polyfit(t[N/2:], ln(values[N/2:]))[0]
slope_change = slope_second - slope_first

The split-half slope computation detects acceleration: if the second half is steeper than the first, the degradation is accelerating, which dramatically reduces remaining useful life.

NLI = min(1.0, std(ln_residuals) * 5.0)

When NLI >= 0.6, the degradation trajectory is non-linear and unpredictable. The RUL estimate is adjusted: RUL_adj = RUL_base * (1 - NLI). A highly non-linear trend with NLI = 0.8 reduces the RUL estimate by 80%.

The cascade evaluates in order, most specific first. First match wins:

ConditionClassSeverity Score
max_jump > 0.5 (log-domain)Step0.80
`volatility > 0.3 ANDslope< 0.02`
`slope> 0.05 AND
`slope> 0.02`
elseStablemax(0.0,

Step changes (severity 0.80) indicate sudden events — a bearing impact, a coupling failure, a process excursion. Accelerating trends are the most dangerous because they indicate feedback-driven degradation where the fault is making itself worse. Chaotic patterns with low slope often indicate process-driven variation rather than mechanical degradation.


Module B.3 detects the decay of order within the system. Healthy machines concentrate energy in predictable frequencies (low entropy); degrading machines spread energy chaotically (high entropy). This module answers: Is the system becoming disordered?

Shannon entropy, applied to mechanical systems, measures how energy is distributed across the measurement space. A healthy machine running at 3000 RPM concentrates its vibration energy at 50 Hz (1x), with small amounts at harmonics. The spectral entropy is low because most of the probability mass is concentrated in a few bins. As the machine degrades — bearings develop defects, looseness develops, lubrication fails — energy spreads across more frequencies. The spectral entropy rises.

This is directly connected to the Theory of Imperfections: when energy can flow freely through the system, it follows predictable paths (low entropy). When imperfections block or redirect energy flow, the energy disperses into unpredictable paths (high entropy).

Spectral Entropy: SE = -Sum(p_i * ln(p_i)) / ln(N)
Temporal Entropy: TE = -Sum(p_i * ln(p_i)) / ln(N)
Directional Entropy: DE = -Sum(p_i * ln(p_i)) / ln(3)
  • SE measures disorder in the frequency-domain energy distribution. SE = 0 means a single pure tone; SE = 1 means flat broadband noise.
  • TE measures irregularity in the time-domain waveform. Higher TE indicates impulsive, non-repeating events.
  • DE measures disorder across the three measurement directions H, V, A. Normalized by ln(3) since there are exactly 3 axes. Rising DE indicates loss of the normal directional bias.
SI = 1 - (0.5 * SE + 0.3 * TE + 0.2 * DE) clamped to [0, 1]

The weights reflect that spectral entropy is the strongest stability indicator (0.5), followed by temporal irregularity (0.3), then directional disorder (0.2). Higher SI = more stable = energy flowing more freely.

Evaluated in priority order (highest priority first):

RuleConditionStateSeverity
SR05SI <= 0.40Critical_Instabilityalarm
SR04SE >= 0.65 AND (TE >= 0.60 OR DE >= 0.60)Chaoticwarning
SR03dSE/dt >= 0.02 AND SI in (0.40, 0.60)Destabilizingwarning
SR02SE in (0.35, 0.65) AND dSE/dt < 0.02 AND SI > 0.60Driftingwatch
SR01SE <= 0.35 AND TE < 0.50 AND SI >= 0.70Stablenormal

The entropy slope dSE/dt is particularly diagnostic: a sustained positive slope means the system is losing order over time, even if the current entropy is not yet alarming. This is the temporal equivalent of the trend analysis in Module B.2 — it detects the direction of change, not just the current value.

Module B.3 produces: SE, TE, DE, dSE/dt, WE (weighted entropy), SI (stability index), stability_state, severity_level, and a list of triggered rules. These feed into Module C for system-level fusion and into the confidence compounding formula described in Chapter 3.


The DSP Freeze Specification (frozen 2026-02-22) locks all signal processing parameters, deliverables, and acceptance criteria. No experimental changes to sampling rate, filter configuration, FFT size, window type, or band definitions may be made without documented, reviewed approval. This section records what the sensor/edge device is expected to deliver, what RAPID AI actually consumes, and where the gaps remain.

The DSP implementation must deliver 15 metrics. RAPID AI’s relationship to each varies — some are consumed directly, some are recomputed from raw data for independence, and some are not yet consumed:

#DeliverablePer-AxisRAPID AI Status
1Raw Time WaveformYesUsedSignalInput.values
2RMS (band-limited)YesRecomputed — Module A computes from raw
3Peak (true peak)YesRecomputed — Module A computes from raw
4Crest Factor (Peak/RMS)YesRecomputed — Module A computes from raw
5Overall RMS (vector magnitude)OptionalRecomputed — Module A overall_rms
6Spike Energy / HF EnergyYesNot Used — no schema field, no rules
7Envelope RMSYesNot Used — no schema field, no rules
8Envelope PeakYesNot Used — no schema field, no rules
9FFT Spectrum (single-sided)YesPartial — Module B.3 uses raw spectra
10Kurtosis (LF band)YesRecomputed — Module A, single-band only
11Kurtosis (HF band)YesNot Used — no HF/LF band separation
12Sampling config reportPartialsampling_rate_hz only
13Filter config reportNot Used
14Windowing config reportNot Used
15Calibration & scaling reportNot Used

The recomputation strategy is deliberate. RAPID AI recomputes RMS, Peak, Crest Factor, and Kurtosis from the raw waveform rather than trusting the DSP device’s values. This preserves diagnostic independence — the system does not inherit upstream calculation errors or undocumented filter settings.

As of 2026-03-11, Module A computes the following spectral features from the raw waveform:

  • FFT spectrum with Hann window (single-sided amplitude)
  • Dominant frequency and amplitude
  • 1x/2x/3x harmonic amplitudes (when RPM is known)
  • 2x/1x harmonic ratio (misalignment indicator)
  • Spectral kurtosis (transient/impulsive detection)
  • Spectral centroid (frequency center of gravity)
  • Sub-synchronous energy ratio (oil whirl, cage fault detection)
  • High-frequency energy ratio (early bearing damage detection)
  • ISO 20816-1 zone classification (A/B/C/D by machine class)
DSP DeliverableStatusEnhancement Path
Envelope RMS/PeakNot yetAdd envelope analysis (bandpass, Hilbert transform, RMS)
Spike Energy / HF EnergyNot yetDefine HF band, compute band-limited energy
Kurtosis (HF band)Not yetBand-split signal, compute kurtosis per band
Filter/Window configNot validatedAccept as DSP metadata for cross-validation
Calibration reportNot validatedTrust boundary — accept sensor sensitivity

These parameters are locked. Any change requires formal review and documented approval:

ParameterValueNotes
Sampling Rate6,400 HzFixed unless formally revised
Effective FmaxSR / 2.5 = 2,560 HzNyquist safety margin
Anti-aliasing FilterCutoff <= FmaxMandatory analog filter
Window Length>= 1.0 secMinimum unless justified
Min FFT Samples1,024 (preferred 2,048)
Window TypeHann (default)Hamming optional, selectable
DC RemovalSubtract mean of windowTime-domain mean removal
Gravity RemovalAcceleration onlyMust be documented
Band-limited RMS1 Hz — 1,000 HzDefault band
Envelope Band1,000 — 5,000 HzCarrier band specification
FFT ScalingSingle-sided amplitudeAmplitude-corrected
Data TypeFloating pointNo integer truncation in DSP

The 6,400 Hz sampling rate yields an effective Fmax of 2,560 Hz after the 2.5x Nyquist safety margin. This covers the diagnostic bandwidth for most rotating machinery up to ~150,000 RPM (2,500 Hz fundamental). The Hann window is the default because it provides a good balance between frequency resolution and spectral leakage — Hamming is available for applications where sidelobe suppression is more important than mainlobe width.

These are non-negotiable. A DSP implementation that fails any of these criteria is rejected:

CriterionRequirement
Flatline TestRMS near zero with sensor disconnected (<= baseline noise threshold)
RepeatabilitySame condition produces <= +/- 5% RMS variation
1X Frequency MatchFFT 1X peak matches RPM within +/- 1%
No Artificial 0-1 Hz PeaksAfter DC removal — no residual DC leakage
Crest FactorMust be > 1.0 for any dynamic signal
Clipping DetectionNo saturation during normal operation
Envelope TestKnown impulse produces visible HF band increase
Calibration ConsistencySensor sensitivity matches within +/- 5% of spec

Module A’s guard rules (DG001-DG019) already validate several of these in production: flatline detection (DG001), clipping detection (DG003), NaN corruption (DG002), insufficient samples (DG006), and kurtosis outliers. The DSP acceptance criteria and the guard rules are complementary — the acceptance criteria define what a conforming DSP device must produce; the guard rules detect when a deployed device violates those expectations at runtime.


Every threshold in RAPID AI’s Signal Intelligence layer is defined in a single source of truth: rapid/engine/settings.py. This section documents the complete threshold reference for signal processing, severity classification, guard rules, and feature scoring. No threshold should be hardcoded elsewhere in the codebase.

ConstantValueUsed In
NAN_FRACTION_THRESHOLD0.01 (1%)Module A — NaN penalty trigger
FLATLINE_STDDEV_THRESHOLD1e-6Module A — flatline detection

Note: the guard rule DG002 uses a 5% NaN fraction for hard blocking. The 1% threshold here triggers a soft penalty — signals with 1-5% NaN content pass through with degraded quality rather than being blocked outright.

Signal TypeValid Units
velocitymm/s, inch/s, in/s
accelerationg, m/s2, m/s²
displacementum, µm, mm, mil
Signal TypeValid Rates
velocity256, 512, 1024, 2048, 2560, 5120, 6400, 10240, 25600, 51200
acceleration256, 512, 1024, 2048, 2560, 5120, 6400, 10240, 25600, 51200
displacement256, 512, 1024, 2048, 2560, 5120, 6400

Displacement signals cap at 6,400 Hz because displacement amplitude falls off as 1/f^2 — frequencies above ~3,000 Hz have negligible displacement content and would be dominated by noise.

ConstantValueEffect
SEV_KURT_ALARM7.0severity score -> 0.85
SEV_KURT_WARNING5.0severity score -> 0.65
SEV_KURT_WATCH4.0reference only — not used in Module A scoring
SEV_CREST_ALARM5.0reference — not used in current Module A scoring
SEV_CREST_WARNING4.0reference — not used in current Module A scoring

Excess kurtosis >= 7.0 is a strong indicator of impulsive events (bearing spalling, gear tooth fracture). The 5.0 warning threshold catches early-stage impulsive defects. Crest factor thresholds are defined but not yet wired into Module A’s severity scoring — they are reserved for future envelope analysis integration.

ZoneScoreDescription
A0.05Good — within acceptable limits
B0.25Satisfactory — for continuous operation
C0.60Unsatisfactory — short-term only
D0.90Unacceptable — imminent damage risk
ConstantValuePurpose
HARMONIC_RATIO_MISALIGNMENT1.52x/1x ratio threshold for misalignment flag
DSP_TRUST_ACCEPT0.7External DSP accepted if trust >= 0.7
DSP_TRUST_TOLERANCE0.15Individual metric match tolerance (+/- 15%)

A 2x/1x harmonic ratio >= 1.5 is the classical misalignment signature: the second harmonic (2x running speed) dominates the fundamental when angular or offset misalignment forces a twice-per-revolution load variation. The DSP trust thresholds govern cross-validation — when external DSP results are available, each metric must agree within 15%, and the overall trust score must reach 0.7 for acceptance.

LevelScore Range
normal[0.00, 0.30)
watch[0.30, 0.50)
warning[0.50, 0.80)
alarm[0.80, 0.95)
critical[0.95, 1.01)

These bands apply across all modules. A severity score of 0.79 is the highest possible warning; 0.80 crosses into alarm territory. The upper bound of 1.01 (not 1.0) handles floating-point edge cases.

Feature Severity Thresholds (Baseline Ratios)

Section titled “Feature Severity Thresholds (Baseline Ratios)”
ConstantValueTrigger
baseline_ratio_alarm2.0Score -> alarm when current/baseline >= 2.0
baseline_ratio_warning1.5Score -> warning when current/baseline >= 1.5
baseline_ratio_watch1.2Score -> watch when current/baseline >= 1.2

These ratios compare a current measurement against its historical baseline. A value that has doubled (ratio >= 2.0) is an alarm. A 50% increase (ratio >= 1.5) is a warning. A 20% increase (ratio >= 1.2) is worth watching. The baseline is typically the mean of the first 30 days of stable operation after installation or overhaul.

The complete guard rule threshold reference. Rules DG001-DG006 and DG011 are hard blocks (pipeline stops). All others are soft penalties (quality score degradation):

Rule IDCondition KeyOperatorThresholdSeverity
DG001std_dev<0.001block
DG002nan_inf_fraction>0.05block
DG003clip_fraction>0.01warn
DG004max_zero_run>10warn
DG005sampling_rateout_of_range(1000, 100000)block
DG006n_samples<256block
DG007dc_offset_ratio>3.0warn
DG008aliasing_indicator>0.1warn
DG009timestamp_gap_count>0warn
DG010outlier_burst_count>5warn
DG011saturation_run_count>3block
DG012dropout_periodicity_score>0.7warn
DG013coherence_loss_score>0.8warn
DG014jitter_coefficient>0.05warn
DG015snr_db<10.0warn
DG016temperatureout_of_range(-50, 250)warn

This is the complete set. The earlier section on Module A listed the 11 rules most commonly triggered in practice; this table includes 5 additional rules (DG004 max zero run, DG009 timestamp gaps, DG012 dropout periodicity, DG013 coherence loss, DG014 jitter) that detect subtler data quality issues — intermittent dropouts, periodic data loss patterns, phase coherence degradation, and sampling clock instability. These are particularly important for wireless sensor networks where transmission reliability varies.


Module B.2 classifies trends using a priority cascade with precisely defined thresholds. This section documents the complete threshold set and the escalation logic that connects trend classification to system-state changes.

The cascade evaluates conditions in priority order. First match wins — no further conditions are tested:

PriorityConditionClassSeverity Score
1max_jump > 0.5 (log-domain)Step0.80
2`volatility > 0.3 ANDnorm_slope< 0.02`
3`norm_slope> 0.05 AND
4`norm_slope> 0.02`
5elseStablemax(0.0,

All constants are sourced from settings.py and used in analytics.compute_trend():

ConstantValuePurpose
step_jump0.5Max consecutive diff > 50% of mean triggers Step classification
chaotic_volatility0.3Coefficient of variation of diffs > 0.3 triggers Chaotic candidate
chaotic_slope_max0.02Chaotic only if
accel_slope0.05norm_slope > 0.05 triggers Accelerating classification
accel_change0.02Reserved — secondary acceleration check
drift_slope0.02norm_slope > 0.02 triggers Drift classification
nli_multiplier5.0Non-linearity intensity: NLI = min(1.0, std(ln_residuals) * 5.0)

The step_jump threshold of 0.5 in log-domain corresponds to a ~65% instantaneous change in the raw value (e^0.5 = 1.65). This is calibrated to distinguish genuine sudden events (bearing impact, coupling failure) from normal process variation. The chaotic_volatility threshold of 0.3 means the standard deviation of consecutive differences exceeds 30% of their mean — high scatter without a consistent directional trend, typically caused by process-driven load variation rather than mechanical degradation.

These thresholds govern when trend analysis forces a system-state escalation, overriding the current SSI (System Stability Index) classification:

ConstantValueTrigger
escalation_unstable0.05SSI slope >= 0.05 forces escalation to Unstable state
escalation_degrading0.02SSI slope >= 0.02 forces escalation to Degrading state

The escalation logic is a safety net. Even if the current SSI score falls within the “stable” band ([0.0, 0.30)), a sustained upward SSI slope of 0.02 or greater forces the system into “degrading” status. A slope of 0.05 or greater forces “unstable.” This prevents the system from reporting stability while the trend is clearly adverse — the rate of change matters as much as the current value. An SSI slope of 0.05 means the stability index is worsening by 5 percentage points per evaluation period, which at that rate would traverse the entire stable-to-critical range in roughly 20 evaluation periods.


Reference Implementation: Signal Processing Pipeline

Section titled “Reference Implementation: Signal Processing Pipeline”
"""RAPID AI — Module A: Signal Validation & Feature Extraction
Reference implementation of the GUARD pipeline.
"""
import numpy as np
from dataclasses import dataclass
from enum import Enum
class GuardVerdict(Enum):
PASS = "pass"
BLOCK = "block"
WARN = "warn"
@dataclass(frozen=True)
class SignalFeatures:
rms: float
peak: float
crest_factor: float
kurtosis: float
quality_score: float
iso_zone: str
verdict: GuardVerdict
def extract_features(signal: np.ndarray, fs: float) -> SignalFeatures:
"""Extract statistical features from raw vibration signal.
Args:
signal: Raw time-domain vibration signal
fs: Sampling frequency in Hz
Returns:
SignalFeatures with computed metrics and quality assessment
"""
# Hard blocks (Phase 1)
if np.std(signal) < 0.001: # DG001: Flatline
return SignalFeatures(0, 0, 0, 0, 0.0, "X", GuardVerdict.BLOCK)
nan_fraction = np.sum(np.isnan(signal)) / len(signal)
if nan_fraction > 0.05: # DG002: Corrupt
return SignalFeatures(0, 0, 0, 0, 0.0, "X", GuardVerdict.BLOCK)
if not (1000 <= fs <= 100000): # DG005: Invalid sample rate
return SignalFeatures(0, 0, 0, 0, 0.0, "X", GuardVerdict.BLOCK)
if len(signal) < 256: # DG006: Insufficient samples
return SignalFeatures(0, 0, 0, 0, 0.0, "X", GuardVerdict.BLOCK)
# Feature extraction
clean = signal[~np.isnan(signal)]
rms = np.sqrt(np.mean(clean**2))
peak = np.max(np.abs(clean))
crest = peak / rms if rms > 0 else 0
mu = np.mean(clean)
sigma = np.std(clean)
kurt = np.mean(((clean - mu) / sigma)**4) - 3 if sigma > 0 else 0
# Soft penalties (Phase 2)
quality = 1.0
clip_frac = np.sum(np.abs(clean) > 0.99 * peak) / len(clean)
if clip_frac > 0.01: # DG003
quality *= 0.85
# ISO 20816-1 zone classification (medium machines 15-75 kW)
velocity_rms = rms # assumes mm/s
if velocity_rms < 1.12:
zone = "A"
elif velocity_rms < 2.8:
zone = "B"
elif velocity_rms < 7.1:
zone = "C"
else:
zone = "D"
verdict = GuardVerdict.WARN if quality < 1.0 else GuardVerdict.PASS
return SignalFeatures(rms, peak, crest, kurt, quality, zone, verdict)
# --- ISO Zone Severity Mapping ---
ISO_ZONE_SCORES = {"A": 0.05, "B": 0.25, "C": 0.60, "D": 0.90}
# --- Kurtosis Severity ---
def kurtosis_severity(kurt: float) -> float:
"""Map excess kurtosis to severity score per RAPID AI thresholds."""
if kurt >= 7.0: return 0.85 # Alarm
elif kurt >= 5.0: return 0.65 # Warning
elif kurt >= 4.0: return 0.40 # Watch
else: return 0.10 # Normal

Reference Implementation: FFT & Spectral Analysis

Section titled “Reference Implementation: FFT & Spectral Analysis”
def compute_spectrum(signal: np.ndarray, fs: float) -> tuple[np.ndarray, np.ndarray]:
"""Compute single-sided amplitude spectrum.
Returns:
(frequencies, amplitudes) arrays
"""
n = len(signal)
# Apply Hanning window to reduce spectral leakage
windowed = signal * np.hanning(n)
fft_vals = np.fft.rfft(windowed)
freqs = np.fft.rfftfreq(n, d=1.0/fs)
amplitudes = 2.0 * np.abs(fft_vals) / n
return freqs, amplitudes
def find_harmonics(freqs: np.ndarray, amps: np.ndarray,
fundamental: float, n_harmonics: int = 8,
tolerance: float = 0.03) -> list[dict]:
"""Extract harmonic amplitudes relative to fundamental frequency.
Args:
fundamental: Running speed in Hz (RPM / 60)
n_harmonics: Number of harmonics to extract
tolerance: Frequency matching tolerance (fraction of fundamental)
"""
harmonics = []
for n in range(1, n_harmonics + 1):
target = n * fundamental
tol = tolerance * fundamental
mask = (freqs >= target - tol) & (freqs <= target + tol)
if np.any(mask):
peak_amp = np.max(amps[mask])
harmonics.append({"order": n, "frequency_hz": target, "amplitude": peak_amp})
return harmonics

The Signal Intelligence layer transforms raw sensor data into structured diagnostic evidence. The next layer — Stability Intelligence — fuses this evidence across multiple components and dimensions to assess the system as a whole.


StandardRelevance to This Chapter
ISO 10816-1/ISO 20816-1 — Mechanical vibration evaluationModule A directly implements ISO 20816-1 zone classification (A/B/C/D) for broadband vibration severity assessment across four machine groups (small, medium, large rigid, large flexible).
ISO 10816-7 — Rotodynamic pumpsModule A applies ISO 10816-7 pump-specific thresholds by hazard category (Category I for hazardous service, Category II for general service), with tighter boundaries for safety-critical pump applications.
ISO 7919 — Shaft vibrationThe directional ratio analysis (A/H, H/V) and shaft-proximity measurements referenced in the AFB and coupling rules align with ISO 7919’s shaft vibration measurement methodology.
ISO 13374 — Condition monitoring data processingModule A implements ISO 13374 Level 2 (Data Manipulation), Module B implements Level 3 (State Detection), and Modules B.2/B.3 extend beyond the standard with trend classification and entropy-based stability assessment.
ISO 17359 — General guidelines for condition monitoringThe 16 guard rules (DG001-DG019) implement ISO 17359’s data quality requirements, ensuring that only validated, trustworthy data enters the diagnostic pipeline.
VersionDateAuthorChanges
2.3.02026-03-17Rick DAdded common bearing quick reference table, severity scale for rotor bar defects, and common misdiagnoses for all 6 fault patterns
2.2.02026-03-17Rick DAdded Vibration Fault Signature Gallery with 6 fault pattern categories
2.1.02026-03-17Rick DAdded standards alignment, living doc metadata, changelog
2.0.02026-03-17Rick DEnriched with production codebase content
1.0.02026-03-17Rick DInitial chapter creation

Next: Chapter 5 — Stability Intelligence Previous: Chapter 3 — The Architecture