diffsky 0.2.0__tar.gz → 0.2.1__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 (356) hide show
  1. {diffsky-0.2.0 → diffsky-0.2.1}/.github/workflows/monthly-warning-test.yaml +1 -1
  2. {diffsky-0.2.0 → diffsky-0.2.1}/.github/workflows/test_latest_releases.yaml +0 -3
  3. {diffsky-0.2.0 → diffsky-0.2.1}/.github/workflows/test_main_branch.yaml +1 -1
  4. {diffsky-0.2.0 → diffsky-0.2.1}/.github/workflows/tests_cron.yaml +1 -1
  5. {diffsky-0.2.0 → diffsky-0.2.1}/.gitignore +3 -0
  6. diffsky-0.2.1/CHANGES.rst +26 -0
  7. {diffsky-0.2.0 → diffsky-0.2.1}/PKG-INFO +5 -4
  8. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/__init__.py +2 -2
  9. diffsky-0.2.1/diffsky/_version.py +1 -0
  10. diffsky-0.2.1/diffsky/burstpop/diffqburstpop_mono_noise.py +136 -0
  11. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/fburstpop_mono.py +3 -4
  12. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/freqburst_mono.py +6 -7
  13. diffsky-0.2.1/diffsky/burstpop/tests/test_diffqburstpop_mono_noise.py +137 -0
  14. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/test_freqburst_mono.py +2 -3
  15. diffsky-0.2.1/diffsky/data_loaders/__init__.py +5 -0
  16. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/__init__.py +7 -0
  17. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/data_validation/tests/test_validate_lc_cores.py +89 -0
  18. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/data_validation/validate_lc_cores.py +104 -0
  19. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/defaults.py +14 -0
  20. {diffsky-0.2.0/diffsky/data_loaders → diffsky-0.2.1/diffsky/data_loaders/hacc_utils}/hacc_core_utils.py +25 -40
  21. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/lc_mock_production.py +162 -0
  22. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/lightcone_utils.py +390 -0
  23. {diffsky-0.2.0/diffsky/data_loaders → diffsky-0.2.1/diffsky/data_loaders/hacc_utils}/load_hacc_cores.py +110 -80
  24. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/load_lc_cf.py +142 -0
  25. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/load_lc_cf_synthetic.py +72 -0
  26. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/load_lc_mock.py +39 -0
  27. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/metadata_sfh_mock.py +125 -0
  28. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/tests/test_defaults.py +9 -0
  29. {diffsky-0.2.0/diffsky/data_loaders → diffsky-0.2.1/diffsky/data_loaders/hacc_utils}/tests/test_hacc_core_utils.py +21 -2
  30. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/tests/test_lc_mock_production.py +35 -0
  31. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/tests/test_lightcone_utils.py +50 -0
  32. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/tests/test_load_hacc_cores.py +131 -0
  33. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/tests/test_load_lc_cf.py +37 -0
  34. diffsky-0.2.1/diffsky/data_loaders/hacc_utils/tests/testing_data/lc_cores-decomposition.txt +1538 -0
  35. diffsky-0.2.1/diffsky/data_loaders/io_utils.py +21 -0
  36. diffsky-0.2.1/diffsky/data_loaders/mpi_utils.py +46 -0
  37. diffsky-0.2.1/diffsky/data_loaders/tests/test_imports.py +7 -0
  38. diffsky-0.2.1/diffsky/data_loaders/um_binary_loader.py +33 -0
  39. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/diagnostics/plot_delta_mag_burstiness.py +15 -85
  40. diffsky-0.2.1/diffsky/diagnostics/utils.py +87 -0
  41. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/sbl18_dust_kernels.py +3 -3
  42. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_tw_dustpop_mono.py +4 -4
  43. diffsky-0.2.1/diffsky/dustpop/tests/test_tw_dustpop_mono_noise.py +42 -0
  44. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tw_dust_kernels.py +3 -3
  45. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tw_dustpop_mono.py +2 -2
  46. diffsky-0.2.1/diffsky/dustpop/tw_dustpop_mono_noise.py +75 -0
  47. diffsky-0.2.1/diffsky/experimental/lc_phot_kern.py +407 -0
  48. diffsky-0.2.1/diffsky/experimental/mc_diffsky_phot.py +545 -0
  49. diffsky-0.2.1/diffsky/experimental/mc_lightcone_halos.py +1032 -0
  50. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/photometry_interpolation.py +7 -2
  51. diffsky-0.2.1/diffsky/experimental/scatter.py +80 -0
  52. diffsky-0.2.1/diffsky/experimental/ssp_err_pop.py +147 -0
  53. diffsky-0.2.1/diffsky/experimental/tests/test_lc_phot_kern.py +158 -0
  54. diffsky-0.2.1/diffsky/experimental/tests/test_mc_diffsky_phot.py +61 -0
  55. diffsky-0.2.1/diffsky/experimental/tests/test_mc_lightcone_halos.py +340 -0
  56. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/tests/test_photometry_interpolation.py +1 -0
  57. diffsky-0.2.1/diffsky/experimental/tests/test_scatter.py +94 -0
  58. diffsky-0.2.1/diffsky/experimental/tests/test_ssp_err_pop.py +96 -0
  59. diffsky-0.2.1/diffsky/fake_sats/ellipsoidal_nfw_phase_space.py +39 -0
  60. diffsky-0.2.1/diffsky/fake_sats/ellipsoidal_velocities.py +99 -0
  61. diffsky-0.2.1/diffsky/fake_sats/halo_boundary_functions.py +65 -0
  62. diffsky-0.2.1/diffsky/fake_sats/nfw_config_space.py +174 -0
  63. diffsky-0.2.1/diffsky/fake_sats/rotations3d.py +94 -0
  64. diffsky-0.2.1/diffsky/fake_sats/tests/test_ellipsoidal_nfw_phase_space.py +29 -0
  65. diffsky-0.2.1/diffsky/fake_sats/tests/test_halo_boundary_functions.py +49 -0
  66. diffsky-0.2.1/diffsky/fake_sats/tests/test_mc_ellipticial_velocities.py +19 -0
  67. diffsky-0.2.1/diffsky/fake_sats/tests/test_nfw_config_space.py +30 -0
  68. diffsky-0.2.1/diffsky/fake_sats/tests/test_rotations3d.py +28 -0
  69. diffsky-0.2.1/diffsky/fake_sats/tests/testing_data/halo_mass_ht_test.txt +250 -0
  70. diffsky-0.2.1/diffsky/fake_sats/tests/testing_data/halo_radius_200c_ht_test.txt +250 -0
  71. diffsky-0.2.1/diffsky/fake_sats/tests/testing_data/redshift_ht_test.txt +250 -0
  72. diffsky-0.2.1/diffsky/fake_sats/vector_utilities.py +243 -0
  73. diffsky-0.2.1/diffsky/mass_functions/fitting_utils/calibrations/hacc_core_shmf_params.py +41 -0
  74. diffsky-0.2.1/diffsky/mass_functions/fitting_utils/calibrations/tests/test_hacc_core_shmf_params.py +11 -0
  75. diffsky-0.2.1/diffsky/mass_functions/fitting_utils/diagnostics/hmf_fit_diagnostics.py +42 -0
  76. diffsky-0.2.1/diffsky/mass_functions/fitting_utils/diagnostics/tests/test_hmf_fit_diagnostics.py +26 -0
  77. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/fit_hmf_model.py +2 -2
  78. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/tests/test_fit_hmf_model.py +3 -5
  79. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/__init__.py +4 -0
  80. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/smdpl_hmf.py +41 -0
  81. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/smdpl_hmf_fitting_helpers.py +46 -0
  82. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/smdpl_hmf_subs.py +42 -0
  83. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/test_smdpl_hmf.py +49 -0
  84. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.219000.subhalos.lgcuml_density.npy +0 -0
  85. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.219000.subhalos.logmp_bins.npy +0 -0
  86. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.hosthalos.lgcuml_density.npy +0 -0
  87. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.hosthalos.logmp_bins.npy +0 -0
  88. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.subhalos.lgcuml_density.npy +0 -0
  89. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_0.460000.subhalos.logmp_bins.npy +0 -0
  90. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.hosthalos.lgcuml_density.npy +0 -0
  91. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.hosthalos.logmp_bins.npy +0 -0
  92. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.subhalos.lgcuml_density.npy +0 -0
  93. diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations/tests/testing_data/sfr_catalog_1.000000.subhalos.logmp_bins.npy +0 -0
  94. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/hmf_model.py +4 -33
  95. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/mc_diffmah_tpeak.py +12 -4
  96. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/mc_hosts.py +19 -8
  97. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/mc_subs.py +9 -10
  98. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/test_hmf_model.py +9 -15
  99. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/test_mc_diffmah_tpeak.py +2 -3
  100. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/test_mc_hosts.py +8 -2
  101. diffsky-0.2.1/diffsky/mass_functions/tests/testing_data/__init__.py +0 -0
  102. diffsky-0.2.1/diffsky/mass_functions/upweighting/__init__.py +0 -0
  103. diffsky-0.2.1/diffsky/mass_functions/upweighting/tests/__init__.py +0 -0
  104. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mc_diffsky.py +14 -5
  105. diffsky-0.2.1/diffsky/merging/__init__.py +0 -0
  106. diffsky-0.2.1/diffsky/merging/diagnostics/__init__.py +0 -0
  107. diffsky-0.2.1/diffsky/merging/diagnostics/plot_pmerge_vs_time.py +66 -0
  108. diffsky-0.2.1/diffsky/merging/diagnostics/tests/__init__.py +0 -0
  109. diffsky-0.2.1/diffsky/merging/diagnostics/tests/test_plot_pmerge_vs_time.py +14 -0
  110. diffsky-0.2.1/diffsky/merging/fitmerge_multi_redshift.py +486 -0
  111. diffsky-0.2.1/diffsky/merging/merging_model.py +590 -0
  112. diffsky-0.2.1/diffsky/merging/tests/__init__.py +0 -0
  113. diffsky-0.2.1/diffsky/merging/tests/test_fitmerge_multi_redshift.py +247 -0
  114. diffsky-0.2.1/diffsky/merging/tests/test_merging_model.py +293 -0
  115. diffsky-0.2.1/diffsky/param_utils/__init__.py +0 -0
  116. diffsky-0.2.1/diffsky/param_utils/diffsky_param_wrapper.py +309 -0
  117. diffsky-0.2.1/diffsky/param_utils/spspop_param_utils.py +132 -0
  118. diffsky-0.2.1/diffsky/param_utils/tests/__init__.py +0 -0
  119. diffsky-0.2.1/diffsky/param_utils/tests/test_diffsky_param_wrapper.py +94 -0
  120. diffsky-0.2.1/diffsky/param_utils/tests/test_spspop_param_utils.py +41 -0
  121. diffsky-0.2.1/diffsky/phot_utils.py +115 -0
  122. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/sbl18_photgrad.py +3 -3
  123. diffsky-0.2.1/diffsky/ssp_err_model/__init__.py +0 -0
  124. diffsky-0.2.1/diffsky/ssp_err_model/ssp_err_model.py +580 -0
  125. diffsky-0.2.1/diffsky/ssp_err_model/tests/__init__.py +0 -0
  126. diffsky-0.2.1/diffsky/ssp_err_model/tests/test_ssp_err_model.py +211 -0
  127. diffsky-0.2.1/diffsky/sumstats/__init__.py +0 -0
  128. diffsky-0.2.1/diffsky/sumstats/tests/__init__.py +0 -0
  129. diffsky-0.2.1/diffsky/systematics/__init__.py +0 -0
  130. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/systematics/ssp_errors.py +12 -17
  131. diffsky-0.2.1/diffsky/systematics/tests/__init__.py +0 -0
  132. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/systematics/tests/test_ssp_errors.py +4 -4
  133. diffsky-0.2.1/diffsky/tests/__init__.py +0 -0
  134. diffsky-0.2.1/diffsky/tests/test_phot_utils.py +54 -0
  135. diffsky-0.2.1/diffsky/tests/testing_data/__init__.py +0 -0
  136. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/tw_photgrad.py +3 -3
  137. diffsky-0.2.1/diffsky/utils/__init__.py +7 -0
  138. diffsky-0.2.1/diffsky/utils/crossmatch_utils.py +214 -0
  139. diffsky-0.2.1/diffsky/utils/sfh_utils.py +47 -0
  140. diffsky-0.2.1/diffsky/utils/tests/__init__.py +0 -0
  141. diffsky-0.2.1/diffsky/utils/tests/test_crossmatch_utils.py +132 -0
  142. diffsky-0.2.1/diffsky/utils/tests/test_sfh_utils.py +27 -0
  143. diffsky-0.2.1/diffsky/utils/tests/test_tw_utils.py +29 -0
  144. diffsky-0.2.0/diffsky/tests/test_utils.py → diffsky-0.2.1/diffsky/utils/tests/test_utility_funcs.py +7 -4
  145. {diffsky-0.2.0/diffsky → diffsky-0.2.1/diffsky/utils}/tw_utils.py +22 -9
  146. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky.egg-info/PKG-INFO +5 -4
  147. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky.egg-info/SOURCES.txt +126 -14
  148. diffsky-0.2.1/diffsky.egg-info/requires.txt +7 -0
  149. {diffsky-0.2.0 → diffsky-0.2.1}/docs/source/rtd_environment.yaml +4 -3
  150. {diffsky-0.2.0 → diffsky-0.2.1}/pyproject.toml +2 -2
  151. diffsky-0.2.1/requirements.txt +7 -0
  152. diffsky-0.2.1/scripts/JOBS/run_sfh_mock_serial.sh +28 -0
  153. diffsky-0.2.1/scripts/__init__.py +0 -0
  154. diffsky-0.2.1/scripts/inspect_lightcone_mock.py +43 -0
  155. diffsky-0.2.1/scripts/lc_cf_crossmatch_script.py +233 -0
  156. diffsky-0.2.1/scripts/make_sfh_lc_mock_lj_serial.py +180 -0
  157. diffsky-0.2.1/scripts/make_sfh_lightcone_last_journey.py +159 -0
  158. {diffsky-0.2.0 → diffsky-0.2.1}/scripts/make_sfh_lj_mock.py +14 -7
  159. diffsky-0.2.1/scripts/mass_functions/fit_smdpl_hmf_script.py +52 -0
  160. diffsky-0.2.1/scripts/mass_functions/measure_smdpl_hmf_script.py +65 -0
  161. diffsky-0.2.1/scripts/tabulate_coreforest_overlap.py +80 -0
  162. diffsky-0.2.1/scripts/tests/__init__.py +0 -0
  163. diffsky-0.2.1/scripts/tests/test_inspect_lightcone_mock.py +5 -0
  164. diffsky-0.2.1/scripts/tests/test_lc_cf_crossmatch_script.py +5 -0
  165. diffsky-0.2.1/scripts/tests/test_make_sfh_lj_mock.py +5 -0
  166. diffsky-0.2.1/scripts/tests/test_tabulate_coreforest_overlap.py +5 -0
  167. diffsky-0.2.0/CHANGES.rst +0 -18
  168. diffsky-0.2.0/diffsky/_version.py +0 -1
  169. diffsky-0.2.0/diffsky/data_loaders/load_discovery_cores.py +0 -395
  170. diffsky-0.2.0/diffsky/data_loaders/tests/test_load_discovery_cores.py +0 -23
  171. diffsky-0.2.0/diffsky/data_loaders/tests/test_load_hacc_cores.py +0 -49
  172. diffsky-0.2.0/diffsky/dustpop/tests/test_tw_dustpop_mono_noise.py +0 -117
  173. diffsky-0.2.0/diffsky/dustpop/tw_dustpop_mono_noise.py +0 -133
  174. diffsky-0.2.0/diffsky/mass_functions/tests/testing_data/smdpl_hmf_cuml_redshift_0.05.txt +0 -48
  175. diffsky-0.2.0/diffsky/mass_functions/tests/testing_data/smdpl_hmf_cuml_redshift_1.00.txt +0 -47
  176. diffsky-0.2.0/diffsky/mass_functions/tests/testing_data/smdpl_hmf_cuml_redshift_2.14.txt +0 -44
  177. diffsky-0.2.0/diffsky/mass_functions/tests/testing_data/smdpl_hmf_cuml_redshift_3.95.txt +0 -45
  178. diffsky-0.2.0/diffsky.egg-info/requires.txt +0 -6
  179. diffsky-0.2.0/requirements.txt +0 -6
  180. {diffsky-0.2.0 → diffsky-0.2.1}/.coveragerc +0 -0
  181. {diffsky-0.2.0 → diffsky-0.2.1}/.git_archival.txt +0 -0
  182. {diffsky-0.2.0 → diffsky-0.2.1}/.gitattributes +0 -0
  183. {diffsky-0.2.0 → diffsky-0.2.1}/.github/dependabot.yml +0 -0
  184. {diffsky-0.2.0 → diffsky-0.2.1}/.github/workflows/linting.yaml +0 -0
  185. {diffsky-0.2.0 → diffsky-0.2.1}/.readthedocs.yml +0 -0
  186. {diffsky-0.2.0 → diffsky-0.2.1}/LICENSE.rst +0 -0
  187. {diffsky-0.2.0 → diffsky-0.2.1}/README.rst +0 -0
  188. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/__init__.py +0 -0
  189. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diagnostics/__init__.py +0 -0
  190. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diagnostics/plot_fburstpop.py +0 -0
  191. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diagnostics/plot_tburstpop.py +0 -0
  192. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diagnostics/tests/__init__.py +0 -0
  193. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diagnostics/tests/test_plot_fburstpop.py +0 -0
  194. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diagnostics/tests/test_plot_tburstpop.py +0 -0
  195. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diffburstpop.py +0 -0
  196. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diffqburstpop.py +0 -0
  197. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/diffqburstpop_mono.py +0 -0
  198. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/fburstpop.py +0 -0
  199. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/freqburst.py +0 -0
  200. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tburstpop.py +0 -0
  201. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/__init__.py +0 -0
  202. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/test_diffburstpop.py +0 -0
  203. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/test_diffqburstpop.py +0 -0
  204. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/test_diffqburstpop_mono.py +0 -0
  205. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/test_fburstpop.py +0 -0
  206. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/test_fburstpop_mono.py +0 -0
  207. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/test_freqburst.py +0 -0
  208. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/burstpop/tests/test_tburstpop.py +0 -0
  209. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/cosmos_utils/__init__.py +0 -0
  210. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/cosmos_utils/cosmos_mstar_model.py +0 -0
  211. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/cosmos_utils/tests/__init__.py +0 -0
  212. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/cosmos_utils/tests/test_cosmos_mstar_model.py +0 -0
  213. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/data_loaders/cosmos20_loader.py +0 -0
  214. {diffsky-0.2.0/diffsky/data_loaders → diffsky-0.2.1/diffsky/data_loaders/hacc_utils/data_validation}/__init__.py +0 -0
  215. {diffsky-0.2.0/diffsky/data_loaders → diffsky-0.2.1/diffsky/data_loaders/hacc_utils/data_validation}/tests/__init__.py +0 -0
  216. {diffsky-0.2.0/diffsky/data_loaders/tests/testing_data → diffsky-0.2.1/diffsky/data_loaders/hacc_utils/tests}/__init__.py +0 -0
  217. {diffsky-0.2.0/diffsky/diagnostics → diffsky-0.2.1/diffsky/data_loaders/tests}/__init__.py +0 -0
  218. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/data_loaders/tests/test_cosmos_loader.py +0 -0
  219. {diffsky-0.2.0/diffsky/diagnostics/tests → diffsky-0.2.1/diffsky/data_loaders/tests/testing_data}/__init__.py +0 -0
  220. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/data_loaders/tests/testing_data/cosmos20_shasum.dat +0 -0
  221. {diffsky-0.2.0/diffsky/dustpop → diffsky-0.2.1/diffsky}/diagnostics/__init__.py +0 -0
  222. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/diagnostics/plot_diffstar_fq.py +0 -0
  223. {diffsky-0.2.0/diffsky/dustpop → diffsky-0.2.1/diffsky}/diagnostics/tests/__init__.py +0 -0
  224. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/diagnostics/tests/test_plot_delta_mag_burstiness.py +0 -0
  225. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/diagnostics/tests/test_plot_diffstar_fq.py +0 -0
  226. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/diffndhist.py +0 -0
  227. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/__init__.py +0 -0
  228. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/avpop.py +0 -0
  229. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/avpop_flex.py +0 -0
  230. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/avpop_mono.py +0 -0
  231. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/deltapop.py +0 -0
  232. {diffsky-0.2.0/diffsky/dustpop/tests → diffsky-0.2.1/diffsky/dustpop/diagnostics}/__init__.py +0 -0
  233. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/diagnostics/plot_avpop_flex.py +0 -0
  234. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/diagnostics/plot_funopop_simple.py +0 -0
  235. {diffsky-0.2.0/diffsky/experimental → diffsky-0.2.1/diffsky/dustpop/diagnostics/tests}/__init__.py +0 -0
  236. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/diagnostics/tests/test_plot_avpop_flex.py +0 -0
  237. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/diagnostics/tests/test_plot_funopop_simple.py +0 -0
  238. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/funopop.py +0 -0
  239. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/funopop_simple.py +0 -0
  240. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/funopop_ssfr.py +0 -0
  241. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/sbl18_dust.py +0 -0
  242. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/sbl18_dustpop.py +0 -0
  243. {diffsky-0.2.0/diffsky/experimental/dspspop → diffsky-0.2.1/diffsky/dustpop/tests}/__init__.py +0 -0
  244. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_avpop.py +0 -0
  245. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_avpop_flex.py +0 -0
  246. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_avpop_mono.py +0 -0
  247. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_deltapop.py +0 -0
  248. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_funopop_model.py +0 -0
  249. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_funopop_simple.py +0 -0
  250. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_funopop_ssfr.py +0 -0
  251. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_sbl18_dustpop.py +0 -0
  252. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_tw_dust_kernels.py +0 -0
  253. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_tw_dustpop.py +0 -0
  254. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tests/test_tw_dustpop_new.py +0 -0
  255. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tw_dust.py +0 -0
  256. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tw_dustpop.py +0 -0
  257. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/dustpop/tw_dustpop_new.py +0 -0
  258. {diffsky-0.2.0/diffsky/experimental/dspspop/tests → diffsky-0.2.1/diffsky/experimental}/__init__.py +0 -0
  259. {diffsky-0.2.0/diffsky/experimental/tests → diffsky-0.2.1/diffsky/experimental/dspspop}/__init__.py +0 -0
  260. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/boris_dust.py +0 -0
  261. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/burstshapepop.py +0 -0
  262. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/dust_deltapop.py +0 -0
  263. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/dustpop.py +0 -0
  264. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/lgavpop.py +0 -0
  265. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/lgfburstpop.py +0 -0
  266. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/nagaraj22_dust.py +0 -0
  267. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/photpop.py +0 -0
  268. {diffsky-0.2.0/diffsky/mass_functions/fitting_utils → diffsky-0.2.1/diffsky/experimental/dspspop/tests}/__init__.py +0 -0
  269. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/tests/test_attavpop.py +0 -0
  270. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/tests/test_boris_dust.py +0 -0
  271. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/tests/test_burstshapepop.py +0 -0
  272. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/tests/test_dustdeltapop.py +0 -0
  273. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/tests/test_lgfburstpop.py +0 -0
  274. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/dspspop/tests/test_photpop.py +0 -0
  275. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/phot_utils.py +0 -0
  276. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/precompute_ssp_phot.py +0 -0
  277. {diffsky-0.2.0/diffsky/mass_functions/fitting_utils → diffsky-0.2.1/diffsky/experimental}/tests/__init__.py +0 -0
  278. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/experimental/tests/test_precompute_ssp_phot.py +0 -0
  279. {diffsky-0.2.0/diffsky/mass_functions/io_utils → diffsky-0.2.1/diffsky/fake_sats}/__init__.py +0 -0
  280. {diffsky-0.2.0/diffsky/mass_functions/kernels → diffsky-0.2.1/diffsky/fake_sats/tests}/__init__.py +0 -0
  281. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/__init__.py +0 -0
  282. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/ccshmf_model.py +0 -0
  283. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/README.rst +0 -0
  284. {diffsky-0.2.0/diffsky/mass_functions/kernels/tests → diffsky-0.2.1/diffsky/mass_functions/fitting_utils}/__init__.py +0 -0
  285. {diffsky-0.2.0/diffsky/mass_functions/smhm_kernels → diffsky-0.2.1/diffsky/mass_functions/fitting_utils/calibrations}/__init__.py +0 -0
  286. {diffsky-0.2.0/diffsky/mass_functions/smhm_kernels → diffsky-0.2.1/diffsky/mass_functions/fitting_utils/calibrations}/tests/__init__.py +0 -0
  287. {diffsky-0.2.0/diffsky/mass_functions/tests → diffsky-0.2.1/diffsky/mass_functions/fitting_utils/diagnostics}/__init__.py +0 -0
  288. {diffsky-0.2.0/diffsky/mass_functions/tests/testing_data → diffsky-0.2.1/diffsky/mass_functions/fitting_utils/diagnostics/tests}/__init__.py +0 -0
  289. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/fit_ccshmf.py +0 -0
  290. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/fit_ccshmf_kernels.py +0 -0
  291. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/fit_hmf_kernels.py +0 -0
  292. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/fitting_helpers.py +0 -0
  293. {diffsky-0.2.0/diffsky/mass_functions/upweighting → diffsky-0.2.1/diffsky/mass_functions/fitting_utils/tests}/__init__.py +0 -0
  294. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/tests/test_fit_ccshmf.py +0 -0
  295. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/tests/test_fit_ccshmf_kernels.py +0 -0
  296. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/fitting_utils/tests/test_fit_hmf_kernels.py +0 -0
  297. {diffsky-0.2.0/diffsky/mass_functions/upweighting → diffsky-0.2.1/diffsky/mass_functions/hmf_calibrations}/tests/__init__.py +0 -0
  298. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/io_utils/README.txt +0 -0
  299. {diffsky-0.2.0/diffsky/sumstats → diffsky-0.2.1/diffsky/mass_functions/io_utils}/__init__.py +0 -0
  300. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/io_utils/loader.py +0 -0
  301. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/io_utils/smdpl_helpers.py +0 -0
  302. {diffsky-0.2.0/diffsky/sumstats/tests → diffsky-0.2.1/diffsky/mass_functions/kernels}/__init__.py +0 -0
  303. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/kernels/ccshmf_kernels.py +0 -0
  304. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/kernels/hmf_kernels.py +0 -0
  305. {diffsky-0.2.0/diffsky/systematics → diffsky-0.2.1/diffsky/mass_functions/kernels/tests}/__init__.py +0 -0
  306. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/kernels/tests/test_ccshmf_kernels.py +0 -0
  307. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/kernels/tests/test_hmf_kernels.py +0 -0
  308. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/mc_tinfall.py +0 -0
  309. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/measure_ccshmf.py +0 -0
  310. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/measure_hmf.py +0 -0
  311. {diffsky-0.2.0/diffsky/systematics/tests → diffsky-0.2.1/diffsky/mass_functions/smhm_kernels}/__init__.py +0 -0
  312. {diffsky-0.2.0/diffsky → diffsky-0.2.1/diffsky/mass_functions/smhm_kernels}/tests/__init__.py +0 -0
  313. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/smhm_kernels/tests/test_threeroll_smhm.py +0 -0
  314. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/smhm_kernels/threeroll_kernels.py +0 -0
  315. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/smhm_kernels/threeroll_smhm.py +0 -0
  316. {diffsky-0.2.0/diffsky/tests/testing_data → diffsky-0.2.1/diffsky/mass_functions/tests}/__init__.py +0 -0
  317. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/test_ccshmf.py +0 -0
  318. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/test_mc_subs.py +0 -0
  319. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/test_mc_tinfall.py +0 -0
  320. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/test_measure_hmf.py +0 -0
  321. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/README.txt +0 -0
  322. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_12.32.txt +0 -0
  323. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_13.00.txt +0 -0
  324. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_13.55.txt +0 -0
  325. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_0.00_lgmhost_14.08.txt +0 -0
  326. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_12.31.txt +0 -0
  327. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_12.99.txt +0 -0
  328. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_13.51.txt +0 -0
  329. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/tests/testing_data/smdpl_cshmf_cuml_redshift_1.00_lgmhost_14.05.txt +0 -0
  330. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/upweighting/namedtuple_cat_utils.py +0 -0
  331. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/upweighting/tests/test_mc_gen_upweighting.py +0 -0
  332. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/upweighting/upweighting.py +0 -0
  333. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/mass_functions/utils.py +0 -0
  334. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/sumstats/diffndhist.py +0 -0
  335. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/sumstats/smhm.py +0 -0
  336. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/sumstats/tests/test_smhm.py +0 -0
  337. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/tests/test_dependencies.py +0 -0
  338. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/tests/test_diffndhist.py +0 -0
  339. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/tests/test_diffsky_setup.py +0 -0
  340. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/tests/test_mc_diffsky.py +0 -0
  341. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/tests/test_sbl18_photgrad.py +0 -0
  342. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky/tests/test_tw_photgrad.py +0 -0
  343. /diffsky-0.2.0/diffsky/utils.py → /diffsky-0.2.1/diffsky/utils/utility_funcs.py +0 -0
  344. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky.egg-info/dependency_links.txt +0 -0
  345. {diffsky-0.2.0 → diffsky-0.2.1}/diffsky.egg-info/top_level.txt +0 -0
  346. {diffsky-0.2.0 → diffsky-0.2.1}/docs/Makefile +0 -0
  347. {diffsky-0.2.0 → diffsky-0.2.1}/docs/make.bat +0 -0
  348. {diffsky-0.2.0 → diffsky-0.2.1}/docs/source/citation.rst +0 -0
  349. {diffsky-0.2.0 → diffsky-0.2.1}/docs/source/conf.py +0 -0
  350. {diffsky-0.2.0 → diffsky-0.2.1}/docs/source/demo_diffmahpop_t_peak.ipynb +0 -0
  351. {diffsky-0.2.0 → diffsky-0.2.1}/docs/source/demos.rst +0 -0
  352. {diffsky-0.2.0 → diffsky-0.2.1}/docs/source/index.rst +0 -0
  353. {diffsky-0.2.0 → diffsky-0.2.1}/docs/source/installation.rst +0 -0
  354. {diffsky-0.2.0 → diffsky-0.2.1}/scripts/make_diffsky_lj_mock.py +0 -0
  355. {diffsky-0.2.0 → diffsky-0.2.1}/setup.cfg +0 -0
  356. {diffsky-0.2.0 → diffsky-0.2.1}/setup.py +0 -0
