Refresh citation counts and audited metadata (2026-10-02)
Browse files- README.md +2 -1
- config.json +3 -3
- linage2.pt +1 -1
README.md
CHANGED
|
@@ -1,5 +1,4 @@
|
|
| 1 |
---
|
| 2 |
-
license: mit
|
| 3 |
library_name: pyaging
|
| 4 |
tags:
|
| 5 |
- pyaging
|
|
@@ -12,6 +11,8 @@ tags:
|
|
| 12 |
|
| 13 |
Principal-component clinical clock trained on 20-year mortality in the NHANES IV 1999-2000 wave and tested in the 2001-2002 wave. The 59 model features are log transformed where the reference specifies, robustly z-scored by sex against a healthy 40-50 year old NHANES reference, and folded at 6 MAD-scaled units; the folded vector is projected onto sex-specific singular vectors and scored by a sex-specific Cox model, so male and female samples run through entirely separate parameter sets. Chronological age is supplied in years and enters the Cox terms in months, where it is a genuine covariate rather than a cancelling offset. Sex is coded female = 1 and male = 0; a dataset with no female column scores every sample with the male parameters. C-reactive protein is supplied raw in mg/dL and takes a plain natural log with no floor, so a reading below detection coded as 0 folds to the -6 cap instead of being clamped the way the BioAge clocks clamp it. The input contract is wider than the 59 model features: total cholesterol, HDL cholesterol and triglycerides are consumed only by the Friedewald LDL and are not features themselves, and 26 questionnaire codes feed the comorbidity, self-reported-health and healthcare-use indices. An absent questionnaire block is the main hazard and it biases the estimate downward. The substituted values are the reference cohort's median profile everywhere except the comorbidity index: answering no to all 22 conditions gives 0 where the cohort's median is 1/22, so that one feature is substituted marginally healthier than the median. It costs almost nothing, because the index's entire 0 to 1 range moves the estimate by only 0.06 years. The self-reported-health index is what does the damage: its substitute of good, unchanged health is exactly the cohort median, and a subject who would have reported poor and worsening health reads about 5.3 years younger than they should. The healthcare-use index is the raw NHANES 1999-2000 HUQ050 code (0 = none, 1 = 1, 2 = 2 to 3, 3 = 4 to 9, 4 = 10 to 12, 5 = 13 or more visits), so its valid range is 0 to 5 and the fold at 6 never fires on it; the 0 to 8 HUQ051 scale of later NHANES cycles must be collapsed onto it first (3 to 5 -> 3, 6 -> 4, 7 and 8 -> 5) or healthcare use is overstated. Substituting its median code of 2 for a subject who made 13 or more visits moves the male estimate up by about 0.35 years and the female estimate down by about 1.9 years. An absent lipid panel substitutes a total cholesterol chosen so that the derived LDL lands on the reference median, avoiding the reference implementation's hard 0 mmol/L substitution; a NaN inside a lipid column that is present still takes that hard 0 path and lowers the estimate by roughly 0.35 years. The range check cannot see this at all: it resolves ranges over the clock's declared input features, and the comorbidity, self-reported-health and healthcare-use indices are derived inside the model rather than supplied, so no range check ever applies to them. Heed the missing-feature warning the prediction pipeline emits; for this clock it is the only signal that the questionnaire block was absent.
|
| 14 |
|
|
|
|
|
|
|
| 15 |
| | |
|
| 16 |
|---|---|
|
| 17 |
| **Predicts** | biological age |
|
|
|
|
| 1 |
---
|
|
|
|
| 2 |
library_name: pyaging
|
| 3 |
tags:
|
| 4 |
- pyaging
|
|
|
|
| 11 |
|
| 12 |
Principal-component clinical clock trained on 20-year mortality in the NHANES IV 1999-2000 wave and tested in the 2001-2002 wave. The 59 model features are log transformed where the reference specifies, robustly z-scored by sex against a healthy 40-50 year old NHANES reference, and folded at 6 MAD-scaled units; the folded vector is projected onto sex-specific singular vectors and scored by a sex-specific Cox model, so male and female samples run through entirely separate parameter sets. Chronological age is supplied in years and enters the Cox terms in months, where it is a genuine covariate rather than a cancelling offset. Sex is coded female = 1 and male = 0; a dataset with no female column scores every sample with the male parameters. C-reactive protein is supplied raw in mg/dL and takes a plain natural log with no floor, so a reading below detection coded as 0 folds to the -6 cap instead of being clamped the way the BioAge clocks clamp it. The input contract is wider than the 59 model features: total cholesterol, HDL cholesterol and triglycerides are consumed only by the Friedewald LDL and are not features themselves, and 26 questionnaire codes feed the comorbidity, self-reported-health and healthcare-use indices. An absent questionnaire block is the main hazard and it biases the estimate downward. The substituted values are the reference cohort's median profile everywhere except the comorbidity index: answering no to all 22 conditions gives 0 where the cohort's median is 1/22, so that one feature is substituted marginally healthier than the median. It costs almost nothing, because the index's entire 0 to 1 range moves the estimate by only 0.06 years. The self-reported-health index is what does the damage: its substitute of good, unchanged health is exactly the cohort median, and a subject who would have reported poor and worsening health reads about 5.3 years younger than they should. The healthcare-use index is the raw NHANES 1999-2000 HUQ050 code (0 = none, 1 = 1, 2 = 2 to 3, 3 = 4 to 9, 4 = 10 to 12, 5 = 13 or more visits), so its valid range is 0 to 5 and the fold at 6 never fires on it; the 0 to 8 HUQ051 scale of later NHANES cycles must be collapsed onto it first (3 to 5 -> 3, 6 -> 4, 7 and 8 -> 5) or healthcare use is overstated. Substituting its median code of 2 for a subject who made 13 or more visits moves the male estimate up by about 0.35 years and the female estimate down by about 1.9 years. An absent lipid panel substitutes a total cholesterol chosen so that the derived LDL lands on the reference median, avoiding the reference implementation's hard 0 mmol/L substitution; a NaN inside a lipid column that is present still takes that hard 0 path and lowers the estimate by roughly 0.35 years. The range check cannot see this at all: it resolves ranges over the clock's declared input features, and the comorbidity, self-reported-health and healthcare-use indices are derived inside the model rather than supplied, so no range check ever applies to them. Heed the missing-feature warning the prediction pipeline emits; for this clock it is the only signal that the questionnaire block was absent.
|
| 13 |
|
| 14 |
+
Model weights retain the original authors' terms; the pyaging software license does not relicense them.
|
| 15 |
+
|
| 16 |
| | |
|
| 17 |
|---|---|
|
| 18 |
| **Predicts** | biological age |
|
config.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
{
|
| 2 |
"approved_by_author": "\u231b",
|
| 3 |
"citation": "Fong, Sheng, et al. \"LinAge2: providing actionable insights and benchmarking with epigenetic clocks.\" npj Aging 11.1 (2025): 29.",
|
| 4 |
-
"citations":
|
| 5 |
-
"citations_date": "2026-
|
| 6 |
"clock_name": "linage2",
|
| 7 |
"data_type": "clinical biomarkers",
|
| 8 |
"doi": "https://doi.org/10.1038/s41514-025-00221-4",
|
|
@@ -32,6 +32,6 @@
|
|
| 32 |
"unit": [
|
| 33 |
"years"
|
| 34 |
],
|
| 35 |
-
"version": "0.5.
|
| 36 |
"year": 2025
|
| 37 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"approved_by_author": "\u231b",
|
| 3 |
"citation": "Fong, Sheng, et al. \"LinAge2: providing actionable insights and benchmarking with epigenetic clocks.\" npj Aging 11.1 (2025): 29.",
|
| 4 |
+
"citations": 7,
|
| 5 |
+
"citations_date": "2026-10-02",
|
| 6 |
"clock_name": "linage2",
|
| 7 |
"data_type": "clinical biomarkers",
|
| 8 |
"doi": "https://doi.org/10.1038/s41514-025-00221-4",
|
|
|
|
| 32 |
"unit": [
|
| 33 |
"years"
|
| 34 |
],
|
| 35 |
+
"version": "0.5.7",
|
| 36 |
"year": 2025
|
| 37 |
}
|
linage2.pt
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 76839
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9d5684e0c43ff201e44446de17346c25e7d97ff7500b7ef9cdb6a5b47ab75a5d
|
| 3 |
size 76839
|