diffsky 0.2.3__tar.gz → 0.2.5__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 (440) hide show
  1. {diffsky-0.2.3 → diffsky-0.2.5}/.github/workflows/linting.yaml +1 -1
  2. {diffsky-0.2.3 → diffsky-0.2.5}/.github/workflows/monthly-warning-test.yaml +1 -1
  3. {diffsky-0.2.3 → diffsky-0.2.5}/.github/workflows/test_latest_releases.yaml +1 -1
  4. {diffsky-0.2.3 → diffsky-0.2.5}/.github/workflows/test_main_branch.yaml +1 -1
  5. {diffsky-0.2.3 → diffsky-0.2.5}/.github/workflows/tests_cron.yaml +1 -1
  6. {diffsky-0.2.3 → diffsky-0.2.5}/CHANGES.rst +10 -0
  7. {diffsky-0.2.3 → diffsky-0.2.5}/PKG-INFO +1 -1
  8. diffsky-0.2.5/diffsky/_version.py +1 -0
  9. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/lc_mock_production.py +86 -4
  10. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/lightcone_utils.py +11 -4
  11. diffsky-0.2.5/diffsky/ellipsoidal_shapes/bulge_opt.py +157 -0
  12. diffsky-0.2.5/diffsky/ellipsoidal_shapes/bulge_shapes.py +43 -0
  13. diffsky-0.2.5/diffsky/ellipsoidal_shapes/disk_opt.py +130 -0
  14. diffsky-0.2.5/diffsky/ellipsoidal_shapes/disk_shapes.py +34 -0
  15. diffsky-0.2.5/diffsky/ellipsoidal_shapes/ellipse_proj_kernels.py +180 -0
  16. diffsky-0.2.5/diffsky/ellipsoidal_shapes/pdf_model_utils.py +30 -0
  17. diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests/test_bulge_opt.py +33 -0
  18. diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests/test_bulge_shapes.py +28 -0
  19. diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests/test_disk_opt.py +33 -0
  20. diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests/test_disk_shapes.py +28 -0
  21. diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests/test_ellipse_proj_kernels.py +121 -0
  22. diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests/test_pdf_model_utils.py +18 -0
  23. diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests/testing_data/ellipsoid_b_over_a_pdf_rodriguez_padilla_2013.txt +30 -0
  24. diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests/testing_data/spiral_b_over_a_pdf_rodriguez_padilla_2013.txt +33 -0
  25. diffsky-0.2.5/diffsky/experimental/__init__.py +2 -0
  26. diffsky-0.2.5/diffsky/experimental/black_hole_modeling/README.txt +1 -0
  27. diffsky-0.2.5/diffsky/experimental/black_hole_modeling/black_hole_accretion_rate.py +140 -0
  28. diffsky-0.2.5/diffsky/experimental/black_hole_modeling/black_hole_mass.py +61 -0
  29. diffsky-0.2.5/diffsky/experimental/black_hole_modeling/tests/test_black_hole_accretion_rate.py +30 -0
  30. diffsky-0.2.5/diffsky/experimental/black_hole_modeling/tests/test_black_hole_mass.py +25 -0
  31. diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling/disk_bulge_kernels.py +314 -0
  32. diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling/disk_knots.py +57 -0
  33. diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling/generate_bulge_disk_sample.py +80 -0
  34. diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling/mc_disk_bulge.py +133 -0
  35. diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling/tests/test_disk_bulge.py +291 -0
  36. diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling/tests/test_disk_knots.py +90 -0
  37. diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling/tests/test_generate_bulge_disk_sample.py +67 -0
  38. diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling/tests/test_mc_disk_bulge.py +81 -0
  39. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/lc_phot_kern.py +97 -4
  40. diffsky-0.2.5/diffsky/experimental/lc_utils.py +135 -0
  41. diffsky-0.2.5/diffsky/experimental/mc_diffsky_seds.py +904 -0
  42. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/mc_lightcone_halos.py +410 -62
  43. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/precompute_ssp_phot.py +30 -0
  44. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/tests/test_lc_phot_kern.py +44 -3
  45. diffsky-0.2.5/diffsky/experimental/tests/test_lc_utils.py +47 -0
  46. diffsky-0.2.5/diffsky/experimental/tests/test_mc_diffsky_seds.py +223 -0
  47. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/tests/test_mc_lightcone_halos.py +41 -4
  48. diffsky-0.2.5/diffsky/experimental/tests/test_sobol_lightcone.py +67 -0
  49. diffsky-0.2.5/diffsky/experimental/tests/test_top_level_imports.py +14 -0
  50. diffsky-0.2.5/diffsky/mass_functions/fitting_utils/fit_flat_hmf_model.py +51 -0
  51. diffsky-0.2.5/diffsky/mass_functions/fitting_utils/fit_halobias_model.py +52 -0
  52. diffsky-0.2.5/diffsky/mass_functions/fitting_utils/fit_halobias_singlez_model.py +46 -0
  53. diffsky-0.2.5/diffsky/mass_functions/fitting_utils/tests/test_fit_flat_hmf_model.py +65 -0
  54. diffsky-0.2.5/diffsky/mass_functions/fitting_utils/tests/test_fit_halobias_model.py +58 -0
  55. diffsky-0.2.5/diffsky/mass_functions/fitting_utils/tests/test_fit_halobias_model_singlez.py +55 -0
  56. diffsky-0.2.5/diffsky/mass_functions/flat_hmf_model.py +133 -0
  57. diffsky-0.2.5/diffsky/mass_functions/halobias_model.py +207 -0
  58. diffsky-0.2.5/diffsky/mass_functions/halobias_singlez_model.py +155 -0
  59. diffsky-0.2.5/diffsky/mass_functions/tests/test_flat_hmf_model.py +68 -0
  60. diffsky-0.2.5/diffsky/mass_functions/tests/test_halobias_model.py +99 -0
  61. diffsky-0.2.5/diffsky/mass_functions/tests/test_halobias_singlez_model.py +87 -0
  62. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/param_utils/diffsky_param_wrapper.py +16 -13
  63. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/param_utils/tests/test_diffsky_param_wrapper.py +11 -0
  64. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/phot_utils.py +10 -2
  65. diffsky-0.2.5/diffsky/tests/__init__.py +0 -0
  66. diffsky-0.2.5/diffsky/tests/test_imports.py +5 -0
  67. diffsky-0.2.5/diffsky/tests/testing_data/__init__.py +0 -0
  68. diffsky-0.2.5/diffsky/utils/tests/__init__.py +0 -0
  69. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky.egg-info/PKG-INFO +1 -1
  70. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky.egg-info/SOURCES.txt +68 -10
  71. diffsky-0.2.5/docs/source/demo_diffmahpop_lightcone.ipynb +269 -0
  72. {diffsky-0.2.3 → diffsky-0.2.5}/docs/source/demo_diffmahpop_t_peak.ipynb +2 -2
  73. diffsky-0.2.5/docs/source/demo_diffsky_lightcone.ipynb +469 -0
  74. {diffsky-0.2.3 → diffsky-0.2.5}/docs/source/demos.rst +3 -1
  75. diffsky-0.2.3/docs/source/demo_mc_lightcones.ipynb → diffsky-0.2.5/docs/source/validate_mc_lightcones.ipynb +12 -2
  76. diffsky-0.2.5/scripts/LJ_CROSSX/bebop_jobs.sh +1 -0
  77. diffsky-0.2.5/scripts/LJ_CROSSX/generate_lj_cf_crossmatch_jobs.py +124 -0
  78. diffsky-0.2.5/scripts/LJ_CROSSX/inspect_lc_cf_crossx_job_logs.py +116 -0
  79. diffsky-0.2.3/scripts/inspect_lightcone_mock.py → diffsky-0.2.5/scripts/LJ_CROSSX/inspect_lc_crossx_data.py +1 -1
  80. {diffsky-0.2.3/scripts → diffsky-0.2.5/scripts/LJ_CROSSX}/lc_cf_crossmatch_script.py +4 -4
  81. diffsky-0.2.5/scripts/LJ_CROSSX/run_lc_cf_crossmatch_base.sh +21 -0
  82. diffsky-0.2.5/scripts/LJ_CROSSX/run_tabulate_coreforest_overlap.sh +19 -0
  83. {diffsky-0.2.3/scripts → diffsky-0.2.5/scripts/LJ_CROSSX}/tabulate_coreforest_overlap.py +2 -2
  84. diffsky-0.2.5/scripts/LJ_LC_MOCKS/make_sed_lc_mock_lj.py +213 -0
  85. {diffsky-0.2.3/scripts/LJ_LC_JOBS → diffsky-0.2.5/scripts/LJ_LC_MOCKS}/make_sfh_lc_mock_lj.py +5 -3
  86. diffsky-0.2.5/scripts/__init__.py +0 -0
  87. diffsky-0.2.5/scripts/tests/__init__.py +0 -0
  88. diffsky-0.2.5/scripts/tests/test_inspect_lightcone_mock.py +5 -0
  89. diffsky-0.2.5/scripts/tests/test_make_sfh_lj_mock.py +5 -0
  90. diffsky-0.2.5/scripts/tests/test_tabulate_coreforest_overlap.py +5 -0
  91. diffsky-0.2.3/diffsky/_version.py +0 -1
  92. diffsky-0.2.3/scripts/make_sfh_lightcone_last_journey.py +0 -159
  93. diffsky-0.2.3/scripts/tests/test_inspect_lightcone_mock.py +0 -5
  94. diffsky-0.2.3/scripts/tests/test_lc_cf_crossmatch_script.py +0 -5
  95. diffsky-0.2.3/scripts/tests/test_make_sfh_lj_mock.py +0 -5
  96. diffsky-0.2.3/scripts/tests/test_tabulate_coreforest_overlap.py +0 -5
  97. {diffsky-0.2.3 → diffsky-0.2.5}/.coveragerc +0 -0
  98. {diffsky-0.2.3 → diffsky-0.2.5}/.git_archival.txt +0 -0
  99. {diffsky-0.2.3 → diffsky-0.2.5}/.gitattributes +0 -0
  100. {diffsky-0.2.3 → diffsky-0.2.5}/.github/dependabot.yml +0 -0
  101. {diffsky-0.2.3 → diffsky-0.2.5}/.gitignore +0 -0
  102. {diffsky-0.2.3 → diffsky-0.2.5}/.readthedocs.yml +0 -0
  103. {diffsky-0.2.3 → diffsky-0.2.5}/LICENSE.rst +0 -0
  104. {diffsky-0.2.3 → diffsky-0.2.5}/README.rst +0 -0
  105. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/__init__.py +0 -0
  106. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/__init__.py +0 -0
  107. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diagnostics/__init__.py +0 -0
  108. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diagnostics/plot_fburstpop.py +0 -0
  109. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diagnostics/plot_tburstpop.py +0 -0
  110. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diagnostics/tests/__init__.py +0 -0
  111. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diagnostics/tests/test_plot_fburstpop.py +0 -0
  112. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diagnostics/tests/test_plot_tburstpop.py +0 -0
  113. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diffburstpop.py +0 -0
  114. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diffqburstpop.py +0 -0
  115. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diffqburstpop_mono.py +0 -0
  116. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/diffqburstpop_mono_noise.py +0 -0
  117. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/fburstpop.py +0 -0
  118. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/fburstpop_mono.py +0 -0
  119. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/freqburst.py +0 -0
  120. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/freqburst_mono.py +0 -0
  121. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tburstpop.py +0 -0
  122. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/__init__.py +0 -0
  123. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_diffburstpop.py +0 -0
  124. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_diffqburstpop.py +0 -0
  125. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_diffqburstpop_mono.py +0 -0
  126. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_diffqburstpop_mono_noise.py +0 -0
  127. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_fburstpop.py +0 -0
  128. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_fburstpop_mono.py +0 -0
  129. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_freqburst.py +0 -0
  130. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_freqburst_mono.py +0 -0
  131. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/burstpop/tests/test_tburstpop.py +0 -0
  132. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/cosmos_utils/__init__.py +0 -0
  133. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/cosmos_utils/cosmos_mstar_model.py +0 -0
  134. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/cosmos_utils/tests/__init__.py +0 -0
  135. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/cosmos_utils/tests/test_cosmos_mstar_model.py +0 -0
  136. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/__init__.py +0 -0
  137. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/cosmos20_loader.py +0 -0
  138. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/__init__.py +0 -0
  139. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/data_validation/__init__.py +0 -0
  140. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/data_validation/tests/__init__.py +0 -0
  141. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/data_validation/tests/test_validate_lc_cores.py +0 -0
  142. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/data_validation/tests/test_validate_lc_mock.py +0 -0
  143. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/data_validation/validate_lc_cores.py +0 -0
  144. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/data_validation/validate_lc_mock.py +0 -0
  145. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/defaults.py +0 -0
  146. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/hacc_core_utils.py +0 -0
  147. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/load_hacc_cores.py +0 -0
  148. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/load_lc_cf.py +0 -0
  149. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/load_lc_cf_synthetic.py +0 -0
  150. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/load_lc_mock.py +0 -0
  151. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/metadata_sfh_mock.py +0 -0
  152. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/__init__.py +0 -0
  153. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/test_defaults.py +0 -0
  154. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/test_hacc_core_utils.py +0 -0
  155. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/test_lc_mock_production.py +0 -0
  156. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/test_lightcone_utils.py +0 -0
  157. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/test_load_hacc_cores.py +0 -0
  158. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/test_load_lc_cf.py +0 -0
  159. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/testing_data/lc_cores-decomposition.txt +0 -0
  160. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/testing_data/phi_haccytrees_tdata.txt +0 -0
  161. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/testing_data/redshift_haccytrees_tdata.txt +0 -0
  162. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/testing_data/theta_haccytrees_tdata.txt +0 -0
  163. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/testing_data/x_haccytrees_tdata.txt +0 -0
  164. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/testing_data/y_haccytrees_tdata.txt +0 -0
  165. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/hacc_utils/tests/testing_data/z_haccytrees_tdata.txt +0 -0
  166. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/io_utils.py +0 -0
  167. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/mpi_utils.py +0 -0
  168. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/tests/__init__.py +0 -0
  169. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/tests/test_cosmos_loader.py +0 -0
  170. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/tests/test_imports.py +0 -0
  171. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/tests/testing_data/__init__.py +0 -0
  172. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/tests/testing_data/cosmos20_shasum.dat +0 -0
  173. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/data_loaders/um_binary_loader.py +0 -0
  174. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/diagnostics/__init__.py +0 -0
  175. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/diagnostics/plot_delta_mag_burstiness.py +0 -0
  176. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/diagnostics/plot_diffstar_fq.py +0 -0
  177. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/diagnostics/tests/__init__.py +0 -0
  178. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/diagnostics/tests/test_plot_delta_mag_burstiness.py +0 -0
  179. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/diagnostics/tests/test_plot_diffstar_fq.py +0 -0
  180. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/diagnostics/utils.py +0 -0
  181. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/diffndhist.py +0 -0
  182. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/__init__.py +0 -0
  183. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/avpop.py +0 -0
  184. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/avpop_flex.py +0 -0
  185. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/avpop_mono.py +0 -0
  186. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/deltapop.py +0 -0
  187. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/diagnostics/__init__.py +0 -0
  188. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/diagnostics/plot_avpop_flex.py +0 -0
  189. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/diagnostics/plot_funopop_simple.py +0 -0
  190. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/diagnostics/tests/__init__.py +0 -0
  191. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/diagnostics/tests/test_plot_avpop_flex.py +0 -0
  192. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/diagnostics/tests/test_plot_funopop_simple.py +0 -0
  193. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/funopop.py +0 -0
  194. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/funopop_simple.py +0 -0
  195. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/funopop_ssfr.py +0 -0
  196. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/sbl18_dust.py +0 -0
  197. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/sbl18_dust_kernels.py +0 -0
  198. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/sbl18_dustpop.py +0 -0
  199. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/__init__.py +0 -0
  200. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_avpop.py +0 -0
  201. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_avpop_flex.py +0 -0
  202. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_avpop_mono.py +0 -0
  203. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_deltapop.py +0 -0
  204. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_funopop_model.py +0 -0
  205. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_funopop_simple.py +0 -0
  206. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_funopop_ssfr.py +0 -0
  207. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_sbl18_dustpop.py +0 -0
  208. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_tw_dust_kernels.py +0 -0
  209. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_tw_dustpop.py +0 -0
  210. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_tw_dustpop_mono.py +0 -0
  211. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_tw_dustpop_mono_noise.py +0 -0
  212. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tests/test_tw_dustpop_new.py +0 -0
  213. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tw_dust.py +0 -0
  214. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tw_dust_kernels.py +0 -0
  215. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tw_dustpop.py +0 -0
  216. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tw_dustpop_mono.py +0 -0
  217. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tw_dustpop_mono_noise.py +0 -0
  218. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/dustpop/tw_dustpop_new.py +0 -0
  219. {diffsky-0.2.3/diffsky/experimental → diffsky-0.2.5/diffsky/ellipsoidal_shapes}/__init__.py +0 -0
  220. {diffsky-0.2.3/diffsky/experimental/diagnostics → diffsky-0.2.5/diffsky/ellipsoidal_shapes/tests}/__init__.py +0 -0
  221. {diffsky-0.2.3/diffsky/experimental/diagnostics/tests → diffsky-0.2.5/diffsky/experimental/black_hole_modeling}/__init__.py +0 -0
  222. {diffsky-0.2.3/diffsky/experimental/dspspop → diffsky-0.2.5/diffsky/experimental/black_hole_modeling/tests}/__init__.py +0 -0
  223. {diffsky-0.2.3/diffsky/experimental/dspspop/tests → diffsky-0.2.5/diffsky/experimental/diagnostics}/__init__.py +0 -0
  224. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/diagnostics/check_smhm.py +0 -0
  225. {diffsky-0.2.3/diffsky/experimental → diffsky-0.2.5/diffsky/experimental/diagnostics}/tests/__init__.py +0 -0
  226. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/diagnostics/tests/test_check_smhm.py +0 -0
  227. {diffsky-0.2.3/diffsky/fake_sats → diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling}/__init__.py +0 -0
  228. {diffsky-0.2.3/diffsky/fake_sats → diffsky-0.2.5/diffsky/experimental/disk_bulge_modeling}/tests/__init__.py +0 -0
  229. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils → diffsky-0.2.5/diffsky/experimental/dspspop}/__init__.py +0 -0
  230. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/boris_dust.py +0 -0
  231. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/burstshapepop.py +0 -0
  232. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/dust_deltapop.py +0 -0
  233. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/dustpop.py +0 -0
  234. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/lgavpop.py +0 -0
  235. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/lgfburstpop.py +0 -0
  236. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/nagaraj22_dust.py +0 -0
  237. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/photpop.py +0 -0
  238. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/calibrations → diffsky-0.2.5/diffsky/experimental/dspspop/tests}/__init__.py +0 -0
  239. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/tests/test_attavpop.py +0 -0
  240. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/tests/test_boris_dust.py +0 -0
  241. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/tests/test_burstshapepop.py +0 -0
  242. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/tests/test_dustdeltapop.py +0 -0
  243. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/tests/test_lgfburstpop.py +0 -0
  244. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/dspspop/tests/test_photpop.py +0 -0
  245. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/mc_diffsky_phot.py +0 -0
  246. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/phot_utils.py +0 -0
  247. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/photometry_interpolation.py +0 -0
  248. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/scatter.py +0 -0
  249. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/ssp_err_pop.py +0 -0
  250. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/calibrations → diffsky-0.2.5/diffsky/experimental}/tests/__init__.py +0 -0
  251. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/tests/test_mc_diffsky_phot.py +0 -0
  252. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/tests/test_photometry_interpolation.py +0 -0
  253. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/tests/test_precompute_ssp_phot.py +0 -0
  254. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/tests/test_scatter.py +0 -0
  255. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/experimental/tests/test_ssp_err_pop.py +0 -0
  256. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/diagnostics → diffsky-0.2.5/diffsky/fake_sats}/__init__.py +0 -0
  257. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/ellipsoidal_nfw_phase_space.py +0 -0
  258. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/ellipsoidal_velocities.py +0 -0
  259. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/halo_boundary_functions.py +0 -0
  260. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/nfw_config_space.py +0 -0
  261. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/rotations3d.py +0 -0
  262. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/diagnostics → diffsky-0.2.5/diffsky/fake_sats}/tests/__init__.py +0 -0
  263. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/tests/test_ellipsoidal_nfw_phase_space.py +0 -0
  264. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/tests/test_halo_boundary_functions.py +0 -0
  265. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/tests/test_mc_ellipticial_velocities.py +0 -0
  266. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/tests/test_nfw_config_space.py +0 -0
  267. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/tests/test_rotations3d.py +0 -0
  268. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/tests/testing_data/halo_mass_ht_test.txt +0 -0
  269. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/tests/testing_data/halo_radius_200c_ht_test.txt +0 -0
  270. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/tests/testing_data/redshift_ht_test.txt +0 -0
  271. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/fake_sats/vector_utilities.py +0 -0
  272. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/__init__.py +0 -0
  273. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/ccshmf_model.py +0 -0
  274. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/README.rst +0 -0
  275. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/tests → diffsky-0.2.5/diffsky/mass_functions/fitting_utils}/__init__.py +0 -0
  276. {diffsky-0.2.3/diffsky/mass_functions/hmf_calibrations/tests → diffsky-0.2.5/diffsky/mass_functions/fitting_utils/calibrations}/__init__.py +0 -0
  277. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/calibrations/hacc_core_shmf_params.py +0 -0
  278. {diffsky-0.2.3/diffsky/mass_functions/io_utils → diffsky-0.2.5/diffsky/mass_functions/fitting_utils/calibrations/tests}/__init__.py +0 -0
  279. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/calibrations/tests/test_hacc_core_shmf_params.py +0 -0
  280. {diffsky-0.2.3/diffsky/mass_functions/kernels → diffsky-0.2.5/diffsky/mass_functions/fitting_utils/diagnostics}/__init__.py +0 -0
  281. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/diagnostics/hmf_fit_diagnostics.py +0 -0
  282. {diffsky-0.2.3/diffsky/mass_functions/kernels → diffsky-0.2.5/diffsky/mass_functions/fitting_utils/diagnostics}/tests/__init__.py +0 -0
  283. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/diagnostics/tests/test_hmf_fit_diagnostics.py +0 -0
  284. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/fit_ccshmf.py +0 -0
  285. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/fit_ccshmf_kernels.py +0 -0
  286. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/fit_hmf_kernels.py +0 -0
  287. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/fit_hmf_model.py +0 -0
  288. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/fitting_helpers.py +0 -0
  289. {diffsky-0.2.3/diffsky/mass_functions/smhm_kernels → diffsky-0.2.5/diffsky/mass_functions/fitting_utils/tests}/__init__.py +0 -0
  290. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/tests/test_fit_ccshmf.py +0 -0
  291. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/tests/test_fit_ccshmf_kernels.py +0 -0
  292. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/tests/test_fit_hmf_kernels.py +0 -0
  293. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/fitting_utils/tests/test_fit_hmf_model.py +0 -0
  294. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/__init__.py +0 -0
  295. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/disc_lcdm_hmf_params.txt +0 -0
  296. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/disc_lcdm_hmf_params_all.txt +0 -0
  297. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/hmf_param_reader.py +0 -0
  298. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/lj_hmf_params.txt +0 -0
  299. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/lj_hmf_params_all.txt +0 -0
  300. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf.py +0 -0
  301. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf_fitting_helpers.py +0 -0
  302. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf_subs.py +0 -0
  303. {diffsky-0.2.3/diffsky/mass_functions/smhm_kernels → diffsky-0.2.5/diffsky/mass_functions/hmf_calibrations}/tests/__init__.py +0 -0
  304. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/test_imports.py +0 -0
  305. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/test_lj_hmf.py +0 -0
  306. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/test_smdpl_hmf.py +0 -0
  307. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_cuml_density_all.txt +0 -0
  308. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_cuml_density_cens.txt +0 -0
  309. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_logmp_bins.txt +0 -0
  310. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_redshift_bins.txt +0 -0
  311. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_cuml_density_all.txt +0 -0
  312. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_cuml_density_cens.txt +0 -0
  313. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_logmp_bins.txt +0 -0
  314. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_redshift_bins.txt +0 -0
  315. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.219000.subhalos.lgcuml_density.npy +0 -0
  316. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.219000.subhalos.logmp_bins.npy +0 -0
  317. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.hosthalos.lgcuml_density.npy +0 -0
  318. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.hosthalos.logmp_bins.npy +0 -0
  319. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.subhalos.lgcuml_density.npy +0 -0
  320. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.subhalos.logmp_bins.npy +0 -0
  321. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.hosthalos.lgcuml_density.npy +0 -0
  322. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.hosthalos.logmp_bins.npy +0 -0
  323. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.subhalos.lgcuml_density.npy +0 -0
  324. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.subhalos.logmp_bins.npy +0 -0
  325. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/hmf_model.py +0 -0
  326. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/io_utils/README.txt +0 -0
  327. {diffsky-0.2.3/diffsky/mass_functions/tests → diffsky-0.2.5/diffsky/mass_functions/io_utils}/__init__.py +0 -0
  328. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/io_utils/loader.py +0 -0
  329. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/io_utils/smdpl_helpers.py +0 -0
  330. {diffsky-0.2.3/diffsky/mass_functions/tests/testing_data → diffsky-0.2.5/diffsky/mass_functions/kernels}/__init__.py +0 -0
  331. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/kernels/ccshmf_kernels.py +0 -0
  332. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/kernels/hmf_kernels.py +0 -0
  333. {diffsky-0.2.3/diffsky/mass_functions/upweighting → diffsky-0.2.5/diffsky/mass_functions/kernels/tests}/__init__.py +0 -0
  334. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/kernels/tests/test_ccshmf_kernels.py +0 -0
  335. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/kernels/tests/test_hmf_kernels.py +0 -0
  336. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/mc_diffmah_tpeak.py +0 -0
  337. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/mc_hosts.py +0 -0
  338. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/mc_subs.py +0 -0
  339. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/mc_tinfall.py +0 -0
  340. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/measure_ccshmf.py +0 -0
  341. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/measure_hmf.py +0 -0
  342. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/fit_hmf_disc_lcdm.py +0 -0
  343. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/measure_hmf_target_data_hacc.py +0 -0
  344. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/run_hmf_tabulation_disc_lcdm.sh +0 -0
  345. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/scripts/last_journey_calibration/fit_hmf_lj.py +0 -0
  346. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/scripts/last_journey_calibration/measure_hmf_target_data_hacc.py +0 -0
  347. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/scripts/smdpl_calibration/fit_smdpl_hmf_script.py +0 -0
  348. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/scripts/smdpl_calibration/measure_smdpl_hmf_script.py +0 -0
  349. {diffsky-0.2.3/diffsky/mass_functions/upweighting/tests → diffsky-0.2.5/diffsky/mass_functions/smhm_kernels}/__init__.py +0 -0
  350. {diffsky-0.2.3/diffsky/merging → diffsky-0.2.5/diffsky/mass_functions/smhm_kernels/tests}/__init__.py +0 -0
  351. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/smhm_kernels/tests/test_threeroll_smhm.py +0 -0
  352. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/smhm_kernels/threeroll_kernels.py +0 -0
  353. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/smhm_kernels/threeroll_smhm.py +0 -0
  354. {diffsky-0.2.3/diffsky/merging/diagnostics → diffsky-0.2.5/diffsky/mass_functions/tests}/__init__.py +0 -0
  355. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/test_ccshmf.py +0 -0
  356. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/test_hmf_model.py +0 -0
  357. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/test_mc_diffmah_tpeak.py +0 -0
  358. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/test_mc_hosts.py +0 -0
  359. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/test_mc_subs.py +0 -0
  360. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/test_mc_tinfall.py +0 -0
  361. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/test_measure_hmf.py +0 -0
  362. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/README.txt +0 -0
  363. {diffsky-0.2.3/diffsky/merging/diagnostics/tests → diffsky-0.2.5/diffsky/mass_functions/tests/testing_data}/__init__.py +0 -0
  364. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_12.32.txt +0 -0
  365. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_13.00.txt +0 -0
  366. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_13.55.txt +0 -0
  367. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_14.08.txt +0 -0
  368. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_12.31.txt +0 -0
  369. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_12.99.txt +0 -0
  370. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_13.51.txt +0 -0
  371. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_14.05.txt +0 -0
  372. {diffsky-0.2.3/diffsky/merging/tests → diffsky-0.2.5/diffsky/mass_functions/upweighting}/__init__.py +0 -0
  373. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/upweighting/namedtuple_cat_utils.py +0 -0
  374. {diffsky-0.2.3/diffsky/param_utils → diffsky-0.2.5/diffsky/mass_functions/upweighting/tests}/__init__.py +0 -0
  375. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/upweighting/tests/test_mc_gen_upweighting.py +0 -0
  376. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/upweighting/upweighting.py +0 -0
  377. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mass_functions/utils.py +0 -0
  378. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/mc_diffsky.py +0 -0
  379. {diffsky-0.2.3/diffsky/param_utils/tests → diffsky-0.2.5/diffsky/merging}/__init__.py +0 -0
  380. {diffsky-0.2.3/diffsky/ssp_err_model → diffsky-0.2.5/diffsky/merging/diagnostics}/__init__.py +0 -0
  381. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/merging/diagnostics/plot_pmerge_vs_time.py +0 -0
  382. {diffsky-0.2.3/diffsky/ssp_err_model → diffsky-0.2.5/diffsky/merging/diagnostics}/tests/__init__.py +0 -0
  383. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/merging/diagnostics/tests/test_plot_pmerge_vs_time.py +0 -0
  384. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/merging/fitmerge_multi_redshift.py +0 -0
  385. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/merging/merging_model.py +0 -0
  386. {diffsky-0.2.3/diffsky/sumstats → diffsky-0.2.5/diffsky/merging/tests}/__init__.py +0 -0
  387. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/merging/tests/test_fitmerge_multi_redshift.py +0 -0
  388. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/merging/tests/test_merging_model.py +0 -0
  389. {diffsky-0.2.3/diffsky/sumstats/tests → diffsky-0.2.5/diffsky/param_utils}/__init__.py +0 -0
  390. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/param_utils/spspop_param_utils.py +0 -0
  391. {diffsky-0.2.3/diffsky/systematics → diffsky-0.2.5/diffsky/param_utils/tests}/__init__.py +0 -0
  392. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/param_utils/tests/test_spspop_param_utils.py +0 -0
  393. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/sbl18_photgrad.py +0 -0
  394. {diffsky-0.2.3/diffsky/systematics/tests → diffsky-0.2.5/diffsky/ssp_err_model}/__init__.py +0 -0
  395. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/ssp_err_model/ssp_err_model.py +0 -0
  396. {diffsky-0.2.3/diffsky → diffsky-0.2.5/diffsky/ssp_err_model}/tests/__init__.py +0 -0
  397. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/ssp_err_model/tests/test_ssp_err_model.py +0 -0
  398. {diffsky-0.2.3/diffsky/tests/testing_data → diffsky-0.2.5/diffsky/sumstats}/__init__.py +0 -0
  399. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/sumstats/diffndhist.py +0 -0
  400. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/sumstats/smhm.py +0 -0
  401. {diffsky-0.2.3/diffsky/utils → diffsky-0.2.5/diffsky/sumstats}/tests/__init__.py +0 -0
  402. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/sumstats/tests/test_smhm.py +0 -0
  403. {diffsky-0.2.3/scripts → diffsky-0.2.5/diffsky/systematics}/__init__.py +0 -0
  404. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/systematics/ssp_errors.py +0 -0
  405. {diffsky-0.2.3/scripts → diffsky-0.2.5/diffsky/systematics}/tests/__init__.py +0 -0
  406. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/systematics/tests/test_ssp_errors.py +0 -0
  407. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/tests/test_dependencies.py +0 -0
  408. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/tests/test_diffndhist.py +0 -0
  409. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/tests/test_diffsky_setup.py +0 -0
  410. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/tests/test_mc_diffsky.py +0 -0
  411. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/tests/test_phot_utils.py +0 -0
  412. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/tests/test_sbl18_photgrad.py +0 -0
  413. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/tests/test_tw_photgrad.py +0 -0
  414. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/tw_photgrad.py +0 -0
  415. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/__init__.py +0 -0
  416. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/crossmatch_utils.py +0 -0
  417. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/sfh_utils.py +0 -0
  418. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/tests/test_crossmatch_utils.py +0 -0
  419. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/tests/test_sfh_utils.py +0 -0
  420. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/tests/test_tw_utils.py +0 -0
  421. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/tests/test_utility_funcs.py +0 -0
  422. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/tw_utils.py +0 -0
  423. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky/utils/utility_funcs.py +0 -0
  424. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky.egg-info/dependency_links.txt +0 -0
  425. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky.egg-info/requires.txt +0 -0
  426. {diffsky-0.2.3 → diffsky-0.2.5}/diffsky.egg-info/top_level.txt +0 -0
  427. {diffsky-0.2.3 → diffsky-0.2.5}/docs/Makefile +0 -0
  428. {diffsky-0.2.3 → diffsky-0.2.5}/docs/make.bat +0 -0
  429. {diffsky-0.2.3 → diffsky-0.2.5}/docs/source/citation.rst +0 -0
  430. {diffsky-0.2.3 → diffsky-0.2.5}/docs/source/conf.py +0 -0
  431. {diffsky-0.2.3 → diffsky-0.2.5}/docs/source/index.rst +0 -0
  432. {diffsky-0.2.3 → diffsky-0.2.5}/docs/source/installation.rst +0 -0
  433. {diffsky-0.2.3 → diffsky-0.2.5}/docs/source/rtd_environment.yaml +0 -0
  434. {diffsky-0.2.3 → diffsky-0.2.5}/pyproject.toml +0 -0
  435. {diffsky-0.2.3 → diffsky-0.2.5}/requirements.txt +0 -0
  436. {diffsky-0.2.3/scripts/LJ_LC_JOBS → diffsky-0.2.5/scripts/LJ_LC_MOCKS}/generate_sfh_mock_jobs.py +0 -0
  437. {diffsky-0.2.3/scripts → diffsky-0.2.5/scripts/LJ_LC_MOCKS}/inspect_lc_mock.py +0 -0
  438. /diffsky-0.2.3/scripts/make_sfh_lj_mock.py → /diffsky-0.2.5/scripts/LJ_SNAP_MOCKS/make_sfh_lj_snapshot_mock.py +0 -0
  439. {diffsky-0.2.3 → diffsky-0.2.5}/setup.cfg +0 -0
  440. {diffsky-0.2.3 → diffsky-0.2.5}/setup.py +0 -0
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: "ubuntu-latest"
13
13
 
