KARAM BIOSCIENCE · COMPUTATIONAL EVIDENCE · V0.9

Same samples.
Different preprocessing.

A raw-IDAT experiment on 128 duplicate pairs, followed by a separate four-donor EPIC stress test.

Raw disagreement fell; measurement improvement is not established.

Duplicate RMS disagreement fell 22%, while between-donor score spread fell 29%. Median absolute duplicate disagreement was essentially unchanged (1.42 → 1.43 years). The improvement may partly reflect compressed scores rather than better preserved biological information. An exploratory scale check gives 0.779/0.712 = 1.095: disagreement relative to between-donor spread increased about 9.5%. Neither spread nor age correlation establishes functional validity.

Met the prespecified operational criterion. PCHorvath1 P2Q/deposited disagreement ratio: 0.779; conditional 99% interval 0.693–0.905. The target was a point estimate below 0.8 with the upper interval below 1. A minimum true 20% reduction requires the upper interval below 0.8.

What was actually tested

All 256 GSE174422 arrays, representing 128 female donors in the supplied metadata, were processed from their raw IDAT files. P0 is the deposited ENmix matrix. P1 is single-sample noob. P2Q is an explicitly adapted Lehne intensity-normalization method. It is not an exact reconstruction of the control-probe-adjusted GSE55763 example.

The protocol and initial model hashes were frozen before inspecting new-pipeline or external clock scores. A later primary-source check corrected the original skin-and-blood intercept through a dated amendment; the primary endpoints were unaffected. Earlier exploratory results informed the choices. This was a local timestamped protocol, not public preregistration; implementation was completed and debugged afterward.

Same-array results

Primary measure S = √[mean((duplicate 1 − duplicate 2)²)/2]. It includes disagreement bias and is invariant to pair-label swaps. It is not automatically an independent per-array error SD. Table intervals are paired donor-bootstrap 99% intervals conditional on the fitted normalization; other clocks and noob are secondary.

ClockUnitDeposited SNoob SP2Q SP2Q / deposited (99%)Arrays >5% missing
Horvath1y2.1322.6301.6200.760 (0.663–0.849)1
PCHorvath1y1.8782.0631.4630.779 (0.693–0.905)1
Horvath2y1.4951.7631.3060.874 (0.636–1.207)1
PCHorvath2y1.8602.1441.1800.634 (0.515–0.764)1
Hannumy2.2741.7551.4260.627 (0.506–0.779)1
PCHannumy1.4742.3300.9720.660 (0.533–0.791)1
PhenoAgey2.9372.2132.1980.748 (0.536–1.071)1
PCPhenoAgey1.4980.8780.7670.512 (0.343–0.779)1
DNAmTLkb0.0550.0590.0490.880 (0.716–1.058)1
PCDNAmTLkb0.0290.0360.0311.078 (1.012–1.158)1
Same-array pipeline ratios and external PC-to-original ratios with conditional descriptive intervals
Left: same-array PC-clock disagreement. Right: PC versus original within-donor SD; faint dots show individual donors. * Original-clock probe coverage is below 95%; the family is exploratory. Intervals do not represent full deployment uncertainty.

Did lower disagreement preserve donor differences?

These checks detect gross loss of signal; they do not establish preserved health information, treatment responsiveness, or functional validity. Correlation with age is not the primary endpoint.

PC clockAge r: deposited → P2QDonor-mean r with baselineBetween-donor SD ratioFixed 126-pair QC ratio
PCHorvath10.819 → 0.8080.9840.7120.798 (0.716–0.902)
PCHorvath20.762 → 0.7460.9850.7110.694 (0.620–0.779)
PCHannum0.875 → 0.8670.9910.7240.753 (0.702–0.803)
PCPhenoAge0.779 → 0.7850.9960.7150.708 (0.634–0.792)
PCDNAmTL-0.682 → -0.6740.9940.7531.068 (1.006–1.146)

External EPIC stress test

