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.
Files changed (424) hide show
  1. {pyaging-0.1.30 → pyaging-0.2.0}/PKG-INFO +10 -9
  2. {pyaging-0.1.30 → pyaging-0.2.0}/README.md +6 -6
  3. pyaging-0.2.0/clocks/notebooks/adbahadosingh.ipynb +559 -0
  4. pyaging-0.2.0/clocks/notebooks/bocklandt.ipynb +553 -0
  5. pyaging-0.2.0/clocks/notebooks/bohlin.ipynb +556 -0
  6. pyaging-0.2.0/clocks/notebooks/cellpopage.ipynb +614 -0
  7. pyaging-0.2.0/clocks/notebooks/compil6.ipynb +558 -0
  8. pyaging-0.2.0/clocks/notebooks/corticalclock.ipynb +624 -0
  9. pyaging-0.2.0/clocks/notebooks/ctsliver.ipynb +557 -0
  10. pyaging-0.2.0/clocks/notebooks/cvdwesterman.ipynb +557 -0
  11. pyaging-0.2.0/clocks/notebooks/depressionbarbu.ipynb +559 -0
  12. pyaging-0.2.0/clocks/notebooks/dnamfili.ipynb +630 -0
  13. pyaging-0.2.0/clocks/notebooks/dnamstress.ipynb +617 -0
  14. pyaging-0.2.0/clocks/notebooks/downsyndrome.ipynb +561 -0
  15. pyaging-0.2.0/clocks/notebooks/dunedinpoam38.ipynb +554 -0
  16. pyaging-0.2.0/clocks/notebooks/ensembleagehumanmouse.ipynb +563 -0
  17. pyaging-0.2.0/clocks/notebooks/epicga.ipynb +559 -0
  18. pyaging-0.2.0/clocks/notebooks/epicmithyper.ipynb +554 -0
  19. pyaging-0.2.0/clocks/notebooks/epicmithypo.ipynb +554 -0
  20. pyaging-0.2.0/clocks/notebooks/epitoc3.ipynb +546 -0
  21. pyaging-0.2.0/clocks/notebooks/garagnani.ipynb +553 -0
  22. pyaging-0.2.0/clocks/notebooks/gliasin.ipynb +557 -0
  23. pyaging-0.2.0/clocks/notebooks/hep.ipynb +557 -0
  24. pyaging-0.2.0/clocks/notebooks/hepatoxu.ipynb +564 -0
  25. pyaging-0.2.0/clocks/notebooks/mayne.ipynb +556 -0
  26. pyaging-0.2.0/clocks/notebooks/mccartneyalcohol.ipynb +567 -0
  27. pyaging-0.2.0/clocks/notebooks/mccartneytotalhdlratio.ipynb +554 -0
  28. pyaging-0.2.0/clocks/notebooks/mccartneywhr.ipynb +554 -0
  29. pyaging-0.2.0/clocks/notebooks/neusin.ipynb +557 -0
  30. pyaging-0.2.0/clocks/notebooks/prostatecancerkirby.ipynb +581 -0
  31. pyaging-0.2.0/clocks/notebooks/reedbmi.ipynb +554 -0
  32. pyaging-0.2.0/clocks/notebooks/replitalinorm.ipynb +617 -0
  33. pyaging-0.2.0/clocks/notebooks/senchronoage.ipynb +551 -0
  34. pyaging-0.2.0/clocks/notebooks/sencultureage.ipynb +551 -0
  35. pyaging-0.2.0/clocks/notebooks/senmortalityage.ipynb +551 -0
  36. pyaging-0.2.0/clocks/notebooks/stemtocvitro.ipynb +555 -0
  37. pyaging-0.2.0/clocks/notebooks/vidalbralo.ipynb +560 -0
  38. pyaging-0.2.0/clocks/notebooks/weidner.ipynb +566 -0
  39. pyaging-0.2.0/clocks/notebooks/wu.ipynb +562 -0
  40. {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/clock_glossary.csv +37 -0
  41. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/_static/clock_glossary.csv +42 -4
  42. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_implementation.rst +39 -1
  43. pyaging-0.2.0/docs/source/clock_notebooks/adbahadosingh.ipynb +559 -0
  44. pyaging-0.2.0/docs/source/clock_notebooks/bocklandt.ipynb +553 -0
  45. pyaging-0.2.0/docs/source/clock_notebooks/bohlin.ipynb +556 -0
  46. pyaging-0.2.0/docs/source/clock_notebooks/cellpopage.ipynb +614 -0
  47. pyaging-0.2.0/docs/source/clock_notebooks/compil6.ipynb +558 -0
  48. pyaging-0.2.0/docs/source/clock_notebooks/corticalclock.ipynb +624 -0
  49. pyaging-0.2.0/docs/source/clock_notebooks/ctsliver.ipynb +557 -0
  50. pyaging-0.2.0/docs/source/clock_notebooks/cvdwesterman.ipynb +557 -0
  51. pyaging-0.2.0/docs/source/clock_notebooks/depressionbarbu.ipynb +559 -0
  52. pyaging-0.2.0/docs/source/clock_notebooks/dnamfili.ipynb +630 -0
  53. pyaging-0.2.0/docs/source/clock_notebooks/dnamstress.ipynb +617 -0
  54. pyaging-0.2.0/docs/source/clock_notebooks/downsyndrome.ipynb +561 -0
  55. pyaging-0.2.0/docs/source/clock_notebooks/dunedinpoam38.ipynb +554 -0
  56. pyaging-0.2.0/docs/source/clock_notebooks/ensembleagehumanmouse.ipynb +563 -0
  57. pyaging-0.2.0/docs/source/clock_notebooks/epicga.ipynb +559 -0
  58. pyaging-0.2.0/docs/source/clock_notebooks/epicmithyper.ipynb +554 -0
  59. pyaging-0.2.0/docs/source/clock_notebooks/epicmithypo.ipynb +554 -0
  60. pyaging-0.2.0/docs/source/clock_notebooks/epitoc3.ipynb +546 -0
  61. pyaging-0.2.0/docs/source/clock_notebooks/garagnani.ipynb +553 -0
  62. pyaging-0.2.0/docs/source/clock_notebooks/gliasin.ipynb +557 -0
  63. pyaging-0.2.0/docs/source/clock_notebooks/hep.ipynb +557 -0
  64. pyaging-0.2.0/docs/source/clock_notebooks/hepatoxu.ipynb +564 -0
  65. pyaging-0.2.0/docs/source/clock_notebooks/mayne.ipynb +556 -0
  66. pyaging-0.2.0/docs/source/clock_notebooks/mccartneyalcohol.ipynb +567 -0
  67. pyaging-0.2.0/docs/source/clock_notebooks/mccartneytotalhdlratio.ipynb +554 -0
  68. pyaging-0.2.0/docs/source/clock_notebooks/mccartneywhr.ipynb +554 -0
  69. pyaging-0.2.0/docs/source/clock_notebooks/neusin.ipynb +557 -0
  70. pyaging-0.2.0/docs/source/clock_notebooks/prostatecancerkirby.ipynb +581 -0
  71. pyaging-0.2.0/docs/source/clock_notebooks/reedbmi.ipynb +554 -0
  72. pyaging-0.2.0/docs/source/clock_notebooks/replitalinorm.ipynb +617 -0
  73. pyaging-0.2.0/docs/source/clock_notebooks/senchronoage.ipynb +551 -0
  74. pyaging-0.2.0/docs/source/clock_notebooks/sencultureage.ipynb +551 -0
  75. pyaging-0.2.0/docs/source/clock_notebooks/senmortalityage.ipynb +551 -0
  76. pyaging-0.2.0/docs/source/clock_notebooks/stemtocvitro.ipynb +555 -0
  77. pyaging-0.2.0/docs/source/clock_notebooks/vidalbralo.ipynb +560 -0
  78. pyaging-0.2.0/docs/source/clock_notebooks/weidner.ipynb +566 -0
  79. pyaging-0.2.0/docs/source/clock_notebooks/wu.ipynb +562 -0
  80. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/conf.py +1 -1
  81. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/index.rst +3 -3
  82. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/installation.rst +5 -5
  83. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/tutorials/tutorial_atacseq.ipynb +1 -1
  84. {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_bloodchemistry.ipynb +1 -1
  85. {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_cpgptgrimage3.ipynb +1 -1
  86. {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_dnam_illumina_human_array.ipynb +1 -1
  87. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/tutorials/tutorial_dnam_illumina_mammalian_array.ipynb +1 -1
  88. {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_dnam_rrbs.ipynb +1 -1
  89. {pyaging-0.1.30 → pyaging-0.2.0/docs/source}/tutorials/tutorial_histonemarkchipseq.ipynb +1 -1
  90. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/tutorials/tutorial_rnaseq.ipynb +1 -1
  91. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/tutorials/tutorial_utils.ipynb +2 -2
  92. pyaging-0.2.0/docs/superpowers/specs/2026-07-04-missing-clocks-design.md +188 -0
  93. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/__init__.py +1 -1
  94. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/models/_models.py +195 -0
  95. {pyaging-0.1.30 → pyaging-0.2.0}/pyproject.toml +4 -3
  96. {pyaging-0.1.30 → pyaging-0.2.0}/readthedocs.yaml +2 -2
  97. {pyaging-0.1.30 → pyaging-0.2.0}/tests/predict/test_gold_standard.py +39 -2
  98. {pyaging-0.1.30 → pyaging-0.2.0}/tutorials/tutorial_atacseq.ipynb +1 -1
  99. {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_bloodchemistry.ipynb +1 -1
  100. {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_cpgptgrimage3.ipynb +5 -3
  101. {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_dnam_illumina_human_array.ipynb +1 -1
  102. {pyaging-0.1.30 → pyaging-0.2.0}/tutorials/tutorial_dnam_illumina_mammalian_array.ipynb +1 -1
  103. {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_dnam_rrbs.ipynb +1 -1
  104. {pyaging-0.1.30/docs/source → pyaging-0.2.0}/tutorials/tutorial_histonemarkchipseq.ipynb +1 -1
  105. {pyaging-0.1.30 → pyaging-0.2.0}/tutorials/tutorial_rnaseq.ipynb +1 -1
  106. {pyaging-0.1.30 → pyaging-0.2.0}/tutorials/tutorial_utils.ipynb +2 -2
  107. {pyaging-0.1.30 → pyaging-0.2.0}/uv.lock +3215 -1843
  108. {pyaging-0.1.30 → pyaging-0.2.0}/.cursor/rules/best-practices.mdc +0 -0
  109. {pyaging-0.1.30 → pyaging-0.2.0}/.github/workflows/build.yml +0 -0
  110. {pyaging-0.1.30 → pyaging-0.2.0}/.github/workflows/publish.yml +0 -0
  111. {pyaging-0.1.30 → pyaging-0.2.0}/.github/workflows/release.yml +0 -0
  112. {pyaging-0.1.30 → pyaging-0.2.0}/.github/workflows/test.yml +0 -0
  113. {pyaging-0.1.30 → pyaging-0.2.0}/.gitignore +0 -0
  114. {pyaging-0.1.30 → pyaging-0.2.0}/.pre-commit-config.yaml +0 -0
  115. {pyaging-0.1.30 → pyaging-0.2.0}/LICENSE +0 -0
  116. {pyaging-0.1.30 → pyaging-0.2.0}/Makefile +0 -0
  117. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/abec.ipynb +0 -0
  118. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/altumage.ipynb +0 -0
  119. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/bitage.ipynb +0 -0
  120. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/cabec.ipynb +0 -0
  121. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k27ac.ipynb +0 -0
  122. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k27me3.ipynb +0 -0
  123. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k36me3.ipynb +0 -0
  124. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k4me1.ipynb +0 -0
  125. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k4me3.ipynb +0 -0
  126. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k9ac.ipynb +0 -0
  127. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camilloh3k9me3.ipynb +0 -0
  128. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/camillopanhistone.ipynb +0 -0
  129. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/cpgptgrimage3.ipynb +0 -0
  130. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/cpgptpcgrimage3.ipynb +0 -0
  131. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepicbcell.ipynb +0 -0
  132. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepiccd4tcell.ipynb +0 -0
  133. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepiccd8tcell.ipynb +0 -0
  134. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepicmonocyte.ipynb +0 -0
  135. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepicneutrophil.ipynb +0 -0
  136. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/deconvolutebloodepicnkcell.ipynb +0 -0
  137. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitage.ipynb +0 -0
  138. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagegaitf.ipynb +0 -0
  139. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagegaitm.ipynb +0 -0
  140. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagegripf.ipynb +0 -0
  141. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagegripm.ipynb +0 -0
  142. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamfitagevo2max.ipynb +0 -0
  143. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamic.ipynb +0 -0
  144. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamphenoage.ipynb +0 -0
  145. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dnamtl.ipynb +0 -0
  146. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/dunedinpace.ipynb +0 -0
  147. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/eabec.ipynb +0 -0
  148. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/encen100.ipynb +0 -0
  149. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/encen40.ipynb +0 -0
  150. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ensembleagestatic.ipynb +0 -0
  151. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ensembleagestatictop.ipynb +0 -0
  152. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/epitoc1.ipynb +0 -0
  153. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/epitoc2.ipynb +0 -0
  154. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage.ipynb +0 -0
  155. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2.ipynb +0 -0
  156. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2adm.ipynb +0 -0
  157. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2b2m.ipynb +0 -0
  158. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2cystatinc.ipynb +0 -0
  159. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2gdf15.ipynb +0 -0
  160. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2leptin.ipynb +0 -0
  161. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2loga1c.ipynb +0 -0
  162. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2logcrp.ipynb +0 -0
  163. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2packyrs.ipynb +0 -0
  164. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2pai1.ipynb +0 -0
  165. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/grimage2timp1.ipynb +0 -0
  166. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/han.ipynb +0 -0
  167. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/hannum.ipynb +0 -0
  168. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/horvath2013.ipynb +0 -0
  169. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/hrsinchphenoage.ipynb +0 -0
  170. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/hypoclock.ipynb +0 -0
  171. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/intrinclock.ipynb +0 -0
  172. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/knight.ipynb +0 -0
  173. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/leecontrol.ipynb +0 -0
  174. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/leerefinedrobust.ipynb +0 -0
  175. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/leerobust.ipynb +0 -0
  176. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/lin.ipynb +0 -0
  177. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalian1.ipynb +0 -0
  178. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalian2.ipynb +0 -0
  179. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalian3.ipynb +0 -0
  180. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianblood2.ipynb +0 -0
  181. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianblood3.ipynb +0 -0
  182. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianfemale.ipynb +0 -0
  183. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianlifespan.ipynb +0 -0
  184. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianskin2.ipynb +0 -0
  185. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mammalianskin3.ipynb +0 -0
  186. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneybmi.ipynb +0 -0
  187. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneybodyfat.ipynb +0 -0
  188. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneyeducation.ipynb +0 -0
  189. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneyhdlcholesterol.ipynb +0 -0
  190. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneyldlcholesterol.ipynb +0 -0
  191. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneysmoking.ipynb +0 -0
  192. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/mccartneytotalcholesterol.ipynb +0 -0
  193. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/meer.ipynb +0 -0
  194. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ocampoatac1.ipynb +0 -0
  195. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ocampoatac2.ipynb +0 -0
  196. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pasta.ipynb +0 -0
  197. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pastamouse.ipynb +0 -0
  198. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pcdnamtl.ipynb +0 -0
  199. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pcgrimage.ipynb +0 -0
  200. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pchannum.ipynb +0 -0
  201. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pchorvath2013.ipynb +0 -0
  202. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pcphenoage.ipynb +0 -0
  203. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pcskinandblood.ipynb +0 -0
  204. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pedbe.ipynb +0 -0
  205. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/petkovich.ipynb +0 -0
  206. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/phenoage.ipynb +0 -0
  207. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pipekelasticnet.ipynb +0 -0
  208. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pipekfilteredh.ipynb +0 -0
  209. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/pipekretrainedh.ipynb +0 -0
  210. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/reg.ipynb +0 -0
  211. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/replitali.ipynb +0 -0
  212. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/retroelementagev1.ipynb +0 -0
  213. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/retroelementagev2.ipynb +0 -0
  214. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/skinandblood.ipynb +0 -0
  215. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stemtoc.ipynb +0 -0
  216. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stoch.ipynb +0 -0
  217. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stocp.ipynb +0 -0
  218. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stocz.ipynb +0 -0
  219. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/stubbs.ipynb +0 -0
  220. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsage.ipynb +0 -0
  221. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageblood.ipynb +0 -0
  222. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagebrain.ipynb +0 -0
  223. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageheart.ipynb +0 -0
  224. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagehormone.ipynb +0 -0
  225. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageimmune.ipynb +0 -0
  226. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageinflammation.ipynb +0 -0
  227. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagekidney.ipynb +0 -0
  228. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsageliver.ipynb +0 -0
  229. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagelung.ipynb +0 -0
  230. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagemetabolic.ipynb +0 -0
  231. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/systemsagemusculoskeletal.ipynb +0 -0
  232. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/template.ipynb +0 -0
  233. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/thompson.ipynb +0 -0
  234. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicbas.ipynb +0 -0
  235. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicbmem.ipynb +0 -0
  236. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicbnv.ipynb +0 -0
  237. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiccd4mem.ipynb +0 -0
  238. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiccd4nv.ipynb +0 -0
  239. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiccd8mem.ipynb +0 -0
  240. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiccd8nv.ipynb +0 -0
  241. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepiceos.ipynb +0 -0
  242. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicmono.ipynb +0 -0
  243. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicneu.ipynb +0 -0
  244. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepicnk.ipynb +0 -0
  245. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/twelvecelldeconvolutebloodepictreg.ipynb +0 -0
  246. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/xchrom.ipynb +0 -0
  247. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/ychrom.ipynb +0 -0
  248. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/yingadaptage.ipynb +0 -0
  249. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/yingcausage.ipynb +0 -0
  250. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/yingdamage.ipynb +0 -0
  251. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/zhangblup.ipynb +0 -0
  252. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/zhangen.ipynb +0 -0
  253. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/notebooks/zhangmortality.ipynb +0 -0
  254. {pyaging-0.1.30 → pyaging-0.2.0}/clocks/update_all_clocks.py +0 -0
  255. {pyaging-0.1.30 → pyaging-0.2.0}/docs/Makefile +0 -0
  256. {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/clock_glossary.js +0 -0
  257. {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/custom.css +0 -0
  258. {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/logo.png +0 -0
  259. {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/pyaging_graphical_abstract.pdf +0 -0
  260. {pyaging-0.1.30 → pyaging-0.2.0}/docs/_static/pyaging_graphical_abstract.png +0 -0
  261. {pyaging-0.1.30 → pyaging-0.2.0}/docs/environment.yml +0 -0
  262. {pyaging-0.1.30 → pyaging-0.2.0}/docs/make.bat +0 -0
  263. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_glossary.rst +0 -0
  264. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/abec.ipynb +0 -0
  265. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/altumage.ipynb +0 -0
  266. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/bitage.ipynb +0 -0
  267. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/cabec.ipynb +0 -0
  268. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k27ac.ipynb +0 -0
  269. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k27me3.ipynb +0 -0
  270. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k36me3.ipynb +0 -0
  271. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k4me1.ipynb +0 -0
  272. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k4me3.ipynb +0 -0
  273. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k9ac.ipynb +0 -0
  274. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camilloh3k9me3.ipynb +0 -0
  275. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/camillopanhistone.ipynb +0 -0
  276. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/cpgptgrimage3.ipynb +0 -0
  277. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/cpgptpcgrimage3.ipynb +0 -0
  278. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepicbcell.ipynb +0 -0
  279. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepiccd4tcell.ipynb +0 -0
  280. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepiccd8tcell.ipynb +0 -0
  281. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepicmonocyte.ipynb +0 -0
  282. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepicneutrophil.ipynb +0 -0
  283. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/deconvolutebloodepicnkcell.ipynb +0 -0
  284. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitage.ipynb +0 -0
  285. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagegaitf.ipynb +0 -0
  286. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagegaitm.ipynb +0 -0
  287. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagegripf.ipynb +0 -0
  288. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagegripm.ipynb +0 -0
  289. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamfitagevo2max.ipynb +0 -0
  290. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamic.ipynb +0 -0
  291. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamphenoage.ipynb +0 -0
  292. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dnamtl.ipynb +0 -0
  293. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/dunedinpace.ipynb +0 -0
  294. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/eabec.ipynb +0 -0
  295. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/encen100.ipynb +0 -0
  296. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/encen40.ipynb +0 -0
  297. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ensembleagestatic.ipynb +0 -0
  298. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ensembleagestatictop.ipynb +0 -0
  299. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/epitoc1.ipynb +0 -0
  300. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/epitoc2.ipynb +0 -0
  301. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage.ipynb +0 -0
  302. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2.ipynb +0 -0
  303. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2adm.ipynb +0 -0
  304. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2b2m.ipynb +0 -0
  305. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2cystatinc.ipynb +0 -0
  306. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2gdf15.ipynb +0 -0
  307. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2leptin.ipynb +0 -0
  308. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2loga1c.ipynb +0 -0
  309. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2logcrp.ipynb +0 -0
  310. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2packyrs.ipynb +0 -0
  311. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2pai1.ipynb +0 -0
  312. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/grimage2timp1.ipynb +0 -0
  313. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/han.ipynb +0 -0
  314. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/hannum.ipynb +0 -0
  315. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/horvath2013.ipynb +0 -0
  316. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/hrsinchphenoage.ipynb +0 -0
  317. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/hypoclock.ipynb +0 -0
  318. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/intrinclock.ipynb +0 -0
  319. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/knight.ipynb +0 -0
  320. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/leecontrol.ipynb +0 -0
  321. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/leerefinedrobust.ipynb +0 -0
  322. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/leerobust.ipynb +0 -0
  323. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/lin.ipynb +0 -0
  324. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalian1.ipynb +0 -0
  325. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalian2.ipynb +0 -0
  326. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalian3.ipynb +0 -0
  327. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianblood2.ipynb +0 -0
  328. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianblood3.ipynb +0 -0
  329. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianfemale.ipynb +0 -0
  330. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianlifespan.ipynb +0 -0
  331. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianskin2.ipynb +0 -0
  332. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mammalianskin3.ipynb +0 -0
  333. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneybmi.ipynb +0 -0
  334. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneybodyfat.ipynb +0 -0
  335. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneyeducation.ipynb +0 -0
  336. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneyhdlcholesterol.ipynb +0 -0
  337. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneyldlcholesterol.ipynb +0 -0
  338. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneysmoking.ipynb +0 -0
  339. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/mccartneytotalcholesterol.ipynb +0 -0
  340. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/meer.ipynb +0 -0
  341. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ocampoatac1.ipynb +0 -0
  342. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ocampoatac2.ipynb +0 -0
  343. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pasta.ipynb +0 -0
  344. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pastamouse.ipynb +0 -0
  345. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pcdnamtl.ipynb +0 -0
  346. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pcgrimage.ipynb +0 -0
  347. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pchannum.ipynb +0 -0
  348. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pchorvath2013.ipynb +0 -0
  349. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pcphenoage.ipynb +0 -0
  350. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pcskinandblood.ipynb +0 -0
  351. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pedbe.ipynb +0 -0
  352. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/petkovich.ipynb +0 -0
  353. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/phenoage.ipynb +0 -0
  354. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pipekelasticnet.ipynb +0 -0
  355. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pipekfilteredh.ipynb +0 -0
  356. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/pipekretrainedh.ipynb +0 -0
  357. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/reg.ipynb +0 -0
  358. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/replitali.ipynb +0 -0
  359. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/retroelementagev1.ipynb +0 -0
  360. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/retroelementagev2.ipynb +0 -0
  361. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/skinandblood.ipynb +0 -0
  362. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stemtoc.ipynb +0 -0
  363. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stoch.ipynb +0 -0
  364. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stocp.ipynb +0 -0
  365. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stocz.ipynb +0 -0
  366. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/stubbs.ipynb +0 -0
  367. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsage.ipynb +0 -0
  368. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageblood.ipynb +0 -0
  369. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagebrain.ipynb +0 -0
  370. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageheart.ipynb +0 -0
  371. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagehormone.ipynb +0 -0
  372. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageimmune.ipynb +0 -0
  373. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageinflammation.ipynb +0 -0
  374. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagekidney.ipynb +0 -0
  375. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsageliver.ipynb +0 -0
  376. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagelung.ipynb +0 -0
  377. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagemetabolic.ipynb +0 -0
  378. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/systemsagemusculoskeletal.ipynb +0 -0
  379. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/template.ipynb +0 -0
  380. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/thompson.ipynb +0 -0
  381. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicbas.ipynb +0 -0
  382. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicbmem.ipynb +0 -0
  383. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicbnv.ipynb +0 -0
  384. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiccd4mem.ipynb +0 -0
  385. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiccd4nv.ipynb +0 -0
  386. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiccd8mem.ipynb +0 -0
  387. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiccd8nv.ipynb +0 -0
  388. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepiceos.ipynb +0 -0
  389. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicmono.ipynb +0 -0
  390. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicneu.ipynb +0 -0
  391. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepicnk.ipynb +0 -0
  392. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/twelvecelldeconvolutebloodepictreg.ipynb +0 -0
  393. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/xchrom.ipynb +0 -0
  394. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/ychrom.ipynb +0 -0
  395. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/yingadaptage.ipynb +0 -0
  396. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/yingcausage.ipynb +0 -0
  397. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/yingdamage.ipynb +0 -0
  398. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/zhangblup.ipynb +0 -0
  399. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/zhangen.ipynb +0 -0
  400. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/clock_notebooks/zhangmortality.ipynb +0 -0
  401. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/make_clock_glossary.py +0 -0
  402. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.data.rst +0 -0
  403. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.models.rst +0 -0
  404. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.predict.rst +0 -0
  405. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.preprocess.rst +0 -0
  406. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.rst +0 -0
  407. {pyaging-0.1.30 → pyaging-0.2.0}/docs/source/pyaging.utils.rst +0 -0
  408. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/data/__init__.py +0 -0
  409. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/data/_data.py +0 -0
  410. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/logger/__init__.py +0 -0
  411. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/logger/_logger.py +0 -0
  412. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/models/__init__.py +0 -0
  413. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/models/_base_models.py +0 -0
  414. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/__init__.py +0 -0
  415. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/_postprocessing.py +0 -0
  416. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/_pred.py +0 -0
  417. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/_pred_utils.py +0 -0
  418. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/predict/_preprocessing.py +0 -0
  419. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/preprocess/__init__.py +0 -0
  420. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/preprocess/_preprocess.py +0 -0
  421. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/preprocess/_preprocess_utils.py +0 -0
  422. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/utils/__init__.py +0 -0
  423. {pyaging-0.1.30 → pyaging-0.2.0}/pyaging/utils/_utils.py +0 -0
  424. {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.1.30
3
+ Version: 0.2.0
4
4
  Summary: A Python-based compendium of GPU-optimized aging clocks.
5
- Project-URL: homepage, https://github.com/rsinghlab/pyaging
6
- Project-URL: repository, https://github.com/rsinghlab/pyaging
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
- [![test](https://github.com/rsinghlab/pyaging/actions/workflows/test.yml/badge.svg)](https://github.com/rsinghlab/pyaging/actions/workflows/test.yml)
44
- [![build](https://github.com/rsinghlab/pyaging/actions/workflows/build.yml/badge.svg)](https://github.com/rsinghlab/pyaging/actions/workflows/build.yml)
45
- [![publish](https://github.com/rsinghlab/pyaging/actions/workflows/publish.yml/badge.svg)](https://github.com/rsinghlab/pyaging/actions/workflows/publish.yml)
46
- [![release](https://github.com/rsinghlab/pyaging/actions/workflows/release.yml/badge.svg)](https://github.com/rsinghlab/pyaging/actions/workflows/release.yml)
44
+ [![test](https://github.com/lucascamillomd/pyaging/actions/workflows/test.yml/badge.svg)](https://github.com/lucascamillomd/pyaging/actions/workflows/test.yml)
45
+ [![build](https://github.com/lucascamillomd/pyaging/actions/workflows/build.yml/badge.svg)](https://github.com/lucascamillomd/pyaging/actions/workflows/build.yml)
46
+ [![publish](https://github.com/lucascamillomd/pyaging/actions/workflows/publish.yml/badge.svg)](https://github.com/lucascamillomd/pyaging/actions/workflows/publish.yml)
47
+ [![release](https://github.com/lucascamillomd/pyaging/actions/workflows/release.yml/badge.svg)](https://github.com/lucascamillomd/pyaging/actions/workflows/release.yml)
47
48
  [![documentation](https://readthedocs.org/projects/pyaging/badge/?version=latest)](https://pyaging.readthedocs.io/en/latest/)
48
49
  [![DOI](https://img.shields.io/badge/DOI-10.1093%2Fbioinformatics%2Fbtae200-blue.svg)](https://doi.org/10.1093/bioinformatics/btae200)
49
50
  [![upload](https://img.shields.io/pypi/v/pyaging?logo=PyPI)](https://pypi.org/project/pyaging/)
50
51
  [![download](https://static.pepy.tech/badge/pyaging)](https://pepy.tech/project/pyaging)
51
- [![star](https://img.shields.io/github/stars/rsinghlab/pyaging?logo=GitHub&color=red)](https://github.com/rsinghlab/pyaging/stargazers)
52
+ [![star](https://img.shields.io/github/stars/lucascamillomd/pyaging?logo=GitHub&color=red)](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/rsinghlab/pyaging/issues) page.
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
- [![test](https://github.com/rsinghlab/pyaging/actions/workflows/test.yml/badge.svg)](https://github.com/rsinghlab/pyaging/actions/workflows/test.yml)
8
- [![build](https://github.com/rsinghlab/pyaging/actions/workflows/build.yml/badge.svg)](https://github.com/rsinghlab/pyaging/actions/workflows/build.yml)
9
- [![publish](https://github.com/rsinghlab/pyaging/actions/workflows/publish.yml/badge.svg)](https://github.com/rsinghlab/pyaging/actions/workflows/publish.yml)
10
- [![release](https://github.com/rsinghlab/pyaging/actions/workflows/release.yml/badge.svg)](https://github.com/rsinghlab/pyaging/actions/workflows/release.yml)
7
+ [![test](https://github.com/lucascamillomd/pyaging/actions/workflows/test.yml/badge.svg)](https://github.com/lucascamillomd/pyaging/actions/workflows/test.yml)
8
+ [![build](https://github.com/lucascamillomd/pyaging/actions/workflows/build.yml/badge.svg)](https://github.com/lucascamillomd/pyaging/actions/workflows/build.yml)
9
+ [![publish](https://github.com/lucascamillomd/pyaging/actions/workflows/publish.yml/badge.svg)](https://github.com/lucascamillomd/pyaging/actions/workflows/publish.yml)
10
+ [![release](https://github.com/lucascamillomd/pyaging/actions/workflows/release.yml/badge.svg)](https://github.com/lucascamillomd/pyaging/actions/workflows/release.yml)
11
11
  [![documentation](https://readthedocs.org/projects/pyaging/badge/?version=latest)](https://pyaging.readthedocs.io/en/latest/)
12
12
  [![DOI](https://img.shields.io/badge/DOI-10.1093%2Fbioinformatics%2Fbtae200-blue.svg)](https://doi.org/10.1093/bioinformatics/btae200)
13
13
  [![upload](https://img.shields.io/pypi/v/pyaging?logo=PyPI)](https://pypi.org/project/pyaging/)
14
14
  [![download](https://static.pepy.tech/badge/pyaging)](https://pepy.tech/project/pyaging)
15
- [![star](https://img.shields.io/github/stars/rsinghlab/pyaging?logo=GitHub&color=red)](https://github.com/rsinghlab/pyaging/stargazers)
15
+ [![star](https://img.shields.io/github/stars/lucascamillomd/pyaging?logo=GitHub&color=red)](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/rsinghlab/pyaging/issues) page.
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
+ }