Oncofusion

start / graph / finding-q155-the-aff1-promoter-window-holds-three-genes-tsss-not-two-and-one-of-them-is-protein-coding

Analysisstrong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.Q155-can-an-aff1-promoter-measurement-be-attributed

The AFF1 promoter window holds three genes' TSSs, not two, and the third is protein-coding - Q153's 92.5% is confirmed and its two-gene framing is not

also called Q155 AFF1 window geometry · AFF1 / AFF1-AS1 / C4orf36 three-gene promoter

This project measures AFF1's on-switch with a 2,000-letter window, and three different genes begin inside it, not two, one of them protein-coding. One of the three is missing from the project's reference table entirely and another is in it under a different one of its own three start sites 42,000 letters away, so nothing the project could run would have noticed either.

The same thing, for a scientist

Q153 reported that AFF1's 2 kb promoter window (`chr4:86,934,001-86,936,001`) is **92.45%** shared with `AFF1-AS1`, whose TSS is 151 bp away on the minus strand, and that AFF1-AS1 has GeneID **100506746**. **Both numbers were re-derived this cycle from independently fetched NCBI esearch+esummary, HGNC REST, UCSC refGene, UCSC ncbiRefSeq, UCSC knownGene and Ensembl REST records, and both are correct** [E1]. The framing around them is not. The window contains the TSSs of **three distinct genes** under the union of current annotations [E2]: | gene | strand | TSS (hg38, 0-based) | offset from AFF1 | in the project's promoter table? | |---|---|---:|---:|---| | **C4orf36** (NM_001414641/642, NR_183021/022) | - | 86,934,732 | **-269 bp** | **yes - but the row records a DIFFERENT one of this gene's three current TSSs, 42,579 bp away** | | **AFF1-AS1** (NR_038841) | - | 86,934,850 | -151 bp | **no row at all** | | **AFF1** (NM_001166693) | + | 86,935,001 | 0 | yes | And **AFF1's own TSS is not one point either**: GENCODE carries 24 AFF1 transcripts whose starts span `86,934,202-86,936,610`, a **2,409 bp spread wider than the 2,000 bp window itself**, and Ensembl's gene-level AFF1 start is **798 bp upstream** of the one the project uses [E2]. A fourth TSS, the long C4orf36 / unnamed-Ensembl-lncRNA start at `86,936,204`, sits **203 bp outside** the window's upper edge - and that is where the strongest fusion-biased signal at the locus turns out to be [E3]. **The transferable point is that the two ways a neighbour goes missing are different bugs with the same symptom.** `AFF1-AS1` is invisible because the table is `NM_`-derived and it has only an `NR_` transcript. `C4orf36` is invisible for a different reason: **the gene has three current curated TSSs spanning 43,782 bp - 86,892,422 (13 transcripts), 86,934,732 (4) and 86,936,204 (3) - and the table has one row per symbol.** It keeps the distal one. 🔴 **CORRECTED the same cycle: this paragraph first said the row was stale and displaced by 42,310 bp. It is not - `d_nearest = 0`, and 86,892,422 is a current, curated, 13-transcript TSS** [E4]. The two near TSSs are indeed recent additions absent from the 2020 snapshot, but **refreshing the snapshot would not fix this**, because a one-row-per-symbol table would still have to choose one of three. A within-table neighbour check returns a clean *no neighbour* in both cases. **Q153's remedy - audit against the full annotation rather than against the table - fixes the first and not the second**, and the whole-table audit that settled it measures genuine annotation drift at **1.83%** against multi-TSS symbols at **14.69%** [E4].

Go deeper
The three-annotation spread, which is the result

The same pairwise statistic, computed the same way, over three annotations:

