diffsky 0.2.3__tar.gz → 0.2.4__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 (401) hide show
  1. {diffsky-0.2.3 → diffsky-0.2.4}/.github/workflows/linting.yaml +1 -1
  2. {diffsky-0.2.3 → diffsky-0.2.4}/.github/workflows/monthly-warning-test.yaml +1 -1
  3. {diffsky-0.2.3 → diffsky-0.2.4}/.github/workflows/test_latest_releases.yaml +1 -1
  4. {diffsky-0.2.3 → diffsky-0.2.4}/.github/workflows/test_main_branch.yaml +1 -1
  5. {diffsky-0.2.3 → diffsky-0.2.4}/.github/workflows/tests_cron.yaml +1 -1
  6. {diffsky-0.2.3 → diffsky-0.2.4}/CHANGES.rst +5 -0
  7. {diffsky-0.2.3 → diffsky-0.2.4}/PKG-INFO +1 -1
  8. diffsky-0.2.4/diffsky/_version.py +1 -0
  9. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/lightcone_utils.py +11 -4
  10. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/disk_bulge_kernels.py +314 -0
  11. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/disk_knots.py +57 -0
  12. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/generate_bulge_disk_sample.py +80 -0
  13. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/mc_disk_bulge.py +133 -0
  14. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/tests/test_disk_bulge.py +291 -0
  15. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/tests/test_disk_knots.py +90 -0
  16. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/tests/test_generate_bulge_disk_sample.py +67 -0
  17. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/tests/test_mc_disk_bulge.py +81 -0
  18. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/lc_phot_kern.py +41 -2
  19. diffsky-0.2.4/diffsky/experimental/lc_utils.py +135 -0
  20. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/mc_lightcone_halos.py +4 -25
  21. diffsky-0.2.4/diffsky/experimental/tests/test_lc_utils.py +47 -0
  22. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/fit_flat_hmf_model.py +51 -0
  23. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/fit_halobias_model.py +52 -0
  24. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/fit_halobias_singlez_model.py +46 -0
  25. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/tests/test_fit_flat_hmf_model.py +65 -0
  26. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/tests/test_fit_halobias_model.py +58 -0
  27. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/tests/test_fit_halobias_model_singlez.py +55 -0
  28. diffsky-0.2.4/diffsky/mass_functions/flat_hmf_model.py +133 -0
  29. diffsky-0.2.4/diffsky/mass_functions/halobias_model.py +207 -0
  30. diffsky-0.2.4/diffsky/mass_functions/halobias_singlez_model.py +155 -0
  31. diffsky-0.2.4/diffsky/mass_functions/tests/test_flat_hmf_model.py +68 -0
  32. diffsky-0.2.4/diffsky/mass_functions/tests/test_halobias_model.py +99 -0
  33. diffsky-0.2.4/diffsky/mass_functions/tests/test_halobias_singlez_model.py +87 -0
  34. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky.egg-info/PKG-INFO +1 -1
  35. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky.egg-info/SOURCES.txt +24 -0
  36. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/LJ_LC_JOBS/make_sfh_lc_mock_lj.py +1 -1
  37. diffsky-0.2.4/scripts/__init__.py +0 -0
  38. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/lc_cf_crossmatch_script.py +2 -2
  39. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/make_sfh_lightcone_last_journey.py +1 -1
  40. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/tabulate_coreforest_overlap.py +2 -2
  41. diffsky-0.2.4/scripts/tests/__init__.py +0 -0
  42. diffsky-0.2.3/diffsky/_version.py +0 -1
  43. {diffsky-0.2.3 → diffsky-0.2.4}/.coveragerc +0 -0
  44. {diffsky-0.2.3 → diffsky-0.2.4}/.git_archival.txt +0 -0
  45. {diffsky-0.2.3 → diffsky-0.2.4}/.gitattributes +0 -0
  46. {diffsky-0.2.3 → diffsky-0.2.4}/.github/dependabot.yml +0 -0
  47. {diffsky-0.2.3 → diffsky-0.2.4}/.gitignore +0 -0
  48. {diffsky-0.2.3 → diffsky-0.2.4}/.readthedocs.yml +0 -0
  49. {diffsky-0.2.3 → diffsky-0.2.4}/LICENSE.rst +0 -0
  50. {diffsky-0.2.3 → diffsky-0.2.4}/README.rst +0 -0
  51. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/__init__.py +0 -0
  52. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/__init__.py +0 -0
  53. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/__init__.py +0 -0
  54. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/plot_fburstpop.py +0 -0
  55. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/plot_tburstpop.py +0 -0
  56. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/tests/__init__.py +0 -0
  57. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/tests/test_plot_fburstpop.py +0 -0
  58. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/tests/test_plot_tburstpop.py +0 -0
  59. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diffburstpop.py +0 -0
  60. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diffqburstpop.py +0 -0
  61. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diffqburstpop_mono.py +0 -0
  62. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/diffqburstpop_mono_noise.py +0 -0
  63. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/fburstpop.py +0 -0
  64. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/fburstpop_mono.py +0 -0
  65. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/freqburst.py +0 -0
  66. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/freqburst_mono.py +0 -0
  67. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tburstpop.py +0 -0
  68. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/__init__.py +0 -0
  69. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_diffburstpop.py +0 -0
  70. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_diffqburstpop.py +0 -0
  71. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_diffqburstpop_mono.py +0 -0
  72. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_diffqburstpop_mono_noise.py +0 -0
  73. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_fburstpop.py +0 -0
  74. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_fburstpop_mono.py +0 -0
  75. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_freqburst.py +0 -0
  76. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_freqburst_mono.py +0 -0
  77. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/burstpop/tests/test_tburstpop.py +0 -0
  78. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/cosmos_utils/__init__.py +0 -0
  79. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/cosmos_utils/cosmos_mstar_model.py +0 -0
  80. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/cosmos_utils/tests/__init__.py +0 -0
  81. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/cosmos_utils/tests/test_cosmos_mstar_model.py +0 -0
  82. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/__init__.py +0 -0
  83. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/cosmos20_loader.py +0 -0
  84. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/__init__.py +0 -0
  85. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/__init__.py +0 -0
  86. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/tests/__init__.py +0 -0
  87. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/tests/test_validate_lc_cores.py +0 -0
  88. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/tests/test_validate_lc_mock.py +0 -0
  89. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/validate_lc_cores.py +0 -0
  90. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/validate_lc_mock.py +0 -0
  91. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/defaults.py +0 -0
  92. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/hacc_core_utils.py +0 -0
  93. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/lc_mock_production.py +0 -0
  94. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/load_hacc_cores.py +0 -0
  95. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/load_lc_cf.py +0 -0
  96. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/load_lc_cf_synthetic.py +0 -0
  97. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/load_lc_mock.py +0 -0
  98. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/metadata_sfh_mock.py +0 -0
  99. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/__init__.py +0 -0
  100. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_defaults.py +0 -0
  101. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_hacc_core_utils.py +0 -0
  102. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_lc_mock_production.py +0 -0
  103. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_lightcone_utils.py +0 -0
  104. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_load_hacc_cores.py +0 -0
  105. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_load_lc_cf.py +0 -0
  106. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/lc_cores-decomposition.txt +0 -0
  107. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/phi_haccytrees_tdata.txt +0 -0
  108. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/redshift_haccytrees_tdata.txt +0 -0
  109. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/theta_haccytrees_tdata.txt +0 -0
  110. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/x_haccytrees_tdata.txt +0 -0
  111. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/y_haccytrees_tdata.txt +0 -0
  112. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/z_haccytrees_tdata.txt +0 -0
  113. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/io_utils.py +0 -0
  114. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/mpi_utils.py +0 -0
  115. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/tests/__init__.py +0 -0
  116. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/tests/test_cosmos_loader.py +0 -0
  117. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/tests/test_imports.py +0 -0
  118. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/tests/testing_data/__init__.py +0 -0
  119. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/tests/testing_data/cosmos20_shasum.dat +0 -0
  120. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/data_loaders/um_binary_loader.py +0 -0
  121. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/diagnostics/__init__.py +0 -0
  122. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/diagnostics/plot_delta_mag_burstiness.py +0 -0
  123. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/diagnostics/plot_diffstar_fq.py +0 -0
  124. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/diagnostics/tests/__init__.py +0 -0
  125. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/diagnostics/tests/test_plot_delta_mag_burstiness.py +0 -0
  126. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/diagnostics/tests/test_plot_diffstar_fq.py +0 -0
  127. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/diagnostics/utils.py +0 -0
  128. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/diffndhist.py +0 -0
  129. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/__init__.py +0 -0
  130. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/avpop.py +0 -0
  131. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/avpop_flex.py +0 -0
  132. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/avpop_mono.py +0 -0
  133. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/deltapop.py +0 -0
  134. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/__init__.py +0 -0
  135. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/plot_avpop_flex.py +0 -0
  136. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/plot_funopop_simple.py +0 -0
  137. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/tests/__init__.py +0 -0
  138. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/tests/test_plot_avpop_flex.py +0 -0
  139. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/tests/test_plot_funopop_simple.py +0 -0
  140. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/funopop.py +0 -0
  141. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/funopop_simple.py +0 -0
  142. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/funopop_ssfr.py +0 -0
  143. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/sbl18_dust.py +0 -0
  144. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/sbl18_dust_kernels.py +0 -0
  145. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/sbl18_dustpop.py +0 -0
  146. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/__init__.py +0 -0
  147. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_avpop.py +0 -0
  148. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_avpop_flex.py +0 -0
  149. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_avpop_mono.py +0 -0
  150. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_deltapop.py +0 -0
  151. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_funopop_model.py +0 -0
  152. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_funopop_simple.py +0 -0
  153. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_funopop_ssfr.py +0 -0
  154. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_sbl18_dustpop.py +0 -0
  155. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dust_kernels.py +0 -0
  156. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dustpop.py +0 -0
  157. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dustpop_mono.py +0 -0
  158. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dustpop_mono_noise.py +0 -0
  159. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dustpop_new.py +0 -0
  160. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tw_dust.py +0 -0
  161. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tw_dust_kernels.py +0 -0
  162. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tw_dustpop.py +0 -0
  163. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tw_dustpop_mono.py +0 -0
  164. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tw_dustpop_mono_noise.py +0 -0
  165. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/dustpop/tw_dustpop_new.py +0 -0
  166. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/__init__.py +0 -0
  167. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/diagnostics/__init__.py +0 -0
  168. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/diagnostics/check_smhm.py +0 -0
  169. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/diagnostics/tests/__init__.py +0 -0
  170. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/diagnostics/tests/test_check_smhm.py +0 -0
  171. {diffsky-0.2.3/diffsky/experimental/dspspop → diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling}/__init__.py +0 -0
  172. {diffsky-0.2.3/diffsky/experimental/dspspop → diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling}/tests/__init__.py +0 -0
  173. {diffsky-0.2.3/diffsky/experimental/tests → diffsky-0.2.4/diffsky/experimental/dspspop}/__init__.py +0 -0
  174. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/boris_dust.py +0 -0
  175. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/burstshapepop.py +0 -0
  176. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/dust_deltapop.py +0 -0
  177. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/dustpop.py +0 -0
  178. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/lgavpop.py +0 -0
  179. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/lgfburstpop.py +0 -0
  180. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/nagaraj22_dust.py +0 -0
  181. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/photpop.py +0 -0
  182. {diffsky-0.2.3/diffsky/fake_sats → diffsky-0.2.4/diffsky/experimental/dspspop/tests}/__init__.py +0 -0
  183. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_attavpop.py +0 -0
  184. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_boris_dust.py +0 -0
  185. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_burstshapepop.py +0 -0
  186. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_dustdeltapop.py +0 -0
  187. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_lgfburstpop.py +0 -0
  188. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_photpop.py +0 -0
  189. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/mc_diffsky_phot.py +0 -0
  190. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/phot_utils.py +0 -0
  191. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/photometry_interpolation.py +0 -0
  192. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/precompute_ssp_phot.py +0 -0
  193. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/scatter.py +0 -0
  194. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/ssp_err_pop.py +0 -0
  195. {diffsky-0.2.3/diffsky/fake_sats → diffsky-0.2.4/diffsky/experimental}/tests/__init__.py +0 -0
  196. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/tests/test_lc_phot_kern.py +0 -0
  197. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/tests/test_mc_diffsky_phot.py +0 -0
  198. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/tests/test_mc_lightcone_halos.py +0 -0
  199. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/tests/test_photometry_interpolation.py +0 -0
  200. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/tests/test_precompute_ssp_phot.py +0 -0
  201. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/tests/test_scatter.py +0 -0
  202. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/experimental/tests/test_ssp_err_pop.py +0 -0
  203. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils → diffsky-0.2.4/diffsky/fake_sats}/__init__.py +0 -0
  204. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/ellipsoidal_nfw_phase_space.py +0 -0
  205. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/ellipsoidal_velocities.py +0 -0
  206. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/halo_boundary_functions.py +0 -0
  207. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/nfw_config_space.py +0 -0
  208. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/rotations3d.py +0 -0
  209. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/calibrations → diffsky-0.2.4/diffsky/fake_sats/tests}/__init__.py +0 -0
  210. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_ellipsoidal_nfw_phase_space.py +0 -0
  211. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_halo_boundary_functions.py +0 -0
  212. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_mc_ellipticial_velocities.py +0 -0
  213. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_nfw_config_space.py +0 -0
  214. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_rotations3d.py +0 -0
  215. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/tests/testing_data/halo_mass_ht_test.txt +0 -0
  216. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/tests/testing_data/halo_radius_200c_ht_test.txt +0 -0
  217. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/tests/testing_data/redshift_ht_test.txt +0 -0
  218. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/fake_sats/vector_utilities.py +0 -0
  219. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/__init__.py +0 -0
  220. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/ccshmf_model.py +0 -0
  221. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/README.rst +0 -0
  222. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/calibrations/tests → diffsky-0.2.4/diffsky/mass_functions/fitting_utils}/__init__.py +0 -0
  223. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/diagnostics → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/calibrations}/__init__.py +0 -0
  224. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/calibrations/hacc_core_shmf_params.py +0 -0
  225. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/diagnostics → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/calibrations}/tests/__init__.py +0 -0
  226. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/calibrations/tests/test_hacc_core_shmf_params.py +0 -0
  227. {diffsky-0.2.3/diffsky/mass_functions/fitting_utils/tests → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/diagnostics}/__init__.py +0 -0
  228. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/diagnostics/hmf_fit_diagnostics.py +0 -0
  229. {diffsky-0.2.3/diffsky/mass_functions/hmf_calibrations → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/diagnostics}/tests/__init__.py +0 -0
  230. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/diagnostics/tests/test_hmf_fit_diagnostics.py +0 -0
  231. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fit_ccshmf.py +0 -0
  232. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fit_ccshmf_kernels.py +0 -0
  233. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fit_hmf_kernels.py +0 -0
  234. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fit_hmf_model.py +0 -0
  235. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fitting_helpers.py +0 -0
  236. {diffsky-0.2.3/diffsky/mass_functions/io_utils → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/tests}/__init__.py +0 -0
  237. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/tests/test_fit_ccshmf.py +0 -0
  238. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/tests/test_fit_ccshmf_kernels.py +0 -0
  239. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/tests/test_fit_hmf_kernels.py +0 -0
  240. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/tests/test_fit_hmf_model.py +0 -0
  241. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/__init__.py +0 -0
  242. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/disc_lcdm_hmf_params.txt +0 -0
  243. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/disc_lcdm_hmf_params_all.txt +0 -0
  244. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/hmf_param_reader.py +0 -0
  245. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/lj_hmf_params.txt +0 -0
  246. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/lj_hmf_params_all.txt +0 -0
  247. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf.py +0 -0
  248. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf_fitting_helpers.py +0 -0
  249. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf_subs.py +0 -0
  250. {diffsky-0.2.3/diffsky/mass_functions/kernels → diffsky-0.2.4/diffsky/mass_functions/hmf_calibrations/tests}/__init__.py +0 -0
  251. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/test_imports.py +0 -0
  252. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/test_lj_hmf.py +0 -0
  253. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/test_smdpl_hmf.py +0 -0
  254. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_cuml_density_all.txt +0 -0
  255. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_cuml_density_cens.txt +0 -0
  256. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_logmp_bins.txt +0 -0
  257. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_redshift_bins.txt +0 -0
  258. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_cuml_density_all.txt +0 -0
  259. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_cuml_density_cens.txt +0 -0
  260. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_logmp_bins.txt +0 -0
  261. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_redshift_bins.txt +0 -0
  262. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.219000.subhalos.lgcuml_density.npy +0 -0
  263. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.219000.subhalos.logmp_bins.npy +0 -0
  264. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.hosthalos.lgcuml_density.npy +0 -0
  265. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.hosthalos.logmp_bins.npy +0 -0
  266. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.subhalos.lgcuml_density.npy +0 -0
  267. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.subhalos.logmp_bins.npy +0 -0
  268. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.hosthalos.lgcuml_density.npy +0 -0
  269. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.hosthalos.logmp_bins.npy +0 -0
  270. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.subhalos.lgcuml_density.npy +0 -0
  271. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.subhalos.logmp_bins.npy +0 -0
  272. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/hmf_model.py +0 -0
  273. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/io_utils/README.txt +0 -0
  274. {diffsky-0.2.3/diffsky/mass_functions/kernels/tests → diffsky-0.2.4/diffsky/mass_functions/io_utils}/__init__.py +0 -0
  275. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/io_utils/loader.py +0 -0
  276. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/io_utils/smdpl_helpers.py +0 -0
  277. {diffsky-0.2.3/diffsky/mass_functions/smhm_kernels → diffsky-0.2.4/diffsky/mass_functions/kernels}/__init__.py +0 -0
  278. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/kernels/ccshmf_kernels.py +0 -0
  279. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/kernels/hmf_kernels.py +0 -0
  280. {diffsky-0.2.3/diffsky/mass_functions/smhm_kernels → diffsky-0.2.4/diffsky/mass_functions/kernels}/tests/__init__.py +0 -0
  281. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/kernels/tests/test_ccshmf_kernels.py +0 -0
  282. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/kernels/tests/test_hmf_kernels.py +0 -0
  283. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/mc_diffmah_tpeak.py +0 -0
  284. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/mc_hosts.py +0 -0
  285. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/mc_subs.py +0 -0
  286. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/mc_tinfall.py +0 -0
  287. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/measure_ccshmf.py +0 -0
  288. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/measure_hmf.py +0 -0
  289. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/fit_hmf_disc_lcdm.py +0 -0
  290. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/measure_hmf_target_data_hacc.py +0 -0
  291. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/run_hmf_tabulation_disc_lcdm.sh +0 -0
  292. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/scripts/last_journey_calibration/fit_hmf_lj.py +0 -0
  293. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/scripts/last_journey_calibration/measure_hmf_target_data_hacc.py +0 -0
  294. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/scripts/smdpl_calibration/fit_smdpl_hmf_script.py +0 -0
  295. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/scripts/smdpl_calibration/measure_smdpl_hmf_script.py +0 -0
  296. {diffsky-0.2.3/diffsky/mass_functions/tests → diffsky-0.2.4/diffsky/mass_functions/smhm_kernels}/__init__.py +0 -0
  297. {diffsky-0.2.3/diffsky/mass_functions/tests/testing_data → diffsky-0.2.4/diffsky/mass_functions/smhm_kernels/tests}/__init__.py +0 -0
  298. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/smhm_kernels/tests/test_threeroll_smhm.py +0 -0
  299. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/smhm_kernels/threeroll_kernels.py +0 -0
  300. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/smhm_kernels/threeroll_smhm.py +0 -0
  301. {diffsky-0.2.3/diffsky/mass_functions/upweighting → diffsky-0.2.4/diffsky/mass_functions/tests}/__init__.py +0 -0
  302. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_ccshmf.py +0 -0
  303. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_hmf_model.py +0 -0
  304. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_mc_diffmah_tpeak.py +0 -0
  305. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_mc_hosts.py +0 -0
  306. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_mc_subs.py +0 -0
  307. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_mc_tinfall.py +0 -0
  308. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_measure_hmf.py +0 -0
  309. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/README.txt +0 -0
  310. {diffsky-0.2.3/diffsky/mass_functions/upweighting/tests → diffsky-0.2.4/diffsky/mass_functions/tests/testing_data}/__init__.py +0 -0
  311. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_12.32.txt +0 -0
  312. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_13.00.txt +0 -0
  313. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_13.55.txt +0 -0
  314. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_14.08.txt +0 -0
  315. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_12.31.txt +0 -0
  316. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_12.99.txt +0 -0
  317. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_13.51.txt +0 -0
  318. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_14.05.txt +0 -0
  319. {diffsky-0.2.3/diffsky/merging → diffsky-0.2.4/diffsky/mass_functions/upweighting}/__init__.py +0 -0
  320. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/upweighting/namedtuple_cat_utils.py +0 -0
  321. {diffsky-0.2.3/diffsky/merging/diagnostics → diffsky-0.2.4/diffsky/mass_functions/upweighting/tests}/__init__.py +0 -0
  322. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/upweighting/tests/test_mc_gen_upweighting.py +0 -0
  323. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/upweighting/upweighting.py +0 -0
  324. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mass_functions/utils.py +0 -0
  325. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/mc_diffsky.py +0 -0
  326. {diffsky-0.2.3/diffsky/merging/diagnostics/tests → diffsky-0.2.4/diffsky/merging}/__init__.py +0 -0
  327. {diffsky-0.2.3/diffsky/merging/tests → diffsky-0.2.4/diffsky/merging/diagnostics}/__init__.py +0 -0
  328. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/merging/diagnostics/plot_pmerge_vs_time.py +0 -0
  329. {diffsky-0.2.3/diffsky/param_utils → diffsky-0.2.4/diffsky/merging/diagnostics/tests}/__init__.py +0 -0
  330. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/merging/diagnostics/tests/test_plot_pmerge_vs_time.py +0 -0
  331. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/merging/fitmerge_multi_redshift.py +0 -0
  332. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/merging/merging_model.py +0 -0
  333. {diffsky-0.2.3/diffsky/param_utils → diffsky-0.2.4/diffsky/merging}/tests/__init__.py +0 -0
  334. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/merging/tests/test_fitmerge_multi_redshift.py +0 -0
  335. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/merging/tests/test_merging_model.py +0 -0
  336. {diffsky-0.2.3/diffsky/ssp_err_model → diffsky-0.2.4/diffsky/param_utils}/__init__.py +0 -0
  337. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/param_utils/diffsky_param_wrapper.py +0 -0
  338. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/param_utils/spspop_param_utils.py +0 -0
  339. {diffsky-0.2.3/diffsky/ssp_err_model → diffsky-0.2.4/diffsky/param_utils}/tests/__init__.py +0 -0
  340. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/param_utils/tests/test_diffsky_param_wrapper.py +0 -0
  341. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/param_utils/tests/test_spspop_param_utils.py +0 -0
  342. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/phot_utils.py +0 -0
  343. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/sbl18_photgrad.py +0 -0
  344. {diffsky-0.2.3/diffsky/sumstats → diffsky-0.2.4/diffsky/ssp_err_model}/__init__.py +0 -0
  345. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/ssp_err_model/ssp_err_model.py +0 -0
  346. {diffsky-0.2.3/diffsky/sumstats → diffsky-0.2.4/diffsky/ssp_err_model}/tests/__init__.py +0 -0
  347. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/ssp_err_model/tests/test_ssp_err_model.py +0 -0
  348. {diffsky-0.2.3/diffsky/systematics → diffsky-0.2.4/diffsky/sumstats}/__init__.py +0 -0
  349. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/sumstats/diffndhist.py +0 -0
  350. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/sumstats/smhm.py +0 -0
  351. {diffsky-0.2.3/diffsky/systematics → diffsky-0.2.4/diffsky/sumstats}/tests/__init__.py +0 -0
  352. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/sumstats/tests/test_smhm.py +0 -0
  353. {diffsky-0.2.3/diffsky/tests → diffsky-0.2.4/diffsky/systematics}/__init__.py +0 -0
  354. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/systematics/ssp_errors.py +0 -0
  355. {diffsky-0.2.3/diffsky/tests/testing_data → diffsky-0.2.4/diffsky/systematics/tests}/__init__.py +0 -0
  356. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/systematics/tests/test_ssp_errors.py +0 -0
  357. {diffsky-0.2.3/diffsky/utils → diffsky-0.2.4/diffsky}/tests/__init__.py +0 -0
  358. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/tests/test_dependencies.py +0 -0
  359. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/tests/test_diffndhist.py +0 -0
  360. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/tests/test_diffsky_setup.py +0 -0
  361. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/tests/test_mc_diffsky.py +0 -0
  362. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/tests/test_phot_utils.py +0 -0
  363. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/tests/test_sbl18_photgrad.py +0 -0
  364. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/tests/test_tw_photgrad.py +0 -0
  365. {diffsky-0.2.3/scripts → diffsky-0.2.4/diffsky/tests/testing_data}/__init__.py +0 -0
  366. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/tw_photgrad.py +0 -0
  367. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/__init__.py +0 -0
  368. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/crossmatch_utils.py +0 -0
  369. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/sfh_utils.py +0 -0
  370. {diffsky-0.2.3/scripts → diffsky-0.2.4/diffsky/utils}/tests/__init__.py +0 -0
  371. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/tests/test_crossmatch_utils.py +0 -0
  372. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/tests/test_sfh_utils.py +0 -0
  373. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/tests/test_tw_utils.py +0 -0
  374. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/tests/test_utility_funcs.py +0 -0
  375. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/tw_utils.py +0 -0
  376. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky/utils/utility_funcs.py +0 -0
  377. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky.egg-info/dependency_links.txt +0 -0
  378. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky.egg-info/requires.txt +0 -0
  379. {diffsky-0.2.3 → diffsky-0.2.4}/diffsky.egg-info/top_level.txt +0 -0
  380. {diffsky-0.2.3 → diffsky-0.2.4}/docs/Makefile +0 -0
  381. {diffsky-0.2.3 → diffsky-0.2.4}/docs/make.bat +0 -0
  382. {diffsky-0.2.3 → diffsky-0.2.4}/docs/source/citation.rst +0 -0
  383. {diffsky-0.2.3 → diffsky-0.2.4}/docs/source/conf.py +0 -0
  384. {diffsky-0.2.3 → diffsky-0.2.4}/docs/source/demo_diffmahpop_t_peak.ipynb +0 -0
  385. {diffsky-0.2.3 → diffsky-0.2.4}/docs/source/demo_mc_lightcones.ipynb +0 -0
  386. {diffsky-0.2.3 → diffsky-0.2.4}/docs/source/demos.rst +0 -0
  387. {diffsky-0.2.3 → diffsky-0.2.4}/docs/source/index.rst +0 -0
  388. {diffsky-0.2.3 → diffsky-0.2.4}/docs/source/installation.rst +0 -0
  389. {diffsky-0.2.3 → diffsky-0.2.4}/docs/source/rtd_environment.yaml +0 -0
  390. {diffsky-0.2.3 → diffsky-0.2.4}/pyproject.toml +0 -0
  391. {diffsky-0.2.3 → diffsky-0.2.4}/requirements.txt +0 -0
  392. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/LJ_LC_JOBS/generate_sfh_mock_jobs.py +0 -0
  393. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/inspect_lc_mock.py +0 -0
  394. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/inspect_lightcone_mock.py +0 -0
  395. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/make_sfh_lj_mock.py +0 -0
  396. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/tests/test_inspect_lightcone_mock.py +0 -0
  397. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/tests/test_lc_cf_crossmatch_script.py +0 -0
  398. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/tests/test_make_sfh_lj_mock.py +0 -0
  399. {diffsky-0.2.3 → diffsky-0.2.4}/scripts/tests/test_tabulate_coreforest_overlap.py +0 -0
  400. {diffsky-0.2.3 → diffsky-0.2.4}/setup.cfg +0 -0
  401. {diffsky-0.2.3 → diffsky-0.2.4}/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,8 @@
