no_peak

CLUSTER pulse detection for endocrine time-series data, in the browser. Load a series of hormone concentrations (LH, GnRH, GH, or any pulsatile analyte), set the window sizes and t-score thresholds, and get the detected pulses, the peak and valley tables, and a publication-grade figure.

The data never leaves your machine. There is no backend and no upload step: the algorithm is compiled into the page and runs on your own device, so a recording you analyze here is never transmitted anywhere. No analytics, no accounts, no cookies.

What it is

A faithful port of CLUSTER, the pulse-detection algorithm for endocrine time series developed by Johannes D. Veldhuis and Michael L. Johnson (Am J Physiol 1986; 250:E486–93). CLUSTER slides a pooled t-test across the record, comparing a trailing nadir window against a leading peak window, and assembles the significant increases and decreases into pulses. It is not a new algorithm and not a variant: the aim is that this page returns exactly what the reference implementations return.

Two implementations ship side by side, selectable in the UI: Igor, a port of the Igor Pro ClusterMaster package used in the Moenter lab, and Fortran, a port of Johnson's original CLUST5 v6.01 console program. They differ in the form of the pooled variance and in the pulse-assembly loop bounds, and the switch exists so results from either lineage can be reproduced.

How it was validated

What it does not do

CLUSTER is a specific, conservative detector, and this page reports it honestly rather than flattering it. On dense pulse trains it produces almost no false positives, but it misses roughly 40% of true pulses; deconvolution methods such as AutoDecon recover ~98% on the same data. Measurement against a purpose-built simulator also showed that CLUSTER's celebrated near-zero false-positive rate is partly a property of the benchmark: on sparse records the same code produces a 16–22% false-discovery rate. Use CLUSTER when you need to defend every pulse you report; use deconvolution when you need to count them.

Analyzing a whole study, or reading this without a browser? The algorithm has no interface dependencies and ships with a command line: point scripts/cluster.ts at a directory of records and it writes one summary row per record — the same per-record table this app exports, from the same code. The source is at github.com/syncytium2/no_peak (MIT), the recipe is at Methods § Batch processing, and AGENTS.md in the repository is the version written for an agent rather than a person.

The full account — how the algorithm works, the provenance of the port, the caveats above in detail, and the references with DOIs — is on the Methods & Algorithm Reference, a standalone page that needs no JavaScript. The same material, plus the file-format guide and a contact form, is on the in-app About page. A plain-text summary lives at /llms.txt.

By the same author: Colonel Kernel — a client-side convolution / deconvolution tool for calcium imaging that recovers the calcium-indicator kernel from ground-truth spike times and a measured dF/F₀ trace, and reports honestly whether a clean kernel exists at all. Same no-backend, data-never-leaves-your-machine posture as this page.

Loading the interactive app… it requires JavaScript.