pairsourceTSS separation2 kb window overlap
AFF1 / AFF1-AS1hg38 refGene (the project's snapshot)151 bp92.45%
AFF1 / AFF1-AS1NCBI Gene gene-level spans161 bp91.95%
AFF1 / nearest C4orf36 TSScurrent ncbiRefSeq278 bp86.10%
AFF1 / unnamed antisense lncRNAEnsembl gene-level (ENSG00000172493 vs ENSG00000284968)-1,999 bp0.05%

The last row is not a rounding difference. Ensembl does not carry the symbol AFF1-AS1 at all, and its model of the antisense locus starts 1,201 bp downstream of AFF1's refGene TSS, inside AFF1, rather than 151 bp upstream of it. Ensembl does contain RefSeq's reading, as one of four transcripts (ENST00000509262, TSS 86,934,542), so the two databases are not simply opposed - but the headline statistic takes essentially the whole range of its possible values depending on which one you ask, and Q153's entry quotes only the top of that range 12.

This is the same shape as Q153's own IRX2/IRX2-DT finding (215 bp / 89.2% under RefSeq, 437 bp / 78.2% under Ensembl) but far more extreme, and the reason is that the disagreement here is about which end of the gene the transcript starts at, not about where within a few hundred bp.

What the project's table says, and why it says it
# C:\Temp\q145irx1\promoters.tsv  (19,404 rows, TSS +/- 1000, one NM_ row per symbol)
C4orf36  chr4  86892422  86891422  86893422  -  NM_144645
AFF1     chr4  86935001  86934001  86936001  +  NM_001166693
# AFF1-AS1: no row

Membership tested directly against the loaded 19,404-symbol matrix: AFF1 present, C4orf36 present, AFF1-AS1 absent, IRX2 present, IRX2-DT absent.

So an audit asking "does another row of my table have its TSS inside this window?" returns no for AFF1 - correctly, given the table - and that answer is wrong about the genome in two independent ways at once.

What I got wrong in my own pre-registration

I pre-registered three branches and named C3 (NEITHER / the premise is wrong) as "the branch I am least prepared for and the one I would most like to be true, which is a reason to distrust my reading of it". C3 fired, and the self-warning was warranted, so here is the specific record it demanded:

The record that established it is the UCSC ncbiRefSeq track over chr4:86,915,000-86,945,000, fetched 2026-09-24, HTTP 200, which returns seven C4orf36 transcripts in a window where the refGene track returns none. I did not go looking for C4orf36; it appeared because the Ensembl region query, run to check whether Ensembl and RefSeq disagreed about AFF1-AS1, returned a third gene I had not asked about. The finding is a by-product of running a control for something else, which is worth saying because a beat scoped tightly to the AFF1/AFF1-AS1 pair would have missed it entirely and would have reported a clean confirmation of Q153.

Two other pre-registration weaknesses came true:

  • I pre-declared that C1 (never occupied, so the question is moot) was the likeliest branch. It is false: the window is occupied in 20 of 27 samples. See ana-q155-aff1s-own-promoter-window-is-occupied-in-20-of-27-samples-and-the-call-cannot-be-attributed-to-aff1.
  • I labelled "IRX2-DT"[tiab] and IRX2[tiab] AND antisense[tiab] as positive controls in the literature script. They are not controls, they are comparators, and both returned zero, which made the script print controls_all_positive: False and briefly look like an instrument failure. The genuine positive controls all returned large values. A control that can legitimately be zero is not a control.
  • 🔴 And the largest error, caught by the coordinator's own audit within the hour: I reported C4orf36's row as displaced by 42,310 bp. It is not displaced at all. I computed the displacement against a UCSC track query restricted to chr4:86,915,000-86,945,000 — a window that by construction cannot contain the matching transcript at 86,892,422 — and then took min(observed TSSs) as the nearest. Every step ran correctly and the answer was manufactured by the filter that defined the query. A filter must report what it removed. The finding the error supported — a current C4orf36 TSS 269 bp from AFF1's, invisible to the project's table — is unchanged; only the reason it is invisible changed, from stale to one row per symbol, and the corrected reason is the one that cannot be fixed by refreshing anything.
Facts and figures
scriptanalyses/q155-can-an-aff1-promoter-measurement-be-attributed/q155_geometry.py
statusrun
result summaryQ153's GeneID and 92.45% confirmed; the window contains three genes' TSSs under current annotation, one of them protein-coding and present in the project's table under a DIFFERENT one of its own three TSSs, 42,579 bp away. CORRECTED same cycle: the row is not displaced (d_nearest = 0); C4orf36 has three current TSSs spanning 43,782 bp and the table has room for one.
project aff1 window 0basedchr4:86934001-86936001
tss inside window
C4orf3686,934,732C4orf36: 86934732AFF1-AS1 / ENSG0000028496886,934,850AFF1-AS1 / ENSG00000284968: 86934850AFF186,935,001AFF1: 86935001
measurements
n_genes_with_a_tss_in_the…3.000n_genes_with_a_tss_in_the_window: 3promoter_window_overlap_p…92.5promoter_window_overlap_pct: 92.45aff1_gencode_tss_spread2,409aff1_gencode_tss_spread: 2409c4orf36_tss_span42,579c4orf36_tss_span: 42579
inputs
[
  "NCBI Gene esearch+esummary",
  "HGNC REST",
  "UCSC hg38 refGene",
  "UCSC hg38 ncbiRefSeq",
  "UCSC hg38 knownGene (GENCODE)",
  "Ensembl REST GRCh38",
  "C:/Temp/q145irx1/promoters.tsv"
]
tss inside window — the numbers behind the chart
[
  {
    "symbol": "C4orf36",
    "tss": 86934732,
    "strand": "-",
    "coding": true,
    "source": "current ncbiRefSeq NM_001414641/642, NR_183021/022; GENCODE ENST00000473559"
  },
  {
    "symbol": "AFF1-AS1 / ENSG00000284968",
    "tss": 86934850,
    "strand": "-",
    "coding": false,
    "source": "refGene and ncbiRefSeq NR_038841; Ensembl ENST00000509262 at 86934542"
  },
  {
    "symbol": "AFF1",
    "tss": 86935001,
    "strand": "+",
    "coding": true,
    "source": "refGene NM_001166693; current ncbiRefSeq puts it at 86935010; GENCODE spans 86934202-86936610"
  }
]
tss just outside window
[
  {
    "symbol": "C4orf36 long / ENSG00000284968",
    "tss": 86936204,
    "strand": "-",
    "bp_outside": 203
  }
]
measurements — the numbers behind the chart
[
  {
    "quantity": "n_genes_with_a_tss_in_the_window",
    "subject": "distinct gene symbols with an annotated TSS inside chr4:86,934,001-86,936,001",
    "value": 3,
    "units": "genes",
    "n": 4,
    "universe": "union of UCSC hg38 refGene, UCSC hg38 ncbiRefSeq, UCSC hg38 knownGene (GENCODE) and Ensembl REST GRCh38 transcript features over chr4:86,915,000-86,945,000",
    "null": 1,
    "note": "the project's promoter table asserts 1 (AFF1); Q153's full-annotation audit found 2; the current release gives 3"
  },
  {
    "quantity": "promoter_window_overlap_pct",
    "subject": "AFF1's 2 kb window against an equivalent window at its nearest neighbour, under four annotation readings",
    "value": 92.45,
    "units": "percent of a 2,000 bp window",
    "n": 4,
    "universe": "refGene AFF1-AS1 92.45%; NCBI Gene-level AFF1-AS1 91.95%; current ncbiRefSeq C4orf36 86.10%; Ensembl gene-level antisense lncRNA 0.05%",
    "null": 21.6,
    "note": "the spread across annotations, 0.05 to 92.45, is larger than the distance from any of them to the null"
  },
  {
    "quantity": "aff1_gencode_tss_spread",
    "subject": "range of annotated AFF1 transcript start positions in GENCODE",
    "value": 2409,
    "units": "bp",
    "n": 24,
    "universe": "UCSC hg38 knownGene, 24 AFF1 transcripts, starts 86,934,202 to 86,936,610",
    "null": 2000,
    "note": "the null here is the width of the window itself: AFF1's own TSSs do not fit inside the window used to measure AFF1's promoter"
  },
  {
    "quantity": "c4orf36_tss_span",
    "subject": "distance from the C4orf36 TSS this project scores to the nearest C4orf36 TSS to AFF1 - both current, both curated, same gene",
    "value": 42579,
    "units": "bp",
    "n": 3,
    "universe": "UCSC ncbiRefSeqCurated chr4:86,800,000-87,000,000: C4orf36 has 20 curated transcripts at three TSSs, 86,892,422 (13 transcripts, the one promoters.tsv scores), 86,934,732 (4) and 86,936,204 (3)",
    "null": 0,
    "note": "CORRECTED same cycle. This measurement first read 'c4orf36_tss_displacement = 42310' and asserted the project's row was stale. It is not: d_nearest = 0. The gene has three TSSs and the table has one row, which is a schema limit, not annotation drift. Found by the Q156 whole-table audit (1.83% displaced against 14.69% multi-TSS) and re-verified here over a 200 kb query"
  }
]
How this could bite us back
  • Every locus-selectivity argument in this project that rests on 'no other gene's promoter is nearby' was made against a table that cannot see NR_-only neighbours and against an annotation snapshot that predates the transcripts creating the worst case found so far. Target-selection lists filtered that way inherit both blind spots.
Still open
  1. How many of the 19,404 rows in this project's promoter table have a current-annotation TSS more than 1 kb from the snapshot TSS the row uses? This is one join of promoters.tsv against the live ncbiRefSeq track and it bounds the whole class of error this entry documents. It has not been run.
  2. How many rows have a NON-table gene's TSS inside their window under the CURRENT annotation rather than the 2020 one? Q153 measured 21.6% against the snapshot; the current-release figure is necessarily higher and nobody knows by how much.
  3. Are the three TSSs inside AFF1's window three promoters or one initiation region modelled three ways? No 5'-end data has been consulted, and the answer changes whether this is a biology finding or an annotation finding.
Every source behind this entry (4)
  1. E1established confidence 5 of 5: Multiple independent lines of evidence; treated as settled in the field.dataset

    AFF1-AS1's NCBI GeneID is 100506746 and the 2 kb promoter-window overlap between AFF1 and AFF1-AS1 under the project's refGene snapshot is 92.45% from a 151 bp TSS separation - both figures carried into this beat as unverified premises and both re-derived and confirmed from independently fetched NCBI, HGNC and UCSC records.

    Q155 geometry re-derivation from six independently fetched annotation routes · Iqbal Lab oncofusion knowledge graph, beat Q155 · this project 2026
    What this evidence cannot show

    'Confirmed' here means the same numbers come out of records fetched in a fresh session through esearch, esummary, HGNC REST and the UCSC track API, with the coordinate conventions stated in the script header. It does not mean the numbers are annotation-independent - E2 shows they are not. The 151 bp is a 0-based difference; counted in 1-based coordinates the TSS-to-TSS distance is 152 and the intervening sequence is 151 bp.

    Evidence that argues against this (1)
    • Confirming a premise is the weakest possible outcome of a verification step and should not be reported as a finding on its own. The finding is E2, which the confirmation made possible by removing the obvious alternative explanation for anything surprising downstream. NCBI Gene 2026
  2. E2established confidence 5 of 5: Multiple independent lines of evidence; treated as settled in the field.database

    The project's 2 kb AFF1 promoter window chr4:86,934,001-86,936,001 contains the TSSs of three distinct genes under current annotation - C4orf36 at 86,934,732 (minus, protein-coding, four current RefSeq transcripts), AFF1-AS1 at 86,934,850 (minus, non-coding) and AFF1 itself - and AFF1's own GENCODE transcript starts span 86,934,202 to 86,936,610, a 2,409 bp range wider than the window.

    UCSC Genome Browser hg38 refGene, ncbiRefSeq and knownGene tracks over chr4:86,915,000-86,945,000, plus Ensembl REST gene and transcript overlaps for 4:86,915,000-86,945,000 · UCSC Genome Browser api.genome.ucsc.edu; Ensembl REST rest.ensembl.org · UCSC Genome Browser / Ensembl 2026
    What this evidence cannot show

    A TSS in an annotation is a transcript-model start, not a demonstrated initiation site; three annotated TSSs within 300 bp may be three models of one initiation region rather than three promoters. Nothing here shows that C4orf36, AFF1-AS1 and AFF1 are independently initiated in any cell, and a 5'-end assay would be needed to say so. The claim made is about what the annotations contain and therefore about what a window-based measurement cannot separate, which is a claim about the instrument.

    Evidence that argues against this (1)
    • Under the ANNOTATION THIS PROJECT ACTUALLY USES - the 2020 hg38 refGene snapshot - the window contains exactly two TSSs, AFF1's and AFF1-AS1's, and Q153's description of it is complete and correct. The three-gene reading requires the current NCBI release. So this is a finding about annotation drift as much as about the locus, and an entry that presented it as 'Q153 was wrong' would be wrong itself. UCSC Genome Browser et al. 2026
  3. E3moderate confidence 3 of 5: One strong study, or several smaller consistent ones.dataset

    A fourth annotated TSS - shared by the long C4orf36 transcripts (NM_001414639/640, NR_183020) at chr4:86,936,204 and by Ensembl's unnamed antisense lncRNA ENSG00000284968 at 86,936,202 - lies 203 bp outside the upper edge of the project's AFF1 window, and the 50 bp bin containing it carries the maximum KMT2A-N coverage in the whole 6 kb interval chr4:86,932,500-86,938,500.

    Q155 50 bp base-resolution profile across chr4:86,932,500-86,938,500 over all 133 GSE252378 libraries · Iqbal Lab oncofusion knowledge graph, beat Q155 · this project 2026
    What this evidence cannot show

    The profile is a mean over 54 KMT2A-N libraries of within-sample shares, so a single extreme library can move it; the per-sample scoring in the sibling entry shows the peak is present in 23 of 27 samples and is not one outlier. The coincidence of the coverage maximum with an annotated TSS is suggestive and not causal - an IgG hotspot sits 150-250 bp further on, and this stretch of chromosome is generically accessible.

    Evidence that argues against this (1)
    • Two annotations placing a TSS within 2 bp of each other is weaker evidence than it looks, because Ensembl's ENSG00000285458 is sourced FROM NCBI Gene 132989. The two are not independent observations of the same initiation site; they are one model propagated between databases. Ensembl REST API et al. 2026
  4. E4strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.dataset

    The project's C4orf36 promoter row is NOT displaced: its TSS 86,892,422 is one of the symbol's three current curated TSSs and carries 13 of its 20 curated transcripts, so d_nearest = 0; a whole-table audit of all 19,404 rows against the current ncbiRefSeqCurated finds 81.63% TSS-identical, 1.83% genuinely displaced, and 14.69% of symbols carrying multiple non-overlapping TSSs with a median span of 21,291 bp.

    What this evidence cannot show

    Q156's audit is cited as the source that CORRECTED this entry, and its C4orf36 result was independently re-checked by this beat against the UCSC ncbiRefSeqCurated track over chr4:86,800,000-87,000,000 before the correction was applied - it is not taken on report. Q156's whole-table figures (81.63%, 1.83%, 14.69%) are quoted and were NOT re-derived here, and should be re-run before being used as load-bearing quantities elsewhere.

    Evidence that argues against this (1)
    • Q156 also independently reproduced Q153's sharing census on a different annotation release with a different implementation - 14.19% within-table against Q153's 14.37%, and 22.63% full-annotation against Q153's 21.60%. So the 21.6% this entry quotes as a null is reproducible and is not a snapshot artefact, which strengthens rather than weakens the attribution problem described here. UCSC Genome Browser et al. 2026
Connected to