Epigenetic Clock Calculator
Berechnet DNA-Methylierungs-basierte 'Aging Clocks' aus einer Beta-Wert-Datei. 25 Uhren stehen zur Verfügung; GrimAge ist die wichtigste.
In sich geschlossen. Benötigt nur pandas + numpy – kein biolearn, torch, seaborn, scipy oder network. Die Koeffizienten und Referenzen der Uhren sind in data/ enthalten (aus der Open-Source-Bibliothek biolearn extrahiert und auf die von den Uhren verwendeten CpGs reduziert, insgesamt ~1 MB). scripts/compute_clocks.py implementiert biolearns GrimageModel, LinearMethylationModel und die Quantilnormalisierung von DunedinPACE (mit einer numpy-only rankdata) originalgetreu nach und reproduziert biolearns Ergebnisse für alle 25 Uhren (auf <0,005 verifiziert, d. h. nur Rundungsfehler).
Die Uhren (führen Sie --list-clocks für die aktuelle Liste aus)
| Familie | Uhren | Einheit |
|---|---|---|
| GrimAge (2. Generation, Mortalität) | grimagev1, grimagev2 | Jahre (benötigt Alter+Geschlecht) |
| 1. Generation (chronologisch) | horvath, horvath2, hannum, lin, vidalbralo, weidner, garagnani, bocklandt | Jahre |
| 2. Generation (biologisches Alter) | phenoage, hrsinchphenoage | Jahre |
| Ying 2022 (Kausalität) | yingcausage, yingdamage, yingadaptage | Jahre |
| stochastische | stoch, stocp, stocz | Jahre |
| gewebespezifische | pedbe (pädiatrisch bukkal), cortical (Gehirn) | Jahre |
| 3. Generation (Alternsgeschwindigkeit) | dunedinpace, dunedinpoam | Jahre/Jahr |
| andere Marker | dnamtl (Telomerlänge in kb), zhang (Mortalität), epitoc1 (mitotische) | variiert |
Gruppenaliase für --clocks: all, grimage, core (Standard), firstgen, secondgen, thirdgen.
dunedinpace benötigt ~20.000 Hintergrund-CpGs für die Quantilnormalisierung (nicht nur die 173 Modell-CpGs). Bei einer spärlichen Eingabe imputiert sich die Fertigkeit die fehlenden Hintergrund-CpGs aus der Goldstandard-Referenz selbst; liegt die gemeldete Abdeckung deutlich unter ~90%, wird das Ergebnis von der Referenz dominiert und ist unzuverlässig – dies sollte mitgeteilt werden. Ein vollständiger EPIC/450K-Export deckt dies gut ab.
Wichtige Fakten zu GrimAge (damit Sie es richtig interpretieren)
GrimAge ist eine zweite Generation, mortalitätstrainierte Uhr: Sie schätzt DNAm-Surrogate für 7 Plasmaproteine + Rauch-Packungsjahre (V2 fügt DNAm A1C und CRP hinzu) und kombiniert diese dann mit chronologischem Alter und Geschlecht in einem Überlebensmodell. Alter und Geschlecht fließen direkt in die Formel ein, daher werden beide für jede grimage* Uhr benötigt. Die anderen Uhren benötigen sie nicht, aber die Angabe --age ermöglicht es, die Beschleunigung zu berechnen.
Arbeitsablauf
1. Eingabedatei inspizieren
Automatisch erkannte Formate: Lang (zwei Spalten: CpG-ID + Beta) oder Matrix (erste Spalte CpG-ID, restliche Spalten = Proben). Betas sind Gleitkommazahlen in [0,1]. Notieren Sie die Zeilenanzahl; die Abdeckung der CpGs jeder Uhr wird pro Uhr gemeldet.
2. Alter und Geschlecht ermitteln
Erforderlich für GrimAge. Ist nur eine Altersspanne bekannt, verwenden Sie den Mittelwert und führen Sie --sensitivity aus, damit der Benutzer sieht, wie stark das Ergebnis vom genauen Alter abhängt.
3. Abhängigkeiten prüfen (nur pandas + numpy)
python3 -c "import pandas, numpy" 2>/dev/null && echo OK || pip install pandas numpy
Keine venv, biolearn, torch oder Netzwerk erforderlich.
4. Ausführung
python3 <skill-verzeichnis>/scripts/compute_clocks.py \
--input "<betas.csv>" --age <jahre> --sex <m|f> \
--clocks all # oder: core (Standard), grimage, firstgen, secondgen oder bestimmte Schlüssel
# --sensitivity 40 42 47 49 # optional, wenn das genaue Alter unsicher ist
python3 <skill-verzeichnis>/scripts/compute_clocks.py --list-clocks # alle Schlüssel anzeigen
Das Skript imputiert fehlende Uhr-CpGs aus der mitgelieferten (reduzierten) Bevölkerungsreferenz data/sesame_450k_median.csv, führt jedes Modell aus und gibt eine Tabelle mit Wert, Beschleunigung (für Uhren mit Jahre-Einheit) und Abdeckung sowie eine JSON-Zeile für die weitere Verarbeitung aus.
5. Bericht und Interpretation
Führen Sie mit GrimAge an, dann den Vergleich. Geben Sie immer diese Hinweise:
- Open-Source-Neuimplementierung, nicht der offizielle Rechner. Die Werte ähneln denen von Horvaths offiziellem Server / Clock Foundation, sind aber keine zertifizierte Zahl. Für einen zitierfähigen Wert verweisen Sie auf den Horvath DNAm Age Calculator oder einen kommerziellen Anbieter.
- „Beschleunigung“ hier = Uhrwert − chronologisches Alter, eine einfache Differenz. Der akademische AgeAccel (Residuum vs. eine gleichaltrige Kohorte) benötigt eine Bevölkerungsstichprobe und kann für eine einzelne Person nicht berechnet werden – +8 bedeutet also „epigenetisch vorhergesagtes Alter ist 8 Jahre über dem chronologischen Alter“, nicht „8 Jahre älter als Gleichaltrige“.
- Generationen unterscheiden sich. 1. Generation (Horvath/Hannum/Lin/…) zielen auf das chronologische Alter ab und liegen meist nahe am wahren Alter. 2. Generation (GrimAge/PhenoAge) zielen auf Gesundheitsergebnisse ab und sagen Mortalität/Altern besser voraus – sie können durch ihr Design vom wahren Alter abweichen. Interpretieren Sie GrimAge nicht als „sieht N Jahre alt aus“; es ist ein Risikoscore in Jahren.
- Nicht-Jahresuhren (
dunedinpoamGeschwindigkeit,dnamtlTelomerlänge in kb,zhang/stoczMortalitätsrisiko,epitoc1mitotisch) sind keine Altersangaben – es wird keine Beschleunigung angezeigt. - Abdeckung / Imputation: Einige fehlende Uhr-CpGs, die aus einem Bevölkerungsmedian aufgefüllt werden, sind normal; kennzeichnen Sie Uhren, deren Abdeckung unter ~90% fällt. Die Spalte
n_lowconfin der Ausgabe zählt imputierte CpGs, deren Blut-Referenz-Standardabweichung > 0,08 beträgt (als unzuverlässige Füllungen zu werten) – ein pro-CpG-Signal, das schärfer ist als die reine Abdeckung. Eine Uhr mit vielenn_lowconf-Füllungen ist bei dieser Probe unzuverlässig, selbst wenn sie „gelaufen“ ist. - Nur für Blut ausgelegt. Diese Fertigkeit geht von menschlichem VOLLBLUT aus. Die Uhren sind auf Blut angewandt; die Imputationsreferenz ist Blut. Verwenden Sie sie nicht auf anderen Geweben.
- Imputation fehlender CpGs – standardmäßig methyLImp. Fehlende Uhr-CpGs (z. B. EPIC-trainierte CpGs, die in einem MSA/WeGene-Export fehlen) werden mit methyLImp imputiert: einer Reduziert-Rang-Regression (PCA), die jedes fehlende CpG aus den beobachteten CpGs der Probe unter Verwendung der Inter-CpG-Korrelationsstruktur eines Vollblut-Panels vorhersagt – genauer als ein flacher Median (~30% niedrigerer RMSE bei passendem Gewebe). CpGs, die dem Panel fehlen, werden auf den Blut-Median zurückgesetzt;
n_lowconf(Blut-SD>0,08) kennzeichnet unzuverlässige Füllungen. Der aktive Modus wird zu Beginn der Ausführung ausgegeben.- Das Panel befindet sich in
data/blood_panel.npzund ist enthalten (~5 MB; vorgebaut aus GSE40279 = 656 Vollblut-450K-Proben, reduziert auf die Uhr-CpGs + 50 Blut-PCs + pro-CpG-Median/SD). Daher ist methyLImp sofort aktiv – es reduziert den Imputations-RMSE um ~10% gegenüber einem flachen Median in einem Benchmark mit zurückgehaltenen CpGs. Zum Neuerstellen/Anpassen führen Siescripts/build_blood_panel.pyaus. Wenn die Datei fehlt, fällt das Tool automatisch auf den globalen Median zurück und meldet dies. - Realitätscheck: methyLImp verbessert hauptsächlich die stark imputierten Uhren. Hochdeckende Uhren (GrimAge/Horvath/PhenoAge) imputieren wenige CpGs, daher ändern sich ihre Werte um <0,2 Jahre – das Konfidenz-Flag ist der praktisch größere Gewinn.
- Das Panel befindet sich in
- Keine medizinische Beratung – nur für Forschungs-/Bildungszwecke.
Anmerkungen
- Matrix-Eingabe → eine Ergebniszeile pro Probe und Uhr.
- Bewusst ausgeschlossen (können ohne schwerere Methoden nicht originalgetreu reproduziert werden oder sind keine Alterungsuhren):
- PC-Uhren (
PCHorvath…),AltumAge,GPAge– benötigen PCA-Rotation / neuronale Netze. - Gestationsuhren (Knight, Lee, Mayne, Bohlin) – für Nabelschnurblut / Neugeborene.
- Merkmals- und Krankheitsprädiktoren (BMI, Cholesterin, Rauchen, Alkohol, Alzheimer, CVD, …) – dies sind Biomarker-Modelle, keine Alterungsuhren. Wenn ein Benutzer speziell eine dieser Uhren benötigt, teilen Sie ihm mit, dass dafür die vollständige Biolearn-Installation erforderlich ist.
- PC-Uhren (
- Herkunft. Die Koeffizienten stammen aus biolearn (MIT), das die veröffentlichten Uhren neu implementiert. GrimAge unterliegt kommerziellen Nutzungsbeschränkungen (UCLA TDG / Clock Foundation) für Kosmetik- und Lebensversicherungsanwendungen.