@@ -54,7 +54,7 @@ jobs:
54
54
  pip install --no-deps git+https://github.com/ArgonneCPAC/diffmah.git
55
55
  pip install --no-deps git+https://github.com/ArgonneCPAC/diffstar.git
56
56
  pip install --no-deps git+https://github.com/ArgonneCPAC/dsps.git
57
- pip install --no-deps git+https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/ArgonneCPAC/diffstarpop.git
57
+ pip install --no-deps git+https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/ArgonneCPAC/diffstarpop.git@main
58
58
  python -m pip install --no-build-isolation --no-deps -e .
59
59
 
60
60
  - name: test that no warnings are raised
@@ -47,9 +47,6 @@ jobs:
47
47
  matplotlib \
48
48
  astropy \
49
49
  python-build
50
- pip uninstall dsps --yes
51
- pip install --no-deps git+https://github.com/ArgonneCPAC/dsps.git
52
- pip install --no-deps git+https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/ArgonneCPAC/diffstarpop.git
53
50
  python -m pip install --no-build-isolation --no-deps -e .
54
51
 
55
52
  - name: test
@@ -53,7 +53,7 @@ jobs:
53
53
  pip install --no-deps git+https://github.com/ArgonneCPAC/diffmah.git
54
54
  pip install --no-deps git+https://github.com/ArgonneCPAC/diffstar.git
