diffsky 0.2.2__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.2 → diffsky-0.2.4}/.github/workflows/linting.yaml +1 -1
  2. {diffsky-0.2.2 → diffsky-0.2.4}/.github/workflows/monthly-warning-test.yaml +1 -1
  3. {diffsky-0.2.2 → diffsky-0.2.4}/.github/workflows/test_latest_releases.yaml +1 -1
  4. {diffsky-0.2.2 → diffsky-0.2.4}/.github/workflows/test_main_branch.yaml +1 -1
  5. {diffsky-0.2.2 → diffsky-0.2.4}/.github/workflows/tests_cron.yaml +1 -1
  6. {diffsky-0.2.2 → diffsky-0.2.4}/CHANGES.rst +11 -1
  7. {diffsky-0.2.2 → diffsky-0.2.4}/PKG-INFO +1 -1
  8. diffsky-0.2.4/diffsky/_version.py +1 -0
  9. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/lc_mock_production.py +3 -2
  10. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/lightcone_utils.py +38 -4
  11. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/load_lc_mock.py +1 -1
  12. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/io_utils.py +7 -2
  13. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/disk_bulge_kernels.py +314 -0
  14. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/disk_knots.py +57 -0
  15. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/generate_bulge_disk_sample.py +80 -0
  16. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/mc_disk_bulge.py +133 -0
  17. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/tests/test_disk_bulge.py +291 -0
  18. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/tests/test_disk_knots.py +90 -0
  19. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/tests/test_generate_bulge_disk_sample.py +67 -0
  20. diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling/tests/test_mc_disk_bulge.py +81 -0
  21. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/lc_phot_kern.py +41 -2
  22. diffsky-0.2.4/diffsky/experimental/lc_utils.py +135 -0
  23. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/mc_lightcone_halos.py +4 -25
  24. diffsky-0.2.4/diffsky/experimental/tests/test_lc_utils.py +47 -0
  25. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/fit_flat_hmf_model.py +51 -0
  26. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/fit_halobias_model.py +52 -0
  27. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/fit_halobias_singlez_model.py +46 -0
  28. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/tests/test_fit_flat_hmf_model.py +65 -0
  29. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/tests/test_fit_halobias_model.py +58 -0
  30. diffsky-0.2.4/diffsky/mass_functions/fitting_utils/tests/test_fit_halobias_model_singlez.py +55 -0
  31. diffsky-0.2.4/diffsky/mass_functions/flat_hmf_model.py +133 -0
  32. diffsky-0.2.4/diffsky/mass_functions/halobias_model.py +207 -0
  33. diffsky-0.2.4/diffsky/mass_functions/halobias_singlez_model.py +155 -0
  34. diffsky-0.2.4/diffsky/mass_functions/tests/test_flat_hmf_model.py +68 -0
  35. diffsky-0.2.4/diffsky/mass_functions/tests/test_halobias_model.py +99 -0
  36. diffsky-0.2.4/diffsky/mass_functions/tests/test_halobias_singlez_model.py +87 -0
  37. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky.egg-info/PKG-INFO +1 -1
  38. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky.egg-info/SOURCES.txt +24 -0
  39. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/LJ_LC_JOBS/make_sfh_lc_mock_lj.py +1 -1
  40. diffsky-0.2.4/scripts/__init__.py +0 -0
  41. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/lc_cf_crossmatch_script.py +2 -2
  42. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/make_sfh_lightcone_last_journey.py +1 -1
  43. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/tabulate_coreforest_overlap.py +2 -2
  44. diffsky-0.2.4/scripts/tests/__init__.py +0 -0
  45. diffsky-0.2.2/diffsky/_version.py +0 -1
  46. {diffsky-0.2.2 → diffsky-0.2.4}/.coveragerc +0 -0
  47. {diffsky-0.2.2 → diffsky-0.2.4}/.git_archival.txt +0 -0
  48. {diffsky-0.2.2 → diffsky-0.2.4}/.gitattributes +0 -0
  49. {diffsky-0.2.2 → diffsky-0.2.4}/.github/dependabot.yml +0 -0
  50. {diffsky-0.2.2 → diffsky-0.2.4}/.gitignore +0 -0
  51. {diffsky-0.2.2 → diffsky-0.2.4}/.readthedocs.yml +0 -0
  52. {diffsky-0.2.2 → diffsky-0.2.4}/LICENSE.rst +0 -0
  53. {diffsky-0.2.2 → diffsky-0.2.4}/README.rst +0 -0
  54. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/__init__.py +0 -0
  55. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/__init__.py +0 -0
  56. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/__init__.py +0 -0
  57. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/plot_fburstpop.py +0 -0
  58. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/plot_tburstpop.py +0 -0
  59. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/tests/__init__.py +0 -0
  60. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/tests/test_plot_fburstpop.py +0 -0
  61. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diagnostics/tests/test_plot_tburstpop.py +0 -0
  62. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diffburstpop.py +0 -0
  63. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diffqburstpop.py +0 -0
  64. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diffqburstpop_mono.py +0 -0
  65. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/diffqburstpop_mono_noise.py +0 -0
  66. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/fburstpop.py +0 -0
  67. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/fburstpop_mono.py +0 -0
  68. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/freqburst.py +0 -0
  69. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/freqburst_mono.py +0 -0
  70. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tburstpop.py +0 -0
  71. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/__init__.py +0 -0
  72. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_diffburstpop.py +0 -0
  73. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_diffqburstpop.py +0 -0
  74. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_diffqburstpop_mono.py +0 -0
  75. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_diffqburstpop_mono_noise.py +0 -0
  76. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_fburstpop.py +0 -0
  77. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_fburstpop_mono.py +0 -0
  78. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_freqburst.py +0 -0
  79. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_freqburst_mono.py +0 -0
  80. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/burstpop/tests/test_tburstpop.py +0 -0
  81. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/cosmos_utils/__init__.py +0 -0
  82. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/cosmos_utils/cosmos_mstar_model.py +0 -0
  83. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/cosmos_utils/tests/__init__.py +0 -0
  84. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/cosmos_utils/tests/test_cosmos_mstar_model.py +0 -0
  85. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/__init__.py +0 -0
  86. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/cosmos20_loader.py +0 -0
  87. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/__init__.py +0 -0
  88. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/__init__.py +0 -0
  89. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/tests/__init__.py +0 -0
  90. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/tests/test_validate_lc_cores.py +0 -0
  91. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/tests/test_validate_lc_mock.py +0 -0
  92. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/validate_lc_cores.py +0 -0
  93. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/data_validation/validate_lc_mock.py +0 -0
  94. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/defaults.py +0 -0
  95. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/hacc_core_utils.py +0 -0
  96. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/load_hacc_cores.py +0 -0
  97. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/load_lc_cf.py +0 -0
  98. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/load_lc_cf_synthetic.py +0 -0
  99. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/metadata_sfh_mock.py +0 -0
  100. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/__init__.py +0 -0
  101. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_defaults.py +0 -0
  102. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_hacc_core_utils.py +0 -0
  103. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_lc_mock_production.py +0 -0
  104. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_lightcone_utils.py +0 -0
  105. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_load_hacc_cores.py +0 -0
  106. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/test_load_lc_cf.py +0 -0
  107. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/lc_cores-decomposition.txt +0 -0
  108. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/phi_haccytrees_tdata.txt +0 -0
  109. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/redshift_haccytrees_tdata.txt +0 -0
  110. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/theta_haccytrees_tdata.txt +0 -0
  111. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/x_haccytrees_tdata.txt +0 -0
  112. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/y_haccytrees_tdata.txt +0 -0
  113. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/hacc_utils/tests/testing_data/z_haccytrees_tdata.txt +0 -0
  114. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/mpi_utils.py +0 -0
  115. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/tests/__init__.py +0 -0
  116. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/tests/test_cosmos_loader.py +0 -0
  117. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/tests/test_imports.py +0 -0
  118. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/tests/testing_data/__init__.py +0 -0
  119. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/tests/testing_data/cosmos20_shasum.dat +0 -0
  120. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/data_loaders/um_binary_loader.py +0 -0
  121. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/diagnostics/__init__.py +0 -0
  122. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/diagnostics/plot_delta_mag_burstiness.py +0 -0
  123. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/diagnostics/plot_diffstar_fq.py +0 -0
  124. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/diagnostics/tests/__init__.py +0 -0
  125. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/diagnostics/tests/test_plot_delta_mag_burstiness.py +0 -0
  126. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/diagnostics/tests/test_plot_diffstar_fq.py +0 -0
  127. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/diagnostics/utils.py +0 -0
  128. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/diffndhist.py +0 -0
  129. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/__init__.py +0 -0
  130. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/avpop.py +0 -0
  131. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/avpop_flex.py +0 -0
  132. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/avpop_mono.py +0 -0
  133. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/deltapop.py +0 -0
  134. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/__init__.py +0 -0
  135. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/plot_avpop_flex.py +0 -0
  136. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/plot_funopop_simple.py +0 -0
  137. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/tests/__init__.py +0 -0
  138. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/tests/test_plot_avpop_flex.py +0 -0
  139. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/diagnostics/tests/test_plot_funopop_simple.py +0 -0
  140. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/funopop.py +0 -0
  141. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/funopop_simple.py +0 -0
  142. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/funopop_ssfr.py +0 -0
  143. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/sbl18_dust.py +0 -0
  144. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/sbl18_dust_kernels.py +0 -0
  145. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/sbl18_dustpop.py +0 -0
  146. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/__init__.py +0 -0
  147. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_avpop.py +0 -0
  148. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_avpop_flex.py +0 -0
  149. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_avpop_mono.py +0 -0
  150. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_deltapop.py +0 -0
  151. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_funopop_model.py +0 -0
  152. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_funopop_simple.py +0 -0
  153. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_funopop_ssfr.py +0 -0
  154. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_sbl18_dustpop.py +0 -0
  155. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dust_kernels.py +0 -0
  156. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dustpop.py +0 -0
  157. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dustpop_mono.py +0 -0
  158. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dustpop_mono_noise.py +0 -0
  159. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tests/test_tw_dustpop_new.py +0 -0
  160. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tw_dust.py +0 -0
  161. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tw_dust_kernels.py +0 -0
  162. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tw_dustpop.py +0 -0
  163. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tw_dustpop_mono.py +0 -0
  164. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tw_dustpop_mono_noise.py +0 -0
  165. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/dustpop/tw_dustpop_new.py +0 -0
  166. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/__init__.py +0 -0
  167. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/diagnostics/__init__.py +0 -0
  168. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/diagnostics/check_smhm.py +0 -0
  169. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/diagnostics/tests/__init__.py +0 -0
  170. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/diagnostics/tests/test_check_smhm.py +0 -0
  171. {diffsky-0.2.2/diffsky/experimental/dspspop → diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling}/__init__.py +0 -0
  172. {diffsky-0.2.2/diffsky/experimental/dspspop → diffsky-0.2.4/diffsky/experimental/disk_bulge_modeling}/tests/__init__.py +0 -0
  173. {diffsky-0.2.2/diffsky/experimental/tests → diffsky-0.2.4/diffsky/experimental/dspspop}/__init__.py +0 -0
  174. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/boris_dust.py +0 -0
  175. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/burstshapepop.py +0 -0
  176. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/dust_deltapop.py +0 -0
  177. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/dustpop.py +0 -0
  178. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/lgavpop.py +0 -0
  179. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/lgfburstpop.py +0 -0
  180. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/nagaraj22_dust.py +0 -0
  181. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/photpop.py +0 -0
  182. {diffsky-0.2.2/diffsky/fake_sats → diffsky-0.2.4/diffsky/experimental/dspspop/tests}/__init__.py +0 -0
  183. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_attavpop.py +0 -0
  184. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_boris_dust.py +0 -0
  185. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_burstshapepop.py +0 -0
  186. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_dustdeltapop.py +0 -0
  187. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_lgfburstpop.py +0 -0
  188. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/dspspop/tests/test_photpop.py +0 -0
  189. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/mc_diffsky_phot.py +0 -0
  190. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/phot_utils.py +0 -0
  191. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/photometry_interpolation.py +0 -0
  192. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/precompute_ssp_phot.py +0 -0
  193. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/scatter.py +0 -0
  194. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/ssp_err_pop.py +0 -0
  195. {diffsky-0.2.2/diffsky/fake_sats → diffsky-0.2.4/diffsky/experimental}/tests/__init__.py +0 -0
  196. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/tests/test_lc_phot_kern.py +0 -0
  197. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/tests/test_mc_diffsky_phot.py +0 -0
  198. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/tests/test_mc_lightcone_halos.py +0 -0
  199. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/tests/test_photometry_interpolation.py +0 -0
  200. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/tests/test_precompute_ssp_phot.py +0 -0
  201. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/tests/test_scatter.py +0 -0
  202. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/experimental/tests/test_ssp_err_pop.py +0 -0
  203. {diffsky-0.2.2/diffsky/mass_functions/fitting_utils → diffsky-0.2.4/diffsky/fake_sats}/__init__.py +0 -0
  204. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/ellipsoidal_nfw_phase_space.py +0 -0
  205. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/ellipsoidal_velocities.py +0 -0
  206. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/halo_boundary_functions.py +0 -0
  207. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/nfw_config_space.py +0 -0
  208. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/rotations3d.py +0 -0
  209. {diffsky-0.2.2/diffsky/mass_functions/fitting_utils/calibrations → diffsky-0.2.4/diffsky/fake_sats/tests}/__init__.py +0 -0
  210. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_ellipsoidal_nfw_phase_space.py +0 -0
  211. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_halo_boundary_functions.py +0 -0
  212. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_mc_ellipticial_velocities.py +0 -0
  213. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_nfw_config_space.py +0 -0
  214. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/tests/test_rotations3d.py +0 -0
  215. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/tests/testing_data/halo_mass_ht_test.txt +0 -0
  216. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/tests/testing_data/halo_radius_200c_ht_test.txt +0 -0
  217. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/tests/testing_data/redshift_ht_test.txt +0 -0
  218. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/fake_sats/vector_utilities.py +0 -0
  219. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/__init__.py +0 -0
  220. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/ccshmf_model.py +0 -0
  221. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/README.rst +0 -0
  222. {diffsky-0.2.2/diffsky/mass_functions/fitting_utils/calibrations/tests → diffsky-0.2.4/diffsky/mass_functions/fitting_utils}/__init__.py +0 -0
  223. {diffsky-0.2.2/diffsky/mass_functions/fitting_utils/diagnostics → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/calibrations}/__init__.py +0 -0
  224. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/calibrations/hacc_core_shmf_params.py +0 -0
  225. {diffsky-0.2.2/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.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/calibrations/tests/test_hacc_core_shmf_params.py +0 -0
  227. {diffsky-0.2.2/diffsky/mass_functions/fitting_utils/tests → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/diagnostics}/__init__.py +0 -0
  228. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/diagnostics/hmf_fit_diagnostics.py +0 -0
  229. {diffsky-0.2.2/diffsky/mass_functions/hmf_calibrations → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/diagnostics}/tests/__init__.py +0 -0
  230. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/diagnostics/tests/test_hmf_fit_diagnostics.py +0 -0
  231. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fit_ccshmf.py +0 -0
  232. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fit_ccshmf_kernels.py +0 -0
  233. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fit_hmf_kernels.py +0 -0
  234. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fit_hmf_model.py +0 -0
  235. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/fitting_helpers.py +0 -0
  236. {diffsky-0.2.2/diffsky/mass_functions/io_utils → diffsky-0.2.4/diffsky/mass_functions/fitting_utils/tests}/__init__.py +0 -0
  237. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/tests/test_fit_ccshmf.py +0 -0
  238. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/tests/test_fit_ccshmf_kernels.py +0 -0
  239. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/tests/test_fit_hmf_kernels.py +0 -0
  240. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/fitting_utils/tests/test_fit_hmf_model.py +0 -0
  241. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/__init__.py +0 -0
  242. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/disc_lcdm_hmf_params.txt +0 -0
  243. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/disc_lcdm_hmf_params_all.txt +0 -0
  244. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/hmf_param_reader.py +0 -0
  245. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/lj_hmf_params.txt +0 -0
  246. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/lj_hmf_params_all.txt +0 -0
  247. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf.py +0 -0
  248. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf_fitting_helpers.py +0 -0
  249. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/smdpl_hmf_subs.py +0 -0
  250. {diffsky-0.2.2/diffsky/mass_functions/kernels → diffsky-0.2.4/diffsky/mass_functions/hmf_calibrations/tests}/__init__.py +0 -0
  251. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/test_imports.py +0 -0
  252. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/test_lj_hmf.py +0 -0
  253. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/test_smdpl_hmf.py +0 -0
  254. {diffsky-0.2.2 → 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.2 → 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.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_logmp_bins.txt +0 -0
  257. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/disc_lcdm_hmf_redshift_bins.txt +0 -0
  258. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_cuml_density_all.txt +0 -0
  259. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_cuml_density_cens.txt +0 -0
  260. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_logmp_bins.txt +0 -0
  261. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_calibrations/tests/testing_data/lj_hmf_redshift_bins.txt +0 -0
  262. {diffsky-0.2.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → diffsky-0.2.4}/diffsky/mass_functions/hmf_model.py +0 -0
  273. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/io_utils/README.txt +0 -0
  274. {diffsky-0.2.2/diffsky/mass_functions/kernels/tests → diffsky-0.2.4/diffsky/mass_functions/io_utils}/__init__.py +0 -0
  275. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/io_utils/loader.py +0 -0
  276. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/io_utils/smdpl_helpers.py +0 -0
  277. {diffsky-0.2.2/diffsky/mass_functions/smhm_kernels → diffsky-0.2.4/diffsky/mass_functions/kernels}/__init__.py +0 -0
  278. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/kernels/ccshmf_kernels.py +0 -0
  279. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/kernels/hmf_kernels.py +0 -0
  280. {diffsky-0.2.2/diffsky/mass_functions/smhm_kernels → diffsky-0.2.4/diffsky/mass_functions/kernels}/tests/__init__.py +0 -0
  281. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/kernels/tests/test_ccshmf_kernels.py +0 -0
  282. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/kernels/tests/test_hmf_kernels.py +0 -0
  283. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/mc_diffmah_tpeak.py +0 -0
  284. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/mc_hosts.py +0 -0
  285. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/mc_subs.py +0 -0
  286. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/mc_tinfall.py +0 -0
  287. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/measure_ccshmf.py +0 -0
  288. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/measure_hmf.py +0 -0
  289. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/fit_hmf_disc_lcdm.py +0 -0
  290. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/measure_hmf_target_data_hacc.py +0 -0
  291. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/scripts/discovery_lcdm_calibration/run_hmf_tabulation_disc_lcdm.sh +0 -0
  292. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/scripts/last_journey_calibration/fit_hmf_lj.py +0 -0
  293. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/scripts/last_journey_calibration/measure_hmf_target_data_hacc.py +0 -0
  294. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/scripts/smdpl_calibration/fit_smdpl_hmf_script.py +0 -0
  295. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/scripts/smdpl_calibration/measure_smdpl_hmf_script.py +0 -0
  296. {diffsky-0.2.2/diffsky/mass_functions/tests → diffsky-0.2.4/diffsky/mass_functions/smhm_kernels}/__init__.py +0 -0
  297. {diffsky-0.2.2/diffsky/mass_functions/tests/testing_data → diffsky-0.2.4/diffsky/mass_functions/smhm_kernels/tests}/__init__.py +0 -0
  298. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/smhm_kernels/tests/test_threeroll_smhm.py +0 -0
  299. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/smhm_kernels/threeroll_kernels.py +0 -0
  300. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/smhm_kernels/threeroll_smhm.py +0 -0
  301. {diffsky-0.2.2/diffsky/mass_functions/upweighting → diffsky-0.2.4/diffsky/mass_functions/tests}/__init__.py +0 -0
  302. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_ccshmf.py +0 -0
  303. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_hmf_model.py +0 -0
  304. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_mc_diffmah_tpeak.py +0 -0
  305. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_mc_hosts.py +0 -0
  306. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_mc_subs.py +0 -0
  307. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_mc_tinfall.py +0 -0
  308. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/tests/test_measure_hmf.py +0 -0
  309. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/tests/testing_data/README.txt +0 -0
  310. {diffsky-0.2.2/diffsky/mass_functions/upweighting/tests → diffsky-0.2.4/diffsky/mass_functions/tests/testing_data}/__init__.py +0 -0
  311. {diffsky-0.2.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2 → 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.2/diffsky/merging → diffsky-0.2.4/diffsky/mass_functions/upweighting}/__init__.py +0 -0
  320. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/upweighting/namedtuple_cat_utils.py +0 -0
  321. {diffsky-0.2.2/diffsky/merging/diagnostics → diffsky-0.2.4/diffsky/mass_functions/upweighting/tests}/__init__.py +0 -0
  322. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/upweighting/tests/test_mc_gen_upweighting.py +0 -0
  323. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/upweighting/upweighting.py +0 -0
  324. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mass_functions/utils.py +0 -0
  325. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/mc_diffsky.py +0 -0
  326. {diffsky-0.2.2/diffsky/merging/diagnostics/tests → diffsky-0.2.4/diffsky/merging}/__init__.py +0 -0
  327. {diffsky-0.2.2/diffsky/merging/tests → diffsky-0.2.4/diffsky/merging/diagnostics}/__init__.py +0 -0
  328. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/merging/diagnostics/plot_pmerge_vs_time.py +0 -0
  329. {diffsky-0.2.2/diffsky/param_utils → diffsky-0.2.4/diffsky/merging/diagnostics/tests}/__init__.py +0 -0
  330. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/merging/diagnostics/tests/test_plot_pmerge_vs_time.py +0 -0
  331. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/merging/fitmerge_multi_redshift.py +0 -0
  332. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/merging/merging_model.py +0 -0
  333. {diffsky-0.2.2/diffsky/param_utils → diffsky-0.2.4/diffsky/merging}/tests/__init__.py +0 -0
  334. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/merging/tests/test_fitmerge_multi_redshift.py +0 -0
  335. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/merging/tests/test_merging_model.py +0 -0
  336. {diffsky-0.2.2/diffsky/ssp_err_model → diffsky-0.2.4/diffsky/param_utils}/__init__.py +0 -0
  337. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/param_utils/diffsky_param_wrapper.py +0 -0
  338. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/param_utils/spspop_param_utils.py +0 -0
  339. {diffsky-0.2.2/diffsky/ssp_err_model → diffsky-0.2.4/diffsky/param_utils}/tests/__init__.py +0 -0
  340. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/param_utils/tests/test_diffsky_param_wrapper.py +0 -0
  341. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/param_utils/tests/test_spspop_param_utils.py +0 -0
  342. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/phot_utils.py +0 -0
  343. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/sbl18_photgrad.py +0 -0
  344. {diffsky-0.2.2/diffsky/sumstats → diffsky-0.2.4/diffsky/ssp_err_model}/__init__.py +0 -0
  345. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/ssp_err_model/ssp_err_model.py +0 -0
  346. {diffsky-0.2.2/diffsky/sumstats → diffsky-0.2.4/diffsky/ssp_err_model}/tests/__init__.py +0 -0
  347. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/ssp_err_model/tests/test_ssp_err_model.py +0 -0
  348. {diffsky-0.2.2/diffsky/systematics → diffsky-0.2.4/diffsky/sumstats}/__init__.py +0 -0
  349. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/sumstats/diffndhist.py +0 -0
  350. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/sumstats/smhm.py +0 -0
  351. {diffsky-0.2.2/diffsky/systematics → diffsky-0.2.4/diffsky/sumstats}/tests/__init__.py +0 -0
  352. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/sumstats/tests/test_smhm.py +0 -0
  353. {diffsky-0.2.2/diffsky/tests → diffsky-0.2.4/diffsky/systematics}/__init__.py +0 -0
  354. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/systematics/ssp_errors.py +0 -0
  355. {diffsky-0.2.2/diffsky/tests/testing_data → diffsky-0.2.4/diffsky/systematics/tests}/__init__.py +0 -0
  356. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/systematics/tests/test_ssp_errors.py +0 -0
  357. {diffsky-0.2.2/diffsky/utils → diffsky-0.2.4/diffsky}/tests/__init__.py +0 -0
  358. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/tests/test_dependencies.py +0 -0
  359. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/tests/test_diffndhist.py +0 -0
  360. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/tests/test_diffsky_setup.py +0 -0
  361. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/tests/test_mc_diffsky.py +0 -0
  362. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/tests/test_phot_utils.py +0 -0
  363. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/tests/test_sbl18_photgrad.py +0 -0
  364. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/tests/test_tw_photgrad.py +0 -0
  365. {diffsky-0.2.2/scripts → diffsky-0.2.4/diffsky/tests/testing_data}/__init__.py +0 -0
  366. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/tw_photgrad.py +0 -0
  367. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/__init__.py +0 -0
  368. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/crossmatch_utils.py +0 -0
  369. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/sfh_utils.py +0 -0
  370. {diffsky-0.2.2/scripts → diffsky-0.2.4/diffsky/utils}/tests/__init__.py +0 -0
  371. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/tests/test_crossmatch_utils.py +0 -0
  372. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/tests/test_sfh_utils.py +0 -0
  373. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/tests/test_tw_utils.py +0 -0
  374. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/tests/test_utility_funcs.py +0 -0
  375. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/tw_utils.py +0 -0
  376. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky/utils/utility_funcs.py +0 -0
  377. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky.egg-info/dependency_links.txt +0 -0
  378. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky.egg-info/requires.txt +0 -0
  379. {diffsky-0.2.2 → diffsky-0.2.4}/diffsky.egg-info/top_level.txt +0 -0
  380. {diffsky-0.2.2 → diffsky-0.2.4}/docs/Makefile +0 -0
  381. {diffsky-0.2.2 → diffsky-0.2.4}/docs/make.bat +0 -0
  382. {diffsky-0.2.2 → diffsky-0.2.4}/docs/source/citation.rst +0 -0
  383. {diffsky-0.2.2 → diffsky-0.2.4}/docs/source/conf.py +0 -0
  384. {diffsky-0.2.2 → diffsky-0.2.4}/docs/source/demo_diffmahpop_t_peak.ipynb +0 -0
  385. {diffsky-0.2.2 → diffsky-0.2.4}/docs/source/demo_mc_lightcones.ipynb +0 -0
  386. {diffsky-0.2.2 → diffsky-0.2.4}/docs/source/demos.rst +0 -0
  387. {diffsky-0.2.2 → diffsky-0.2.4}/docs/source/index.rst +0 -0
  388. {diffsky-0.2.2 → diffsky-0.2.4}/docs/source/installation.rst +0 -0
  389. {diffsky-0.2.2 → diffsky-0.2.4}/docs/source/rtd_environment.yaml +0 -0
  390. {diffsky-0.2.2 → diffsky-0.2.4}/pyproject.toml +0 -0
  391. {diffsky-0.2.2 → diffsky-0.2.4}/requirements.txt +0 -0
  392. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/LJ_LC_JOBS/generate_sfh_mock_jobs.py +0 -0
  393. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/inspect_lc_mock.py +0 -0
  394. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/inspect_lightcone_mock.py +0 -0
  395. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/make_sfh_lj_mock.py +0 -0
  396. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/tests/test_inspect_lightcone_mock.py +0 -0
  397. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/tests/test_lc_cf_crossmatch_script.py +0 -0
  398. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/tests/test_make_sfh_lj_mock.py +0 -0
  399. {diffsky-0.2.2 → diffsky-0.2.4}/scripts/tests/test_tabulate_coreforest_overlap.py +0 -0
  400. {diffsky-0.2.2 → diffsky-0.2.4}/setup.cfg +0 -0
  401. {diffsky-0.2.2 → 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,4 +1,14 @@
1
- 0.2.2 (unreleased)
1
+ 0.2.4 (2025-09-02)
2
+ -------------------
3
+ - Release associated with diffskyopt+kdescent calibration by Alan Pearl
4
+
5
+
6
+ 0.2.3 (2025-07-30)
7
+ -------------------
8
+ - Fix bug in lightcone data loader (https://github.com/ArgonneCPAC/diffsky/pull/195)
9
+
10
+
11
+ 0.2.2 (2025-07-17)
2
12
  -------------------
3
13
  - Change little h convention of Monte Carlo halo generators (https://github.com/ArgonneCPAC/diffsky/pull/184)
4
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsky
3
- Version: 0.2.2
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'
@@ -80,8 +80,9 @@ def write_lc_sfh_mock_to_disk(fnout, lc_data, diffsky_data):
80
80
  hdf_out["data/logssfr_obs"] = diffsky_data["logssfr_obs"]
81
81
 
82
82
  hdf_out["data/redshift_true"] = lc_data["redshift_true"]
83
- hdf_out["data/ra"] = lc_data["phi"]
84
- hdf_out["data/dec"] = np.pi / 2.0 - lc_data["theta"]
83
+ ra, dec = hlu._get_lon_lat_from_theta_phi(lc_data["theta"], lc_data["phi"])
84
+ hdf_out["data/ra"] = ra
85
+ hdf_out["data/dec"] = dec
85
86
  hdf_out["data/snapnum"] = lc_data["snapnum"]
86
87
 
87
88
  for key in LC_DATA_KEYS_OUT:
@@ -132,6 +132,12 @@ def get_ra_dec(x, y, z):
132
132
  return ra, dec
133
133
 
134
134
 
135
+ @jjit
136
+ def get_ra_dec_from_theta_phi(theta, phi):
137
+ """Change sky coordinates from {theta, phi} (radians) to {ra, dec} (degrees)"""
138
+ return _get_lon_lat_from_theta_phi(theta, phi)
139
+
140
+
135
141
  @jjit
136
142
  def _get_lon_lat_from_theta_phi(theta, phi):
137
143
  lon = jnp.degrees(phi)
@@ -166,6 +172,27 @@ def get_redshift_from_xyz(x_mpch, y_mpch, z_mpch, cosmo_params):
166
172
 
167
173
 
168
174
  def read_lc_ra_dec_patch_decomposition(fn):
175
+ """Read and parse 'lc_cores-decomposition.txt'
176
+
177
+ Parameters
178
+ ----------
179
+ fname : string
180
+
181
+ Returns
182
+ -------
183
+ patch_decomposition : array shape (n_patches, 5)
184
+ Each row stores (patchnum, theta_low, theta_high, phi_low, phi_high)
185
+
186
+ The relationship between {theta, phi} and {ra, dec} is given by the
187
+ lightcone_utils.get_ra_dec_from_theta_phi function
188
+
189
+ sky_frac : array shape (n_patches, )
190
+ Size of the sky patch as a fraction of 4π steradians
191
+
192
+ solid_angles : array shape (n_patches, )
193
+ Size of the sky patch in deg^2
194
+
195
+ """
169
196
  collector = []
170
197
  with open(fn, "r") as f:
171
198
  next(f)
@@ -275,16 +302,23 @@ def get_diffsky_quantities_for_lc_patch(
275
302
  ):
276
303
  cf_first_row = cf_matrices["absolute_row_idx"][0]
277
304
  cf_last_row = cf_matrices["absolute_row_idx"][-1]
278
- msk_olap = lc_patch_data["file_idx"] == cf_file_idx
279
- msk_olap &= lc_patch_data["row_idx"] >= cf_first_row
280
- 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
281
308
  mpeak_history = np.maximum.accumulate(cf_matrices[DIFFMAH_MASS_COLNAME], axis=1)
282
309
  mp_obs = mpeak_history[:, timestep_idx]
283
310
  mp0 = mpeak_history[:, -1]
284
311
 
285
312
  n_olap = msk_olap.sum()
286
313
  if n_olap > 0:
287
- 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
+
288
322
  olap_chunk_ult_host_idx = cf_matrices["top_host_row"][:, timestep_idx][
289
323
  olap_chunk_idx
290
324
  ]
@@ -29,7 +29,7 @@ def load_diffsky_lightcone(drn, sim_name, z_min, z_max, patch_list):
29
29
 
30
30
  data_collector = []
31
31
  for fn in fn_collector:
32
- lc_diffsky_data = load_flat_hdf5(fn)
32
+ lc_diffsky_data = load_flat_hdf5(fn, dataset="data")
33
33
  data_collector.append(lc_diffsky_data)
34
34
 
35
35
  diffsky_data = dict()
@@ -31,11 +31,16 @@ def load_flat_hdf5(fn, istart=0, iend=None, keys=None, dataset=None):
31
31
  data = dict()
32
32
  with h5py.File(fn, "r") as hdf:
33
33
 
34
- if keys is None:
35
- if dataset is None:
34
+ if dataset is None:
35
+ if keys is None:
36
36
  keys_in = list(hdf.keys())
37
37
  else:
38
+ keys_in = keys
39
+ else:
40
+ if keys is None:
38
41
  keys_in = [dataset + "/" + key for key in list(hdf[dataset].keys())]
42
+ else:
43
+ keys_in = [dataset + "/" + key for key in keys]
39
44
 
40
45
  for key_in in keys_in:
41
46
  if dataset is None:
@@ -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