KARAM BIOSCIENCE · CLOCKQC v0.10

Do 65 SNP probes explain the reconstruction mismatch?

The SNP-probe difference does not explain the remaining reconstruction error.

Including the SNP probes changed beta RMSE against the deposited matrix from 0.00012450136 to 0.00012541334, a ratio of 1.0073251 (+0.733%). Maximum absolute beta difference is 0.015949437. This comparison covers 256 arrays × 78,826 measured clock inputs, not the entire methylome.

The reconstructed values remain close to the deposit, but including SNP probes does not improve overall agreement. PCHorvath1 score RMSE against the deposit changes from 0.01893 to 0.01917 years; its duplicate disagreement S changes only from 1.87964 to 1.87952 years. This rejects SNP inclusion as the explanation for the observed residual under the tested settings. Exact historical reproduction remains unresolved.

Controlled comparison

The two branches use the same raw GSE174422 arrays, ENmix version, out-of-band background correction, RELIC, quantile1 normalization across all 256 arrays and RCP. The native included branch contains 485,577 loci; the prior excluded branch contains 485,512. The difference is exactly 25 type-I and 40 type-II SNP loci. None is a clock input, but inclusion changes the data used in preprocessing.

All common raw methylated/unmethylated intensities are checked for exact equality for every array. A two-array native SNP-excluded fixture reproduced the previous corrected intensities with maximum absolute difference 1.86×10⁻⁸ intensity units (tolerance 10⁻⁷). The control branch reuses the completed v0.9 corrected-intensity caches. A compatibility fix permits ENmix's getCGinfo to handle zero SNP rows: the type assignment uses a length-matched vector. Its behavior with SNP rows present is unchanged. The previously validated memory-saving parallel dispatcher is retained.

The shared-annotation storage round-trip is exact. The native SNP-inclusive quantile fixture matches the authors’ function with zero intensity difference. A separate SNP-excluded downstream normalization/RCP fixture matches v0.9 within 5.6×10⁻¹⁶ beta units, supporting equivalence of the native and minfi code paths. All 17 existing scoring/validation tests pass.

Clock-score reproduction

RMSE and maximum differences use native units: years for age clocks, predicted kilobases for DNAmTL. S = √[mean(duplicate difference²)/2], the same bias-inclusive disagreement measure as v0.9. Scores use the frozen, intercept-corrected v0.9 models.

ClockExcluded RMSE vs depositIncluded RMSE vs depositIncluded max errorExcluded SIncluded S
Horvath10.00832430330.00832693460.0251259812.132432.13241
PCHorvath10.0189267210.0191696670.035663591.879641.87952
Horvath20.0032830230.00337468150.0117483161.495661.49565
PCHorvath20.020174440.0205317790.039739331.863391.86317
Hannum0.00670049260.00623366860.0186783352.274642.27466
PCHannum0.00934664650.00919361540.0168460031.47451.47474
PhenoAge0.00802850850.00839917620.0266347462.93772.93776
PCPhenoAge0.00410543730.00408737840.0166046121.49821.49826
DNAmTL0.000351090690.000350857220.000690146980.05547150.0554749
PCDNAmTL0.000113262750.000113599990.000236627470.02867240.0286721

Exploratory duplicate-pair check

Using all 65 deposited SNP measurements, each of the 128 recorded duplicate pairs was a mutual nearest match among the 256 arrays under continuous beta-value RMSE. Median within-pair SNP RMSE was 0.02782; the maximum was 0.22882. This supports the recorded pairing, but is not a formal genotype identity assay and does not exclude all mix-ups or sample-quality problems. This post hoc diagnostic caused no exclusions and does not alter the primary comparison.

What this establishes

This is a post-v0.9 diagnostic chosen after discovering the input-probe mismatch. It tests numerical reconstruction under a specified implementation. It does not uniquely identify the historical software environment, establish a universal preprocessing advantage, or validate clinical aging changes. No arrays were dropped and no parameters were tuned to improve repeatability. The external EPIC results and the original frozen comparison are unchanged.

Reproduction

The accompanying package contains scripts, measured clock-input matrices, per-array scores, comparisons, source fingerprints and run logs. It depends on the pinned v0.9 runtime and clock model files; raw IDATs are identified by the existing v0.9 checksums. A full rerun includes background correction followed by whole-cohort normalization; a score-only rerun uses the supplied matrices.

Primary implementation references: ENmix; minfi guide; GSE174422.