14
14
  steps:
15
- - uses: actions/checkout@v4
15
+ - uses: actions/checkout@v5
16
16
 
17
17
  - uses: conda-incubator/setup-miniconda@v3
18
18
  with:
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: "ubuntu-latest"
13
13
 
14
14
  steps:
15
- - uses: actions/checkout@v4
15
+ - uses: actions/checkout@v5
16
16
  with:
17
17
  fetch-depth: 0
18
18
 
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: "ubuntu-latest"
13
13
 
14
14
  steps:
15
- - uses: actions/checkout@v4
15
+ - uses: actions/checkout@v5
16
16
  with:
17
17
  fetch-depth: 0
18
18
 
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: "ubuntu-latest"
13
13
 
14
14
  steps:
15
- - uses: actions/checkout@v4
15
+ - uses: actions/checkout@v5
16
16
  with:
17
17
  fetch-depth: 0
18
18
 
@@ -16,7 +16,7 @@ jobs:
16
16
  runs-on: "ubuntu-latest"
17
17
 
18
18
  steps:
19
- - uses: actions/checkout@v4
19
+ - uses: actions/checkout@v5
20
20
  with:
21
21
  fetch-depth: 0
22
22
 
@@ -1,3 +1,13 @@
1
+ 0.2.5 (2025-10-01)
2
+ -------------------
3
+ - Minor changes before updating to diffstar v1.0
4
+
5
+
6
+ 0.2.4 (2025-09-02)
7
+ -------------------
8
+ - Release associated with diffskyopt+kdescent calibration by Alan Pearl
9
+
10
+
1
11
  0.2.3 (2025-07-30)
