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