pyaging 0.1.30__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyaging-0.1.30 → pyaging-0.2.0}/PKG-INFO +10 -9
- {pyaging-0.1.30 → pyaging-0.2.0}/README.md +6 -6
- pyaging-0.2.0/clocks/notebooks/adbahadosingh.ipynb +559 -0
- pyaging-0.2.0/clocks/notebooks/bocklandt.ipynb +553 -0
- pyaging-0.2.0/clocks/notebooks/bohlin.ipynb +556 -0
- pyaging-0.2.0/clocks/notebooks/cellpopage.ipynb +614 -0
- pyaging-0.2.0/clocks/notebooks/compil6.ipynb +558 -0
- pyaging-0.2.0/clocks/notebooks/corticalclock.ipynb +624 -0
- pyaging-0.2.0/clocks/notebooks/ctsliver.ipynb +557 -0
- pyaging-0.2.0/clocks/notebooks/cvdwesterman.ipynb +557 -0
- pyaging-0.2.0/clocks/notebooks/depressionbarbu.ipynb +559 -0
- pyaging-0.2.0/clocks/notebooks/dnamfili.ipynb +630 -0
- pyaging-0.2.0/clocks/notebooks/dnamstress.ipynb +617 -0
- pyaging-0.2.0/clocks/notebooks/downsyndrome.ipynb +561 -0
- pyaging-0.2.0/clocks/notebooks/dunedinpoam38.ipynb +554 -0
- pyaging-0.2.0/clocks/notebooks/ensembleagehumanmouse.ipynb +563 -0
- pyaging-0.2.0/clocks/notebooks/epicga.ipynb +559 -0
- pyaging-0.2.0/clocks/notebooks/epicmithyper.ipynb +554 -0
- pyaging-0.2.0/clocks/notebooks/epicmithypo.ipynb +554 -0
- pyaging-0.2.0/clocks/notebooks/epitoc3.ipynb +546 -0
- pyaging-0.2.0/clocks/notebooks/garagnani.ipynb +553 -0
- pyaging-0.2.0/clocks/notebooks/gliasin.ipynb +557 -0
- pyaging-0.2.0/clocks/notebooks/hep.ipynb +557 -0
- pyaging-0.2.0/clocks/notebooks/hepatoxu.ipynb +564 -0
- pyaging-0.2.0/clocks/notebooks/mayne.ipynb +556 -0
- pyaging-0.2.0/clocks/notebooks/mccartneyalcohol.ipynb +567 -0
- pyaging-0.2.0/clocks/notebooks/mccartneytotalhdlratio.ipynb +554 -0
- pyaging-0.2.0/clocks/notebooks/mccartneywhr.ipynb +554 -0
- pyaging-0.2.0/clocks/notebooks/neusin.ipynb +557 -0
- pyaging-0.2.0/clocks/notebooks/prostatecancerkirby.ipynb +581 -0
- pyaging-0.2.0/clocks/notebooks/reedbmi.ipynb +554 -0
- pyaging-0.2.0/clocks/notebooks/replitalinorm.ipynb +617 -0
- pyaging-0.2.0/clocks/notebooks/senchronoage.ipynb +551 -0
- pyaging-0.2.0/clocks/notebooks/sencultureage.ipynb +551 -0
- pyaging-0.2.0/clocks/notebooks/senmortalityage.ipynb +551 -0
- pyaging-0.2.0/clocks/notebooks/stemtocvitro.ipynb +555 -0
- pyaging-0.2.0/clocks/notebooks/vidalbralo.ipynb +560 -0
- pyaging-0.2.0/clocks/notebooks/weidner.ipynb +566 -0
- pyaging-0.2.0/clocks/notebooks/wu.ipynb +562 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/clock_glossary.csv +37 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/_static/clock_glossary.csv +42 -4
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_implementation.rst +39 -1
- pyaging-0.2.0/docs/source/clock_notebooks/adbahadosingh.ipynb +559 -0
- pyaging-0.2.0/docs/source/clock_notebooks/bocklandt.ipynb +553 -0
- pyaging-0.2.0/docs/source/clock_notebooks/bohlin.ipynb +556 -0
- pyaging-0.2.0/docs/source/clock_notebooks/cellpopage.ipynb +614 -0
- pyaging-0.2.0/docs/source/clock_notebooks/compil6.ipynb +558 -0
- pyaging-0.2.0/docs/source/clock_notebooks/corticalclock.ipynb +624 -0
- pyaging-0.2.0/docs/source/clock_notebooks/ctsliver.ipynb +557 -0
- pyaging-0.2.0/docs/source/clock_notebooks/cvdwesterman.ipynb +557 -0
- pyaging-0.2.0/docs/source/clock_notebooks/depressionbarbu.ipynb +559 -0
- pyaging-0.2.0/docs/source/clock_notebooks/dnamfili.ipynb +630 -0
- pyaging-0.2.0/docs/source/clock_notebooks/dnamstress.ipynb +617 -0
- pyaging-0.2.0/docs/source/clock_notebooks/downsyndrome.ipynb +561 -0
- pyaging-0.2.0/docs/source/clock_notebooks/dunedinpoam38.ipynb +554 -0
- pyaging-0.2.0/docs/source/clock_notebooks/ensembleagehumanmouse.ipynb +563 -0
- pyaging-0.2.0/docs/source/clock_notebooks/epicga.ipynb +559 -0
- pyaging-0.2.0/docs/source/clock_notebooks/epicmithyper.ipynb +554 -0
- pyaging-0.2.0/docs/source/clock_notebooks/epicmithypo.ipynb +554 -0
- pyaging-0.2.0/docs/source/clock_notebooks/epitoc3.ipynb +546 -0
- pyaging-0.2.0/docs/source/clock_notebooks/garagnani.ipynb +553 -0
- pyaging-0.2.0/docs/source/clock_notebooks/gliasin.ipynb +557 -0
- pyaging-0.2.0/docs/source/clock_notebooks/hep.ipynb +557 -0
- pyaging-0.2.0/docs/source/clock_notebooks/hepatoxu.ipynb +564 -0
- pyaging-0.2.0/docs/source/clock_notebooks/mayne.ipynb +556 -0
- pyaging-0.2.0/docs/source/clock_notebooks/mccartneyalcohol.ipynb +567 -0
- pyaging-0.2.0/docs/source/clock_notebooks/mccartneytotalhdlratio.ipynb +554 -0
- pyaging-0.2.0/docs/source/clock_notebooks/mccartneywhr.ipynb +554 -0
- pyaging-0.2.0/docs/source/clock_notebooks/neusin.ipynb +557 -0
- pyaging-0.2.0/docs/source/clock_notebooks/prostatecancerkirby.ipynb +581 -0
- pyaging-0.2.0/docs/source/clock_notebooks/reedbmi.ipynb +554 -0
- pyaging-0.2.0/docs/source/clock_notebooks/replitalinorm.ipynb +617 -0
- pyaging-0.2.0/docs/source/clock_notebooks/senchronoage.ipynb +551 -0
- pyaging-0.2.0/docs/source/clock_notebooks/sencultureage.ipynb +551 -0
- pyaging-0.2.0/docs/source/clock_notebooks/senmortalityage.ipynb +551 -0
- pyaging-0.2.0/docs/source/clock_notebooks/stemtocvitro.ipynb +555 -0
- pyaging-0.2.0/docs/source/clock_notebooks/vidalbralo.ipynb +560 -0
- pyaging-0.2.0/docs/source/clock_notebooks/weidner.ipynb +566 -0
- pyaging-0.2.0/docs/source/clock_notebooks/wu.ipynb +562 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/conf.py +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/index.rst +3 -3
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/installation.rst +5 -5
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/tutorials/tutorial_atacseq.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_bloodchemistry.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_cpgptgrimage3.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_dnam_illumina_human_array.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/tutorials/tutorial_dnam_illumina_mammalian_array.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_dnam_rrbs.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_histonemarkchipseq.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/tutorials/tutorial_rnaseq.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/tutorials/tutorial_utils.ipynb +2 -2
- pyaging-0.2.0/docs/superpowers/specs/2026-07-04-missing-clocks-design.md +188 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/__init__.py +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/models/_models.py +195 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyproject.toml +4 -3
- {pyaging-0.1.30 → pyaging-0.2.0}/readthedocs.yaml +2 -2
- {pyaging-0.1.30 → pyaging-0.2.0}/tests/predict/test_gold_standard.py +39 -2
- {pyaging-0.1.30 → pyaging-0.2.0}/tutorials/tutorial_atacseq.ipynb +1 -1
- {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_bloodchemistry.ipynb +1 -1
- {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_cpgptgrimage3.ipynb +5 -3
- {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_dnam_illumina_human_array.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0}/tutorials/tutorial_dnam_illumina_mammalian_array.ipynb +1 -1
- {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_dnam_rrbs.ipynb +1 -1
- {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_histonemarkchipseq.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0}/tutorials/tutorial_rnaseq.ipynb +1 -1
- {pyaging-0.1.30 → pyaging-0.2.0}/tutorials/tutorial_utils.ipynb +2 -2
- {pyaging-0.1.30 → pyaging-0.2.0}/uv.lock +3215 -1843
- {pyaging-0.1.30 → pyaging-0.2.0}/.cursor/rules/best-practices.mdc +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/.github/workflows/build.yml +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/.github/workflows/publish.yml +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/.github/workflows/release.yml +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/.github/workflows/test.yml +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/.gitignore +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/.pre-commit-config.yaml +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/LICENSE +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/Makefile +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/abec.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/altumage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/bitage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/cabec.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k27ac.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k27me3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k36me3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k4me1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k4me3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k9ac.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k9me3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camillopanhistone.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/cpgptgrimage3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/cpgptpcgrimage3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepicbcell.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepiccd4tcell.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepiccd8tcell.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepicmonocyte.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepicneutrophil.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepicnkcell.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagegaitf.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagegaitm.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagegripf.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagegripm.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagevo2max.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamic.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamphenoage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamtl.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dunedinpace.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/eabec.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/encen100.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/encen40.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ensembleagestatic.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ensembleagestatictop.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/epitoc1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/epitoc2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2adm.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2b2m.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2cystatinc.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2gdf15.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2leptin.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2loga1c.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2logcrp.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2packyrs.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2pai1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2timp1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/han.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/hannum.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/horvath2013.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/hrsinchphenoage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/hypoclock.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/intrinclock.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/knight.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/leecontrol.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/leerefinedrobust.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/leerobust.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/lin.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalian1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalian2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalian3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianblood2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianblood3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianfemale.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianlifespan.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianskin2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianskin3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneybmi.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneybodyfat.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneyeducation.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneyhdlcholesterol.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneyldlcholesterol.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneysmoking.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneytotalcholesterol.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/meer.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ocampoatac1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ocampoatac2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pasta.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pastamouse.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pcdnamtl.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pcgrimage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pchannum.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pchorvath2013.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pcphenoage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pcskinandblood.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pedbe.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/petkovich.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/phenoage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pipekelasticnet.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pipekfilteredh.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pipekretrainedh.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/reg.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/replitali.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/retroelementagev1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/retroelementagev2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/skinandblood.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stemtoc.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stoch.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stocp.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stocz.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stubbs.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageblood.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagebrain.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageheart.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagehormone.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageimmune.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageinflammation.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagekidney.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageliver.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagelung.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagemetabolic.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagemusculoskeletal.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/template.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/thompson.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicbas.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicbmem.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicbnv.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiccd4mem.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiccd4nv.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiccd8mem.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiccd8nv.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiceos.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicmono.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicneu.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicnk.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepictreg.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/xchrom.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ychrom.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/yingadaptage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/yingcausage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/yingdamage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/zhangblup.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/zhangen.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/zhangmortality.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/clocks/update_all_clocks.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/Makefile +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/clock_glossary.js +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/custom.css +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/logo.png +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/pyaging_graphical_abstract.pdf +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/pyaging_graphical_abstract.png +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/environment.yml +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/make.bat +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_glossary.rst +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/abec.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/altumage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/bitage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/cabec.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k27ac.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k27me3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k36me3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k4me1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k4me3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k9ac.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k9me3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camillopanhistone.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/cpgptgrimage3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/cpgptpcgrimage3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepicbcell.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepiccd4tcell.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepiccd8tcell.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepicmonocyte.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepicneutrophil.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepicnkcell.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagegaitf.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagegaitm.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagegripf.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagegripm.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagevo2max.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamic.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamphenoage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamtl.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dunedinpace.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/eabec.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/encen100.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/encen40.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ensembleagestatic.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ensembleagestatictop.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/epitoc1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/epitoc2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2adm.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2b2m.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2cystatinc.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2gdf15.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2leptin.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2loga1c.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2logcrp.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2packyrs.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2pai1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2timp1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/han.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/hannum.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/horvath2013.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/hrsinchphenoage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/hypoclock.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/intrinclock.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/knight.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/leecontrol.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/leerefinedrobust.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/leerobust.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/lin.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalian1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalian2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalian3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianblood2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianblood3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianfemale.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianlifespan.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianskin2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianskin3.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneybmi.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneybodyfat.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneyeducation.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneyhdlcholesterol.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneyldlcholesterol.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneysmoking.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneytotalcholesterol.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/meer.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ocampoatac1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ocampoatac2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pasta.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pastamouse.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pcdnamtl.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pcgrimage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pchannum.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pchorvath2013.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pcphenoage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pcskinandblood.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pedbe.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/petkovich.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/phenoage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pipekelasticnet.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pipekfilteredh.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pipekretrainedh.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/reg.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/replitali.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/retroelementagev1.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/retroelementagev2.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/skinandblood.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stemtoc.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stoch.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stocp.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stocz.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stubbs.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageblood.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagebrain.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageheart.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagehormone.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageimmune.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageinflammation.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagekidney.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageliver.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagelung.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagemetabolic.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagemusculoskeletal.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/template.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/thompson.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicbas.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicbmem.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicbnv.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiccd4mem.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiccd4nv.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiccd8mem.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiccd8nv.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiceos.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicmono.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicneu.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicnk.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepictreg.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/xchrom.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ychrom.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/yingadaptage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/yingcausage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/yingdamage.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/zhangblup.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/zhangen.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/zhangmortality.ipynb +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/make_clock_glossary.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.data.rst +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.models.rst +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.predict.rst +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.preprocess.rst +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.rst +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.utils.rst +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/data/__init__.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/data/_data.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/logger/__init__.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/logger/_logger.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/models/__init__.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/models/_base_models.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/__init__.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/_postprocessing.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/_pred.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/_pred_utils.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/_preprocessing.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/preprocess/__init__.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/preprocess/_preprocess.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/preprocess/_preprocess_utils.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/utils/__init__.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/utils/_utils.py +0 -0
- {pyaging-0.1.30 → pyaging-0.2.0}/tests/__init__.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyaging
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: A Python-based compendium of GPU-optimized aging clocks.
|
|
5
|
-
Project-URL: homepage, https://github.com/
|
|
6
|
-
Project-URL: repository, https://github.com/
|
|
5
|
+
Project-URL: homepage, https://github.com/lucascamillomd/pyaging
|
|
6
|
+
Project-URL: repository, https://github.com/lucascamillomd/pyaging
|
|
7
7
|
Author-email: Lucas Paulo de Lima Camillo <lucas_camillo@alumni.brown.edu>
|
|
8
8
|
License: BSD
|
|
9
9
|
License-File: LICENSE
|
|
@@ -17,6 +17,7 @@ Requires-Dist: openai>=2.8.1
|
|
|
17
17
|
Requires-Dist: pandas>=2.2.0
|
|
18
18
|
Requires-Dist: plotly>=6.5.0
|
|
19
19
|
Requires-Dist: polars>=1.35.2
|
|
20
|
+
Requires-Dist: pre-commit>=4.3.0
|
|
20
21
|
Requires-Dist: pyarrow>=21.0.0
|
|
21
22
|
Requires-Dist: requests
|
|
22
23
|
Requires-Dist: ruff>=0.14.6
|
|
@@ -40,15 +41,15 @@ Description-Content-Type: text/markdown
|
|
|
40
41
|
|
|
41
42
|
##
|
|
42
43
|
|
|
43
|
-
[](https://github.com/lucascamillomd/pyaging/actions/workflows/test.yml)
|
|
45
|
+
[](https://github.com/lucascamillomd/pyaging/actions/workflows/build.yml)
|
|
46
|
+
[](https://github.com/lucascamillomd/pyaging/actions/workflows/publish.yml)
|
|
47
|
+
[](https://github.com/lucascamillomd/pyaging/actions/workflows/release.yml)
|
|
47
48
|
[](https://pyaging.readthedocs.io/en/latest/)
|
|
48
49
|
[](https://doi.org/10.1093/bioinformatics/btae200)
|
|
49
50
|
[](https://pypi.org/project/pyaging/)
|
|
50
51
|
[](https://pepy.tech/project/pyaging)
|
|
51
|
-
[](https://github.com/lucascamillomd/pyaging/stargazers)
|
|
52
53
|
|
|
53
54
|
## 🐍 **pyaging**: a Python-based compendium of GPU-optimized aging clocks
|
|
54
55
|
|
|
@@ -63,7 +64,7 @@ With a growing number of aging clocks and biomarkers of aging, comparing and ana
|
|
|
63
64
|
If you have recently developed an aging clock and would like it to be integrated into `pyaging`, please [email me](lucas_camillo@alumni.brown.edu). I aim to incorporate it within one to two weeks! I'm also happy to adapt to any licensing terms for commercial entities.
|
|
64
65
|
|
|
65
66
|
## 💬 Community Discussion
|
|
66
|
-
For coding-related queries, feedback, and discussions, please visit our [GitHub Issues](https://github.com/
|
|
67
|
+
For coding-related queries, feedback, and discussions, please visit our [GitHub Issues](https://github.com/lucascamillomd/pyaging/issues) page.
|
|
67
68
|
|
|
68
69
|
## 📖 Citation
|
|
69
70
|
|
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
##
|
|
6
6
|
|
|
7
|
-
[](https://github.com/lucascamillomd/pyaging/actions/workflows/test.yml)
|
|
8
|
+
[](https://github.com/lucascamillomd/pyaging/actions/workflows/build.yml)
|
|
9
|
+
[](https://github.com/lucascamillomd/pyaging/actions/workflows/publish.yml)
|
|
10
|
+
[](https://github.com/lucascamillomd/pyaging/actions/workflows/release.yml)
|
|
11
11
|
[](https://pyaging.readthedocs.io/en/latest/)
|
|
12
12
|
[](https://doi.org/10.1093/bioinformatics/btae200)
|
|
13
13
|
[](https://pypi.org/project/pyaging/)
|
|
14
14
|
[](https://pepy.tech/project/pyaging)
|
|
15
|
-
[](https://github.com/lucascamillomd/pyaging/stargazers)
|
|
16
16
|
|
|
17
17
|
## 🐍 **pyaging**: a Python-based compendium of GPU-optimized aging clocks
|
|
18
18
|
|
|
@@ -27,7 +27,7 @@ With a growing number of aging clocks and biomarkers of aging, comparing and ana
|
|
|
27
27
|
If you have recently developed an aging clock and would like it to be integrated into `pyaging`, please [email me](lucas_camillo@alumni.brown.edu). I aim to incorporate it within one to two weeks! I'm also happy to adapt to any licensing terms for commercial entities.
|
|
28
28
|
|
|
29
29
|
## 💬 Community Discussion
|
|
30
|
-
For coding-related queries, feedback, and discussions, please visit our [GitHub Issues](https://github.com/
|
|
30
|
+
For coding-related queries, feedback, and discussions, please visit our [GitHub Issues](https://github.com/lucascamillomd/pyaging/issues) page.
|
|
31
31
|
|
|
32
32
|
## 📖 Citation
|
|
33
33
|
|
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "0ffcfb02",
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"source": [
|
|
8
|
+
"# ADBahadoSingh"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"cell_type": "markdown",
|
|
13
|
+
"id": "1f7d79fb",
|
|
14
|
+
"metadata": {},
|
|
15
|
+
"source": [
|
|
16
|
+
"## Index\n",
|
|
17
|
+
"1. [Instantiate model class](#Instantiate-model-class)\n",
|
|
18
|
+
"2. [Define clock metadata](#Define-clock-metadata)\n",
|
|
19
|
+
"3. [Download clock dependencies](#Download-clock-dependencies)\n",
|
|
20
|
+
"5. [Load features](#Load-features)\n",
|
|
21
|
+
"6. [Load weights into base model](#Load-weights-into-base-model)\n",
|
|
22
|
+
"7. [Load reference values](#Load-reference-values)\n",
|
|
23
|
+
"8. [Load preprocess and postprocess objects](#Load-preprocess-and-postprocess-objects)\n",
|
|
24
|
+
"10. [Check all clock parameters](#Check-all-clock-parameters)\n",
|
|
25
|
+
"10. [Basic test](#Basic-test)\n",
|
|
26
|
+
"11. [Save torch model](#Save-torch-model)\n",
|
|
27
|
+
"12. [Clear directory](#Clear-directory)"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"cell_type": "markdown",
|
|
32
|
+
"id": "9a7dfb8c",
|
|
33
|
+
"metadata": {},
|
|
34
|
+
"source": [
|
|
35
|
+
"Let's first import some packages:"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"cell_type": "code",
|
|
40
|
+
"execution_count": 1,
|
|
41
|
+
"id": "2fed02ab",
|
|
42
|
+
"metadata": {
|
|
43
|
+
"execution": {
|
|
44
|
+
"iopub.execute_input": "2026-07-04T20:25:23.516525Z",
|
|
45
|
+
"iopub.status.busy": "2026-07-04T20:25:23.516388Z",
|
|
46
|
+
"iopub.status.idle": "2026-07-04T20:25:26.060894Z",
|
|
47
|
+
"shell.execute_reply": "2026-07-04T20:25:26.060447Z"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"outputs": [],
|
|
51
|
+
"source": [
|
|
52
|
+
"import os\n",
|
|
53
|
+
"import inspect\n",
|
|
54
|
+
"import shutil\n",
|
|
55
|
+
"import json\n",
|
|
56
|
+
"import torch\n",
|
|
57
|
+
"import pandas as pd\n",
|
|
58
|
+
"import pyaging as pya"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"cell_type": "markdown",
|
|
63
|
+
"id": "e57c051e",
|
|
64
|
+
"metadata": {},
|
|
65
|
+
"source": [
|
|
66
|
+
"## Instantiate model class"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"cell_type": "code",
|
|
71
|
+
"execution_count": 2,
|
|
72
|
+
"id": "0b7ec122",
|
|
73
|
+
"metadata": {
|
|
74
|
+
"execution": {
|
|
75
|
+
"iopub.execute_input": "2026-07-04T20:25:26.062543Z",
|
|
76
|
+
"iopub.status.busy": "2026-07-04T20:25:26.062344Z",
|
|
77
|
+
"iopub.status.idle": "2026-07-04T20:25:26.066252Z",
|
|
78
|
+
"shell.execute_reply": "2026-07-04T20:25:26.065457Z"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"outputs": [
|
|
82
|
+
{
|
|
83
|
+
"name": "stdout",
|
|
84
|
+
"output_type": "stream",
|
|
85
|
+
"text": [
|
|
86
|
+
"class ADBahadoSingh(LinearReferenceClock):\n",
|
|
87
|
+
" def postprocess(self, x):\n",
|
|
88
|
+
" \"\"\"Logistic transform to an Alzheimer's disease risk probability.\n",
|
|
89
|
+
"\n",
|
|
90
|
+
" The published logit constant (-0.072) is carried in the linear intercept.\n",
|
|
91
|
+
" \"\"\"\n",
|
|
92
|
+
" return torch.sigmoid(x)\n",
|
|
93
|
+
"\n"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"source": [
|
|
98
|
+
"def print_entire_class(cls):\n",
|
|
99
|
+
" source = inspect.getsource(cls)\n",
|
|
100
|
+
" print(source)\n",
|
|
101
|
+
"\n",
|
|
102
|
+
"print_entire_class(pya.models.ADBahadoSingh)"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"cell_type": "code",
|
|
107
|
+
"execution_count": 3,
|
|
108
|
+
"id": "f419d49e",
|
|
109
|
+
"metadata": {
|
|
110
|
+
"execution": {
|
|
111
|
+
"iopub.execute_input": "2026-07-04T20:25:26.068511Z",
|
|
112
|
+
"iopub.status.busy": "2026-07-04T20:25:26.068372Z",
|
|
113
|
+
"iopub.status.idle": "2026-07-04T20:25:26.070387Z",
|
|
114
|
+
"shell.execute_reply": "2026-07-04T20:25:26.070016Z"
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"outputs": [],
|
|
118
|
+
"source": [
|
|
119
|
+
"model = pya.models.ADBahadoSingh()"
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"cell_type": "markdown",
|
|
124
|
+
"id": "a7d830f3",
|
|
125
|
+
"metadata": {},
|
|
126
|
+
"source": [
|
|
127
|
+
"## Define clock metadata"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"cell_type": "code",
|
|
132
|
+
"execution_count": 4,
|
|
133
|
+
"id": "3192412b",
|
|
134
|
+
"metadata": {
|
|
135
|
+
"execution": {
|
|
136
|
+
"iopub.execute_input": "2026-07-04T20:25:26.071716Z",
|
|
137
|
+
"iopub.status.busy": "2026-07-04T20:25:26.071645Z",
|
|
138
|
+
"iopub.status.idle": "2026-07-04T20:25:26.073738Z",
|
|
139
|
+
"shell.execute_reply": "2026-07-04T20:25:26.073337Z"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"outputs": [],
|
|
143
|
+
"source": [
|
|
144
|
+
"model.metadata[\"clock_name\"] = 'adbahadosingh'\n",
|
|
145
|
+
"model.metadata[\"data_type\"] = 'methylation'\n",
|
|
146
|
+
"model.metadata[\"species\"] = 'Homo sapiens'\n",
|
|
147
|
+
"model.metadata[\"year\"] = 2021\n",
|
|
148
|
+
"model.metadata[\"approved_by_author\"] = '⌛'\n",
|
|
149
|
+
"model.metadata[\"citation\"] = \"Bahado-Singh, Ray O., et al. \\\"Artificial intelligence and leukocyte epigenomics: Evaluation and prediction of late-onset Alzheimer's disease.\\\" PLOS ONE 16.4 (2021): e0248375.\"\n",
|
|
150
|
+
"model.metadata[\"doi\"] = \"https://doi.org/10.1371/journal.pone.0248375\"\n",
|
|
151
|
+
"model.metadata[\"research_only\"] = None\n",
|
|
152
|
+
"model.metadata[\"notes\"] = None"
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"cell_type": "markdown",
|
|
157
|
+
"id": "83246005",
|
|
158
|
+
"metadata": {},
|
|
159
|
+
"source": [
|
|
160
|
+
"## Download clock dependencies"
|
|
161
|
+
]
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"cell_type": "code",
|
|
165
|
+
"execution_count": 5,
|
|
166
|
+
"id": "182bc2c1",
|
|
167
|
+
"metadata": {
|
|
168
|
+
"execution": {
|
|
169
|
+
"iopub.execute_input": "2026-07-04T20:25:26.074885Z",
|
|
170
|
+
"iopub.status.busy": "2026-07-04T20:25:26.074814Z",
|
|
171
|
+
"iopub.status.idle": "2026-07-04T20:25:26.345655Z",
|
|
172
|
+
"shell.execute_reply": "2026-07-04T20:25:26.343440Z"
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"outputs": [
|
|
176
|
+
{
|
|
177
|
+
"data": {
|
|
178
|
+
"text/plain": [
|
|
179
|
+
"0"
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
"execution_count": 5,
|
|
183
|
+
"metadata": {},
|
|
184
|
+
"output_type": "execute_result"
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"source": [
|
|
188
|
+
"os.system(f\"curl -sL -o coefficients.csv https://raw.githubusercontent.com/bio-learn/biolearn/180852e2bab473303cb85da627178b1695ee9d86/biolearn/data/AD_Bahado-Singh.csv\")"
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"cell_type": "markdown",
|
|
193
|
+
"id": "3a9680f0",
|
|
194
|
+
"metadata": {},
|
|
195
|
+
"source": [
|
|
196
|
+
"## Load features"
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"cell_type": "code",
|
|
201
|
+
"execution_count": 6,
|
|
202
|
+
"id": "d4699f05",
|
|
203
|
+
"metadata": {
|
|
204
|
+
"execution": {
|
|
205
|
+
"iopub.execute_input": "2026-07-04T20:25:26.350516Z",
|
|
206
|
+
"iopub.status.busy": "2026-07-04T20:25:26.350127Z",
|
|
207
|
+
"iopub.status.idle": "2026-07-04T20:25:26.359398Z",
|
|
208
|
+
"shell.execute_reply": "2026-07-04T20:25:26.358217Z"
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
"outputs": [],
|
|
212
|
+
"source": [
|
|
213
|
+
"df = pd.read_csv('coefficients.csv')\n",
|
|
214
|
+
"mask = df['CpGmarker'].astype(str).str.lower().isin(['intercept', '(intercept)'])\n",
|
|
215
|
+
"coef_df = df.loc[~mask].reset_index(drop=True)\n",
|
|
216
|
+
"model.features = coef_df['CpGmarker'].tolist()"
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"cell_type": "markdown",
|
|
221
|
+
"id": "123e9bba",
|
|
222
|
+
"metadata": {},
|
|
223
|
+
"source": [
|
|
224
|
+
"## Load weights into base model"
|
|
225
|
+
]
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"cell_type": "code",
|
|
229
|
+
"execution_count": 7,
|
|
230
|
+
"id": "e268eb33",
|
|
231
|
+
"metadata": {
|
|
232
|
+
"execution": {
|
|
233
|
+
"iopub.execute_input": "2026-07-04T20:25:26.362892Z",
|
|
234
|
+
"iopub.status.busy": "2026-07-04T20:25:26.362583Z",
|
|
235
|
+
"iopub.status.idle": "2026-07-04T20:25:26.366289Z",
|
|
236
|
+
"shell.execute_reply": "2026-07-04T20:25:26.365442Z"
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
"outputs": [],
|
|
240
|
+
"source": [
|
|
241
|
+
"weights = torch.tensor(coef_df['CoefficientTraining'].tolist()).unsqueeze(0).float()\n",
|
|
242
|
+
"# Published logistic-regression constant (Bahado-Singh 2021, eq. e001)\n",
|
|
243
|
+
"intercept = torch.tensor([-0.072]).float()"
|
|
244
|
+
]
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"cell_type": "code",
|
|
248
|
+
"execution_count": 8,
|
|
249
|
+
"id": "319ef876",
|
|
250
|
+
"metadata": {
|
|
251
|
+
"execution": {
|
|
252
|
+
"iopub.execute_input": "2026-07-04T20:25:26.368300Z",
|
|
253
|
+
"iopub.status.busy": "2026-07-04T20:25:26.368187Z",
|
|
254
|
+
"iopub.status.idle": "2026-07-04T20:25:26.370906Z",
|
|
255
|
+
"shell.execute_reply": "2026-07-04T20:25:26.370469Z"
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
"outputs": [],
|
|
259
|
+
"source": [
|
|
260
|
+
"base_model = pya.models.LinearModel(input_dim=len(model.features))\n",
|
|
261
|
+
"\n",
|
|
262
|
+
"base_model.linear.weight.data = weights.float()\n",
|
|
263
|
+
"base_model.linear.bias.data = intercept.float()\n",
|
|
264
|
+
"\n",
|
|
265
|
+
"model.base_model = base_model"
|
|
266
|
+
]
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"cell_type": "markdown",
|
|
270
|
+
"id": "9e022528",
|
|
271
|
+
"metadata": {},
|
|
272
|
+
"source": [
|
|
273
|
+
"## Load reference values"
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"cell_type": "code",
|
|
278
|
+
"execution_count": 9,
|
|
279
|
+
"id": "8c128c95",
|
|
280
|
+
"metadata": {
|
|
281
|
+
"execution": {
|
|
282
|
+
"iopub.execute_input": "2026-07-04T20:25:26.372269Z",
|
|
283
|
+
"iopub.status.busy": "2026-07-04T20:25:26.372195Z",
|
|
284
|
+
"iopub.status.idle": "2026-07-04T20:25:26.373829Z",
|
|
285
|
+
"shell.execute_reply": "2026-07-04T20:25:26.373491Z"
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"outputs": [],
|
|
289
|
+
"source": [
|
|
290
|
+
"model.reference_values = None"
|
|
291
|
+
]
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"cell_type": "markdown",
|
|
295
|
+
"id": "398afb53",
|
|
296
|
+
"metadata": {},
|
|
297
|
+
"source": [
|
|
298
|
+
"## Load preprocess and postprocess objects"
|
|
299
|
+
]
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"cell_type": "code",
|
|
303
|
+
"execution_count": 10,
|
|
304
|
+
"id": "c91c6c17",
|
|
305
|
+
"metadata": {
|
|
306
|
+
"execution": {
|
|
307
|
+
"iopub.execute_input": "2026-07-04T20:25:26.375177Z",
|
|
308
|
+
"iopub.status.busy": "2026-07-04T20:25:26.375079Z",
|
|
309
|
+
"iopub.status.idle": "2026-07-04T20:25:26.376723Z",
|
|
310
|
+
"shell.execute_reply": "2026-07-04T20:25:26.376259Z"
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
"outputs": [],
|
|
314
|
+
"source": [
|
|
315
|
+
"model.preprocess_name = None\n",
|
|
316
|
+
"model.preprocess_dependencies = None"
|
|
317
|
+
]
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"cell_type": "code",
|
|
321
|
+
"execution_count": 11,
|
|
322
|
+
"id": "34369a68",
|
|
323
|
+
"metadata": {
|
|
324
|
+
"execution": {
|
|
325
|
+
"iopub.execute_input": "2026-07-04T20:25:26.377825Z",
|
|
326
|
+
"iopub.status.busy": "2026-07-04T20:25:26.377750Z",
|
|
327
|
+
"iopub.status.idle": "2026-07-04T20:25:26.379437Z",
|
|
328
|
+
"shell.execute_reply": "2026-07-04T20:25:26.378962Z"
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
"outputs": [],
|
|
332
|
+
"source": [
|
|
333
|
+
"model.postprocess_name = 'sigmoid'\n",
|
|
334
|
+
"model.postprocess_dependencies = None"
|
|
335
|
+
]
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"cell_type": "markdown",
|
|
339
|
+
"id": "ff8801c7",
|
|
340
|
+
"metadata": {},
|
|
341
|
+
"source": [
|
|
342
|
+
"## Check all clock parameters"
|
|
343
|
+
]
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"cell_type": "code",
|
|
347
|
+
"execution_count": 12,
|
|
348
|
+
"id": "34823472",
|
|
349
|
+
"metadata": {
|
|
350
|
+
"execution": {
|
|
351
|
+
"iopub.execute_input": "2026-07-04T20:25:26.383261Z",
|
|
352
|
+
"iopub.status.busy": "2026-07-04T20:25:26.382974Z",
|
|
353
|
+
"iopub.status.idle": "2026-07-04T20:25:26.390843Z",
|
|
354
|
+
"shell.execute_reply": "2026-07-04T20:25:26.390123Z"
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"outputs": [
|
|
358
|
+
{
|
|
359
|
+
"name": "stdout",
|
|
360
|
+
"output_type": "stream",
|
|
361
|
+
"text": [
|
|
362
|
+
"\n",
|
|
363
|
+
"%==================================== Model Details ====================================%\n",
|
|
364
|
+
"Model Attributes:\n",
|
|
365
|
+
"\n",
|
|
366
|
+
"training: True\n",
|
|
367
|
+
"metadata: {'approved_by_author': '⌛',\n",
|
|
368
|
+
" 'citation': 'Bahado-Singh, Ray O., et al. \"Artificial intelligence and '\n",
|
|
369
|
+
" 'leukocyte epigenomics: Evaluation and prediction of late-onset '\n",
|
|
370
|
+
" 'Alzheimer\\'s disease.\" PLOS ONE 16.4 (2021): e0248375.',\n",
|
|
371
|
+
" 'clock_name': 'adbahadosingh',\n",
|
|
372
|
+
" 'data_type': 'methylation',\n",
|
|
373
|
+
" 'doi': 'https://doi.org/10.1371/journal.pone.0248375',\n",
|
|
374
|
+
" 'notes': None,\n",
|
|
375
|
+
" 'research_only': None,\n",
|
|
376
|
+
" 'species': 'Homo sapiens',\n",
|
|
377
|
+
" 'version': None,\n",
|
|
378
|
+
" 'year': 2021}\n",
|
|
379
|
+
"reference_values: None\n",
|
|
380
|
+
"preprocess_name: None\n",
|
|
381
|
+
"preprocess_dependencies: None\n",
|
|
382
|
+
"postprocess_name: 'sigmoid'\n",
|
|
383
|
+
"postprocess_dependencies: None\n",
|
|
384
|
+
"features: ['cg02356786', 'cg04515524', 'cg00613827', 'cg07509935']\n",
|
|
385
|
+
"base_model_features: None\n",
|
|
386
|
+
"\n",
|
|
387
|
+
"%==================================== Model Details ====================================%\n",
|
|
388
|
+
"Model Structure:\n",
|
|
389
|
+
"\n",
|
|
390
|
+
"base_model: LinearModel(\n",
|
|
391
|
+
" (linear): Linear(in_features=4, out_features=1, bias=True)\n",
|
|
392
|
+
")\n",
|
|
393
|
+
"\n",
|
|
394
|
+
"%==================================== Model Details ====================================%\n",
|
|
395
|
+
"Model Parameters and Weights:\n",
|
|
396
|
+
"\n",
|
|
397
|
+
"base_model.linear.weight: tensor([[-0.9920, -1.5000, -1.9010, -1.3580]])\n",
|
|
398
|
+
"base_model.linear.bias: tensor([-0.0720])\n",
|
|
399
|
+
"\n",
|
|
400
|
+
"%==================================== Model Details ====================================%\n",
|
|
401
|
+
"\n"
|
|
402
|
+
]
|
|
403
|
+
}
|
|
404
|
+
],
|
|
405
|
+
"source": [
|
|
406
|
+
"pya.utils.print_model_details(model)"
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"cell_type": "markdown",
|
|
411
|
+
"id": "dd46c341",
|
|
412
|
+
"metadata": {},
|
|
413
|
+
"source": [
|
|
414
|
+
"## Basic test"
|
|
415
|
+
]
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"cell_type": "code",
|
|
419
|
+
"execution_count": 13,
|
|
420
|
+
"id": "1f86769b",
|
|
421
|
+
"metadata": {
|
|
422
|
+
"execution": {
|
|
423
|
+
"iopub.execute_input": "2026-07-04T20:25:26.392620Z",
|
|
424
|
+
"iopub.status.busy": "2026-07-04T20:25:26.392500Z",
|
|
425
|
+
"iopub.status.idle": "2026-07-04T20:25:26.397490Z",
|
|
426
|
+
"shell.execute_reply": "2026-07-04T20:25:26.396912Z"
|
|
427
|
+
}
|
|
428
|
+
},
|
|
429
|
+
"outputs": [
|
|
430
|
+
{
|
|
431
|
+
"data": {
|
|
432
|
+
"text/plain": [
|
|
433
|
+
"tensor([[0.2779],\n",
|
|
434
|
+
" [0.9795],\n",
|
|
435
|
+
" [0.1451],\n",
|
|
436
|
+
" [0.7133],\n",
|
|
437
|
+
" [0.0025],\n",
|
|
438
|
+
" [0.1557],\n",
|
|
439
|
+
" [0.9681],\n",
|
|
440
|
+
" [0.7552],\n",
|
|
441
|
+
" [0.9825],\n",
|
|
442
|
+
" [0.5411]], dtype=torch.float64, grad_fn=<SigmoidBackward0>)"
|
|
443
|
+
]
|
|
444
|
+
},
|
|
445
|
+
"execution_count": 13,
|
|
446
|
+
"metadata": {},
|
|
447
|
+
"output_type": "execute_result"
|
|
448
|
+
}
|
|
449
|
+
],
|
|
450
|
+
"source": [
|
|
451
|
+
"torch.manual_seed(42)\n",
|
|
452
|
+
"input = torch.randn(10, len(model.features), dtype=float)\n",
|
|
453
|
+
"model.eval()\n",
|
|
454
|
+
"model.to(float)\n",
|
|
455
|
+
"pred = model(input)\n",
|
|
456
|
+
"pred"
|
|
457
|
+
]
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"cell_type": "markdown",
|
|
461
|
+
"id": "db3d55f5",
|
|
462
|
+
"metadata": {},
|
|
463
|
+
"source": [
|
|
464
|
+
"## Save torch model"
|
|
465
|
+
]
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"cell_type": "code",
|
|
469
|
+
"execution_count": 14,
|
|
470
|
+
"id": "afc5f9b7",
|
|
471
|
+
"metadata": {
|
|
472
|
+
"execution": {
|
|
473
|
+
"iopub.execute_input": "2026-07-04T20:25:26.399340Z",
|
|
474
|
+
"iopub.status.busy": "2026-07-04T20:25:26.399216Z",
|
|
475
|
+
"iopub.status.idle": "2026-07-04T20:25:26.403718Z",
|
|
476
|
+
"shell.execute_reply": "2026-07-04T20:25:26.403323Z"
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
"outputs": [],
|
|
480
|
+
"source": [
|
|
481
|
+
"torch.save(model, f\"../weights/{model.metadata['clock_name']}.pt\")"
|
|
482
|
+
]
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
"cell_type": "markdown",
|
|
486
|
+
"id": "620bbb0b",
|
|
487
|
+
"metadata": {},
|
|
488
|
+
"source": [
|
|
489
|
+
"## Clear directory\n",
|
|
490
|
+
"<a id=\"10\"></a>"
|
|
491
|
+
]
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"cell_type": "code",
|
|
495
|
+
"execution_count": 15,
|
|
496
|
+
"id": "77fd8481",
|
|
497
|
+
"metadata": {
|
|
498
|
+
"execution": {
|
|
499
|
+
"iopub.execute_input": "2026-07-04T20:25:26.405201Z",
|
|
500
|
+
"iopub.status.busy": "2026-07-04T20:25:26.405118Z",
|
|
501
|
+
"iopub.status.idle": "2026-07-04T20:25:26.408698Z",
|
|
502
|
+
"shell.execute_reply": "2026-07-04T20:25:26.408230Z"
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
"outputs": [
|
|
506
|
+
{
|
|
507
|
+
"name": "stdout",
|
|
508
|
+
"output_type": "stream",
|
|
509
|
+
"text": [
|
|
510
|
+
"Deleted file: coefficients.csv\n"
|
|
511
|
+
]
|
|
512
|
+
}
|
|
513
|
+
],
|
|
514
|
+
"source": [
|
|
515
|
+
"# Function to remove a folder and all its contents\n",
|
|
516
|
+
"def remove_folder(path):\n",
|
|
517
|
+
" try:\n",
|
|
518
|
+
" shutil.rmtree(path)\n",
|
|
519
|
+
" print(f\"Deleted folder: {path}\")\n",
|
|
520
|
+
" except Exception as e:\n",
|
|
521
|
+
" print(f\"Error deleting folder {path}: {e}\")\n",
|
|
522
|
+
"\n",
|
|
523
|
+
"# Get a list of all files and folders in the current directory\n",
|
|
524
|
+
"all_items = os.listdir('.')\n",
|
|
525
|
+
"\n",
|
|
526
|
+
"# Loop through the items\n",
|
|
527
|
+
"for item in all_items:\n",
|
|
528
|
+
" # Check if it's a file and does not end with .ipynb\n",
|
|
529
|
+
" if os.path.isfile(item) and not item.endswith('.ipynb'):\n",
|
|
530
|
+
" os.remove(item)\n",
|
|
531
|
+
" print(f\"Deleted file: {item}\")\n",
|
|
532
|
+
" # Check if it's a folder\n",
|
|
533
|
+
" elif os.path.isdir(item):\n",
|
|
534
|
+
" remove_folder(item)"
|
|
535
|
+
]
|
|
536
|
+
}
|
|
537
|
+
],
|
|
538
|
+
"metadata": {
|
|
539
|
+
"kernelspec": {
|
|
540
|
+
"display_name": "Python 3 (ipykernel)",
|
|
541
|
+
"language": "python",
|
|
542
|
+
"name": "python3"
|
|
543
|
+
},
|
|
544
|
+
"language_info": {
|
|
545
|
+
"codemirror_mode": {
|
|
546
|
+
"name": "ipython",
|
|
547
|
+
"version": 3
|
|
548
|
+
},
|
|
549
|
+
"file_extension": ".py",
|
|
550
|
+
"mimetype": "text/x-python",
|
|
551
|
+
"name": "python",
|
|
552
|
+
"nbconvert_exporter": "python",
|
|
553
|
+
"pygments_lexer": "ipython3",
|
|
554
|
+
"version": "3.13.11"
|
|
555
|
+
}
|
|
556
|
+
},
|
|
557
|
+
"nbformat": 4,
|
|
558
|
+
"nbformat_minor": 5
|
|
559
|
+
}
|