GSE250556 contains four donors, eight independently prepared replicates and eight donor-specific pooled aliquots each. The arms share donors and source material. The sole primary preprocessing pipeline was noob. SDs are in years for age clocks and predicted kilobases for DNAmTL; these are not direct telomere-assay error estimates. Four donors and shared slides make the bootstrap intervals descriptive, even with the nominal three-endpoint Bonferroni adjustment.

External finding: PCPhenoAge reduced within-donor SD by 61%, and PCDNAmTL by 73%, among independent preparations. Both ratios were below one in each of the four donors. This supports repeatability in this dataset, not population-wide performance or biological validity.

Independent preparations

FamilyOriginal SDPC SDPC / originalDescriptive 98.33% intervalDonor rangeStatus
Horvath12.6500.4430.1670.123–0.3820.117–0.391Exploratory: insufficient original-probe coverage
Horvath21.7650.6390.3620.148–1.3170.121–1.478Descriptive family
Hannum1.0610.6210.5850.284–0.9100.220–1.025Exploratory: insufficient original-probe coverage
PhenoAge1.9540.7660.3920.242–0.6190.182–0.672Primary family; coverage eligible
DNAmTL0.0510.0140.2690.198–0.3170.185–0.327Primary family; coverage eligible

Pooled aliquots

FamilyOriginal SDPC SDPC / originalDescriptive 98.33% intervalDonor rangeStatus
Horvath13.2540.3760.1150.094–0.2700.094–0.295Exploratory: insufficient original-probe coverage
Horvath24.9830.5210.1050.058–0.5980.053–0.662Descriptive family
Hannum1.4831.0300.6950.342–0.8900.339–0.926Exploratory: insufficient original-probe coverage
PhenoAge2.1701.3230.6090.242–0.7210.224–0.731Primary family; coverage eligible
DNAmTL0.0440.0140.3050.195–0.4140.169–0.430Primary family; coverage eligible

Hannum is not a clean external primary test: EPIC lacks 6/71 original probes, exceeding the frozen 5% structural-missingness limit. Its PC version has all 78,464 inputs. The available assay inputs also lack 18/353 original Horvath 2013 probes (5.10%). Two additional gaps were caught by comparing the genomic annotation, assay manifest and raw-channel addresses; Horvath 2013 remains descriptive. All PC inputs are present. The three-comparison budget was retained; no replacement clock was selected. Masking these same probes in the complete 450K data changes original Hannum disagreement by a factor of 0.937. This sensitivity does not recover the missing external measurements.

External donor-spread check

For independent preparations, PCPhenoAge and PCDNAmTL have between-donor SDs 11% and 18% larger than their originals, respectively. Their lower within-donor SD is therefore not accompanied by gross compression of the four donor means. Four ages and four donors cannot establish preserved biological signal or clinical validity.

ArmFamilyPC / original between-donor SDAge r: original → PC
independentPhenoAge1.1131.000 → 0.989
independentDNAmTL1.184-0.772 → -0.954
pooledPhenoAge1.1290.998 → 0.987
pooledDNAmTL1.212-0.851 → -0.957

External QC sensitivity

The earlier whole-array rule (>1% of probes with detection P>0.01) excludes 1 array(s). This is a secondary transfer of the rule to EPIC; primary results retain all arrays. No external outcome was used to optimize the threshold.

ArmFamilyAll-array ratioAfter array QC
independentHannum0.5850.585
independentPhenoAge0.3920.392
independentDNAmTL0.2690.269
pooledHannum0.6950.399
pooledPhenoAge0.6090.304
pooledDNAmTL0.3050.286

ENmix ablation and baseline reproduction

The new full implementation uses explicit out-of-band background correction, RELIC, ENmix quantile1 normalization, and RCP. The two branches share the same background-corrected intensities. Historical software/settings remain uncertain. Reproduction checks below cover every measured clock input, not the entire methylome.

New branch vs depositedMaximum beta differenceRMS beta differenceAll values within 10⁻¹⁰
Full quantile0.015940.0001245False
No quantile0.32110.02428False

Score RMSE uses each clock’s native units. Both disagreement and between-donor spread are shown so that reduced variability is not automatically interpreted as better measurement.

