LazyAnalysis
ITTry it nowComing soon
Menu
USE CASE · CONDITION MONITORING

Bearing fault detection with vibration analysis.

Find a rolling bearing defect in an accelerometer recording with envelope analysis: band-pass, rectify, low-pass, FFT, and checks at BPFO, BPFI and BSF. A downloadable LazyAnalysis graph, built by AI through MCP and independently validated.

Accelerometer → Band-pass → |x| → Low-pass → FFT → dB over floor → BPFO · BPFI · BSF → Alarm

38 nodes · 120000 samples · opens on its dashboard · notes in the node editor explain each stage

LazyAnalysis dashboard of the bearing graph: the envelope spectrum, the first 0.1 s of the raw acceleration, dials reading 22.9, 5.6 and 3.4 dB, an alarm level knob at 10 dB, and badges: outer race invalid, inner race and rolling element valid.The LazyAnalysis node editor with the bearing graph: the source, band-pass, rectify and low-pass filters, FFT, noise floor and dB nodes, three defect check rows with dials and badges, and notes explaining each stage.
Screenshots of LazyAnalysis running this graph. The accelerometer signal is simulated.
Envelope spectrum in dB over the noise floor: a 22.9 dB peak at the outer race frequency, 107.4 Hz, and its harmonic near 215 Hz, above a 10 dB alarm line.
The independent reference: the envelope spectrum computed in NumPy and SciPy, without LazyAnalysis. The graph gives the same values.
Results: the same in the graph, in NumPy and SciPy, and in the LazyAnalysis engine code
DefectFrequencyPeak over the noise floorAt a 10 dB alarm level
Outer race (BPFO)107.36 Hz22.9 dBAlarm
Inner race (BPFI)162.19 Hz5.6 dBBelow
Rolling element (BSF)70.59 Hz3.4 dBBelow
ASK YOUR AI ASSISTANT, CONNECTED TO LAZYANALYSIS THROUGH MCP

“Build a LazyAnalysis graph that finds bearing defects in a 12 kHz accelerometer recording of a 6205 bearing at 1797 rpm: envelope analysis around the 3 kHz resonance, the envelope spectrum in dB over its noise floor, checks at BPFO, BPFI and BSF, and a dashboard with an alarm level I can turn.”

How to connect your assistant ↗
01 /

The problem

A rolling bearing with a damaged outer race hits the damage at a fixed rate: the ball pass frequency of the outer race (BPFO), 3.58 times the shaft speed for a 6205 bearing. Each hit is short and weak. It rings a structural resonance of the machine, and in the raw spectrum it is buried under shaft unbalance and noise. Envelope analysis recovers it, and it is the standard first check in vibration-based condition monitoring.

02 /

The graph

A simulated accelerometer on a 6205 ball bearing at 1797 rpm, sampled at 12 kHz for 10 seconds (120000 samples), with an outer race defect. The signal is band-passed around the 3 kHz resonance (2nd order Butterworth, 2.4 to 3.6 kHz), rectified and low-passed at 500 Hz: what is left is the envelope, which repeats at the defect frequency. Its FFT is shown in dB over its noise floor and checked within 1.5 Hz of the outer race, inner race and rolling element frequencies. The dashboard has the spectrum, the raw signal, a gauge per defect, an alarm level knob and a badge per defect. Replace the simulated source with a CSV file or a live acquisition and the rest of the graph is unchanged.

03 /

What recomputes when you change something

LazyAnalysis pushes a change downstream only: a node runs when one of its own inputs changes. Turn the alarm level: only the three comparisons, their 0/1 masks and the badges run again; the filters, the FFT and the peaks are not touched. Change the band-pass: the filters, the FFT and everything after them run again, while the source does not, since it stores no samples and the filter reads them on demand. Change one defect band: only that defect's peak, gauge and badge.

04 /

Lazy evaluation, caching and the background

The filters and the rectifier build expressions without computing anything. The samples are computed when the FFT reads them, in a background job, so the editor stays responsive. Each IIR filter keeps the samples it has computed, so the envelope plot and the FFT do not compute them twice. The file carries its own notes that say all of this next to the nodes.

05 /

Built by AI, checked independently

The graph was built by an AI assistant (Claude) sending a description of the nodes, links, notes and dashboard to the LazyAnalysis MCP server, which wrote and validated the file. It was then checked three ways: the analysis written directly in NumPy and SciPy, the nodes of the file run with NumPy following the file's own links and settings, and the LazyAnalysis engine code run on the file's settings. All three give the results above; the engine's envelope matches SciPy within 1e-11. Building this example also found and fixed three problems in the engine: two in the speed of the IIR filter, and one in how a node gets an input that a background job delivers late.

Connect the next step.

Try it now · Coming soon ↗