py-lfkit 0.3.0__tar.gz → 0.5.0__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.
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/PKG-INFO +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/about/photometry_overview.rst +1 -1
- py_lfkit-0.5.0/docs/api/index.rst +8 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/conditional_luminosity_function.rst +6 -4
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/lf_models/composite_models.rst +2 -2
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/lf_models/power_law_models.rst +4 -4
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/lf_models/schechter_models.rst +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/pyproject.toml +15 -27
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/_version.py +3 -3
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/api/_namespaces.py +52 -9
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/api/conditional_luminosity_function.py +71 -47
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/api/luminosity_function.py +74 -51
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/_discovery.py +6 -2
- py_lfkit-0.5.0/src/lfkit/luminosity_functions/conditional_integrals.py +171 -0
- py_lfkit-0.5.0/src/lfkit/luminosity_functions/conditional_models.py +136 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/integrals.py +86 -7
- py_lfkit-0.5.0/src/lfkit/luminosity_functions/models/composite.py +178 -0
- py_lfkit-0.5.0/src/lfkit/luminosity_functions/models/gamma.py +145 -0
- py_lfkit-0.5.0/src/lfkit/luminosity_functions/models/gaussian.py +167 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/models/modifiers.py +21 -1
- py_lfkit-0.5.0/src/lfkit/luminosity_functions/models/non_parametric.py +718 -0
- py_lfkit-0.5.0/src/lfkit/luminosity_functions/models/power_law.py +242 -0
- py_lfkit-0.5.0/src/lfkit/luminosity_functions/models/saunders.py +230 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/models/schechter.py +141 -51
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/parameter_models.py +82 -52
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/redshift_density.py +37 -11
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/registry.py +118 -18
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/photometry/luminosities.py +6 -7
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/utils/integrators.py +13 -0
- py_lfkit-0.5.0/src/lfkit/utils/validators.py +241 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/py_lfkit.egg-info/PKG-INFO +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/py_lfkit.egg-info/SOURCES.txt +14 -41
- py_lfkit-0.5.0/tests/test_api_conditional_luminosity_function.py +307 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_api_corrections.py +1 -1
- py_lfkit-0.5.0/tests/test_api_luminosity_function.py +900 -0
- py_lfkit-0.5.0/tests/test_api_namespaces.py +282 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_corrections_color_anchors.py +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_corrections_filters.py +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_corrections_kcorrect_backend.py +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_corrections_kcorrect_from_color.py +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_corrections_kcorrrect_grids.py +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_corrections_poggianti1997.py +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_corrections_responses.py +1 -1
- py_lfkit-0.5.0/tests/test_cosmo_cosmology.py +182 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_lumfuncs_completeness.py +12 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_lumfuncs_completeness_fake_catalog.py +43 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_lumfuncs_conditional_integrals.py +119 -32
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_lumfuncs_conditional_models.py +139 -36
- py_lfkit-0.5.0/tests/test_lumfuncs_discovery.py +220 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_lumfuncs_integrals.py +102 -1
- py_lfkit-0.5.0/tests/test_lumfuncs_models_composite.py +367 -0
- py_lfkit-0.5.0/tests/test_lumfuncs_models_gamma.py +387 -0
- py_lfkit-0.5.0/tests/test_lumfuncs_models_gaussian.py +420 -0
- py_lfkit-0.5.0/tests/test_lumfuncs_models_modifiers.py +193 -0
- py_lfkit-0.5.0/tests/test_lumfuncs_models_non_parametric.py +515 -0
- py_lfkit-0.5.0/tests/test_lumfuncs_models_power_law.py +417 -0
- py_lfkit-0.5.0/tests/test_lumfuncs_models_saunders.py +505 -0
- py_lfkit-0.5.0/tests/test_lumfuncs_models_schechter.py +815 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_lumfuncs_parameter_models.py +44 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_lumfuncs_redshift_density.py +68 -1
- py_lfkit-0.5.0/tests/test_lumfuncs_registry.py +463 -0
- py_lfkit-0.5.0/tests/test_photometry_luminosities.py +274 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_photometry_magnitudes.py +130 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_utils_download_pogg97_data.py +1 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_utils_evaluators.py +176 -1
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/test_utils_integrators.py +191 -1
- py_lfkit-0.5.0/tests/test_utils_interpolation.py +360 -0
- py_lfkit-0.5.0/tests/test_utils_io.py +347 -0
- py_lfkit-0.5.0/tests/test_utils_types.py +75 -0
- py_lfkit-0.5.0/tests/test_utils_units.py +199 -0
- py_lfkit-0.5.0/tests/test_utils_validators.py +663 -0
- py_lfkit-0.3.0/docs/api/index.rst +0 -16
- py_lfkit-0.3.0/docs/api/lfkit.api.conditional_luminosity_function.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.api.corrections.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.api.luminosity_function.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.api.rst +0 -15
- py_lfkit-0.3.0/docs/api/lfkit.corrections.color_anchors.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.corrections.filters.rst +0 -17
- py_lfkit-0.3.0/docs/api/lfkit.corrections.kcorrect_backend.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.corrections.kcorrect_from_color.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.corrections.kcorrect_grids.rst +0 -14
- py_lfkit-0.3.0/docs/api/lfkit.corrections.poggianti1997.rst +0 -21
- py_lfkit-0.3.0/docs/api/lfkit.corrections.responses.rst +0 -16
- py_lfkit-0.3.0/docs/api/lfkit.corrections.rst +0 -19
- py_lfkit-0.3.0/docs/api/lfkit.cosmo.cosmology.rst +0 -17
- py_lfkit-0.3.0/docs/api/lfkit.cosmo.rst +0 -13
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.completeness.rst +0 -16
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.conditional_integrals.rst +0 -14
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.conditional_models.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.integrals.rst +0 -21
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.models.composite.rst +0 -13
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.models.gaussian.rst +0 -13
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.models.modifiers.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.models.power_law.rst +0 -15
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.models.rst +0 -17
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.models.schechter.rst +0 -19
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.parameter_models.rst +0 -23
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.redshift_density.rst +0 -13
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.registry.rst +0 -24
- py_lfkit-0.3.0/docs/api/lfkit.luminosity_functions.rst +0 -20
- py_lfkit-0.3.0/docs/api/lfkit.photometry.luminosities.rst +0 -16
- py_lfkit-0.3.0/docs/api/lfkit.photometry.magnitudes.rst +0 -16
- py_lfkit-0.3.0/docs/api/lfkit.photometry.rst +0 -14
- py_lfkit-0.3.0/docs/api/lfkit.rst +0 -18
- py_lfkit-0.3.0/docs/api/lfkit.utils.download_poggianti97_data.rst +0 -12
- py_lfkit-0.3.0/docs/api/lfkit.utils.evaluators.rst +0 -16
- py_lfkit-0.3.0/docs/api/lfkit.utils.integrators.rst +0 -13
- py_lfkit-0.3.0/docs/api/lfkit.utils.interpolation.rst +0 -15
- py_lfkit-0.3.0/docs/api/lfkit.utils.io.rst +0 -18
- py_lfkit-0.3.0/docs/api/lfkit.utils.rst +0 -20
- py_lfkit-0.3.0/docs/api/lfkit.utils.types.rst +0 -6
- py_lfkit-0.3.0/docs/api/lfkit.utils.units.rst +0 -17
- py_lfkit-0.3.0/docs/api/lfkit.utils.validators.rst +0 -14
- py_lfkit-0.3.0/src/lfkit/luminosity_functions/conditional_integrals.py +0 -152
- py_lfkit-0.3.0/src/lfkit/luminosity_functions/conditional_models.py +0 -83
- py_lfkit-0.3.0/src/lfkit/luminosity_functions/models/composite.py +0 -96
- py_lfkit-0.3.0/src/lfkit/luminosity_functions/models/gaussian.py +0 -89
- py_lfkit-0.3.0/src/lfkit/luminosity_functions/models/power_law.py +0 -115
- py_lfkit-0.3.0/src/lfkit/utils/validators.py +0 -63
- py_lfkit-0.3.0/tests/test_api_conditional_luminosity_function.py +0 -140
- py_lfkit-0.3.0/tests/test_api_luminosity_function.py +0 -498
- py_lfkit-0.3.0/tests/test_cosmo_cosmology.py +0 -74
- py_lfkit-0.3.0/tests/test_lumfuncs_models_schechter.py +0 -254
- py_lfkit-0.3.0/tests/test_photometry_luminosities.py +0 -82
- py_lfkit-0.3.0/tests/test_utils_interpolation.py +0 -131
- py_lfkit-0.3.0/tests/test_utils_io.py +0 -128
- py_lfkit-0.3.0/tests/test_utils_units.py +0 -90
- py_lfkit-0.3.0/tests/test_utils_validators.py +0 -184
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/.github/workflows/ci.yml +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/.github/workflows/docs.yml +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/.github/workflows/publish.yml +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/.gitignore +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/CITATION.cff +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/LICENSE +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/MANIFEST.in +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/README.md +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/Makefile +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/_static/custom.css +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/_static/logos/lfkit_logo-icon.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/_static/logos/lfkit_logo.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/_static/logos/lfkit_logo.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/_static/logos/lfkit_logo.svg +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/_templates/pages_redirect.html +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/_templates/sidebar/brand.html +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/about/corrections_overview.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/about/index.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/citation.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/conf.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/contributing.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/catalog_completeness.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/index.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/kcorrect_examples.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/lf_models/gaussian_models.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/lf_models/index.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/lf_models/model_registry.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/magnitude_integrals.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/magnitudes_and_luminosities.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/poggianti_examples.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/examples/redshift_density.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/index.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/installation.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/license.rst +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/docs/make.bat +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/logo/lfkit_github_banner.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/logo/lfkit_logo-icon.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/logo/lfkit_logo.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/logo/lfkit_logo.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/logo/lfkit_logo.svg +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/logo/make_gh_banner.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/logo/make_logo.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-g__blue-red__surveys-native-gr.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-g__blue-red__surveys-native-gr.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-i__blue-red__surveys-native-gr.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-i__blue-red__surveys-native-gr.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-r__blue-red__surveys-native-gr.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-r__blue-red__surveys-native-gr.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-u__blue-red__surveys-native-gr.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-u__blue-red__surveys-native-gr.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-z__blue-red__surveys-native-gr.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_kcorrect_surveys_color_split/kcorr__band-z__blue-red__surveys-native-gr.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-B__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-B__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-I__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-I__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-R__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-R__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-U__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-U__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-V__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/bessell/Kcurves__system-bessell__band-V__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/sdss/Kcurves__system-sdss__band-g__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/sdss/Kcurves__system-sdss__band-g__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/sdss/Kcurves__system-sdss__band-i__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/sdss/Kcurves__system-sdss__band-i__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/sdss/Kcurves__system-sdss__band-r__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/compare_poggianti_to_kcorrect/sdss/Kcurves__system-sdss__band-r__zmax-3.5__nz-401__pchip__extrap-1__anchorz0-1.png +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__bessell__z0.0000_4.0__Nz801__bsnone/K__band_bessell_B.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__bessell__z0.0000_4.0__Nz801__bsnone/K__band_bessell_I.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__bessell__z0.0000_4.0__Nz801__bsnone/K__band_bessell_R.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__bessell__z0.0000_4.0__Nz801__bsnone/K__band_bessell_U.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__bessell__z0.0000_4.0__Nz801__bsnone/K__band_bessell_V.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__decam__z0.0000_4.0__Nz801__bsnone/K__band_decam_Y.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__decam__z0.0000_4.0__Nz801__bsnone/K__band_decam_g.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__decam__z0.0000_4.0__Nz801__bsnone/K__band_decam_i.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__decam__z0.0000_4.0__Nz801__bsnone/K__band_decam_r.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__decam__z0.0000_4.0__Nz801__bsnone/K__band_decam_u.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__decam__z0.0000_4.0__Nz801__bsnone/K__band_decam_z.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__sdss__z0.0000_4.0__Nz801__bsnone/K__band_sdss_g0.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__sdss__z0.0000_4.0__Nz801__bsnone/K__band_sdss_i0.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__sdss__z0.0000_4.0__Nz801__bsnone/K__band_sdss_r0.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__sdss__z0.0000_4.0__Nz801__bsnone/K__band_sdss_u0.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__sdss__z0.0000_4.0__Nz801__bsnone/K__band_sdss_z0.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone/K__band_subaru_suprimecam_B.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone/K__band_subaru_suprimecam_Ic.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone/K__band_subaru_suprimecam_Rc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone/K__band_subaru_suprimecam_V.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone/K__band_subaru_suprimecam_g.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone/K__band_subaru_suprimecam_i.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone/K__band_subaru_suprimecam_r.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/kcorrect/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone/K__band_subaru_suprimecam_z.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_B_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_B_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_B_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_B_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_H_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_H_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_H_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_H_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_I_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_I_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_I_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_I_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_Ic_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_Ic_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_J_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_J_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_J_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_J_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_K_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_K_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_K_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_K_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_R_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_R_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_R_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_R_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_Rc_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_Rc_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_U_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_U_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_U_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_U_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_V_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_V_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_V_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_V_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_g_type_E.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_g_type_E2.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_g_type_Sa.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/output/plots/poggianti1997/ke_pogg1997_band_g_type_Sc.pdf +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/scripts/compare_kcorr_surveys.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/scripts/compare_poggianti_to_kcorrect.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/scripts/make_fake_magnitude_limited_catalog.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/scripts/plot_poggianti1997_corrections.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/setup.cfg +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/api/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/api/corrections.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/corrections/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/corrections/color_anchors.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/corrections/filters.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/corrections/kcorrect_backend.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/corrections/kcorrect_from_color.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/corrections/kcorrect_grids.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/corrections/poggianti1997.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/corrections/responses.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/cosmo/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/cosmo/cosmology.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/demo_catalogs/fake_magnitude_limited_catalog.csv +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/kcorrect/grids/kcorrect__bessell__z0.0000_4.0__Nz801__bsnone.npz +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/kcorrect/grids/kcorrect__decam__z0.0000_4.0__Nz801__bsnone.npz +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/kcorrect/grids/kcorrect__sdss__z0.0000_4.0__Nz801__bsnone.npz +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/kcorrect/grids/kcorrect__subaru_suprimecam__z0.0000_4.0__Nz801__bsnone.npz +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/poggianti1997/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/poggianti1997/ecorr.csv +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/poggianti1997/filters.csv +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/poggianti1997/kcorr.csv +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/poggianti1997/kcorrv.csv +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/data/poggianti1997/sed.csv +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/completeness.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/luminosity_functions/models/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/photometry/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/photometry/magnitudes.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/utils/__init__.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/utils/download_poggianti97_data.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/utils/evaluators.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/utils/interpolation.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/utils/io.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/utils/types.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/lfkit/utils/units.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/py_lfkit.egg-info/dependency_links.txt +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/py_lfkit.egg-info/requires.txt +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/src/py_lfkit.egg-info/top_level.txt +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/benchmarks/test_cacciato_clf_reference.py +0 -0
- {py_lfkit-0.3.0 → py_lfkit-0.5.0}/tests/benchmarks/test_cacciato_hod_reference.py +0 -0
|
@@ -202,7 +202,7 @@ Here:
|
|
|
202
202
|
- :math:`\alpha` is the faint-end slope,
|
|
203
203
|
- :math:`x` is the luminosity ratio :math:`L/L_\star` written in magnitude form.
|
|
204
204
|
|
|
205
|
-
The parameter :math:`M_\star` marks the transition between the power
|
|
205
|
+
The parameter :math:`M_\star` marks the transition between the power law part of
|
|
206
206
|
the luminosity function and the exponential bright-end cutoff. The parameter
|
|
207
207
|
:math:`\alpha` controls how rapidly the abundance rises toward fainter
|
|
208
208
|
magnitudes. More negative values of :math:`\alpha` produce a steeper faint end.
|
|
@@ -25,7 +25,7 @@ mass, or another quantity.
|
|
|
25
25
|
|
|
26
26
|
LFKit exposes conditional luminosity functions through
|
|
27
27
|
:class:`lfkit.ConditionalLuminosityFunction`. Each constructor returns a
|
|
28
|
-
luminosity
|
|
28
|
+
luminosity function object that can be evaluated with
|
|
29
29
|
``lf.phi`` and integrated through the usual ``lf.integrals`` namespace.
|
|
30
30
|
|
|
31
31
|
The examples below use redshift as the conditioning variable because this is
|
|
@@ -127,7 +127,7 @@ population evolves.
|
|
|
127
127
|
Conditional Schechter surface
|
|
128
128
|
-----------------------------
|
|
129
129
|
|
|
130
|
-
The same conditional
|
|
130
|
+
The same conditional luminosity function model can be evaluated over the full
|
|
131
131
|
magnitude-redshift plane rather than at a few selected redshifts.
|
|
132
132
|
|
|
133
133
|
The filled colour scale shows :math:`\log_{10}\Phi(M \mid z)`. The contours
|
|
@@ -387,10 +387,12 @@ The model therefore changes both in amplitude and in shape.
|
|
|
387
387
|
cmap_range=(0.0, 0.2),
|
|
388
388
|
)
|
|
389
389
|
|
|
390
|
-
lf = ConditionalLuminosityFunction.
|
|
390
|
+
lf = ConditionalLuminosityFunction.double_schechter(
|
|
391
391
|
phi_star=lambda z: 1.2e-3 * (1.0 + z) ** 0.5,
|
|
392
392
|
m_star=lambda z: -20.3 - 0.5 * (z - 0.1),
|
|
393
393
|
alpha=lambda z: -1.15 - 0.10 * z,
|
|
394
|
+
beta=lambda z: -0.45 - 0.05 * z,
|
|
395
|
+
m_transition=lambda z: -19.0 - 0.3 * (z - 0.1),
|
|
394
396
|
)
|
|
395
397
|
|
|
396
398
|
fig, ax = plt.subplots(figsize=(7.0, 5.0))
|
|
@@ -423,7 +425,7 @@ It is useful to compare the component shapes at fixed condition before combining
|
|
|
423
425
|
them into more complicated models. This separates differences in functional
|
|
424
426
|
form from differences caused by redshift or halo-mass evolution.
|
|
425
427
|
|
|
426
|
-
The standard Schechter form has a power
|
|
428
|
+
The standard Schechter form has a power law faint end and an exponential
|
|
427
429
|
bright-end cutoff. The modified Schechter component has a broader bright-end
|
|
428
430
|
shape. The lognormal component is localized around a characteristic luminosity.
|
|
429
431
|
Together, these examples show the kinds of galaxy populations each component is
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|lfkitlogo| Composite models
|
|
6
6
|
=============================
|
|
7
7
|
|
|
8
|
-
Composite models combine multiple luminosity
|
|
8
|
+
Composite models combine multiple luminosity function components. They are
|
|
9
9
|
useful when a population is better described as a mixture rather than by one
|
|
10
10
|
single analytic shape.
|
|
11
11
|
|
|
@@ -83,7 +83,7 @@ function with a suppressed bright end.
|
|
|
83
83
|
Luminosity cutoff modifier
|
|
84
84
|
--------------------------
|
|
85
85
|
|
|
86
|
-
A luminosity cutoff can be applied to an existing luminosity
|
|
86
|
+
A luminosity cutoff can be applied to an existing luminosity function object.
|
|
87
87
|
This keeps the base model unchanged and returns a new object whose
|
|
88
88
|
:meth:`lfkit.LuminosityFunction.phi` values are multiplied by a bright-end
|
|
89
89
|
cutoff.
|
|
@@ -13,7 +13,7 @@ a Schechter-like exponential cutoff.
|
|
|
13
13
|
Single power law
|
|
14
14
|
----------------
|
|
15
15
|
|
|
16
|
-
The single power
|
|
16
|
+
The single power law model has one slope. In magnitude space, this gives a
|
|
17
17
|
straight-line trend when shown on a logarithmic :math:`\Phi(M)` axis.
|
|
18
18
|
|
|
19
19
|
.. plot::
|
|
@@ -58,7 +58,7 @@ straight-line trend when shown on a logarithmic :math:`\Phi(M)` axis.
|
|
|
58
58
|
r"$\Phi(M)$ [$\mathrm{Mpc}^{-3}\,\mathrm{mag}^{-1}$]",
|
|
59
59
|
fontsize=LABEL_SIZE,
|
|
60
60
|
)
|
|
61
|
-
ax.set_title("Single power
|
|
61
|
+
ax.set_title("Single power law luminosity functions", fontsize=TITLE_SIZE)
|
|
62
62
|
ax.tick_params(axis="both", labelsize=TICK_SIZE)
|
|
63
63
|
ax.legend(frameon=True, fontsize=LEGEND_SIZE, loc="best")
|
|
64
64
|
plt.tight_layout()
|
|
@@ -148,7 +148,7 @@ and faint sides need different behaviour without using a Schechter cutoff.
|
|
|
148
148
|
Log-normalized power law
|
|
149
149
|
------------------------
|
|
150
150
|
|
|
151
|
-
The log-normalized power
|
|
151
|
+
The log-normalized power law model is the same power law shape, but the
|
|
152
152
|
normalization is supplied as ``log_phi_star``. This is convenient for fitting
|
|
153
153
|
or sampling applications where the normalization is naturally varied in
|
|
154
154
|
logarithmic space.
|
|
@@ -199,7 +199,7 @@ logarithmic space.
|
|
|
199
199
|
r"$\Phi(M)$ [$\mathrm{Mpc}^{-3}\,\mathrm{mag}^{-1}$]",
|
|
200
200
|
fontsize=LABEL_SIZE,
|
|
201
201
|
)
|
|
202
|
-
ax.set_title("Log-normalized power
|
|
202
|
+
ax.set_title("Log-normalized power law models", fontsize=TITLE_SIZE)
|
|
203
203
|
ax.tick_params(axis="both", labelsize=TICK_SIZE)
|
|
204
204
|
ax.legend(frameon=True, fontsize=LEGEND_SIZE, loc="best")
|
|
205
205
|
plt.tight_layout()
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|lfkitlogo| Schechter family models
|
|
6
6
|
===================================
|
|
7
7
|
|
|
8
|
-
The Schechter family contains luminosity functions with a power
|
|
8
|
+
The Schechter family contains luminosity functions with a power law faint end
|
|
9
9
|
and a bright-end cutoff. These models are commonly used when the abundance of
|
|
10
10
|
faint galaxies rises approximately as a power law, while the most luminous
|
|
11
11
|
galaxies are exponentially rare.
|
|
@@ -120,20 +120,18 @@ commands = [
|
|
|
120
120
|
]
|
|
121
121
|
|
|
122
122
|
[tool.tox.env.docs]
|
|
123
|
-
description = "Build docs with Sphinx
|
|
123
|
+
description = "Build docs with Sphinx"
|
|
124
124
|
extras = ["docs", "viz"]
|
|
125
125
|
commands = [
|
|
126
126
|
[
|
|
127
|
-
"
|
|
128
|
-
"-
|
|
129
|
-
"
|
|
130
|
-
"{tox_root}/
|
|
131
|
-
"--separate",
|
|
132
|
-
"--no-toc",
|
|
133
|
-
"-f",
|
|
127
|
+
"rm",
|
|
128
|
+
"-rf",
|
|
129
|
+
"{tox_root}/docs/_build",
|
|
130
|
+
"{tox_root}/docs/api/generated",
|
|
134
131
|
],
|
|
135
132
|
[
|
|
136
133
|
"sphinx-build",
|
|
134
|
+
"-E",
|
|
137
135
|
"-c", "{tox_root}/docs",
|
|
138
136
|
"-b", "{posargs:html}",
|
|
139
137
|
"{tox_root}/docs",
|
|
@@ -144,27 +142,18 @@ commands = [
|
|
|
144
142
|
|
|
145
143
|
[tool.tox.env.do]
|
|
146
144
|
description = "Run doctests + html build and open local docs"
|
|
147
|
-
recreate = true
|
|
148
145
|
extras = ["docs", "viz"]
|
|
149
146
|
allowlist_externals = ["open", "rm"]
|
|
150
147
|
commands = [
|
|
151
148
|
[
|
|
152
149
|
"rm",
|
|
153
150
|
"-rf",
|
|
154
|
-
"{tox_root}/docs/_build
|
|
155
|
-
"{tox_root}/docs/
|
|
156
|
-
],
|
|
157
|
-
[
|
|
158
|
-
"sphinx-apidoc",
|
|
159
|
-
"-d", "2",
|
|
160
|
-
"-o", "{tox_root}/docs/api",
|
|
161
|
-
"{tox_root}/src/lfkit",
|
|
162
|
-
"--separate",
|
|
163
|
-
"--no-toc",
|
|
164
|
-
"-f",
|
|
151
|
+
"{tox_root}/docs/_build",
|
|
152
|
+
"{tox_root}/docs/api/generated",
|
|
165
153
|
],
|
|
166
154
|
[
|
|
167
155
|
"sphinx-build",
|
|
156
|
+
"-E",
|
|
168
157
|
"-b", "doctest",
|
|
169
158
|
"{tox_root}/docs",
|
|
170
159
|
"{tox_root}/docs/_build/doctest",
|
|
@@ -172,6 +161,7 @@ commands = [
|
|
|
172
161
|
],
|
|
173
162
|
[
|
|
174
163
|
"sphinx-build",
|
|
164
|
+
"-E",
|
|
175
165
|
"-b", "html",
|
|
176
166
|
"{tox_root}/docs",
|
|
177
167
|
"{tox_root}/docs/_build/html",
|
|
@@ -183,15 +173,13 @@ commands = [
|
|
|
183
173
|
[tool.tox.env.docs-releases]
|
|
184
174
|
description = "Build the documentation for lfkit releases using Sphinx"
|
|
185
175
|
extras = ["docs", "viz"]
|
|
186
|
-
allowlist_externals = ["cp"]
|
|
176
|
+
allowlist_externals = ["cp", "rm"]
|
|
187
177
|
commands = [
|
|
188
178
|
[
|
|
189
|
-
"
|
|
190
|
-
"-
|
|
191
|
-
"
|
|
192
|
-
"{tox_root}/
|
|
193
|
-
"--separate",
|
|
194
|
-
"-f",
|
|
179
|
+
"rm",
|
|
180
|
+
"-rf",
|
|
181
|
+
"{tox_root}/docs/_build",
|
|
182
|
+
"{tox_root}/docs/api/generated",
|
|
195
183
|
],
|
|
196
184
|
[
|
|
197
185
|
"sphinx-multiversion",
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.
|
|
22
|
-
__version_tuple__ = version_tuple = (0,
|
|
21
|
+
__version__ = version = '0.5.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 5, 0)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g8dbb26ee5'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""User-facing luminosity
|
|
1
|
+
"""User-facing luminosity function API namespaces."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
@@ -14,28 +14,43 @@ from lfkit.photometry import magnitudes as photo_magnitudes
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class LFIntegralsAPI:
|
|
17
|
-
"""Grouped API for luminosity function integrals.
|
|
17
|
+
"""Grouped API for luminosity function integrals.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
lf: Luminosity function object whose callable form is used by bound
|
|
21
|
+
integral methods.
|
|
22
|
+
"""
|
|
18
23
|
|
|
19
24
|
def __init__(self, lf) -> None:
|
|
20
25
|
self.lf = lf
|
|
21
26
|
|
|
22
27
|
|
|
23
28
|
class LFCompletenessAPI:
|
|
24
|
-
"""Grouped API for catalog
|
|
29
|
+
"""Grouped API for catalog completeness calculations.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
lf: Luminosity function object whose callable form is used by bound
|
|
33
|
+
completeness methods.
|
|
34
|
+
"""
|
|
25
35
|
|
|
26
36
|
def __init__(self, lf) -> None:
|
|
27
37
|
self.lf = lf
|
|
28
38
|
|
|
29
39
|
|
|
30
40
|
class LFRedshiftDensityAPI:
|
|
31
|
-
"""Grouped API for
|
|
41
|
+
"""Grouped API for luminosity function weighted redshift density calculations.
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
lf: Luminosity function object whose callable form is used by bound
|
|
45
|
+
redshift density methods.
|
|
46
|
+
"""
|
|
32
47
|
|
|
33
48
|
def __init__(self, lf) -> None:
|
|
34
49
|
self.lf = lf
|
|
35
50
|
|
|
36
51
|
|
|
37
52
|
class LFMagnitudesAPI:
|
|
38
|
-
"""Grouped API for apparent
|
|
53
|
+
"""Grouped API for apparent magnitude and absolute magnitude conversions."""
|
|
39
54
|
|
|
40
55
|
|
|
41
56
|
class LFLuminositiesAPI:
|
|
@@ -76,7 +91,20 @@ def expose_lf_function(
|
|
|
76
91
|
lf_arg_position: int | None = None,
|
|
77
92
|
lf_arg_name: str | None = None,
|
|
78
93
|
) -> Callable[..., Any]:
|
|
79
|
-
"""Expose a low
|
|
94
|
+
"""Expose a low level luminosity function helper as a bound API method.
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
function: Low level function to expose as a method.
|
|
98
|
+
lf_arg_position: Positional index where the luminosity function callable
|
|
99
|
+
should be inserted. If ``None``, no positional luminosity function
|
|
100
|
+
argument is inserted.
|
|
101
|
+
lf_arg_name: Keyword name used to pass the luminosity function callable.
|
|
102
|
+
If provided, this takes priority over ``lf_arg_position``.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
Bound method that injects ``self.lf._as_callable()`` before calling
|
|
106
|
+
``function``.
|
|
107
|
+
"""
|
|
80
108
|
|
|
81
109
|
@wraps(function)
|
|
82
110
|
def method(self, *args, **kwargs):
|
|
@@ -97,7 +125,14 @@ def expose_lf_function(
|
|
|
97
125
|
|
|
98
126
|
|
|
99
127
|
def _public_functions(module: object) -> dict[str, Callable[..., Any]]:
|
|
100
|
-
"""Return callable public functions declared by a module.
|
|
128
|
+
"""Return callable public functions declared by a module.
|
|
129
|
+
|
|
130
|
+
Args:
|
|
131
|
+
module: Module object with an optional ``__all__`` declaration.
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
Dictionary mapping public function names to callable objects.
|
|
135
|
+
"""
|
|
101
136
|
return {
|
|
102
137
|
name: getattr(module, name)
|
|
103
138
|
for name in getattr(module, "__all__", [])
|
|
@@ -106,13 +141,21 @@ def _public_functions(module: object) -> dict[str, Callable[..., Any]]:
|
|
|
106
141
|
|
|
107
142
|
|
|
108
143
|
def _method_name(module: object, function_name: str) -> str:
|
|
109
|
-
"""Return API method name for a low
|
|
144
|
+
"""Return the API method name for a low level function.
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
module: Module object that may define ``__api_aliases__``.
|
|
148
|
+
function_name: Name of the low level function.
|
|
149
|
+
|
|
150
|
+
Returns:
|
|
151
|
+
Public API method name, using ``__api_aliases__`` when available.
|
|
152
|
+
"""
|
|
110
153
|
aliases = getattr(module, "__api_aliases__", {})
|
|
111
154
|
return aliases.get(function_name, function_name)
|
|
112
155
|
|
|
113
156
|
|
|
114
157
|
def _attach_api_methods() -> None:
|
|
115
|
-
"""Attach low
|
|
158
|
+
"""Attach low level functions to their API namespace classes."""
|
|
116
159
|
for api_cls, spec in _API_NAMESPACES.items():
|
|
117
160
|
module = spec["module"]
|
|
118
161
|
bound_to_lf = spec.get("bound_to_lf", False)
|
|
@@ -21,60 +21,61 @@ __all__ = ["ConditionalLuminosityFunction"]
|
|
|
21
21
|
class ConditionalLuminosityFunction(LuminosityFunction):
|
|
22
22
|
"""User-facing wrapper for conditional luminosity function models.
|
|
23
23
|
|
|
24
|
-
A conditional luminosity function evaluates ``Phi(M |
|
|
25
|
-
``M`` is absolute magnitude and ``
|
|
26
|
-
|
|
24
|
+
A conditional luminosity function evaluates ``Phi(M | x_1, x_2, ...)``,
|
|
25
|
+
where ``M`` is absolute magnitude and the ``x_i`` are external conditioning
|
|
26
|
+
variables such as redshift, halo mass, environment, richness, stellar mass,
|
|
27
|
+
or other model-specific quantities.
|
|
27
28
|
|
|
28
29
|
Instances can be created either with the generic constructor or with
|
|
29
30
|
automatically generated model constructors.
|
|
30
|
-
|
|
31
|
-
Examples:
|
|
32
|
-
>>> clf = ConditionalLuminosityFunction(
|
|
33
|
-
... model="schechter",
|
|
34
|
-
... parameters={"phi_star": 1e-3, "m_star": -20.5, "alpha": -1.1},
|
|
35
|
-
... )
|
|
36
|
-
>>> phi = clf.phi(absolute_mag=-20.0, condition=0.5)
|
|
37
|
-
|
|
38
|
-
>>> ConditionalLuminosityFunction.available_models()
|
|
39
31
|
"""
|
|
40
32
|
|
|
41
33
|
def phi(
|
|
42
34
|
self,
|
|
43
35
|
absolute_mag: FloatInput,
|
|
44
|
-
|
|
36
|
+
*conditions: FloatInput,
|
|
45
37
|
) -> FloatArray:
|
|
46
38
|
"""Evaluate the conditional luminosity function.
|
|
47
39
|
|
|
48
40
|
Args:
|
|
49
41
|
absolute_mag: Absolute magnitude value or array.
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
*conditions: One or more conditioning variable values or arrays. The
|
|
43
|
+
meaning of each variable depends on the selected conditional
|
|
44
|
+
luminosity function model.
|
|
52
45
|
|
|
53
46
|
Returns:
|
|
54
47
|
Conditional luminosity function evaluated at ``absolute_mag`` and
|
|
55
|
-
|
|
48
|
+
the supplied conditioning variables.
|
|
56
49
|
|
|
57
50
|
Raises:
|
|
58
|
-
ValueError: If
|
|
59
|
-
registered as a conditional luminosity function.
|
|
51
|
+
ValueError: If no conditioning variables are provided, or if the
|
|
52
|
+
model is not registered as a conditional luminosity function.
|
|
60
53
|
"""
|
|
61
54
|
model_spec = get_conditional_lf_model(self.model)
|
|
62
55
|
|
|
63
|
-
if
|
|
56
|
+
if not conditions:
|
|
64
57
|
raise ValueError(
|
|
65
|
-
f"
|
|
66
|
-
f"model '{self.model}'."
|
|
58
|
+
f"At least one conditioning variable is required for conditional "
|
|
59
|
+
f"luminosity function model '{self.model}'."
|
|
67
60
|
)
|
|
68
61
|
|
|
62
|
+
condition_arrays = tuple(
|
|
63
|
+
np.asarray(condition_value, dtype=float) for condition_value in conditions
|
|
64
|
+
)
|
|
65
|
+
|
|
69
66
|
return model_spec.function(
|
|
70
67
|
np.asarray(absolute_mag, dtype=float),
|
|
71
|
-
|
|
68
|
+
*condition_arrays,
|
|
72
69
|
**self.parameters_dict,
|
|
73
70
|
)
|
|
74
71
|
|
|
75
72
|
@staticmethod
|
|
76
73
|
def available_models() -> list[str]:
|
|
77
|
-
"""Return conditional luminosity function model names.
|
|
74
|
+
"""Return registered conditional luminosity function model names.
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
Sorted list of registered conditional luminosity function model names.
|
|
78
|
+
"""
|
|
78
79
|
return sorted(CONDITIONAL_LF_MODELS)
|
|
79
80
|
|
|
80
81
|
|
|
@@ -83,7 +84,15 @@ def _make_conditional_constructor(
|
|
|
83
84
|
model_name: str,
|
|
84
85
|
function: Any,
|
|
85
86
|
):
|
|
86
|
-
"""Create a classmethod constructor from a registered conditional
|
|
87
|
+
"""Create a classmethod constructor from a registered conditional model.
|
|
88
|
+
|
|
89
|
+
Args:
|
|
90
|
+
model_name: Name of the registered conditional luminosity function model.
|
|
91
|
+
function: Registered low level conditional luminosity function callable.
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
Classmethod constructor for ``ConditionalLuminosityFunction``.
|
|
95
|
+
"""
|
|
87
96
|
signature = inspect.signature(function)
|
|
88
97
|
|
|
89
98
|
@classmethod
|
|
@@ -106,22 +115,24 @@ def _make_conditional_constructor(
|
|
|
106
115
|
constructor.__name__ = model_name
|
|
107
116
|
constructor.__qualname__ = f"ConditionalLuminosityFunction.{model_name}"
|
|
108
117
|
constructor.__doc__ = f"""Create a ``{model_name}`` conditional luminosity function.
|
|
109
|
-
|
|
110
|
-
The keyword arguments are inferred from the registered low
|
|
111
|
-
function. Required model parameters must be supplied by the user. Optional
|
|
112
|
-
model parameters use their low
|
|
113
|
-
|
|
114
|
-
Args:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
118
|
+
|
|
119
|
+
The keyword arguments are inferred from the registered low level model
|
|
120
|
+
function. Required model parameters must be supplied by the user. Optional
|
|
121
|
+
model parameters use their low level defaults unless explicitly provided.
|
|
122
|
+
|
|
123
|
+
Args:
|
|
124
|
+
meta: Optional metadata stored on the luminosity function object.
|
|
125
|
+
**parameters: Parameters passed to the registered conditional luminosity
|
|
126
|
+
function model.
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
Configured conditional luminosity function.
|
|
130
|
+
|
|
131
|
+
Examples:
|
|
132
|
+
>>> clf = ConditionalLuminosityFunction.{model_name}(...)
|
|
133
|
+
>>> phi = clf.phi(-20.0, 0.5)
|
|
134
|
+
>>> phi = clf.phi(-20.0, halo_mass, redshift)
|
|
135
|
+
"""
|
|
125
136
|
|
|
126
137
|
return constructor
|
|
127
138
|
|
|
@@ -131,27 +142,40 @@ def _parameters_from_signature(
|
|
|
131
142
|
signature: inspect.Signature,
|
|
132
143
|
provided: Mapping[str, Any],
|
|
133
144
|
) -> dict[str, Any]:
|
|
134
|
-
"""Build stored parameters
|
|
145
|
+
"""Build stored parameters from a function signature and user values.
|
|
135
146
|
|
|
136
|
-
Independent variables such as ``absolute_mag`` and
|
|
137
|
-
stored as model parameters. They are supplied later when calling
|
|
147
|
+
Independent variables such as ``absolute_mag`` and conditioning variables are
|
|
148
|
+
not stored as model parameters. They are supplied later when calling
|
|
138
149
|
:meth:`ConditionalLuminosityFunction.phi`.
|
|
139
150
|
|
|
140
151
|
Args:
|
|
141
|
-
signature: Signature of the registered low
|
|
152
|
+
signature: Signature of the registered low level conditional luminosity
|
|
153
|
+
function model.
|
|
142
154
|
provided: User-supplied constructor keyword arguments.
|
|
143
155
|
|
|
144
156
|
Returns:
|
|
145
|
-
Dictionary of model parameters
|
|
157
|
+
Dictionary of model parameters stored on the API object.
|
|
146
158
|
|
|
147
159
|
Raises:
|
|
148
160
|
TypeError: If the user provides a keyword that is not accepted by the
|
|
149
|
-
registered low
|
|
161
|
+
registered low level model function.
|
|
150
162
|
"""
|
|
151
163
|
payload: dict[str, Any] = {}
|
|
152
164
|
|
|
165
|
+
independent_names = {
|
|
166
|
+
"absolute_mag",
|
|
167
|
+
"condition",
|
|
168
|
+
"conditions",
|
|
169
|
+
"z",
|
|
170
|
+
"redshift",
|
|
171
|
+
"x",
|
|
172
|
+
"halo_mass",
|
|
173
|
+
"environment",
|
|
174
|
+
"galaxy_type",
|
|
175
|
+
}
|
|
176
|
+
|
|
153
177
|
for name, parameter in signature.parameters.items():
|
|
154
|
-
if name in
|
|
178
|
+
if name in independent_names:
|
|
155
179
|
continue
|
|
156
180
|
|
|
157
181
|
if parameter.kind in {
|