2
12
  -------------------
3
13
  - Fix bug in lightcone data loader (https://github.com/ArgonneCPAC/diffsky/pull/195)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsky
3
- Version: 0.2.3
3
+ Version: 0.2.5
4
4
  Summary: Library for differentiable generation of synthetic skies
5
5
  Author-email: Andrew Hearin <ahearin@anl.gov>
6
6
  License: BSD 3-Clause License
@@ -0,0 +1 @@
1
+ __version__ = '0.2.5'
@@ -15,8 +15,10 @@ from diffstarpop.param_utils import mc_select_diffstar_params
15
15
  from dsps.cosmology import flat_wcdm
16
16
  from jax import random as jran
17
17
 
18
+ from ...experimental import mc_diffsky_seds
18
19
  from ...fake_sats import halo_boundary_functions as hbf
19
20
  from ...fake_sats import nfw_config_space as nfwcs
21
+ from ...param_utils import diffsky_param_wrapper as dpw
20
22
  from ...utils.sfh_utils import get_logsm_logssfr_at_t_obs
21
23
  from . import lightcone_utils as hlu
22
24
  from . import load_lc_cf
@@ -94,6 +96,10 @@ def write_lc_sfh_mock_to_disk(fnout, lc_data, diffsky_data):
94
96
  hdf_out[key_out] = diffsky_data[key]
95
97
 
96
98
 
99
+ def write_lc_sed_mock_to_disk(fnout, lc_data, diffsky_data):
100
+ raise NotImplementedError("Need to add SED quantities to write_lc_sed_mock_to_disk")
101
+
102
+
97
103
  def add_sfh_quantities_to_mock(sim_info, lc_data, diffsky_data, ran_key):
98
104
  lc_data["t_obs"] = flat_wcdm.age_at_z(
99
105
  lc_data["redshift_true"], *sim_info.cosmo_params
@@ -105,6 +111,7 @@ def add_sfh_quantities_to_mock(sim_info, lc_data, diffsky_data, ran_key):
105
111
  for pname, pval in zip(mah_params._fields, mah_params):
106
112
  diffsky_data[pname] = pval
107
113
  diffsky_data["has_diffmah_fit"] = msk_has_diffmah_fit
114
+ diffsky_data["mah_params"] = mah_params
108
115
 
109
116
  logmp0 = logmh_at_t_obs(
110
117
  mah_params, np.zeros(mah_params.logm0.size) + 10**sim_info.lgt0, sim_info.lgt0
@@ -121,7 +128,7 @@ def add_sfh_quantities_to_mock(sim_info, lc_data, diffsky_data, ran_key):
121
128
  gyr_since_infall = np.zeros_like(logmp0)
122
129
  upids = np.where(lc_data["central"] == 1, -1, 0)
123
130
 
124
- t_table = np.linspace(0.1, 10**sim_info.lgt0, 100)
131
+ diffsky_data["t_table"] = np.linspace(0.1, 10**sim_info.lgt0, 100)
125
132
 
126
133
  args = (
127
134
  DEFAULT_DIFFSTARPOP_PARAMS,
@@ -132,27 +139,102 @@ def add_sfh_quantities_to_mock(sim_info, lc_data, diffsky_data, ran_key):
132
139
  logmhost_infall,
133
140
  gyr_since_infall,
134
141
  ran_key,
135
- t_table,
142
+ diffsky_data["t_table"],
136
143
  )
137
144
 
138
145
  _res = mc_diffstar_sfh_galpop(*args)
139
146
  sfh_params_ms, sfh_params_q, sfh_ms, sfh_q, frac_q, mc_is_q = _res
140
147
 
141
- sfh = np.where(mc_is_q.reshape((-1, 1)), sfh_q, sfh_ms)
148
+ diffsky_data["sfh_table"] = np.where(mc_is_q.reshape((-1, 1)), sfh_q, sfh_ms)
142
149
  sfh_params = mc_select_diffstar_params(sfh_params_q, sfh_params_ms, mc_is_q)
143
150
 
151
+ diffsky_data["sfh_table_ms"] = sfh_ms
152
+ diffsky_data["sfh_table_q"] = sfh_q
153
+
154
+ diffsky_data["mc_is_q"] = mc_is_q
155
+ # Need to add SFH table after MC selection
156
+
144
157
  for key in sfh_params.ms_params._fields:
145
158
  diffsky_data[key] = getattr(sfh_params.ms_params, key)
146
159
  for key in sfh_params.q_params._fields:
147
160
  diffsky_data[key] = getattr(sfh_params.q_params, key)
148
161
 
149
- logsm_obs, logssfr_obs = get_logsm_logssfr_at_t_obs(lc_data["t_obs"], t_table, sfh)
162
+ logsm_obs, logssfr_obs = get_logsm_logssfr_at_t_obs(
163
+ lc_data["t_obs"], diffsky_data["t_table"], diffsky_data["sfh_table"]
164
+ )
150
165
  diffsky_data["logsm_obs"] = logsm_obs
151
166
  diffsky_data["logssfr_obs"] = logssfr_obs
152
167
 
168
+ logsm_obs_ms, logssfr_obs_ms = get_logsm_logssfr_at_t_obs(
169
+ lc_data["t_obs"], diffsky_data["t_table"], diffsky_data["sfh_table_ms"]
170
+ )
171
+ diffsky_data["logsm_obs_ms"] = logsm_obs_ms
172
+ diffsky_data["logssfr_obs_ms"] = logssfr_obs_ms
173
+
174
+ logsm_obs_q, logssfr_obs_q = get_logsm_logssfr_at_t_obs(
175
+ lc_data["t_obs"], diffsky_data["t_table"], diffsky_data["sfh_table_q"]
176
+ )
177
+ diffsky_data["logsm_obs_q"] = logsm_obs_q
178
+ diffsky_data["logssfr_obs_q"] = logssfr_obs_q
179
+
153
180
  return lc_data, diffsky_data
154
181
 
155
182
 
183
+ def add_sed_quantities_to_mock(
184
+ sim_info,
185
+ lc_data,
186
+ diffsky_data,
187
+ ssp_data,
188
+ u_param_arr,
189
+ precomputed_ssp_mag_table,
190
+ z_phot_table,
191
+ wave_eff_table,
192
+ ran_key,
193
+ ):
194
+ u_param_collection = dpw.get_u_param_collection_from_u_param_array(u_param_arr)
195
+ param_collection = dpw.get_param_collection_from_u_param_collection(
196
+ *u_param_collection
197
+ )
198
+
199
+ (
200
+ diffstarpop_params,
201
+ mzr_params,
202
+ spspop_params,
203
+ scatter_params,
204
+ ssp_err_pop_params,
205
+ ) = param_collection
206
+
207
+ n_z_table, n_bands, n_met, n_age = precomputed_ssp_mag_table.shape
208
+
209
+ ran_key, sfh_key = jran.split(ran_key, 2)
210
+ lc_data, diffsky_data = add_sfh_quantities_to_mock(
211
+ sim_info, lc_data, diffsky_data, sfh_key
212
+ )
213
+ n_gals = diffsky_data["logsm_obs"].size
214
+
215
+ ran_key, sed_key = jran.split(ran_key, 2)
216
+ args = (
217
+ sed_key,
218
+ lc_data["redshift_true"],
219
+ lc_data["t_obs"],
220
+ diffsky_data["mah_params"],
221
+ diffsky_data["logmp0"],
222
+ diffsky_data["t_table"],
223
+ ssp_data,
224
+ precomputed_ssp_mag_table,
225
+ z_phot_table,
226
+ wave_eff_table,
227
+ diffstarpop_params,
228
+ mzr_params,
229
+ spspop_params,
230
+ scatter_params,
231
+ ssp_err_pop_params,
232
+ sim_info.cosmo_params,
233
+ )
234
+ phot_info = mc_diffsky_seds._mc_diffsky_phot_kern(*args)
235
+ return phot_info, lc_data, diffsky_data
236
+
237
+
156
238
  def reposition_satellites(sim_info, lc_data, diffsky_data, ran_key, fixed_conc=5.0):
157
239
 
158
240
  pos = np.array((lc_data["x"], lc_data["y"], lc_data["z"])).T
@@ -302,16 +302,23 @@ def get_diffsky_quantities_for_lc_patch(
302
302
  ):
303
303
  cf_first_row = cf_matrices["absolute_row_idx"][0]
304
304
  cf_last_row = cf_matrices["absolute_row_idx"][-1]
305
- msk_olap = lc_patch_data["file_idx"] == cf_file_idx
306
- msk_olap &= lc_patch_data["row_idx"] >= cf_first_row
307
- msk_olap &= lc_patch_data["row_idx"] <= cf_last_row
305
+ msk_olap = lc_patch_data["coreforest_file_idx"] == cf_file_idx
306
+ msk_olap &= lc_patch_data["coreforest_row_idx"] >= cf_first_row
307
+ msk_olap &= lc_patch_data["coreforest_row_idx"] <= cf_last_row
308
308
  mpeak_history = np.maximum.accumulate(cf_matrices[DIFFMAH_MASS_COLNAME], axis=1)
309
309
  mp_obs = mpeak_history[:, timestep_idx]
310
310
  mp0 = mpeak_history[:, -1]
311
311
 
312
312
  n_olap = msk_olap.sum()
313
313
  if n_olap > 0:
314
- olap_chunk_idx = lc_patch_data["row_idx"][msk_olap] - cf_first_row
314
+ olap_chunk_idx = lc_patch_data["coreforest_row_idx"][msk_olap] - cf_first_row
315
+
316
+ # Enforce exact match in core_tag
317
+ core_tags_cf = cf_matrices["core_tag"][:, -1][olap_chunk_idx]
318
+ core_tags_lc = lc_patch_data["core_tag"][msk_olap]
319
+ msg = "Mismatched core_tag between coreforest and lc-cores"
320
+ assert np.allclose(core_tags_cf, core_tags_lc), msg
321
+
315
322
  olap_chunk_ult_host_idx = cf_matrices["top_host_row"][:, timestep_idx][
316
323
  olap_chunk_idx
317
324
  ]
@@ -0,0 +1,157 @@
1
+ """Functions and script for optimizing parameters of bulge_shapes model"""
2
+
3
+ from collections import namedtuple
4
+
5
+ import numpy as np
6
+ from jax import jit as jjit
7
+ from jax import numpy as jnp
8
+ from jax import random as jran
9
+ from jax import value_and_grad
10
+
11
+ from .. import diffndhist
12
+ from . import bulge_shapes as eshape
13
+ from . import ellipse_proj_kernels as eproj
14
+
15
+
16
+ @jjit
17
+ def _mae(pred, target):
18
+ diff = pred - target
19
+ return jnp.mean(jnp.abs(diff))
20
+
21
+
22
+ @jjit
23
+ def get_all_params_from_varied(varied_params, default_params):
24
+ all_params = default_params._replace(**varied_params._asdict())
25
+ return all_params
26
+
27
+
28
+ @jjit
29
+ def _nondiff_loss_kern(bulge_params, loss_data):
30
+ x_target, ba_pdf_target, ran_key, mu_ran, phi_ran, ba_bins = loss_data
31
+ pred_data = ran_key, mu_ran, phi_ran, ba_bins, x_target
32
+
33
+ ba_pdf_pred = _nondiff_pred_kern(bulge_params, pred_data)
34
+ loss = _mae(ba_pdf_pred, ba_pdf_target)
35
+ return loss
36
+
37
+
38
+ @jjit
39
+ def loss_kern(varied_params, loss_data):
40
+ x_target, ba_pdf_target, ran_key, mu_ran, phi_ran, ba_bins, default_params = (
41
+ loss_data
42
+ )
43
+ bulge_params = get_all_params_from_varied(varied_params, default_params)
44
+ loss = _loss_kern(
45
+ bulge_params, x_target, ba_pdf_target, ran_key, mu_ran, phi_ran, ba_bins
46
+ )
47
+ return loss
48
+
49
+
50
+ @jjit
51
+ def _loss_kern(
52
+ bulge_params, x_target, ba_pdf_target, ran_key, mu_ran, phi_ran, ba_bins
53
+ ):
54
+ pred_data = x_target, ran_key, mu_ran, phi_ran, ba_bins
55
+
56
+ ba_pdf_pred = _pred_kern(bulge_params, pred_data)
57
+ loss = _mae(ba_pdf_pred, ba_pdf_target)
58
+ return loss
59
+
60
+
61
+ @jjit
62
+ def _pred_kern(bulge_params, pred_data):
63
+ x_target, ran_key, mu_ran, phi_ran, ba_bins = pred_data
64
+
65
+ ran_key, bulge_key = jran.split(ran_key, 2)
66
+ ellipse2d = _pred_ellipse_samples_kern(bulge_params, bulge_key, mu_ran, phi_ran)
67
+
68
+ nddata = jnp.array(ellipse2d.alpha / ellipse2d.beta).reshape((-1, 1))
69
+ ndsig = jnp.zeros_like(nddata) + 0.05
70
+
71
+ ndbins_lo = ba_bins[:-1].reshape((-1, 1))
72
+ ndbins_hi = ba_bins[1:].reshape((-1, 1))
73
+
74
+ wcounts = diffndhist.tw_ndhist(nddata, ndsig, ndbins_lo, ndbins_hi)
75
+ ba_pdf_pred_table = (wcounts / wcounts.sum()) / jnp.diff(ba_bins)
76
+
77
+ ba_binmids = 0.5 * (ba_bins[:-1] + ba_bins[1:])
78
+ ba_pdf_pred = jnp.interp(x_target, ba_binmids, ba_pdf_pred_table)
79
+
80
+ return ba_pdf_pred
81
+
82
+
83
+ @jjit
84
+ def _pred_ellipse_samples_kern(bulge_params, bulge_key, mu_ran, phi_ran):
85
+ ngals = mu_ran.shape[0]
86
+ axis_ratios = eshape.sample_bulge_axis_ratios(bulge_key, ngals, bulge_params)
87
+ a = jnp.ones_like(mu_ran)
88
+ b = a * axis_ratios.b_over_a
89
+ c = a * axis_ratios.c_over_a
90
+ ellipse2d = eproj.compute_ellipse2d(a, b, c, mu_ran, phi_ran)
91
+ return ellipse2d
92
+
93
+
94
+ @jjit
95
+ def _nondiff_pred_kern(bulge_params, pred_data):
96
+ ran_key, mu_ran, phi_ran, ba_bins, x_target = pred_data
97
+
98
+ ran_key, bulge_key = jran.split(ran_key, 2)
99
+ ellipse2d = _pred_ellipse_samples_kern(bulge_params, bulge_key, mu_ran, phi_ran)
100
+
101
+ alpha_over_beta = ellipse2d.alpha / ellipse2d.beta
102
+ ba_pdf_table, __ = jnp.histogram(alpha_over_beta, ba_bins, density=True)
103
+ ba_binmids = 0.5 * (ba_bins[:-1] + ba_bins[1:])
104
+ ba_pdf_pred = jnp.interp(x_target, ba_binmids, ba_pdf_table)
105
+
106
+ return ba_pdf_pred
107
+
108
+
109
+ loss_and_grad_kern = jjit(value_and_grad(loss_kern, argnums=0))
110
+
111
+
112
+ if __name__ == "__main__":
113
+ import argparse
114
+
115
+ from diffsky.mass_functions.fitting_utils.fitting_helpers import jax_adam_wrapper
116
+
117
+ parser = argparse.ArgumentParser()
118
+ parser.add_argument(
119
+ "-seed", help="Integer input to jax.random.key(seed)", default=0, type=int
120
+ )
121
+ parser.add_argument(
122
+ "-ngals", help="Number of galaxies to estimate pdf", default=50_000, type=int
123
+ )
124
+ parser.add_argument(
125
+ "-tdata_fname",
126
+ help="Number of galaxies to estimate pdf",
127
+ default="ellipsoid_b_over_a_pdf_rodriguez_padilla_2013.txt",
128
+ )
129
+ args = parser.parse_args()
130
+
131
+ VariedParams = namedtuple("VariedParams", ("ba_peak", "ba_sigma", "c_min"))
132
+ varied_params = VariedParams._make(
133
+ [getattr(eshape.DEFAULT_BULGE_PARAMS, key) for key in VariedParams._fields]
134
+ )
135
+
136
+ ran_key = jran.key(args.seed)
137
+ ran_key, loss_key = jran.split(ran_key, 2)
138
+
139
+ target_data = np.loadtxt(args.tdata_fname, delimiter=",")
140
+ X = target_data[:, 0]
141
+ Y = target_data[:, 1]
142
+
143
+ ba_bins = np.linspace(0.01, 0.99, 50)
144
+
145
+ ran_key, mu_key, phi_key = jran.split(ran_key, 3)
146
+ mu_ran = jran.uniform(mu_key, minval=-1, maxval=1, shape=(args.ngals,))
147
+ phi_ran = jran.uniform(phi_key, minval=0, maxval=2 * np.pi, shape=(args.ngals,))
148
+
149
+ default_params = eshape.DEFAULT_BULGE_PARAMS
150
+ loss_data = X, Y, loss_key, mu_ran, phi_ran, ba_bins, default_params
151
+ args = loss_and_grad_kern, varied_params, loss_data, 100
152
+ _res = jax_adam_wrapper(*args)
153
+ p_best, loss, loss_hist = _res[:3]
154
+ bulge_params_best = default_params._replace(**p_best._asdict())
155
+ print(f"\nInitial parameters:\n{default_params}")
156
+
157
+ print(f"\nBest-fitting parameters:\n{bulge_params_best}")
@@ -0,0 +1,43 @@
1
+ """Ellipsoidal model for PDF of bulge shapes"""
2
+
3
+ from collections import namedtuple
4
+ from functools import partial
5
+
6
+ from jax import jit as jjit
7
+ from jax import numpy as jnp
8
+ from jax import random as jran
9
+
10
+ from .pdf_model_utils import truncated_normal_sample
11
+
12
+ AxisRatios = namedtuple("AxisRatios", ("b_over_a", "c_over_a"))
13
+ BulgeAxisRatioParams = namedtuple(
14
+ "BulgeAxisRatioParams", ("ba_peak", "ba_sigma", "ba_min", "ba_max", "c_min")
15
+ )
16
+ DEFAULT_BULGE_PARAMS = BulgeAxisRatioParams(
17
+ ba_peak=1.3, ba_sigma=0.38, ba_min=0.3, ba_max=1.0, c_min=0.61
18
+ )
19
+
20
+
21
+ @partial(jjit, static_argnames=["n_samples"])
22
+ def sample_bulge_axis_ratios(ran_key, n_samples, bulge_params):
23
+ """Draw samples of axis ratios for bulges"""
24
+ ran_key_b, ran_key_c = jran.split(ran_key, 2)
25
+
26
+ b_over_a = truncated_normal_sample(
27
+ ran_key_b,
28
+ (n_samples,),
29
+ bulge_params.ba_peak,
30
+ bulge_params.ba_sigma,
31
+ bulge_params.ba_min,
32
+ bulge_params.ba_max,
33
+ )
34
+
35
+ c_over_b = jran.uniform(
36
+ ran_key_c, (n_samples,), minval=bulge_params.c_min, maxval=1.0
37
+ )
38
+
39
+ c_over_a = c_over_b * b_over_a
40
+ c_over_a = jnp.minimum(c_over_a, b_over_a * 0.99) # Ensure c <= b for safety
41
+
42
+ axis_ratios = AxisRatios(b_over_a, c_over_a)
43
+ return axis_ratios
@@ -0,0 +1,130 @@
1
+ """Functions and script for optimizing parameters of disk_shapes model"""
2
+
3
+ from collections import namedtuple
4
+
5
+ import numpy as np
6
+ from jax import jit as jjit
7
+ from jax import numpy as jnp
8
+ from jax import random as jran
9
+ from jax import value_and_grad
10
+
11
+ from .. import diffndhist
12
+ from . import disk_shapes as dshape
13
+ from . import ellipse_proj_kernels as eproj
14
+
15
+
16
+ @jjit
17
+ def _mae(pred, target):
18
+ diff = pred - target
19
+ return jnp.mean(jnp.abs(diff))
20
+
21
+
22
+ @jjit
23
+ def get_all_params_from_varied(varied_params, default_params):
24
+ all_params = default_params._replace(**varied_params._asdict())
25
+ return all_params
26
+
27
+
28
+ @jjit
29
+ def loss_kern(varied_params, loss_data):
30
+ x_target, ba_pdf_target, ran_key, mu_ran, phi_ran, ba_bins, default_params = (
31
+ loss_data
32
+ )
33
+ disk_params = get_all_params_from_varied(varied_params, default_params)
34
+ loss = _loss_kern(
35
+ disk_params, x_target, ba_pdf_target, ran_key, mu_ran, phi_ran, ba_bins
36
+ )
37
+ return loss
38
+
39
+
40
+ @jjit
41
+ def _loss_kern(disk_params, x_target, ba_pdf_target, ran_key, mu_ran, phi_ran, ba_bins):
42
+ pred_data = x_target, ran_key, mu_ran, phi_ran, ba_bins
43
+
44
+ ba_pdf_pred = _pred_kern(disk_params, pred_data)
45
+ loss = _mae(ba_pdf_pred, ba_pdf_target)
46
+ return loss
47
+
48
+
49
+ @jjit
50
+ def _pred_kern(disk_params, pred_data):
51
+ x_target, ran_key, mu_ran, phi_ran, ba_bins = pred_data
52
+
53
+ ran_key, disk_key = jran.split(ran_key, 2)
54
+ ellipse2d = _pred_ellipse_samples_kern(disk_params, disk_key, mu_ran, phi_ran)
55
+
56
+ nddata = jnp.array(ellipse2d.alpha / ellipse2d.beta).reshape((-1, 1))
57
+ ndsig = jnp.zeros_like(nddata) + 0.05
58
+
59
+ ndbins_lo = ba_bins[:-1].reshape((-1, 1))
60
+ ndbins_hi = ba_bins[1:].reshape((-1, 1))
61
+
62
+ wcounts = diffndhist.tw_ndhist(nddata, ndsig, ndbins_lo, ndbins_hi)
63
+ ba_pdf_pred_table = (wcounts / wcounts.sum()) / jnp.diff(ba_bins)
64
+
65
+ ba_binmids = 0.5 * (ba_bins[:-1] + ba_bins[1:])
66
+ ba_pdf_pred = jnp.interp(x_target, ba_binmids, ba_pdf_pred_table)
67
+
68
+ return ba_pdf_pred
69
+
70
+
71
+ loss_and_grad_kern = jjit(value_and_grad(loss_kern, argnums=0))
72
+
73
+
74
+ @jjit
75
+ def _pred_ellipse_samples_kern(disk_params, disk_key, mu_ran, phi_ran):
76
+ ngals = mu_ran.shape[0]
77
+ axis_ratios = dshape.sample_disk_axis_ratios(disk_key, ngals, disk_params)
78
+ a = jnp.ones_like(mu_ran)
79
+ b = a * axis_ratios.b_over_a
80
+ c = a * axis_ratios.c_over_a
81
+ ellipse2d = eproj.compute_ellipse2d(a, b, c, mu_ran, phi_ran)
82
+ return ellipse2d
83
+
84
+
85
+ if __name__ == "__main__":
86
+ import argparse
87
+
88
+ from diffsky.mass_functions.fitting_utils.fitting_helpers import jax_adam_wrapper
89
+
90
+ parser = argparse.ArgumentParser()
91
+ parser.add_argument(
92
+ "-seed", help="Integer input to jax.random.key(seed)", default=0, type=int
93
+ )
94
+ parser.add_argument(
95
+ "-ngals", help="Number of galaxies to estimate pdf", default=50_000, type=int
96
+ )
97
+ parser.add_argument(
98
+ "-tdata_fname",
99
+ help="Number of galaxies to estimate pdf",
100
+ default="spiral_b_over_a_pdf_rodriguez_padilla_2013.txt",
101
+ )
102
+ args = parser.parse_args()
103
+
104
+ VariedParams = namedtuple("VariedParams", ("c_min", "c_max"))
105
+ varied_params = VariedParams._make(
106
+ [getattr(dshape.DEFAULT_DISK_PARAMS, key) for key in VariedParams._fields]
107
+ )
108
+
109
+ ran_key = jran.key(args.seed)
110
+ ran_key, loss_key = jran.split(ran_key, 2)
111
+
112
+ target_data = np.loadtxt(args.tdata_fname, delimiter=",")
113
+ X = target_data[:, 0]
114
+ Y = target_data[:, 1]
115
+
116
+ ba_bins = np.linspace(0.01, 0.99, 50)
117
+
118
+ ran_key, mu_key, phi_key = jran.split(ran_key, 3)
119
+ mu_ran = jran.uniform(mu_key, minval=-1, maxval=1, shape=(args.ngals,))
120
+ phi_ran = jran.uniform(phi_key, minval=0, maxval=2 * np.pi, shape=(args.ngals,))
121
+
122
+ default_params = dshape.DEFAULT_DISK_PARAMS
123
+ loss_data = X, Y, loss_key, mu_ran, phi_ran, ba_bins, default_params
124
+ args = loss_and_grad_kern, varied_params, loss_data, 100
125
+ _res = jax_adam_wrapper(*args)
126
+ p_best, loss, loss_hist = _res[:3]
127
+ disk_params_best = default_params._replace(**p_best._asdict())
128
+ print(f"\nInitial parameters:\n{default_params}")
129
+
130
+ print(f"\nBest-fitting parameters:\n{disk_params_best}")
@@ -0,0 +1,34 @@
1
+ """Ellipsoidal model for PDF of disk shapes"""
2
+
3
+ from collections import namedtuple
4
+ from functools import partial
5
+
6
+ from jax import jit as jjit
7
+ from jax import numpy as jnp
8
+ from jax import random as jran
9
+
10
+ AxisRatios = namedtuple("AxisRatios", ("b_over_a", "c_over_a"))
11
+ DiskAxisRatioParams = namedtuple(
12
+ "DiskAxisRatioParams", ("ba_min", "ba_max", "c_min", "c_max")
13
+ )
14
+ DEFAULT_DISK_PARAMS = DiskAxisRatioParams(ba_min=0.8, ba_max=1.0, c_min=0.2, c_max=0.5)
15
+
16
+
17
+ @partial(jjit, static_argnames=["n_samples"])
18
+ def sample_disk_axis_ratios(ran_key, n_samples, disk_params):
19
+ """Draw samples of axis ratios for disks"""
20
+ ran_key_b, ran_key_c = jran.split(ran_key, 2)
21
+
22
+ b_over_a = jran.uniform(
23
+ ran_key_b, (n_samples,), minval=disk_params.ba_min, maxval=disk_params.ba_max
24
+ )
25
+
26
+ c_over_b = jran.uniform(
27
+ ran_key_c, (n_samples,), minval=disk_params.c_min, maxval=disk_params.c_max
28
+ )
29
+
30
+ c_over_a = c_over_b * b_over_a
31
+ c_over_a = jnp.minimum(c_over_a, b_over_a * 0.99) # Ensure c <= b for safety
32
+
33
+ axis_ratios = AxisRatios(b_over_a, c_over_a)
34
+ return axis_ratios