A genome-wide null flatters any interval that belongs to an enriched class: the KMT2A promoter ranked in the top 0.07% of the genome and is 1.24x an ordinary housekeeping promoter, and the exon-11 element ranked in the top 3% and sits BELOW the median CTCF anchor
also called the class-matched null · why top-0.1% genome-wide is not a finding · promoter-matched and anchor-matched nulls
If you ask whether a spot on the genome is unusually busy, you have to say 'unusual compared with what'. Compared with the whole genome, every gene's start looks remarkable; compared with other gene starts, it usually does not.
The same thing, for a scientist
**Two intervals in one beat looked positive against the genome and both dissolved against a class-matched null.** Measured by Q35 over 13 ENCODE BRCA1/CBX3/CBX1 tracks, 11 passing a dynamic-range gate. | interval | against the genome | against its own class | verdict flip | |---|---|---|---| | ***KMT2A* promoter**, TSS +/-1 kb | up to **5.37x**, **top 0.07%** of 1.51 M same-width tiles | **1.24x** the median of four housekeeping promoters measured in the SAME track (range 0.63-1.80) | SUGGESTIVE -> ordinary | | ***KMT2A* exon-11 CTCF element**, 1,048 bp | up to **2.05x**, **top 2.8-3.5%** of 2.89 M tiles | **0.34-1.25x** the median of 6,000 same-cell-type CTCF anchors; **below the median in 10 of 13 tracks** | SUGGESTIVE -> below background | **Why the genome-wide null overstates.** A genome-wide tiling is dominated by intergenic, gene-poor and heterochromatic sequence. Any interval drawn from a class that is enriched as a class - a promoter, a CpG island, a CTCF anchor, an enhancer, an exon - inherits its class's enrichment and is scored against a background it does not belong to. The resulting percentile is real and answers a question nobody asked: *is this interval busier than a random piece of the genome?* The question that was asked is *is this interval busier than others of its kind?* **Why this is not merely conservative.** It runs in the direction of finding things. A genome-wide null makes positives cheap, and the intervals a mechanism project cares about - promoters, anchors, breakpoint elements - are exactly the ones that belong to enriched classes. **This is the class of error that manufactures locus-specific findings out of class-general biology.** **The CTCF case is the sharper one, because the element's own strength is the confound.** A conservative-IDR CTCF peak sits on the *KMT2A* exon-11 element in all six cell types tested, with signalValue 87.0 to 295.3. Strong CTCF sites are a well-known source of non-specific ChIP signal for unrelated factors. So the very property that makes the element interesting to this project is the property that guarantees it will look mildly enriched in almost any ChIP track. **Only an anchor-matched null can separate 'BRCA1 is here' from 'this is a CTCF site'**, and when one is applied the element is unremarkable-to-depleted. **How to build the matched null, concretely.** Take the class the interval belongs to, from the same cell type and preferably the same archive; sample several thousand members; centre a window of the SAME width on each member's centre; compute the same statistic; report the interval's rank and its ratio to the class median. In this beat that was 6,000 CTCF anchors per track and four housekeeping promoters per track, and it cost one extra pass over files already downloaded. **This is rule 84's genomic form.** Rule 84 says a proportion is not a result until its null is written down, and notes that the proportions which get reported without one are the ones that feel like observations rather than statistics. A fold-enrichment at a named locus feels like an observation. It is a statistic, and it has a null, and the null is not the genome.
| measured by | Q35-encode-reanalysis, 2026-09-22, over 13 ENCODE tracks |
|---|---|
| source analysis | analyses/q35-brca1-cbx3-encode-at-the-kmt2a-locus/results.json |
| the test to apply | Before quoting a fold-enrichment or a percentile at a named locus, ask: does this interval belong to a class that is enriched as a class? If yes, the genome is the wrong null and the number is uninterpretable until a class-matched one is computed. |
| cost | one extra pass over files already in hand - 6,000 anchors per track took about 90 seconds locally |
promoter matched null
{
"statistic": "KMT2A TSS+/-1kb divided by the median of ACTB/GAPDH/RPLP0/EEF1A1 promoters in the SAME track",
"values": {
"ENCFF017KXT": 1.7976066460212914,
"ENCFF051QOQ": 1.5700346939036613,
"ENCFF058NFI": 1.7175486869027223,
"ENCFF133FPU": 0.8619026936959768,
"ENCFF191NNV": 0.8578428505285134,
"ENCFF493XJG": 0.6312971235862346,
"ENCFF620MRE": 1.2544996498981662,
"ENCFF690UED": 1.139050336533513,
"ENCFF845YDA": 1.2388818278952067,
"ENCFF888LWP": 1.1650993125383835,
"ENCFF895JUC": 1.3319030079118603
},
"min": 0.6312971235862346,
"median": 1.2388818278952067,
"max": 1.7976066460212914
}ctcf anchor matched null
{
"design": "6,000 conservative-IDR CTCF anchors of the SAME cell type, 1,048 bp centred on the peak centre",
"kmt2a_element_fold_over_anchor_median": {
"ENCFF017KXT": 0.5601645695667378,
"ENCFF051QOQ": 0.8935683987848919,
"ENCFF058NFI": 0.7281057843939353,
"ENCFF133FPU": 0.9916598008904423,
"ENCFF191NNV": 0.7517065313813306,
"ENCFF196UXL": 0.7897879472095027,
"ENCFF431CIQ": 0.508418502793513,
"ENCFF493XJG": 1.2487964999691368,
"ENCFF620MRE": 1.1996879283218187,
"ENCFF690UED": 1.236945893060645,
"ENCFF845YDA": 0.7574855377693466,
"ENCFF888LWP": 0.3447028245578153,
"ENCFF895JUC": 0.4292479399591828
},
"kmt2a_element_percentile_among_anchors": {
"ENCFF017KXT": 9.966666666666667,
"ENCFF051QOQ": 40.2,
"ENCFF058NFI": 22.716666666666665,
"ENCFF133FPU": 48.86666666666667,
"ENCFF191NNV": 26.133333333333333,
"ENCFF196UXL": 26.433333333333334,
"ENCFF431CIQ": 14.666666666666666,
"ENCFF493XJG": 64.95,
"ENCFF620MRE": 70.06666666666666,
"ENCFF690UED": 68.56666666666666,
"ENCFF845YDA": 19.866666666666667,
"ENCFF888LWP": 5.016666666666667,
"ENCFF895JUC": 4.933333333333334
},
"n_tracks_below_anchor_median": 10,
"n_tracks": 13
}classes that need their own null
[ "promoters and CpG islands", "CTCF/cohesin anchors", "enhancers and super-enhancers", "exons versus introns", "KRAB-ZNF 3' exons and other H3K9me3 domains", "replication origins", "nucleosome-depleted regions" ]
- How many locus-level occupancy claims in this corpus were scored against a genome-wide null where a class-matched one was available? Two of seven intervals changed verdict in the one beat that checked, and nothing has swept the rest.
- Should this graph require a named null class in any entry quoting a locus fold-enrichment, the way it requires absence_class on absences? A field such as `null_class` would make the omission visible instead of invisible.
- Is peak-strength matching worth adding to the anchor null? Here it was not needed because the result was below the unmatched median, but a borderline result would turn on it.
- E1strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.dataset
In 13 ENCODE BRCA1, CBX3 and CBX1 ChIP-seq tracks the KMT2A promoter reaches the top 0.07% of genome-wide 2 kb tiles yet is only 1.24x (median across passing tracks) the median housekeeping promoter in the same track, and the KMT2A exon-11 CTCF element reaches the top 2.8% of genome-wide 1,048 bp tiles yet falls below the median of 6,000 same-cell-type CTCF anchors in 10 of 13 tracks.
ENCODE Portal: all 13 released human BRCA1, CBX3 and CBX1 TF ChIP-seq experiments, signal and peak files, downloaded and analysed 2026-09-22 · ENCODE Project Consortium · ENCODE Portal 2026What this evidence cannot show
The promoter comparison uses four housekeeping promoters, which is a small class sample and was chosen before the measurement rather than matched on expression or CpG content; a larger, expression-matched promoter set would give a tighter comparison. The anchor null samples 6,000 of 42,947-54,699 CTCF peaks per cell type, uniformly and not matched on peak strength, so it is matched on class membership but not on anchor quality.
Evidence that argues against this (1)
- A class-matched null can over-correct. If the class itself is the biology - if the question is whether a factor is at CTCF anchors at all - then dividing by the anchor median removes the effect of interest. The matched null answers 'is THIS anchor special among anchors', which is the right question here only because CTCF occupancy at this element is already established and is not what is in dispute. ENCODE Project Consortium 2026
- E2strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.paper
The chr19q13 KRAB-ZNF cluster behaves as a class in exactly the way this concept describes: it is a coherent H3K9me3/SETDB1/TRIM28 domain rather than a set of independent sites, which is why it works as a positive control for HP1 paralogues and why a single ZNF gene's enrichment says little on its own.
ZNF274 recruits the histone methyltransferase SETDB1 to the 3' ends of ZNF genes. · Frietze S, et al. · PLoS One 2010What this evidence cannot show
This is a supporting analogy rather than a direct test of the null-choice argument; the paper is about ZNF274 recruiting SETDB1, not about null distributions.
Evidence that argues against this (1)
- Not every apparently coherent genomic class is one. Treating a set of intervals as a class and pooling them into a null assumes homogeneity that should itself be checked - the ZNF cluster is unusually well established as a domain and most candidate classes are not. Frietze S et al. 2010
measured: 1.73x flattery in the unfiltered universe, 1.02x in a coverage-filtered one
the promoter-level form of the same failure
the two verdict flips that this concept generalises from
that analysis had already adopted an anchor-matched null; this generalises the reason
CTCF anchors are the worked example of a class whose members inherit the class's enrichment
the class-matched null is what keeps the finding narrow: 30.2% of K562 CTCF anchors carry a CBX3 peak, so occupancy is not enrichment
sibling concepts - one is about the filter that decides whether a signal is reported, the other about the null it is compared to; cite them together
the design's null is class-matched for exactly this reason