habitat

Trace your noise

Where does your spectrum’s noise story come from?

Every covariance spectrum has a small-eigenvalue tail, and something decides whether that tail reads as “noise.” This page measures whether that decision could have come from your data — or only from a constant somebody added. Drop a CSV below. Your browser does all of the arithmetic; nothing you drop leaves this tab.

the comparison — two numbers, no threshold

The Marchenko–Pastur noise bulk — the classical model of “what pure noise eigenvalues look like” — has a total width fixed entirely by the shape of your matrix: ((1+√γ)/(1−√γ))² with γ = d/n. No noise level enters that ratio. Your tail’s spread — largest-of-the-five-smallest over smallest — is a property of your data.

If the spread exceeds the width, no noise level whatsoever can place the bulk over your tail — the tail cannot be that kind of noise, at any calibration. If it fits, a compatible placement exists. Either answer is the reading, reported at the same volume. Then a dose ladder re-asks the question with an added diagonal constant c = μ·10k at each step k — and reports the first dose at which your tail starts fitting. A fit that only exists at a dose was purchased at that dose.

This page does not claim the noise model should describe your data, and a verdict here certifies nothing about any pipeline. It reads one property of one matrix. The full convention list ships in the kit’s SPEC; the engine below is ~300 lines — read it first.

the engine ties first

Before this page will read anything of yours, it must reproduce a published reference readout — every digit — from a reference card served by this site (the same public trace used on the agent-provenance case). An engine that cannot tie has no standing to read your data.

tying… fetching the reference card and recomputing its readout.

the reference readout it must hit

Card sha256 072fd82f… (n=4262, d=6, four constant columns — deliberately a hard case: the degenerate census must come out exact). The full expected object is embedded in this page’s source and compared field-for-field.

your data

waiting for the engine tie…

comma-separated numbers; optional header row; every data cell must be a finite number or the run refuses with the exact row and column. In-tab limits: d ≤ 64 and n×d ≤ 4,000,000 cells — beyond that, use the kit.

pre-built readouts — the public cards

The same verdict, already run on every public card this site serves — for the skeptic who would rather inspect than upload. Each name is the corpus on its case page.

loading…

and the house digest still ties too

The reference card’s geometry digest is a number habitat published (67a6f95e…). Recompute it here from the same served vectors the tie above used — the two instruments read one artifact.

the same instrument, off the page

The downloadable kit is the identical engine in pure Python — no dependencies, no network — with the declared convention list (SPEC.md), a public reference card, and a self-test that refuses to pass unless the engine reproduces the reference readout exactly. For data that should never touch a browser, or for reading the whole method at your own bench. Email hello@habitat.ooo and it arrives by reply.

← Receipts · Docs