Aging Clocks Catalog · Implementations and feasibility
Use existing tools; understand access limits
Finding a paper or repository is only the first step. A reproducible result needs the exact data, implementation, reference parameters and permissions.
This page does not calculate your age. It provides existing-tool pointers, source-code findings and a fixed synthetic example. There is no calculator, upload form, personal-health-data workflow or restricted-weight download.
Existing tools—and the limits of access
| Resource | Useful role | What public access does not establish |
|---|---|---|
| BioAge R package | Clinical Phenotypic Age, KDM and homeostatic-dysregulation workflows, with training and projection treated separately. [T01] | DESCRIPTION 0.1.0 declares GPL-3. Relevant calculation files were read, not executed. Reference fits/data and redistribution obligations still require review. |
| Biolearn | Model selection, loading, imputation, quality control and evaluation documentation. [T02] | Documentation does not prove all models, weights and datasets share one licence or can run in every environment. No package run or rights audit was performed. |
| pyaging | Public documentation/source pointer for a broader implementation catalogue. [T03] | The “latest” route is mutable; rendered documentation differed between review snapshots. No immutable executable version is asserted. |
| ProteoClock | Documents proteomic models and Olink-format inputs. [SC3] | galkin_2025 / best_clock.pt weights are restricted to registered UK Biobank researchers inside RAP; local download/copy/storage is prohibited by the observed README. ProtAge and the Han model have author-request paths. No unrestricted six-model reproduction is established. |
| OMICmAge software routes | Publication supplies development/validation code and a software-request route. [M21] | Described software licence is for academic/nonprofit research with restrictions; data/algorithm agreements may be needed. Not authorization for public-calculator or commercial redistribution; no request was made. |
You may be able to inspect the method and code.
You still need the exact weights, preprocessing, references, environment and permission for the intended use.
Three source-code findings that matter
Phenotypic Age: BioAge’s phenoage_calc.R distinguishes a generic trained projection from an orig branch with published-style coefficients. Without a supplied fit, it begins a survival-model training path even when an original-score output is desired. It should not be copied into a one-person form as though it were only a fixed formula.
KDM: in kdm_calc.R, a supplied fit with unspecified s_ba2 can still estimate biological-age variance from the projection sample. A frozen one-person implementation requires the biomarker regressions and that reference variance. Permissive missingness is not permission to invent laboratory values.
Homeostatic dysregulation: hd_calc.R further scales raw Mahalanobis distance using the projection cohort’s dispersion and warns against single-row input. Choose and label a raw reference distance or an independently frozen scale; it is not a universal age in years. These findings are from source inspection, not package execution. [T01]
Inspected source-file versions
These file-level blobs identify the reviewed code, not a fully reproduced environment:
DESCRIPTION: 71186d645e38f53fc179faffd9bd94d555e4d5a6
phenoage_calc.R: 468e95b32b23a48566a8f3e266a4a103330c25ff
kdm_calc.R: 0ea6c1d1c2399e331fd6ebad2216648c42e7169a
hd_calc.R: 84d51d0121f2fdfbf98cc837e179e32f4317bc9d.
ProteoClock README: f41e85c59b1ffeec6b8da66fb7029dd4cd77f30a, observed 21 September 2026. Current repository links can change; a blob record alone does not pin the entire study workflow.
The three calculation files were reread on 22 September 2026 and remain unchanged at the listed blobs. Freezing a reference means fixing its parameters and final scale, not merely keeping the same software name. [R15]
A static clinical Phenotypic Age calculation
Synthetic inputs; not a real person. The original clinical specification requires chronological age plus nine laboratory measures. This is clinical Phenotypic Age, not DNAmPhenoAge, a current commercial product or an independently validated test vector. [M03; T01]
| Input | Value | Required unit / transformation |
|---|---|---|
| Chronological age | 50 | Years |
| Albumin | 45 | g/L |
| Creatinine | 80 | µmol/L |
| Glucose | 5 | mmol/L |
| C-reactive protein (CRP) | 0.1 | mg/dL before natural logarithm |
| Lymphocytes | 30 | % |
| Mean cell volume (MCV) | 90 | fL |
| Red-cell distribution width (RDW) | 13 | % |
| Alkaline phosphatase (ALP) | 70 | U/L |
| White-cell count (WBC) | 5 | 10³/µL |
Fixed coefficients and transformations
xb = −19.90667 − 0.03359355 × 45
+ 0.009506491 × 80 + 0.1953192 × 5
+ 0.09536762 × ln(0.1) − 0.01199984 × 30
+ 0.02676401 × 90 + 0.3306156 × 13
+ 0.001868778 × 70 + 0.05542406 × 5
+ 0.08035356 × 50
= −9.12847527
m = 1 − exp(−1.51714 × exp(xb) / 0.007692696)
= 0.02117684
Score = ln(−0.0055305 × ln(1−m)) / 0.090165 + 141.50225
= 41.2234 score-years
The fixed arithmetic was rechecked on 22 September 2026: 41.2234126846 score-years, confirming the displayed 41.2234. The inspected original coefficient branch and invented inputs were used; the R package was not executed. The result does not prove that an illustrative 50-year-old is biologically 41, supply a personal prognosis or validate the model independently.
An algebraically equivalent form avoids saturation of the nested exponential/logarithm calculation:
Score = [xb + ln(0.0055305 × 1.51714 / 0.007692696)]
/ 0.090165 + 141.50225
The two expressions agree on this fixture. Finite arithmetic at an extreme input is only a numerical check, not evidence that the model is biologically valid there. These self-consistency checks still need an independent authoritative reference output before a demonstrator is validated. [R15]
Use the required unit before taking its natural logarithm.
Entering the mg/L number as mg/dL makes CRP ten times too large without changing the specimen.
Changing calendar age alone changes this score
Fixed synthetic check, same nine laboratory values: increase only the entered chronological age from 50 to 51 in the inspected BioAge original branch. The score increases by 0.08035356 / 0.090165 = 0.8911834969 score-years; score minus chronological age decreases by 0.1088165031 gap-years. Nothing in this example changes a measured analyte. [R15]
The age coefficient mechanically advances the output.
Calendar age advances by more than the computed score, so the gap falls.
No KDM number is supplied merely to create a two-clock display. A named fixed reference fit and independently checked outputs are missing. Supplying an invented fit would change the estimator rather than complete the example.
What is ready—and what still needs gates?
| Status | Useful scope | Required boundary |
|---|---|---|
| Ready as static content | Explanations, source/access links and labeled arithmetic examples. | No personal inputs, unsupported precision, purchase funnel or treatment optimization. |
| Conditional: synthetic clinical example | Clinical Phenotypic Age first; one fixed KDM only after exact parameters and reference outputs exist. | Immutable source/coefficient pins, units/transforms, domain and complete-input behavior; independent authoritative reference calculation; numerical-stability and version tests. |
| Not ready | Broad health-data upload, reproducing all commercial reports or a public six-proteomic-clock calculator. | Unresolved assays, preprocessing, weights/rights, unpinned trial artifacts and unsupported personal inference are substantive barriers—not just coding work. |
Tests that must pass before a synthetic demonstrator
| Gate | Test and pass condition | Failure behavior |
|---|---|---|
| Input identity and units | Use named features and exact units. Equivalent supported unit representations must yield the same result after explicit conversion; convert CRP before logging. Test missing, impossible, out-of-domain and nonpositive log inputs. | Reject unsupported inputs. Do not fill a missing biomarker with a convenient population mean. |
| Frozen reference | Pin KDM regressions and s_ba2; pin HD transformations, reference mean/covariance and output scale. Distinguish training from projection. | Withhold a one-person output from an implementation that still estimates parameters from the projection cohort. |
| Row, column and batch-composition invariance | Keep named inputs and references fixed; reorder rows/columns, add unrelated records, and process the same fixture alone or in a different computation batch. Its result must stay unchanged within a declared numerical tolerance. | Treat a change as a pipeline defect or a differently defined estimator. This is a software test, not proof of physical assay-batch invariance. |
| Independent reference outputs | Reproduce the fixed checks above, then an independent authoritative test vector. Document expected outputs, rounding, tolerances and stability behavior for the pinned version. | Do not label agreement with one’s own algebra as independent validation. |
| Uncertainty and access | State the intended units and applicable uncertainty—or explicitly leave individual-change uncertainty unestablished. Verify permission and actual data/network behavior for the proposed use. | No invented confidence band, retest interval, lifespan conversion, restricted weights or unsupported personal uploads. |
These gates follow the inspected reference-dependent code paths and fixed synthetic checks. A score-level clinical change interval would additionally need covariance in the transformed input units and across visits; the current fixtures do not supply it. [R15] Why assay precision alone is insufficient.
A privacy review must verify actual network and logging behavior even for a “browser-local” tool. Rights, regulatory and deployment review remain separate; no blanket legal clearance is asserted here. The present scope remains static and synthetic.
Sources and reading limits
Source labels distinguish primary research, seller documents and implementation notes. Inherited M/SC/T source observations are from 21 September 2026; added R source observations are from 22 September 2026. Calculation checks do not constitute model or clinical replication.
T01. BioAge R package README and relevant source files inspected, not executed. DESCRIPTION 0.1.0 declares GPL-3; package paper was identified, not independently read.
T02. Biolearn documentation Overview, model, imputation and evaluation resources inspected; no installation or per-model rights audit.
T03. pyaging documentation Mutable documentation/source pointer; no immutable executable version claimed.
SC3. ProteoClock README First-party access description observed 21 September 2026; inspected blob f41e85c59b1ffeec6b8da66fb7029dd4cd77f30a. Exact release-to-trial pin and full licence tree not audited.
M21. Chen et al. (2026), OMICmAge Published 25 February 2026. Primary development, external validation, replicate, limitation, access and conflict sections; sponsored/company-affiliated work with patent interests.
M03. Levine et al. (2018), An epigenetic biomarker of aging for lifespan and healthspan Clinical selection, units/coefficient table, methylation stage and validation passages inspected; no raw-data reanalysis.
R15. BioAge calculation sources: phenoage_calc.R, kdm_calc.R and hd_calc.R. Complete files reread on 22 September 2026; the inspected blobs remain those listed above. Fixed synthetic arithmetic was checked separately; the R package was not run and no independent author-supplied reference vector or service-specific covariance was obtained.
Next: Check a model against your study’s inputs or learn how units and uncertainty affect interpretation.