1
+ 0.2.4 (2025-09-02)
2
+ -------------------
3
+ - Release associated with diffskyopt+kdescent calibration by Alan Pearl
4
+
5
+
1
6
  0.2.3 (2025-07-30)
2
7
  -------------------
3
8
  - 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.4
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.4'
@@ -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,314 @@
1
+ """
2
+ Kernels for disk-bulge modeling
3
+ """
4
+ from collections import OrderedDict
5
+
6
+ import numpy as np
7
+ from diffstar.utils import cumulative_mstar_formed
8
+ from dsps.constants import SFR_MIN
9
+ from dsps.sed.stellar_age_weights import calc_age_weights_from_sfh_table
10
+ from jax import jit as jjit
11
+ from jax import lax, vmap
12
+ from jax import numpy as jnp
13
+
14
+ from dsps.sfh.diffburst import (
15
+ _pureburst_age_weights_from_params as _burst_age_weights_from_params,
16
+ )
17
+ from .disk_knots import _disk_knot_kern, _disk_knot_vmap
18
+ from ...utils.tw_utils import _tw_sigmoid
19
+
20
+ FBULGE_MIN = 0.05
21
+ FBULGE_MAX = 0.95
22
+
23
+ BOUNDING_K = 0.1
24
+
25
+ DEFAULT_FBULGE_EARLY = 0.75
26
+ DEFAULT_FBULGE_LATE = 0.15
27
+
28
+ DEFAULT_FBULGE_PDICT = OrderedDict(fbulge_tcrit=8.0, fbulge_early=0.5, fbulge_late=0.1)
29
+ DEFAULT_FBULGE_PARAMS = np.array(list(DEFAULT_FBULGE_PDICT.values()))
30
+
31
+
32
+ _linterp_vmap = jjit(vmap(jnp.interp, in_axes=(0, None, 0)))
33
+
34
+ _A = (None, 0, 0)
35
+ _burst_age_weights_from_params_vmap = jjit(
36
+ vmap(_burst_age_weights_from_params, in_axes=_A)
37
+ )
38
+
39
+ _D = (None, 0, None, 0)
40
+ calc_age_weights_from_sfh_table_vmap = jjit(
41
+ vmap(calc_age_weights_from_sfh_table, in_axes=_D)
42
+ )
43
+
44
+
45
+ @jjit
46
+ def _sigmoid_2d(x, x0, y, y0, kx, ky, zmin, zmax):
47
+ height_diff = zmax - zmin
48
+ return zmin + height_diff * lax.logistic(kx * (x - x0) - ky * (y - y0))
49
+
50
+
51
+ @jjit
52
+ def _bulge_fraction_kernel(t, thalf, frac_early, frac_late, dt):
53
+ """typical values of 10.0, 0.7, 0.1
54
+ frac_late < frac_late is needed to make bulges redder and so that
55
+ bulge fractions increase with stellar mass
56
+ """
57
+ tw_h = dt / 6.0
58
+ return _tw_sigmoid(t, thalf, tw_h, frac_early, frac_late)
59
+
60
+
61
+ @jjit
62
+ def calc_tform_kern(abscissa, xarr, tform_frac):
63
+ fracarr = xarr / xarr[-1]
64
+ return jnp.interp(tform_frac, fracarr, abscissa)
65
+
66
+
67
+ _calc_tform_pop_kern = jjit(vmap(calc_tform_kern, in_axes=[None, 0, None]))
68
+
69
+
70
+ @jjit
71
+ def calc_tform_pop(tarr, smh_pop, tform_frac):
72
+ """Calculate the formation time of a population
73
+
74
+ Parameters
75
+ ----------
76
+ tarr : ndarray, shape(nt, )
77
+
78
+ smh_pop : ndarray, shape(npop, nt)
79
+
80
+ tform_frac : float
81
+ Fraction used in the formation time definition
82
+ tform_frac=0.5 corresponds to the half-mass time, for example
83
+
84
+ """
85
+ return _calc_tform_pop_kern(tarr, smh_pop, tform_frac)
86
+
87
+
88
+ @jjit
89
+ def _bulge_fraction_vs_tform(t, t10, t90, params):
90
+ fbulge_tcrit, fbulge_early, fbulge_late = params
91
+ dt = t90 - t10
92
+ fbulge = _bulge_fraction_kernel(t, fbulge_tcrit, fbulge_early, fbulge_late, dt)
93
+ return fbulge
94
+
95
+
96
+ @jjit
97
+ def _bulge_sfh(tarr, sfh, fbulge_params):
98
+ sfh = jnp.where(sfh < SFR_MIN, SFR_MIN, sfh)
99
+ smh = cumulative_mstar_formed(tarr, sfh)
100
+ fracmh = smh / smh[-1]
101
+ t10 = jnp.interp(0.1, fracmh, tarr)
102
+ t90 = jnp.interp(0.9, fracmh, tarr)
103
+ eff_bulge = _bulge_fraction_vs_tform(tarr, t10, t90, fbulge_params)
104
+ sfh_bulge = eff_bulge * sfh
105
+ smh_bulge = cumulative_mstar_formed(tarr, sfh_bulge)
106
+ bth = smh_bulge / smh
107
+ return smh, eff_bulge, sfh_bulge, smh_bulge, bth
108
+
109
+
110
+ _B = (None, 0, 0)
111
+ _bulge_sfh_vmap = jjit(vmap(_bulge_sfh, in_axes=_B))
112
+
113
+
114
+ @jjit
115
+ def _get_observed_quantity(t_obs, tarr, quantity):
116
+ q_obs = jnp.interp(t_obs, tarr, quantity)
117
+ return q_obs
118
+
119
+
120
+ _C = (0, None, 0) # map t_obs and sfh for each galaxy
121
+ _get_observed_quantity_vmap = jjit(vmap(_get_observed_quantity, in_axes=_C))
122
+
123
+
124
+ @jjit
125
+ def get_observed_quantity_pop(t_obs, tarr, quantity):
126
+ """Calculate the observed quantity for population
127
+
128
+ Parameters
129
+ ----------
130
+ t_obs : times of observation, ndarray, shape(npop, )
131
+ tarr : times for histories, ndarray, shape(nt, )
132
+
133
+ quantity : history for quantity, ndarray, shape(npop, nt)
134
+ """
135
+ return _get_observed_quantity_vmap(t_obs, tarr, quantity)
136
+
137
+
138
+ def decompose_sfhpop_into_bulge_disk_knots(
139
+ gal_fbulge_params,
140
+ gal_fknot,
141
+ gal_t_obs,
142
+ gal_t_table,
143
+ gal_sfh,
144
+ gal_fburst,
145
+ gal_burstshape_params,
146
+ ssp_lg_age_gyr,
147
+ ):
148
+ """Decompose the SFH of a Diffsky galaxy into three components:
149
+ bulges, diffuse disk, and star-forming knots in the disks
150
+
151
+ Parameters
152
+ ----------
153
+ gal_fbulge_params : ndarray, shape (n_gals, 3)
154
+ Bulge efficiency parameters (tcrit, fbulge_early, fbulge_late) for each galaxy
155
+
156
+ gal_fknot : ndarray, shape (n_gals, )
157
+ Fraction of the disk mass in bursty star-forming knots for each galaxy
158
+
159
+ gal_t_obs : ndarray, shape (n_gals, )
160
+ Age of the universe in Gyr at the redshift of each galaxy
161
+
162
+ gal_t_table : ndarray, shape (n_t, )
163
+ Grid in cosmic time t in Gyr at which SFH of the galaxy population is tabulated
164
+ gal_t_table should increase monotonically and it should span the
165
+ full range of gal_t_obs, including some padding of a few million years
166
+
167
+ gal_sfh : ndarray, shape (n_gals, n_t)
168
+ Grid in SFR in Msun/yr for each galaxy tabulated at the input gal_t_table
169
+
170
+ gal_fburst : ndarray, shape (n_gals, )
171
+ Fraction of stellar mass in the burst population of each galaxy
172
+
173
+ gal_burstshape_params : ndarray, shape (n_gals, 3)
174
+ Parameters controlling P(τ) for burst population in each galaxy
175
+ lgfburst = gal_burstshape_params[:, 0]
176
+ lgyr_peak = gal_burstshape_params[:, 1]
177
+ lgyr_max = gal_burstshape_params[:, 2]
178
+
179
+ ssp_lg_age_gyr : ndarray, shape (n_age, )
180
+ Grid in age τ at which the SSPs are computed, stored as log10(τ/Gyr)
181
+
182
+ Returns
183
+ -------
184
+ mbulge : ndarray, shape (n_gals, )
185
+ Total stellar mass in Msun formed in the bulge at time gal_t_obs
186
+
187
+ mdd : ndarray, shape (n_gals, )
188
+ Total stellar mass in Msun formed in the diffuse disk at time gal_t_obs
189
+
190
+ mknot : ndarray, shape (n_gals, )
191
+ Total stellar mass in Msun formed in star-forming knots at time gal_t_obs
192
+
193
+ mburst : ndarray, shape (n_gals, )
194
+ Total stellar mass in Msun in the burst population at time gal_t_obs
195
+
196
+ bulge_age_weights : ndarray, shape (n_gals, n_age)
197
+ Probability distribution P(τ_age) for bulge of each galaxy
198
+
199
+ dd_age_weights : ndarray, shape (n_gals, n_age)
200
+ Probability distribution P(τ_age) for diffuse disk of each galaxy
201
+
202
+ knot_age_weights : ndarray, shape (n_gals, n_age)
203
+ Probability distribution P(τ_age) for star-forming knots of each galaxy
204
+
205
+ bulge_sfh : ndarray, shape (n_gals, n_t)
206
+ Grid in SFR in Msun/yr for each galaxy bulge tabulated at the input gal_t_table
207
+
208
+ gal_frac_bulge_t_obs : ndarray, shape (n_gals, )
209
+ Bulge/total mass ratio at gal_t_obs for every galaxy
210
+
211
+ """
212
+ ssp_lg_age_yr = ssp_lg_age_gyr + 9.0
213
+ lgyr_peak = gal_burstshape_params[:, 1]
214
+ lgyr_max = gal_burstshape_params[:, 2]
215
+ gal_burst_age_weights = _burst_age_weights_from_params_vmap(
216
+ ssp_lg_age_yr, lgyr_peak, lgyr_max,
217
+ )
218
+ return _decompose_sfhpop_into_bulge_disk_knots(
219
+ gal_fbulge_params,
220
+ gal_fknot,
221
+ gal_t_obs,
222
+ gal_t_table,
223
+ gal_sfh,
224
+ gal_fburst,
225
+ gal_burst_age_weights,
226
+ ssp_lg_age_gyr,
227
+ )
228
+
229
+
230
+ @jjit
231
+ def _decompose_sfh_singlegal_into_bulge_disk_knots(
232
+ fbulge_params,
233
+ fknot,
234
+ t_obs,
235
+ t_table,
236
+ sfh_table,
237
+ fburst,
238
+ age_weights_burst,
239
+ ssp_lg_age_gyr,
240
+ ):
241
+ _res = _bulge_sfh(t_table, sfh_table, fbulge_params)
242
+ smh, eff_bulge, bulge_sfh, smh_bulge, bulge_to_total_history = _res
243
+
244
+ bulge_sfh = jnp.where(bulge_sfh < SFR_MIN, SFR_MIN, bulge_sfh)
245
+ frac_bulge_t_obs = jnp.interp(t_obs, t_table, bulge_to_total_history)
246
+
247
+ bulge_age_weights = calc_age_weights_from_sfh_table(
248
+ t_table, bulge_sfh, ssp_lg_age_gyr, t_obs
249
+ )
250
+ disk_sfh = sfh_table - bulge_sfh
251
+ disk_sfh = jnp.where(disk_sfh < SFR_MIN, SFR_MIN, disk_sfh)
252
+
253
+ args = (
254
+ t_table,
255
+ t_obs,
256
+ sfh_table,
257
+ disk_sfh,
258
+ fburst,
259
+ fknot,
260
+ age_weights_burst,
261
+ ssp_lg_age_gyr,
262
+ )
263
+ _knot_info = _disk_knot_kern(*args)
264
+ mstar_tot, mburst, mdd, mknot, dd_age_weights, knot_age_weights = _knot_info
265
+
266
+ mbulge = frac_bulge_t_obs * mstar_tot
267
+ masses = mbulge, mdd, mknot, mburst
268
+ age_weights = bulge_age_weights, dd_age_weights, knot_age_weights
269
+ ret = (*masses, *age_weights, bulge_sfh, frac_bulge_t_obs)
270
+ return ret
271
+
272
+
273
+ @jjit
274
+ def _decompose_sfhpop_into_bulge_disk_knots(
275
+ gal_fbulge_params,
276
+ gal_fknot,
277
+ gal_t_obs,
278
+ gal_t_table,
279
+ gal_sfh,
280
+ gal_fburst,
281
+ age_weights_burst,
282
+ ssp_lg_age_gyr,
283
+ ):
284
+ _res = _bulge_sfh_vmap(gal_t_table, gal_sfh, gal_fbulge_params)
285
+ smh, eff_bulge, bulge_sfh, smh_bulge, bulge_to_total_history = _res
286
+
287
+ bulge_sfh = jnp.where(bulge_sfh < SFR_MIN, SFR_MIN, bulge_sfh)
288
+ gal_frac_bulge_t_obs = _linterp_vmap(gal_t_obs, gal_t_table, bulge_to_total_history)
289
+
290
+ bulge_age_weights = calc_age_weights_from_sfh_table_vmap(
291
+ gal_t_table, bulge_sfh, ssp_lg_age_gyr, gal_t_obs
292
+ )
293
+
294
+ disk_sfh = gal_sfh - bulge_sfh
295
+ disk_sfh = jnp.where(disk_sfh < SFR_MIN, SFR_MIN, disk_sfh)
296
+
297
+ args = (
298
+ gal_t_table,
299
+ gal_t_obs,
300
+ gal_sfh,
301
+ disk_sfh,
302
+ gal_fburst,
303
+ gal_fknot,
304
+ age_weights_burst,
305
+ ssp_lg_age_gyr,
306
+ )
307
+ _knot_info = _disk_knot_vmap(*args)
308
+ mstar_tot, mburst, mdd, mknot, dd_age_weights, knot_age_weights = _knot_info
309
+
310
+ mbulge = gal_frac_bulge_t_obs * mstar_tot
311
+ masses = mbulge, mdd, mknot, mburst
312
+ age_weights = bulge_age_weights, dd_age_weights, knot_age_weights
313
+ ret = (*masses, *age_weights, bulge_sfh, gal_frac_bulge_t_obs)
314
+ return ret
@@ -0,0 +1,57 @@
1
+ """
2
+ Add knot component
3
+ """
4
+ from diffstar.utils import cumulative_mstar_formed
5
+ from dsps.constants import SFR_MIN
6
+ from dsps.sed.stellar_age_weights import calc_age_weights_from_sfh_table
7
+ from jax import jit as jjit
8
+ from jax import numpy as jnp
9
+ from jax import vmap
10
+
11
+ FKNOT_MAX = 0.2
12
+
13
+
14
+ @jjit
15
+ def _disk_knot_kern(
16
+ tarr, tobs, sfh, sfh_disk, fburst, fknot, age_weights_burst, ssp_lg_age_gyr
17
+ ):
18
+ sfh = jnp.where(sfh < SFR_MIN, SFR_MIN, sfh)
19
+ sfh_disk = jnp.where(sfh_disk < SFR_MIN, SFR_MIN, sfh_disk)
20
+
21
+ sfh_knot = fknot * sfh_disk
22
+ sfh_diffuse_disk = sfh_disk * (1 - fknot)
23
+
24
+ smh = cumulative_mstar_formed(tarr, sfh)
25
+ smh_knot = cumulative_mstar_formed(tarr, sfh_knot)
26
+ smh_diffuse_disk = cumulative_mstar_formed(tarr, sfh_diffuse_disk)
27
+
28
+ age_weights_dd = calc_age_weights_from_sfh_table(
29
+ tarr, sfh_diffuse_disk, ssp_lg_age_gyr, tobs
30
+ )
31
+
32
+ lgt_table = jnp.log10(tarr)
33
+ mstar_tot = 10 ** jnp.interp(jnp.log10(tobs), lgt_table, jnp.log10(smh))
34
+ mknot = 10 ** jnp.interp(jnp.log10(tobs), lgt_table, jnp.log10(smh_knot))
35
+ mdd = 10 ** jnp.interp(jnp.log10(tobs), lgt_table, jnp.log10(smh_diffuse_disk))
36
+ mburst = fburst * mstar_tot
37
+
38
+ mburst_by_mknot = mburst / mknot
39
+ burst_knot_age_weights = (
40
+ mburst_by_mknot * age_weights_burst + (1 - mburst_by_mknot) * age_weights_dd
41
+ )
42
+ age_weights_knot = jnp.where(
43
+ mburst_by_mknot > 1, age_weights_burst, burst_knot_age_weights
44
+ )
45
+
46
+ mburst_dd = jnp.where(mburst_by_mknot > 1, mburst - mknot, 0.0)
47
+
48
+ mdd_tot = mdd + mburst_dd
49
+ age_weights_dd = (mdd / mdd_tot) * age_weights_dd + (
50
+ mburst_dd / mdd_tot
51
+ ) * age_weights_burst
52
+
53
+ return mstar_tot, mburst, mdd, mknot, age_weights_dd, age_weights_knot
54
+
55
+
56
+ _V = (None, 0, 0, 0, 0, 0, 0, None)
57
+ _disk_knot_vmap = jjit(vmap(_disk_knot_kern, in_axes=_V))
@@ -0,0 +1,80 @@
1
+ import jax.numpy as jnp
2
+ import numpy as np
3
+ from ...mc_diffsky import mc_diffstar_cenpop, mc_diffstar_galpop
4
+ from dsps.cosmology.defaults import DEFAULT_COSMOLOGY
5
+ from dsps.cosmology.flat_wcdm import age_at_z
6
+ from jax import random as jran
7
+
8
+ from .mc_disk_bulge import (
9
+ DEFAULT_FBULGE_2dSIGMOID_PARAMS,
10
+ mc_disk_bulge,
11
+ )
12
+
13
+ ran_key = jran.key(0)
14
+ halo_key, ran_key = jran.split(ran_key, 2)
15
+
16
+ # Invert t_table for redshifts
17
+
18
+
19
+ def get_redshifts_from_times(
20
+ t_table, cosmo_params, zmin=0.001, zmax=50, Ngrid=200,
21
+ ):
22
+ zgrid = np.logspace(np.log10(zmax), np.log10(zmin), Ngrid)
23
+ age_grid = age_at_z(zgrid, *cosmo_params)
24
+ redshifts = np.interp(t_table, age_grid, zgrid)
25
+
26
+ return redshifts
27
+
28
+
29
+ # Generate subcat and SFH catalog
30
+
31
+
32
+ def get_bulge_disk_test_sample(
33
+ ran_key,
34
+ lgmp_min=11.0,
35
+ redshift=0.05,
36
+ Lbox=100.0,
37
+ centrals=True,
38
+ cosmology=DEFAULT_COSMOLOGY,
39
+ ):
40
+ volume_com = Lbox**3
41
+ args = (ran_key, redshift, lgmp_min, volume_com)
42
+ if centrals:
43
+ diffstar = mc_diffstar_cenpop(*args, return_internal_quantities=True)
44
+ else:
45
+ diffstar = mc_diffstar_galpop(*args, return_internal_quantities=True)
46
+
47
+ print("Generated data shape = ", diffstar["sfh"].shape)
48
+
49
+ diffstar["sSFR"] = jnp.divide(diffstar["sfh"], diffstar["smh"])
50
+ diffstar["z_table"] = get_redshifts_from_times(diffstar["t_table"], cosmology)
51
+
52
+ return diffstar
53
+
54
+
55
+ def get_bulge_disk_decomposition(
56
+ ran_key, diffstar, fbulge_2d_params=DEFAULT_FBULGE_2dSIGMOID_PARAMS,
57
+ ):
58
+ _res = mc_disk_bulge(
59
+ ran_key,
60
+ diffstar["t_table"],
61
+ diffstar["sfh"],
62
+ fbulge_2d_params=fbulge_2d_params,
63
+ )
64
+ fbulge_params, smh, eff_bulge, sfh_bulge, smh_bulge, bth = _res
65
+
66
+ diffstar["tcrit_bulge"] = fbulge_params[:, 0]
67
+ diffstar["fbulge_early"] = fbulge_params[:, 1]
68
+ diffstar["fbulge_late"] = fbulge_params[:, 2]
69
+ diffstar["bth"] = bth
70
+ diffstar["eff_bulge"] = eff_bulge
71
+
72
+ # Save or compute bulge and disk quantities
73
+ diffstar["sfh_bulge"] = sfh_bulge
74
+ diffstar["smh_bulge"] = smh_bulge
75
+ diffstar["sSFR_bulge"] = jnp.divide(sfh_bulge, smh_bulge)
76
+ diffstar["smh_disk"] = diffstar["smh"] - smh_bulge
77
+ diffstar["sfh_disk"] = diffstar["sfh"] - sfh_bulge
78
+ diffstar["sSFR_disk"] = jnp.divide(diffstar["sfh_disk"], diffstar["smh_disk"])
79
+
80
+ return diffstar
@@ -0,0 +1,133 @@
1
+ """
2
+ Generate disk-bulge decomposition
3
+ """
4
+ from collections import OrderedDict, namedtuple
5
+
6
+ import jax.numpy as jnp
7
+ import numpy as np
8
+ from diffstar.utils import cumulative_mstar_formed_galpop
9
+ from dsps.constants import SFR_MIN
10
+
11
+ from .disk_bulge_kernels import (
12
+ _bulge_sfh_vmap,
13
+ _sigmoid_2d,
14
+ calc_tform_pop,
15
+ )
16
+
17
+ DEFAULT_FBULGE_PDICT = OrderedDict(
18
+ early_logsm0_x0=10.0,
19
+ early_logssfr0_x0=-10.0,
20
+ early_logssfr0_k=0.2,
21
+ early_logsm0_k=0.2,
22
+ early_zmin=1.0,
23
+ early_zmax=0.2,
24
+ late_logsm0_x0=10.0,
25
+ late_logssfr0_x0=-10.0,
26
+ late_logssfr0_k=0.2,
27
+ late_logsm0_k=0.2,
28
+ late_zmax=0.1,
29
+ tcrit_logsm0_x0=10.0,
30
+ tcrit_logssfr0_x0=-10.0,
31
+ tcrit_logssfr0_k=0.5,
32
+ tcrit_logsm0_k=0.8,
33
+ )
34
+ Fbulge2dParams = namedtuple("Fbulge2dParams", DEFAULT_FBULGE_PDICT.keys())
35
+ DEFAULT_FBULGE_2dSIGMOID_PARAMS = Fbulge2dParams(**DEFAULT_FBULGE_PDICT)
36
+
37
+
38
+ def mc_disk_bulge(
39
+ ran_key, tarr, sfh_pop, fbulge_2d_params=DEFAULT_FBULGE_2dSIGMOID_PARAMS,
40
+ ):
41
+ """Decompose input SFHs into disk and bulge contributions
42
+
43
+ Parameters
44
+ ----------
45
+ ran_key : jax.random.PRNGKey
46
+
47
+ tarr : ndarray, shape (n_t, )
48
+
49
+ sfh_pop : ndarray, shape (n_gals, n_t)
50
+
51
+ fbulge_2d_params : named tuple of parameters for 2d-sigmoid
52
+
53
+ new_model : boolean flag to switch between new and old model
54
+
55
+ Returns
56
+ -------
57
+ fbulge_params : ndarray, shape (n_gals, 3)
58
+ tcrit_bulge = fbulge_params[:, 0]
59
+ fbulge_early = fbulge_params[:, 1]
60
+ fbulge_late = fbulge_params[:, 2]
61
+
62
+ smh : ndarray, shape (n_gals, n_t)
63
+ Stellar mass history of galaxy in units of Msun
64
+
65
+ eff_bulge : ndarray, shape (n_gals, n_t)
66
+ History of in-situ bulge growth efficiency for every galaxy
67
+
68
+ sfh_bulge : ndarray, shape (n_gals, n_t)
69
+ Star formation history of bulge in units of Msun/yr
70
+
71
+ smh_bulge : ndarray, shape (n_gals, n_t)
72
+ Stellar mass history of bulge in units of Msun
73
+
74
+ bth : ndarray, shape (n_gals, n_t)
75
+ History of bulge-to-total mass ratio of every galaxy
76
+
77
+ """
78
+ sfh_pop = np.where(sfh_pop < SFR_MIN, SFR_MIN, sfh_pop)
79
+ smh_pop = cumulative_mstar_formed_galpop(tarr, sfh_pop)
80
+ t10 = calc_tform_pop(tarr, smh_pop, 0.1)
81
+ t90 = calc_tform_pop(tarr, smh_pop, 0.9)
82
+ logsm0 = jnp.log10(smh_pop[:, -1])
83
+
84
+ ssfr = jnp.divide(sfh_pop, smh_pop)
85
+ logssfr0 = jnp.log10(ssfr[:, -1])
86
+ fbulge_params = generate_fbulge_parameters_2d_sigmoid(
87
+ ran_key, logsm0, logssfr0, t10, t90, fbulge_2d_params
88
+ )
89
+
90
+ _res = _bulge_sfh_vmap(tarr, sfh_pop, fbulge_params)
91
+ smh, eff_bulge, sfh_bulge, smh_bulge, bth = _res
92
+ return fbulge_params, smh, eff_bulge, sfh_bulge, smh_bulge, bth
93
+
94
+
95
+ def generate_fbulge_parameters_2d_sigmoid(
96
+ ran_key, logsm0, logssfr0, t10, t90, f_bulge_params
97
+ ):
98
+ fbulge_early = _sigmoid_2d(
99
+ logssfr0,
100
+ f_bulge_params.early_logssfr0_x0,
101
+ logsm0,
102
+ f_bulge_params.early_logsm0_x0,
103
+ f_bulge_params.early_logssfr0_k,
104
+ f_bulge_params.early_logsm0_k,
105
+ f_bulge_params.early_zmin,
106
+ f_bulge_params.early_zmax,
107
+ )
108
+
109
+ fbulge_late = _sigmoid_2d(
110
+ logssfr0,
111
+ f_bulge_params.late_logssfr0_x0,
112
+ logsm0,
113
+ f_bulge_params.late_logsm0_x0,
114
+ f_bulge_params.late_logssfr0_k,
115
+ f_bulge_params.late_logsm0_k,
116
+ fbulge_early,
117
+ f_bulge_params.late_zmax,
118
+ )
119
+
120
+ fbulge_tcrit = _sigmoid_2d(
121
+ logssfr0,
122
+ f_bulge_params.tcrit_logssfr0_x0,
123
+ logsm0,
124
+ f_bulge_params.tcrit_logsm0_x0,
125
+ f_bulge_params.tcrit_logssfr0_k,
126
+ f_bulge_params.tcrit_logsm0_k,
127
+ t90,
128
+ t10,
129
+ )
130
+
131
+ fbulge_param_arr = np.asarray((fbulge_tcrit, fbulge_early, fbulge_late)).T
132
+
133
+ return fbulge_param_arr