55
55
  pip install --no-deps git+https://github.com/ArgonneCPAC/dsps.git
56
- pip install --no-deps git+https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/ArgonneCPAC/diffstarpop.git
56
+ pip install --no-deps git+https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/ArgonneCPAC/diffstarpop.git@main
57
57
  python -m pip install --no-build-isolation --no-deps -e .
58
58
 
59
59
  - name: test
@@ -57,7 +57,7 @@ jobs:
57
57
  pip install --no-deps git+https://github.com/ArgonneCPAC/diffmah.git
58
58
  pip install --no-deps git+https://github.com/ArgonneCPAC/diffstar.git
59
59
  pip install --no-deps git+https://github.com/ArgonneCPAC/dsps.git
60
- pip install --no-deps git+https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/ArgonneCPAC/diffstarpop.git
60
+ pip install --no-deps git+https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/ArgonneCPAC/diffstarpop.git@main
61
61
  python -m pip install --no-build-isolation --no-deps -e .
62
62
 
63
63
  - name: test
@@ -6,6 +6,9 @@ Untitled*.ipynb
6
6
  *.npy
7
7
  *.png
8
8
 
9
+ scripts/*.cfg
10
+ scripts/*.cfg~
11
+
9
12
  .DS_Store
10
13
 
11
14
  # Byte-compiled / optimized / DLL files
@@ -0,0 +1,26 @@
1
+ 0.2.1 (2025-06-30)
2
+ -------------------
3
+ - Incorporate synthetic lightcone into mock production pipeline (https://github.com/ArgonneCPAC/diffsky/pull/165)
4
+ - Add pipeline to generate lightcone mocks (https://github.com/ArgonneCPAC/diffsky/pull/154)
5
+ - Improve accuracy of young-star contribution stellar age PDF (https://github.com/ArgonneCPAC/diffsky/pull/151)
6
+ - Implement synthetic lightcones to extend resolution limits (https://github.com/ArgonneCPAC/diffsky/pull/143)
7
+
8
+
9
+ 0.2.0 (2025-03-24)
10
+ -------------------
11
+ - Update population-level photometry models of dust and burstiness
12
+
13
+
14
+ 0.1.2 (2024-10-25)
15
+ -------------------
16
+ - Update calls to diffmah v0.6.1 and diffstar v0.3.2
17
+
18
+
19
+ 0.1.1 (2023-10-04)
20
+ -------------------
21
+ - Update calls to dsps v0.3.4
22
+
23
+
24
+ 0.1.0 (2023-10-03)
25
+ -------------------
26
+ - First release. Compatible with diffstar v0.2.1 and dsps v0.3.3.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffsky
3
- Version: 0.2.0
3
+ Version: 0.2.1
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
@@ -40,9 +40,10 @@ Description-Content-Type: text/x-rst
40
40
  License-File: LICENSE.rst
41
41
  Requires-Dist: numpy
42
42
  Requires-Dist: jax
43
- Requires-Dist: diffmah>=0.7.0
44
- Requires-Dist: diffstar>=0.3.3
45
- Requires-Dist: dsps>=0.4.0
43
+ Requires-Dist: diffmah>=0.7.2
44
+ Requires-Dist: diffstar>=0.3.4
45
+ Requires-Dist: diffstarpop>=0.0.2
46
+ Requires-Dist: dsps>=0.4.5
46
47
  Requires-Dist: h5py
47
48
  Dynamic: license-file
48
49
 
@@ -1,7 +1,7 @@
1
- """
2
- """
1
+ """ """
3
2
 
4
3
  # flake8: noqa
5
4
 
6
5
  from ._version import __version__
7
6
  from .mass_functions.mc_diffmah_tpeak import mc_subhalos
7
+ from .utils import tw_utils
@@ -0,0 +1 @@
1
+ __version__ = '0.2.1'
@@ -0,0 +1,136 @@
1
+ """ """
2
+
3
+ from collections import namedtuple
4
+
5
+ from dsps.sfh.diffburst import BurstParams, calc_bursty_age_weights
6
+ from jax import jit as jjit
7
+ from jax import numpy as jnp
8
+
9
+ from .fburstpop_mono import (
10
+ DEFAULT_FBURSTPOP_PARAMS,
11
+ ZEROBURST_FBURSTPOP_PARAMS,
12
+ get_bounded_fburstpop_params,
13
+ get_fburst_from_fburstpop_params,
14
+ get_unbounded_fburstpop_params,
15
+ _get_bounded_fburstpop_param,
16
+ _get_unbounded_fburstpop_param
17
+ )
18
+ from .freqburst_mono import (
19
+ DEFAULT_FREQBURST_PARAMS,
20
+ ZEROBURST_FREQBURST_PARAMS,
21
+ get_bounded_freqburst_params,
22
+ get_unbounded_freqburst_params,
23
+ )
24
+ from .tburstpop import (
25
+ DEFAULT_TBURSTPOP_PARAMS,
26
+ get_bounded_tburstpop_params,
27
+ get_tburst_params_from_tburstpop_params,
28
+ get_unbounded_tburstpop_params,
29
+ )
30
+
31
+ from ..utils.utility_funcs import _inverse_sigmoid
32
+
33
+ DiffburstPopParams = namedtuple(
34
+ "DiffburstPopParams", ["freqburst_params", "fburstpop_params", "tburstpop_params"]
35
+ )
36
+ DEFAULT_DIFFBURSTPOP_PARAMS = DiffburstPopParams(
37
+ DEFAULT_FREQBURST_PARAMS, DEFAULT_FBURSTPOP_PARAMS, DEFAULT_TBURSTPOP_PARAMS
38
+ )
39
+ _BURSTPOP_UPNAMES = [
40
+ key.replace("params", "u_params") for key in DEFAULT_DIFFBURSTPOP_PARAMS._fields
41
+ ]
42
+ DiffburstPopUParams = namedtuple("DiffburstPopUParams", _BURSTPOP_UPNAMES)
43
+
44
+ ZERO_DIFFBURSTPOP_PARAMS = DiffburstPopParams(
45
+ ZEROBURST_FREQBURST_PARAMS, ZEROBURST_FBURSTPOP_PARAMS, DEFAULT_TBURSTPOP_PARAMS
46
+ )
47
+
48
+ FBURST_BOUNDS = (0.0, 1.0)
49
+
50
+
51
+ @jjit
52
+ def get_bounded_diffburstpop_params(u_params):
53
+ u_freqburst_params, u_fburstpop_params, u_tburstpop_params = u_params
54
+ bounded_freqburst_params = get_bounded_freqburst_params(u_freqburst_params)
55
+ bounded_tburstpop_params = get_bounded_tburstpop_params(u_tburstpop_params)
56
+ bounded_fburstpop_params = get_bounded_fburstpop_params(u_fburstpop_params)
57
+ diffburstpop_params = DiffburstPopParams(
58
+ bounded_freqburst_params, bounded_fburstpop_params, bounded_tburstpop_params
59
+ )
60
+ return diffburstpop_params
61
+
62
+
63
+ @jjit
64
+ def get_unbounded_diffburstpop_params(params):
65
+ freqburst_params, fburstpop_params, tburstpop_params = params
66
+ unbounded_freqburst_params = get_unbounded_freqburst_params(freqburst_params)
67
+ unbounded_fburstpop_params = get_unbounded_fburstpop_params(fburstpop_params)
68
+ unbounded_tburstpop_params = get_unbounded_tburstpop_params(tburstpop_params)
69
+ diffburstpop_u_params = DiffburstPopUParams(
70
+ unbounded_freqburst_params,
71
+ unbounded_fburstpop_params,
72
+ unbounded_tburstpop_params,
73
+ )
74
+ return diffburstpop_u_params
75
+
76
+
77
+ @jjit
78
+ def calc_bursty_age_weights_from_diffburstpop_params(
79
+ diffburstpop_params,
80
+ logsm,
81
+ logssfr,
82
+ ssp_lg_age_gyr,
83
+ smooth_age_weights,
84
+ random_draw_burst,
85
+ scatter_params,
86
+ ):
87
+ f_burst = get_fburst_from_fburstpop_params(
88
+ diffburstpop_params.fburstpop_params, logsm, logssfr
89
+ )
90
+ ufburst = _get_unbounded_fburstpop_param(f_burst, FBURST_BOUNDS)
91
+ noisy_ufburst = _inverse_sigmoid(random_draw_burst, ufburst, scatter_params.fburst_scatter, 0.0, 1.0)
92
+ noisy_fburst = _get_bounded_fburstpop_param(noisy_ufburst, FBURST_BOUNDS)
93
+ lgfburst = jnp.log10(noisy_fburst)
94
+
95
+ tburst_params = get_tburst_params_from_tburstpop_params(
96
+ diffburstpop_params.tburstpop_params, logsm, logssfr
97
+ )
98
+ lgyr_peak, lgyr_max = tburst_params
99
+ burst_params = BurstParams(lgfburst, lgyr_peak, lgyr_max)
100
+
101
+ age_weights = calc_bursty_age_weights(
102
+ burst_params, smooth_age_weights, ssp_lg_age_gyr
103
+ )
104
+
105
+ return age_weights, burst_params
106
+
107
+
108
+ def calc_bursty_age_weights_from_diffburstpop_u_params(
109
+ diffburstpop_u_params,
110
+ logsm,
111
+ logssfr,
112
+ ssp_lg_age_gyr,
113
+ smooth_age_weights,
114
+ random_draw_burst,
115
+ scatter_params,
116
+
117
+ ):
118
+ diffburstpop_params = get_bounded_diffburstpop_params(diffburstpop_u_params)
119
+ args = (
120
+ diffburstpop_params,
121
+ logsm,
122
+ logssfr,
123
+ ssp_lg_age_gyr,
124
+ smooth_age_weights,
125
+ random_draw_burst,
126
+ scatter_params)
127
+ age_weights, burst_params = calc_bursty_age_weights_from_diffburstpop_params(*args)
128
+ return age_weights, burst_params
129
+
130
+
131
+ DEFAULT_DIFFBURSTPOP_U_PARAMS = DiffburstPopUParams(
132
+ *get_unbounded_diffburstpop_params(DEFAULT_DIFFBURSTPOP_PARAMS)
133
+ )
134
+ ZERO_DIFFBURSTPOP_U_PARAMS = get_unbounded_diffburstpop_params(
135
+ DEFAULT_DIFFBURSTPOP_PARAMS
136
+ )
@@ -1,5 +1,4 @@
1
- """
2
- """
1
+ """ """
3
2
 
4
3
  from collections import OrderedDict, namedtuple
5
4
  from copy import deepcopy
@@ -23,9 +22,9 @@ DEFAULT_FBURSTPOP_PDICT = OrderedDict(
23
22
  sufb_logsm_yhi_ms=-10.0,
24
23
  )
25
24
 
26
- LGSM_X0_BOUNDS = (8.0, 11.0)
25
+ LGSM_X0_BOUNDS = (8.0, 12.0)
27
26
  LGSSFR_X0_BOUNDS = (-12.0, -8.0)
28
- SUFB_BOUNDS = (-15.0, -5.0)
27
+ SUFB_BOUNDS = (-15.0, -2.0)
29
28
 
30
29
  FBURSTPOP_PBOUNDS_PDICT = OrderedDict(
31
30
  sufb_logsm_x0=LGSM_X0_BOUNDS,
@@ -1,5 +1,4 @@
1
- """
2
- """
1
+ """ """
3
2
 
4
3
  from collections import OrderedDict, namedtuple
5
4
  from copy import deepcopy
@@ -17,15 +16,15 @@ LGSSFR_K = 5.0
17
16
  DEFAULT_FREQBURST_PDICT = OrderedDict(
18
17
  sufqb_logsm_x0=10.0,
19
18
  sufqb_logssfr_x0=-10.25,
20
- sufqb_logsm_ylo_q=-10.0,
21
- sufqb_logsm_ylo_ms=-10.0,
22
- sufqb_logsm_yhi_q=-10.0,
23
- sufqb_logsm_yhi_ms=-10.0,
19
+ sufqb_logsm_ylo_q=-5.0,
20
+ sufqb_logsm_ylo_ms=-0.2,
21
+ sufqb_logsm_yhi_q=-5.0,
22
+ sufqb_logsm_yhi_ms=-0.5,
24
23
  )
25
24
 
26
25
  LGSM_X0_BOUNDS = (9.0, 11.0)
27
26
  LGSSFR_X0_BOUNDS = (-12.0, -8.0)
28
- SUFQB_BOUNDS = (-15.0, -5.0)
27
+ SUFQB_BOUNDS = (-10.0, 0.5)
29
28
 
30
29
  FREQBURST_PBOUNDS_PDICT = OrderedDict(
31
30
  sufqb_logsm_x0=LGSM_X0_BOUNDS,
@@ -0,0 +1,137 @@
1
+ """ """
2
+
3
+ import numpy as np
4
+ from dsps.sfh import diffburst
5
+ from jax import random as jran
6
+
7
+ from .. import diffqburstpop_mono_noise as dbp
8
+ from ..fburstpop_mono import FburstPopUParams
9
+ from ..freqburst_mono import FreqburstUParams
10
+ from ..tburstpop import TburstPopUParams
11
+ from ...experimental.scatter import DEFAULT_SCATTER_PARAMS
12
+
13
+ TOL = 1e-2
14
+
15
+
16
+ def test_calc_bursty_age_weights_from_diffburstpop_params_evaluates_on_defaults():
17
+ n_age = 107
18
+ ssp_lg_age_gyr = np.linspace(5.5, 10.5, n_age)
19
+ ran_key = jran.PRNGKey(0)
20
+
21
+ random_draw_burst = 0.5
22
+
23
+ n_tests = 1_000
24
+ for __ in range(n_tests):
25
+ ran_key, logsm_key, logssfr_key, smooth_key = jran.split(ran_key, 4)
26
+ logsm = jran.uniform(logsm_key, minval=0, maxval=10, shape=())
27
+ logssfr = jran.uniform(logssfr_key, minval=-12, maxval=-8, shape=())
28
+ smooth_age_weights = jran.uniform(
29
+ smooth_key, minval=0, maxval=1, shape=(n_age,)
30
+ )
31
+
32
+ smooth_age_weights = smooth_age_weights / smooth_age_weights.sum()
33
+ args = (
34
+ dbp.DEFAULT_DIFFBURSTPOP_PARAMS,
35
+ logsm,
36
+ logssfr,
37
+ ssp_lg_age_gyr,
38
+ smooth_age_weights,
39
+ random_draw_burst,
40
+ DEFAULT_SCATTER_PARAMS,
41
+ )
42
+ (
43
+ age_weights,
44
+ burst_params,
45
+ ) = dbp.calc_bursty_age_weights_from_diffburstpop_params(*args)
46
+ assert age_weights.shape == (n_age,)
47
+ assert np.all(np.isfinite(age_weights))
48
+
49
+ unity = np.sum(age_weights)
50
+ assert np.allclose(unity, 1.0, atol=1e-2)
51
+
52
+ assert diffburst.LGFBURST_MIN < burst_params.lgfburst < diffburst.LGFBURST_MAX
53
+ assert (
54
+ diffburst.LGYR_PEAK_MIN < burst_params.lgyr_peak < diffburst.LGYR_PEAK_MAX
55
+ )
56
+
57
+ assert burst_params.lgyr_peak < burst_params.lgyr_max < diffburst.LGAGE_MAX
58
+
59
+
60
+ def test_calc_bursty_age_weights_from_diffburstpop_u_params_evaluates_on_u_randoms():
61
+ n_age = 107
62
+ ssp_lg_age_gyr = np.linspace(5.5, 10.5, n_age) - 9.0
63
+
64
+ n_freqburst_params = len(dbp.DEFAULT_DIFFBURSTPOP_PARAMS.freqburst_params)
65
+ n_fburstpop_params = len(dbp.DEFAULT_DIFFBURSTPOP_PARAMS.fburstpop_params)
66
+ n_tburstpop_params = len(dbp.DEFAULT_DIFFBURSTPOP_PARAMS.tburstpop_params)
67
+ ran_key = jran.PRNGKey(0)
68
+
69
+ random_draw_burst = 0.5
70
+
71
+ n_tests = 1_000
72
+ for __ in range(n_tests):
73
+ ran_key, logsm_key, logssfr_key, smooth_key = jran.split(ran_key, 4)
74
+ logsm = jran.uniform(logsm_key, minval=0, maxval=10, shape=())
75
+ logssfr = jran.uniform(logssfr_key, minval=-12, maxval=-8, shape=())
76
+ smooth_age_weights = jran.uniform(
77
+ smooth_key, minval=0, maxval=1, shape=(n_age,)
78
+ )
79
+ ran_key, fqb_key, fb_key, tb_key = jran.split(ran_key, 4)
80
+ u_freqb = jran.uniform(
81
+ fqb_key, minval=-10, maxval=10, shape=(n_freqburst_params,)
82
+ )
83
+ u_fb = jran.uniform(fb_key, minval=-10, maxval=10, shape=(n_fburstpop_params,))
84
+ u_tb = jran.uniform(tb_key, minval=-10, maxval=10, shape=(n_tburstpop_params,))
85
+ freqburst_u_params = FreqburstUParams(*u_freqb)
86
+ fburstpop_u_params = FburstPopUParams(*u_fb)
87
+ tburstpop_u_params = TburstPopUParams(*u_tb)
88
+
89
+ diffburstpop_u_params = dbp.DiffburstPopUParams(
90
+ freqburst_u_params, fburstpop_u_params, tburstpop_u_params
91
+ )
92
+
93
+ smooth_age_weights = smooth_age_weights / smooth_age_weights.sum()
94
+ args = (
95
+ diffburstpop_u_params,
96
+ logsm,
97
+ logssfr,
98
+ ssp_lg_age_gyr,
99
+ smooth_age_weights,
100
+ random_draw_burst,
101
+ DEFAULT_SCATTER_PARAMS,
102
+ )
103
+ (
104
+ age_weights,
105
+ burst_params,
106
+ ) = dbp.calc_bursty_age_weights_from_diffburstpop_u_params(*args)
107
+ assert age_weights.shape == (n_age,)
108
+ assert np.all(np.isfinite(age_weights))
109
+
110
+ unity = np.sum(age_weights)
111
+ assert np.allclose(unity, 1.0, atol=1e-2)
112
+
113
+ assert diffburst.LGFBURST_MIN <= burst_params.lgfburst <= diffburst.LGFBURST_MAX
114
+ assert (
115
+ diffburst.LGYR_PEAK_MIN <= burst_params.lgyr_peak <= diffburst.LGYR_PEAK_MAX
116
+ )
117
+
118
+ assert burst_params.lgyr_peak <= burst_params.lgyr_max <= diffburst.LGAGE_MAX
119
+
120
+
121
+ def test_diffburstpop_u_param_inversion():
122
+ u_params = dbp.get_unbounded_diffburstpop_params(dbp.DEFAULT_DIFFBURSTPOP_PARAMS)
123
+ u_params_freqburst, u_params_fburst, u_params_tburst = u_params
124
+
125
+ assert np.allclose(
126
+ dbp.DEFAULT_DIFFBURSTPOP_U_PARAMS.freqburst_u_params,
127
+ u_params_freqburst,
128
+ rtol=TOL,
129
+ )
130
+
131
+ assert np.allclose(
132
+ dbp.DEFAULT_DIFFBURSTPOP_U_PARAMS.fburstpop_u_params, u_params_fburst, rtol=TOL
133
+ )
134
+
135
+ assert np.allclose(
136
+ dbp.DEFAULT_DIFFBURSTPOP_U_PARAMS.tburstpop_u_params, u_params_tburst, rtol=TOL
137
+ )
@@ -1,5 +1,4 @@
1
- """
2
- """
1
+ """ """
3
2
 
4
3
  import numpy as np
5
4
  from jax import nn
@@ -201,7 +200,7 @@ def test_zeroburst_params_produce_zero_burstiness():
201
200
  assert fqb.shape == (n_gals,)
202
201
  assert np.all(np.isfinite(fqb))
203
202
  assert np.all(fqb >= 0.0)
204
- assert np.all(fqb < 0.01)
203
+ assert np.all(fqb < 0.1), fqb.max()
205
204
 
206
205
  sufq_max = SUFQB_BOUNDS[1]
207
206
  fqb_max = nn.softplus(sufq_max)
@@ -0,0 +1,5 @@
1
+ """"""
2
+
3
+ # flake8: noqa
4
+
5
+ from .io_utils import load_flat_hdf5
@@ -0,0 +1,7 @@
1
+ """"""
2
+
3
+ # flake8: noqa
4
+
5
+ from .. import load_flat_hdf5
6
+ from .defaults import *
7
+ from .load_lc_cf import get_diffsky_info_from_hacc_sim
@@ -0,0 +1,89 @@
1
+ """"""
2
+
3
+ import os
4
+ from glob import glob
5
+
6
+ import pytest
7
+
8
+ from .. import validate_lc_cores as vlcc
9
+
10
+ DRN_LC_CORES_POBOY = "/Users/aphearin/work/DATA/LastJourney/lc_cores"
11
+
12
+ try:
13
+ from haccytrees import Simulation as HACCSim # noqa
14
+
15
+ HAS_HACCYTREES = True
16
+ except ImportError:
17
+ HAS_HACCYTREES = False
18
+
19
+
20
+ try:
21
+ assert os.path.isdir(DRN_LC_CORES_POBOY)
22
+ CAN_RUN_LJ_DATA_TESTS = True
23
+ except AssertionError:
24
+ CAN_RUN_LJ_DATA_TESTS = False
25
+ CAN_RUN_LJ_DATA_TESTS = CAN_RUN_LJ_DATA_TESTS & HAS_HACCYTREES
26
+ POBOY_MSG = "This test only runs on poboy machine with haccytrees installed"
27
+
28
+
29
+ @pytest.mark.skipif(not CAN_RUN_LJ_DATA_TESTS, reason=POBOY_MSG)
30
+ def test_check_zrange_passes_for_all_last_journey_data_on_poboy():
31
+ """"""
32
+ bnpat = vlcc.BNPAT_LC_CORES.format("*", "*")
33
+ fn_list = glob(os.path.join(DRN_LC_CORES_POBOY, bnpat))
34
+ for fn_lc_cores in fn_list:
35
+ msg = vlcc.check_zrange(fn_lc_cores, "LastJourney")
36
+ assert len(msg) == 0
37
+
38
+
39
+ @pytest.mark.skipif(not CAN_RUN_LJ_DATA_TESTS, reason=POBOY_MSG)
40
+ def test_check_core_tag_uniqueness():
41
+ """Every core_tag should be unique. A very small number of repeats is allowed."""
42
+ bnpat = vlcc.BNPAT_LC_CORES.format("*", "*")
43
+ fn_list = glob(os.path.join(DRN_LC_CORES_POBOY, bnpat))
44
+ for fn_lc_cores in fn_list:
45
+ msg = vlcc.check_core_tag_uniqueness(fn_lc_cores)
46
+
47
+ if len(msg) > 0:
48
+ # No more than 10 core tags that have a repetition
49
+ s = msg[1]
50
+ n_distinct_repeats = int(s.split("=")[-1])
51
+ assert n_distinct_repeats < 10
52
+
53
+ # Only a single repetition is allowed
54
+ s = msg[2]
55
+ max_repetitions = int(s.split("=")[-1])
56
+ assert max_repetitions == 2
57
+
58
+
59
+ @pytest.mark.skipif(not CAN_RUN_LJ_DATA_TESTS, reason=POBOY_MSG)
60
+ def test_check_top_host_tag_has_match():
61
+ """top_host_tag should always agree with the result recalculated by diffsky
62
+
63
+ In the current implementation, this test is skipped for lc_cores in which
64
+ there is a repeated entry of core_tag
65
+
66
+ """
67
+ bnpat = vlcc.BNPAT_LC_CORES.format("*", "*")
68
+ fn_list = glob(os.path.join(DRN_LC_CORES_POBOY, bnpat))
69
+ for fn_lc_cores in fn_list:
70
+ msg = vlcc.check_top_host_tag_has_match(fn_lc_cores)
71
+ if len(msg) > 0:
72
+ s = msg[0]
73
+ if "Could not run test" in s:
74
+ pass
75
+ else:
76
+ bn = os.path.basename(fn_lc_cores)
77
+ raise ValueError(f"{bn} has mismatching top_host_idx")
78
+
79
+
80
+ @pytest.mark.skipif(not CAN_RUN_LJ_DATA_TESTS, reason=POBOY_MSG)
81
+ def test_check_top_host_idx_tag_agreement():
82
+ """top_host_tag should always be consistent with top_host_idx"""
83
+ bnpat = vlcc.BNPAT_LC_CORES.format("*", "*")
84
+ fn_list = glob(os.path.join(DRN_LC_CORES_POBOY, bnpat))
85
+ for fn_lc_cores in fn_list:
86
+ msg = vlcc.check_top_host_idx_tag_agreement(fn_lc_cores)
87
+ if len(msg) > 0:
88
+ bn = os.path.basename(fn_lc_cores)
89
+ raise ValueError(f"{bn} has mismatching top_host_idx")
@@ -0,0 +1,104 @@
1
+ """ """
2
+
3
+ import os
4
+
5
+ import numpy as np
6
+
7
+ from ....utils import crossmatch
8
+ from .. import lightcone_utils as lcu
9
+ from .. import load_flat_hdf5
10
+
11
+ BNPAT_LC_CORES = "lc_cores-{0}.{1}.hdf5"
12
+
13
+
14
+ def check_zrange(fn_lc_cores, sim_name, tol=0.0002, lc_cores=None):
15
+ """Redshift range of the data should be bounded by the expected range"""
16
+
17
+ bn_lc_cores = os.path.basename(fn_lc_cores)
18
+ a_min_expected, a_max_expected = lcu.get_a_range_of_lc_cores_file(
19
+ bn_lc_cores, sim_name
20
+ )
21
+
22
+ if lc_cores is None:
23
+ lc_cores = load_flat_hdf5(fn_lc_cores)
24
+
25
+ a_min_data = lc_cores["scale_factor"].min()
26
+ a_max_data = lc_cores["scale_factor"].max()
27
+
28
+ msg = []
29
+ if a_min_data < a_min_expected - tol:
30
+ msg.append(f"a_min_data={a_min_data} < a_min_expected={a_min_expected}\n")
31
+ if a_max_data > a_max_expected + tol:
32
+ msg.append(f"a_max_data={a_max_data} > a_max_expected={a_max_expected}\n")
33
+
34
+ return msg
35
+
36
+
37
+ def check_core_tag_uniqueness(fn_lc_cores, lc_cores=None):
38
+ if lc_cores is None:
39
+ lc_cores = load_flat_hdf5(fn_lc_cores)
40
+
41
+ msg = []
42
+ u_core_tags, counts = np.unique(lc_cores["core_tag"], return_counts=True)
43
+ if u_core_tags.size < lc_cores["core_tag"].size:
44
+ example_repeated_core_tag = u_core_tags[counts > 1][0]
45
+ s = f"repeated core_tag = {example_repeated_core_tag}"
46
+ msg.append(s)
47
+ n_distinct_repeats = np.sum(counts > 1)
48
+ max_repetitions = counts.max()
49
+ s = f"Number of distinct repeats = {n_distinct_repeats}"
50
+ msg.append(s)
51
+ s = f"Max num repetitions = {max_repetitions}"
52
+ msg.append(s)
53
+ return msg
54
+
55
+
56
+ def check_top_host_tag_has_match(fn_lc_cores, lc_cores=None):
57
+
58
+ if lc_cores is None:
59
+ lc_cores = load_flat_hdf5(fn_lc_cores)
60
+
61
+ u_core_tag, u_indx, counts = np.unique(
62
+ lc_cores["core_tag"], return_counts=True, return_index=True
63
+ )
64
+
65
+ msg = []
66
+ if u_core_tag.size < lc_cores["core_tag"].size:
67
+ s = "Could not run test of top_host_tag due to repeated values of core_tag"
68
+ msg.append(s)
69
+ else:
70
+ idxA, idxB = crossmatch(lc_cores["top_host_tag"], lc_cores["core_tag"])
71
+ indarr = np.arange(len(u_core_tag)).astype(int)
72
+ indarr[idxA] = indarr[idxB]
73
+
74
+ if not np.allclose(indarr, lc_cores["top_host_idx"]):
75
+ msk = indarr != lc_cores["top_host_idx"]
76
+ example_core_tag = lc_cores["core_tag"][msk][0]
77
+ example_top_host_tag = lc_cores["top_host_tag"][msk][0]
78
+ s = f"core_tag = {example_core_tag} has top_host_tag={example_top_host_tag} "
79
+ s += "which disagrees with diffsky.utils.crossmatch"
80
+ msg.append(s)
81
+
82
+ n_mismatches = msk.sum()
83
+ s = f"Number of discrepancies between top_host_tag and diffsky = {n_mismatches}"
84
+ msg.append(s)
85
+
86
+ return msg
87
+
88
+
89
+ def check_top_host_idx_tag_agreement(fn_lc_cores, lc_cores=None):
90
+ """top_host_tag should always be consistent with top_host_idx"""
91
+ if lc_cores is None:
92
+ lc_cores = load_flat_hdf5(fn_lc_cores)
93
+
94
+ msg = []
95
+ top_host_tag2 = lc_cores["core_tag"][lc_cores["top_host_idx"]]
96
+ if not np.allclose(lc_cores["top_host_tag"], top_host_tag2):
97
+ msk = top_host_tag2 != lc_cores["top_host_idx"]
98
+ example_core_tag = lc_cores["core_tag"][msk][0]
99
+ example_top_host_tag = lc_cores["top_host_tag"][msk][0]
100
+ s = f"core_tag = {example_core_tag} has top_host_tag={example_top_host_tag} "
101
+ s += "which disagrees with the value inferred from the `top_host_idx` column"
102
+ msg.append(s)
103
+
104
+ return msg
@@ -0,0 +1,14 @@
1
+ """"""
2
+
3
+ # flake8: noqa
4
+
5
+ __all__ = ("N_MIN_MAH_PTS", "DIFFMAH_MASS_COLNAME", "N_PTCL_COREFOREST")
6
+
7
+ # Simulated MAHs with fewer points than N_MIN_MAH_PTS will get a synthetic MAH
8
+ N_MIN_MAH_PTS = 4
9
+
10
+ # DIFFMAH_MASS_COLNAME is the column used in the diffmah fits of the coreforest files
11
+ DIFFMAH_MASS_COLNAME = "infall_tree_node_mass"
12
+
13
+ # Minimum number of particles to use in coreforest analyses for each simulation
14
+ N_PTCL_COREFOREST = 100