PC clockFull vs deposited RMSENo-quantile vs deposited RMSENo-quantile / full S (99%)No-quantile / full donor SD
PCHorvath10.018932.8270.936 (0.746–1.225)1.005
PCHorvath20.020173.6641.025 (0.719–1.274)1.011
PCHannum0.0093473.0481.361 (1.001–1.574)1.024
PCPhenoAge0.0041052.0070.694 (0.452–1.219)1.019
PCDNAmTL0.00011330.032211.242 (1.013–1.600)1.019

No clear PCHorvath1 benefit from removing quantile normalization: no-quantile/full disagreement ratio 0.936 (99% conditional interval 0.746–1.225). Between-donor SD was nearly unchanged (ratio 1.005). Effects differed by clock: no-quantile point estimates lowered PCPhenoAge disagreement but raised PCHannum and PCDNAmTL disagreement. These are secondary, implementation-specific comparisons.

The full-quantile reconstruction is close to P0: PC age-clock score RMSEs are 0.004–0.020 years. It is not an exact reproduction, so the historical pipeline is not uniquely recovered. This experiment does not support attributing the historical cross-dataset reliability gap to quantile normalization.

Historical reconstruction

The ENmix primary paper describes quantile normalization as optional. The frozen protocol inherited a quantile-normalized label for P0, but that historical setting is unverified; the deposited matrix and primary comparison are unchanged. The full-quantile branch is much closer to P0 than the no-quantile branch, but numerical similarity does not uniquely establish the original software/settings.

The Lehne supplementary intensity scripts use Illumina background subtraction, a detection threshold of p<10⁻¹⁶, six intensity quantile groups and beta=M/(M+U+100). Their default sample call-rate threshold differs from the paper. Later scripts perform phenotype-adjusted EWAS regression. The PC-clock paper says the example was also control-probe adjusted; the exact clock-ready transformation remains unresolved. The erratum adds an author, rather than changing the method.

P2Q retains all arrays, normalizes autosomal and sex-chromosome strata separately, and does not regress out age, cell composition or control PCs. The >98% historical call-rate sensitivity retains 119 pairs and gives PCHorvath1 ratio 0.809 (99% conditional interval 0.729–0.917), missing the 0.8 point-estimate target. All 128 pairs remain primary. Other historical call-rate and fixed failed-array sensitivities are in the machine-readable results.

Verification and limits

Run independently checked in RArraysClock valuesMaximum absolute score discrepancy
external_noob646404.83e-13
internal_p2q25625601.3e-12

A clean extraction of the code and measured-input archive reproduced 5,760 score values across internal noob, internal P2Q and external noob within 2.2×10⁻¹⁴. All 30 input checksums matched and all 17 tests passed. Recomputing P0 from its measured inputs with the corrected models also matched all 2,560 baseline values within 1.5×10⁻¹⁴. These Python reproductions are separate from the full-rotation native-R checks above.

Python uses collapsed PC weights; native R multiplies through the published full rotations. All measured input files, parameter sources, versions, execution interruptions and protocol hashes are recorded. ENmix used a memory-saving parallel-dispatch wrapper for the final 160 arrays; all published numerical function bodies and settings were retained. A full 16-array, 78,826-probe check against standard ENmix matched within 5.6×10⁻¹⁶. R/Python agreement checks arithmetic; the separate primary-source coefficient audits check model specification. The original Horvath scoring here does not add the online calculator’s normalization. All 71 Hannum coefficients match the PC authors’ reference file exactly. All 513 PhenoAge weights and its intercept match the primary published supplement exactly. Primary-source extraction found and corrected an omitted −0.447119319 original skin-and-blood intercept. The initial frozen model is retained with a dated amendment. This correction affects the original skin-and-blood scorer; the published PC figure-centering convention is a separate issue. Adult absolute scores were 9.389505699 years too high; adult-branch duplicate differences are unchanged. All 391 weights match exactly. Missing values use fixed references, never means refit on the external cohort.

Shared normalization, unrecorded batch effects, an all-female internal cohort, four external donors, imputation and conditional intervals limit generalization. These experiments measure technical disagreement. They do not measure day-to-day biological variation, clinically meaningful change or reversal of aging.

Primary sources