rubin-sim 2.6.1.dev2__py3-none-any.whl
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.
- batch/compile_prenight_metadata_cache.sh +34 -0
- batch/run_auxtel_prenight_sims.sh +163 -0
- batch/run_prenight_sims.sh +239 -0
- docs/.gitignore +3 -0
- docs/Makefile +32 -0
- docs/api.rst +25 -0
- docs/conf.py +8 -0
- docs/data-api.rst +12 -0
- docs/data-download.rst +70 -0
- docs/developer.rst +14 -0
- docs/documenteer.toml +11 -0
- docs/index.rst +22 -0
- docs/installation.rst +76 -0
- docs/introduction.rst +37 -0
- docs/maf-api-batches.rst +12 -0
- docs/maf-api-db.rst +12 -0
- docs/maf-api-maf-contrib.rst +12 -0
- docs/maf-api-maps.rst +12 -0
- docs/maf-api-metricbundles.rst +12 -0
- docs/maf-api-metrics.rst +12 -0
- docs/maf-api-plots.rst +12 -0
- docs/maf-api-run-comparison.rst +12 -0
- docs/maf-api-slicers.rst +12 -0
- docs/maf-api-stackers.rst +12 -0
- docs/maf-api-utils.rst +12 -0
- docs/maf-api.rst +22 -0
- docs/maf.rst +60 -0
- docs/metric_list.py +49 -0
- docs/moving-objects-api.rst +12 -0
- docs/moving-objects.rst +22 -0
- docs/phot-utils-api.rst +12 -0
- docs/phot-utils.rst +11 -0
- docs/prenight.rst +117 -0
- docs/protoarchive.rst +276 -0
- docs/satellite-constellations-api.rst +12 -0
- docs/satellite-constellations.rst +13 -0
- docs/selfcal-api.rst +12 -0
- docs/selfcal.rst +15 -0
- docs/sim-archive-api.rst +12 -0
- docs/skybrightness-api.rst +12 -0
- docs/skybrightness.rst +23 -0
- docs/user-guide.rst +28 -0
- docs/vseqarchive-architecture.rst +438 -0
- docs/vseqarchive-setup.rst +238 -0
- docs/vseqarchive.rst +225 -0
- rubin_sim/__init__.py +7 -0
- rubin_sim/data/__init__.py +1 -0
- rubin_sim/data/rs_download_data.py +155 -0
- rubin_sim/maf/__init__.py +34 -0
- rubin_sim/maf/batches/__init__.py +18 -0
- rubin_sim/maf/batches/altaz_batch.py +161 -0
- rubin_sim/maf/batches/col_map_dict.py +274 -0
- rubin_sim/maf/batches/common.py +388 -0
- rubin_sim/maf/batches/ddf_batch.py +728 -0
- rubin_sim/maf/batches/filterchange_batch.py +182 -0
- rubin_sim/maf/batches/glance_batch.py +591 -0
- rubin_sim/maf/batches/hourglass_batch.py +79 -0
- rubin_sim/maf/batches/info_batch.py +114 -0
- rubin_sim/maf/batches/metadata_batch.py +558 -0
- rubin_sim/maf/batches/moving_objects_batch.py +1587 -0
- rubin_sim/maf/batches/openshutter_batch.py +100 -0
- rubin_sim/maf/batches/radar_limited.py +1100 -0
- rubin_sim/maf/batches/science_radar_batch.py +1910 -0
- rubin_sim/maf/batches/skycoverage.py +155 -0
- rubin_sim/maf/batches/slew_batch.py +146 -0
- rubin_sim/maf/batches/srd_batch.py +637 -0
- rubin_sim/maf/batches/time_batch.py +757 -0
- rubin_sim/maf/batches/time_sci_batch.py +105 -0
- rubin_sim/maf/batches/visitdepth_batch.py +485 -0
- rubin_sim/maf/db/__init__.py +2 -0
- rubin_sim/maf/db/add_run.py +34 -0
- rubin_sim/maf/db/results_db.py +1074 -0
- rubin_sim/maf/db/tracking_db.py +332 -0
- rubin_sim/maf/ddf_dir.py +53 -0
- rubin_sim/maf/generate_ss.py +218 -0
- rubin_sim/maf/glance_dir.py +58 -0
- rubin_sim/maf/maf_contrib/__init__.py +25 -0
- rubin_sim/maf/maf_contrib/calculate_lsst_field_visibility_astropy.py +170 -0
- rubin_sim/maf/maf_contrib/depth_limited_num_gal_metric.py +109 -0
- rubin_sim/maf/maf_contrib/example_new_metrics.py +40 -0
- rubin_sim/maf/maf_contrib/filter_pair_t_gaps_metric.py +208 -0
- rubin_sim/maf/maf_contrib/grb_transient_metric.py +249 -0
- rubin_sim/maf/maf_contrib/gw170817_det_metric.py +72 -0
- rubin_sim/maf/maf_contrib/intervals_between_obs_metric.py +68 -0
- rubin_sim/maf/maf_contrib/kne_metrics.py +473 -0
- rubin_sim/maf/maf_contrib/lss_metrics.py +45 -0
- rubin_sim/maf/maf_contrib/lss_obs_strategy/__init__.py +3 -0
- rubin_sim/maf/maf_contrib/lss_obs_strategy/constants_for_pipeline.py +73 -0
- rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_metric_extended.py +205 -0
- rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_with_pixel_calibration.py +171 -0
- rubin_sim/maf/maf_contrib/lv_dwarfs/__init__.py +1 -0
- rubin_sim/maf/maf_contrib/lv_dwarfs/lv_dwarfs_metrics.py +388 -0
- rubin_sim/maf/maf_contrib/microlensing_metric.py +593 -0
- rubin_sim/maf/maf_contrib/num_obs_in_survey_time_overlap_metric.py +43 -0
- rubin_sim/maf/maf_contrib/periodic_metric.py +51 -0
- rubin_sim/maf/maf_contrib/periodic_star_metric.py +186 -0
- rubin_sim/maf/maf_contrib/periodic_star_modulation_metric.py +236 -0
- rubin_sim/maf/maf_contrib/presto_color_kne_pop_metric.py +441 -0
- rubin_sim/maf/maf_contrib/selfcal_uniformity_metric.py +171 -0
- rubin_sim/maf/maf_contrib/star_count_mass_metric.py +64 -0
- rubin_sim/maf/maf_contrib/star_count_metric.py +56 -0
- rubin_sim/maf/maf_contrib/star_counts/__init__.py +8 -0
- rubin_sim/maf/maf_contrib/star_counts/abs_mag.py +324 -0
- rubin_sim/maf/maf_contrib/star_counts/coords.py +99 -0
- rubin_sim/maf/maf_contrib/star_counts/readme.txt +1 -0
- rubin_sim/maf/maf_contrib/star_counts/spec_type.py +91 -0
- rubin_sim/maf/maf_contrib/star_counts/starcount.py +30 -0
- rubin_sim/maf/maf_contrib/star_counts/starcount_bymass.py +93 -0
- rubin_sim/maf/maf_contrib/star_counts/stellardensity.py +59 -0
- rubin_sim/maf/maf_contrib/static_probes_fom_summary_metric.py +386 -0
- rubin_sim/maf/maf_contrib/tdes_pop_metric.py +362 -0
- rubin_sim/maf/maf_contrib/transient_ascii_sed_metric.py +652 -0
- rubin_sim/maf/maf_contrib/triplet_metric.py +156 -0
- rubin_sim/maf/maf_contrib/var_depth_metric.py +157 -0
- rubin_sim/maf/maf_contrib/xrb_metrics.py +523 -0
- rubin_sim/maf/maf_contrib/young_stellar_objects_metric.py +200 -0
- rubin_sim/maf/maf_night_report.py +200 -0
- rubin_sim/maf/make_fbs_tracking_db.py +90 -0
- rubin_sim/maf/maps/__init__.py +8 -0
- rubin_sim/maf/maps/base_map.py +72 -0
- rubin_sim/maf/maps/create_gaia_density_map.py +158 -0
- rubin_sim/maf/maps/dust_map.py +66 -0
- rubin_sim/maf/maps/dust_map_3d.py +190 -0
- rubin_sim/maf/maps/ebv_3d_hp.py +170 -0
- rubin_sim/maf/maps/ebv_hp.py +64 -0
- rubin_sim/maf/maps/gal_coords_map.py +22 -0
- rubin_sim/maf/maps/galactic_plane_priority_maps.py +210 -0
- rubin_sim/maf/maps/stellar_density_map.py +73 -0
- rubin_sim/maf/maps/trilegal_map.py +82 -0
- rubin_sim/maf/metadata_dir.py +90 -0
- rubin_sim/maf/metric_bundles/__init__.py +3 -0
- rubin_sim/maf/metric_bundles/metric_bundle.py +816 -0
- rubin_sim/maf/metric_bundles/metric_bundle_group.py +834 -0
- rubin_sim/maf/metric_bundles/mo_metric_bundle.py +646 -0
- rubin_sim/maf/metrics/__init__.py +52 -0
- rubin_sim/maf/metrics/agn_time_lag_metric.py +118 -0
- rubin_sim/maf/metrics/agnstructure.py +141 -0
- rubin_sim/maf/metrics/area_summary_metrics.py +120 -0
- rubin_sim/maf/metrics/base_metric.py +215 -0
- rubin_sim/maf/metrics/brown_dwarf_metric.py +162 -0
- rubin_sim/maf/metrics/cadence_metrics.py +400 -0
- rubin_sim/maf/metrics/calibration_metrics.py +618 -0
- rubin_sim/maf/metrics/chip_vendor_metric.py +43 -0
- rubin_sim/maf/metrics/color_slope_metrics.py +189 -0
- rubin_sim/maf/metrics/cosmology_summary_metrics.py +1212 -0
- rubin_sim/maf/metrics/coverage_metric.py +48 -0
- rubin_sim/maf/metrics/crowding_metric.py +255 -0
- rubin_sim/maf/metrics/cumulative_metric.py +46 -0
- rubin_sim/maf/metrics/dcr_metric.py +93 -0
- rubin_sim/maf/metrics/exgal_m5.py +57 -0
- rubin_sim/maf/metrics/fft_metric.py +27 -0
- rubin_sim/maf/metrics/galactic_plane_metrics.py +375 -0
- rubin_sim/maf/metrics/galplane_time_sampling_metrics.py +236 -0
- rubin_sim/maf/metrics/hourglass_metric.py +130 -0
- rubin_sim/maf/metrics/incremental_template_metric.py +255 -0
- rubin_sim/maf/metrics/kuiper_metrics.py +26 -0
- rubin_sim/maf/metrics/mo_metrics.py +1496 -0
- rubin_sim/maf/metrics/mo_summary_metrics.py +464 -0
- rubin_sim/maf/metrics/night_pointing_metric.py +70 -0
- rubin_sim/maf/metrics/optimal_m5_metric.py +94 -0
- rubin_sim/maf/metrics/pair_metric.py +69 -0
- rubin_sim/maf/metrics/periodic_detect_metric.py +133 -0
- rubin_sim/maf/metrics/phase_gap_metric.py +172 -0
- rubin_sim/maf/metrics/qso_number_counts_metric.py +138 -0
- rubin_sim/maf/metrics/scaling_metrics.py +148 -0
- rubin_sim/maf/metrics/schedview_metrics.py +39 -0
- rubin_sim/maf/metrics/season_metrics.py +344 -0
- rubin_sim/maf/metrics/simple_metrics.py +546 -0
- rubin_sim/maf/metrics/sky_sat_metric.py +18 -0
- rubin_sim/maf/metrics/sn_cadence_metric.py +104 -0
- rubin_sim/maf/metrics/sn_n_sn_metric.py +1364 -0
- rubin_sim/maf/metrics/sn_sl_metric.py +216 -0
- rubin_sim/maf/metrics/sn_snr_metric.py +715 -0
- rubin_sim/maf/metrics/snr_weight.py +24 -0
- rubin_sim/maf/metrics/star_density.py +77 -0
- rubin_sim/maf/metrics/string_count_metric.py +95 -0
- rubin_sim/maf/metrics/summary_metrics.py +201 -0
- rubin_sim/maf/metrics/surfb_metric.py +175 -0
- rubin_sim/maf/metrics/technical_metrics.py +271 -0
- rubin_sim/maf/metrics/tgaps.py +412 -0
- rubin_sim/maf/metrics/tomography_models.py +2034 -0
- rubin_sim/maf/metrics/transient_metrics.py +268 -0
- rubin_sim/maf/metrics/uniformity_metrics.py +418 -0
- rubin_sim/maf/metrics/use_metrics.py +55 -0
- rubin_sim/maf/metrics/vector_metrics.py +190 -0
- rubin_sim/maf/metrics/visit_groups_metric.py +341 -0
- rubin_sim/maf/metrics/weak_lensing_systematics_metric.py +210 -0
- rubin_sim/maf/plots/__init__.py +14 -0
- rubin_sim/maf/plots/hg_plotters.py +1117 -0
- rubin_sim/maf/plots/hourglass_plotters.py +120 -0
- rubin_sim/maf/plots/mo_plotters.py +358 -0
- rubin_sim/maf/plots/nd_plotters.py +220 -0
- rubin_sim/maf/plots/neo_distance_plotter.py +140 -0
- rubin_sim/maf/plots/night_pointing_plotter.py +96 -0
- rubin_sim/maf/plots/oned_plotters.py +114 -0
- rubin_sim/maf/plots/perceptual_rainbow.py +30 -0
- rubin_sim/maf/plots/plot_handler.py +766 -0
- rubin_sim/maf/plots/skyproj_plotters.py +540 -0
- rubin_sim/maf/plots/spatial_plotters.py +1029 -0
- rubin_sim/maf/plots/special_plotters.py +256 -0
- rubin_sim/maf/plots/two_d_plotters.py +177 -0
- rubin_sim/maf/plots/xyplotter.py +37 -0
- rubin_sim/maf/run_comparison/__init__.py +5 -0
- rubin_sim/maf/run_comparison/archive.py +584 -0
- rubin_sim/maf/run_comparison/gather_summaries.py +125 -0
- rubin_sim/maf/run_comparison/microlensing_compare.py +514 -0
- rubin_sim/maf/run_comparison/radar_plot.py +202 -0
- rubin_sim/maf/run_comparison/summary_plots.py +710 -0
- rubin_sim/maf/run_moving_calc.py +239 -0
- rubin_sim/maf/run_moving_fractions.py +128 -0
- rubin_sim/maf/run_moving_join.py +103 -0
- rubin_sim/maf/run_selfcal_metric.py +92 -0
- rubin_sim/maf/scimaf_dir.py +87 -0
- rubin_sim/maf/show_maf.py +227 -0
- rubin_sim/maf/slicers/__init__.py +13 -0
- rubin_sim/maf/slicers/base_slicer.py +513 -0
- rubin_sim/maf/slicers/base_spatial_slicer.py +202 -0
- rubin_sim/maf/slicers/healpix_sdss_slicer.py +118 -0
- rubin_sim/maf/slicers/healpix_slicer.py +189 -0
- rubin_sim/maf/slicers/healpix_subset_slicer.py +293 -0
- rubin_sim/maf/slicers/hourglass_slicer.py +37 -0
- rubin_sim/maf/slicers/mo_slicer.py +171 -0
- rubin_sim/maf/slicers/movie_slicer.py +288 -0
- rubin_sim/maf/slicers/nd_slicer.py +147 -0
- rubin_sim/maf/slicers/one_d_slicer.py +210 -0
- rubin_sim/maf/slicers/time_interval_slicers.py +283 -0
- rubin_sim/maf/slicers/uni_slicer.py +57 -0
- rubin_sim/maf/slicers/user_points_slicer.py +141 -0
- rubin_sim/maf/stackers/__init__.py +13 -0
- rubin_sim/maf/stackers/base_stacker.py +221 -0
- rubin_sim/maf/stackers/coord_stackers.py +224 -0
- rubin_sim/maf/stackers/date_stackers.py +192 -0
- rubin_sim/maf/stackers/general_stackers.py +683 -0
- rubin_sim/maf/stackers/get_col_info.py +104 -0
- rubin_sim/maf/stackers/label_stackers.py +114 -0
- rubin_sim/maf/stackers/m5_optimal_stacker.py +126 -0
- rubin_sim/maf/stackers/mo_phase.py +265 -0
- rubin_sim/maf/stackers/mo_stackers.py +486 -0
- rubin_sim/maf/stackers/n_follow_stacker.py +187 -0
- rubin_sim/maf/stackers/neo_dist_stacker.py +126 -0
- rubin_sim/maf/stackers/sdss_stackers.py +30 -0
- rubin_sim/maf/stackers/sn_stacker.py +152 -0
- rubin_sim/maf/stackers/teff_stacker.py +154 -0
- rubin_sim/maf/utils/__init__.py +6 -0
- rubin_sim/maf/utils/astrometry_utils.py +93 -0
- rubin_sim/maf/utils/generate_fov_map.py +58 -0
- rubin_sim/maf/utils/get_date_version.py +28 -0
- rubin_sim/maf/utils/maf_utils.py +212 -0
- rubin_sim/maf/utils/opsim_utils.py +259 -0
- rubin_sim/maf/utils/output_utils.py +34 -0
- rubin_sim/maf/utils/sn_n_sn_utils.py +894 -0
- rubin_sim/maf/utils/sn_utils.py +369 -0
- rubin_sim/maf/utils/stellar_mags.py +197 -0
- rubin_sim/maf/web/__init__.py +2 -0
- rubin_sim/maf/web/favicon.ico +0 -0
- rubin_sim/maf/web/maf_run_results.py +645 -0
- rubin_sim/maf/web/maf_tracking.py +139 -0
- rubin_sim/maf/web/sorttable.js +496 -0
- rubin_sim/maf/web/templates/allmetricresults.html +72 -0
- rubin_sim/maf/web/templates/configs.html +28 -0
- rubin_sim/maf/web/templates/macros.html +243 -0
- rubin_sim/maf/web/templates/master.html +294 -0
- rubin_sim/maf/web/templates/metricselect.html +91 -0
- rubin_sim/maf/web/templates/multicolor.html +147 -0
- rubin_sim/maf/web/templates/results.html +82 -0
- rubin_sim/maf/web/templates/runselect.html +58 -0
- rubin_sim/maf/web/templates/stats.html +50 -0
- rubin_sim/moving_objects/__init__.py +8 -0
- rubin_sim/moving_objects/base_obs.py +468 -0
- rubin_sim/moving_objects/cheby_fits.py +689 -0
- rubin_sim/moving_objects/cheby_values.py +231 -0
- rubin_sim/moving_objects/chebyshev_utils.py +365 -0
- rubin_sim/moving_objects/direct_obs.py +376 -0
- rubin_sim/moving_objects/make_lsst_obs.py +282 -0
- rubin_sim/moving_objects/ooephemerides.py +643 -0
- rubin_sim/moving_objects/orbits.py +507 -0
- rubin_sim/moving_objects/pre_generate.py +37 -0
- rubin_sim/moving_objects/utils.py +61 -0
- rubin_sim/phot_utils/__init__.py +7 -0
- rubin_sim/phot_utils/bandpass.py +425 -0
- rubin_sim/phot_utils/photometric_parameters.py +449 -0
- rubin_sim/phot_utils/physical_parameters.py +50 -0
- rubin_sim/phot_utils/predicted_zeropoints.py +245 -0
- rubin_sim/phot_utils/sed.py +1773 -0
- rubin_sim/phot_utils/sed_utils.py +52 -0
- rubin_sim/phot_utils/signaltonoise.py +695 -0
- rubin_sim/phot_utils/spectral_resampling.py +161 -0
- rubin_sim/satellite_constellations/__init__.py +3 -0
- rubin_sim/satellite_constellations/basis_function.py +40 -0
- rubin_sim/satellite_constellations/model_observatory.py +157 -0
- rubin_sim/satellite_constellations/sat_utils.py +488 -0
- rubin_sim/selfcal/__init__.py +4 -0
- rubin_sim/selfcal/generate_catalog.py +188 -0
- rubin_sim/selfcal/offsets.py +119 -0
- rubin_sim/selfcal/solver.py +143 -0
- rubin_sim/selfcal/star_tools.py +42 -0
- rubin_sim/sim_archive/__init__.py +14 -0
- rubin_sim/sim_archive/conda_packages.py +65 -0
- rubin_sim/sim_archive/future_vsarch.py +480 -0
- rubin_sim/sim_archive/make_snapshot.py +255 -0
- rubin_sim/sim_archive/prenight.py +216 -0
- rubin_sim/sim_archive/prenightindex.py +229 -0
- rubin_sim/sim_archive/prototype.py +1029 -0
- rubin_sim/sim_archive/sim_archive.py +680 -0
- rubin_sim/sim_archive/tempdb.py +56 -0
- rubin_sim/sim_archive/util.py +146 -0
- rubin_sim/sim_archive/vseqarchive.py +965 -0
- rubin_sim/sim_archive/vseqmetadata.py +1721 -0
- rubin_sim/skybrightness/__init__.py +5 -0
- rubin_sim/skybrightness/allsky_db.py +93 -0
- rubin_sim/skybrightness/data/ESO_Spectra/eso_tools.py +505 -0
- rubin_sim/skybrightness/data/solarSpec/package.py +22 -0
- rubin_sim/skybrightness/generate_hdf5.py +243 -0
- rubin_sim/skybrightness/interp_components.py +798 -0
- rubin_sim/skybrightness/sky_model.py +771 -0
- rubin_sim/skybrightness/twilight_func.py +83 -0
- rubin_sim/skybrightness/utils.py +91 -0
- rubin_sim-2.6.1.dev2.dist-info/METADATA +95 -0
- rubin_sim-2.6.1.dev2.dist-info/RECORD +387 -0
- rubin_sim-2.6.1.dev2.dist-info/WHEEL +5 -0
- rubin_sim-2.6.1.dev2.dist-info/entry_points.txt +24 -0
- rubin_sim-2.6.1.dev2.dist-info/licenses/LICENSE +674 -0
- rubin_sim-2.6.1.dev2.dist-info/top_level.txt +5 -0
- sql/make_vseqmeta.sql +251 -0
- tests/data/test_data.py +26 -0
- tests/data/test_ddf_grid.py +17 -0
- tests/maf/test_3x2fom.py +68 -0
- tests/maf/test_archive.py +162 -0
- tests/maf/test_basemetrics.py +99 -0
- tests/maf/test_batchcommon.py +36 -0
- tests/maf/test_batches.py +159 -0
- tests/maf/test_cadencemetrics.py +388 -0
- tests/maf/test_calibrationmetrics.py +242 -0
- tests/maf/test_color_slopes.py +71 -0
- tests/maf/test_cosmology_summaries.py +20 -0
- tests/maf/test_gathersummaries.py +48 -0
- tests/maf/test_healpixslicer.py +439 -0
- tests/maf/test_healpixsubsetslicer.py +273 -0
- tests/maf/test_hgplotters.py +145 -0
- tests/maf/test_hourglassmetric.py +33 -0
- tests/maf/test_io.py +187 -0
- tests/maf/test_json.py +169 -0
- tests/maf/test_maps.py +199 -0
- tests/maf/test_metricbundle.py +69 -0
- tests/maf/test_mometrics.py +422 -0
- tests/maf/test_movieslicer.py +216 -0
- tests/maf/test_ndslicer.py +240 -0
- tests/maf/test_neodistanceplotter.py +41 -0
- tests/maf/test_onedslicer.py +245 -0
- tests/maf/test_opsimutils.py +80 -0
- tests/maf/test_plotters.py +134 -0
- tests/maf/test_resultsdb.py +145 -0
- tests/maf/test_schedviewmetrics.py +14 -0
- tests/maf/test_simplemetrics.py +200 -0
- tests/maf/test_snmetrics.py +335 -0
- tests/maf/test_snmetrics_nsn.py +123 -0
- tests/maf/test_stackers.py +423 -0
- tests/maf/test_stellarmags.py +50 -0
- tests/maf/test_stringcount.py +26 -0
- tests/maf/test_summary_plots.py +197 -0
- tests/maf/test_summarymetrics.py +82 -0
- tests/maf/test_technicalmetrics.py +267 -0
- tests/maf/test_templatemetrics.py +86 -0
- tests/maf/test_timeintervalslicers.py +97 -0
- tests/maf/test_trackingdb.py +88 -0
- tests/maf/test_unislicer.py +116 -0
- tests/maf/test_vectormetrics.py +225 -0
- tests/maf/test_visitgroupsmetric.py +181 -0
- tests/moving_objects/test_camera.py +39 -0
- tests/moving_objects/test_chebyfits.py +188 -0
- tests/moving_objects/test_chebyshevutils.py +76 -0
- tests/moving_objects/test_chebyvalues.py +245 -0
- tests/moving_objects/test_ephemerides.py +219 -0
- tests/moving_objects/test_orbits.py +170 -0
- tests/moving_objects/test_sed_data.py +61 -0
- tests/phot_utils/test_approximatebandpasses.py +91 -0
- tests/phot_utils/test_photometricparameters.py +268 -0
- tests/phot_utils/test_photometry.py +61 -0
- tests/phot_utils/test_predicted_zeropoints.py +53 -0
- tests/phot_utils/test_read_bandpasses.py +29 -0
- tests/phot_utils/test_sed.py +368 -0
- tests/phot_utils/test_snr.py +370 -0
- tests/satellite_constellations/test_satellites.py +36 -0
- tests/sim_archive/test_make_snapshot.py +24 -0
- tests/sim_archive/test_prototype_sim_archive.py +204 -0
- tests/sim_archive/test_vseqarchive.py +947 -0
- tests/skybrightness/test_skymodel.py +359 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# An extension to the GalaxyCountsMetric from Lynne Jones:
|
|
2
|
+
# maf_contrib/mafContrib/lssMetrics.py
|
|
3
|
+
#
|
|
4
|
+
# Purpose: Estimate the number of galaxies expected at a particular
|
|
5
|
+
# coadded depth, accounting for
|
|
6
|
+
# dust extinction, magnitude cuts, as well as redshift-bin-specific
|
|
7
|
+
# powerlaws (based on mock catalogs
|
|
8
|
+
# from Nelson D. Padilla et al.).
|
|
9
|
+
#
|
|
10
|
+
# Includes functionality to calculate the galaxy counts from CFHTLS power
|
|
11
|
+
# law from LSST Science Book
|
|
12
|
+
# as well as to normalize the galaxy counts from mock catalogs to match
|
|
13
|
+
# those with CFHTLS power law at i<25.5.
|
|
14
|
+
#
|
|
15
|
+
# Need constantsForPipeline.py to import the power law constants and
|
|
16
|
+
# the normalization factor.
|
|
17
|
+
#
|
|
18
|
+
# Humna Awan: humna.awan@rutgers.edu
|
|
19
|
+
|
|
20
|
+
__all__ = ("GalaxyCountsMetricExtended",)
|
|
21
|
+
|
|
22
|
+
import warnings
|
|
23
|
+
|
|
24
|
+
import numpy as np
|
|
25
|
+
import scipy
|
|
26
|
+
|
|
27
|
+
from rubin_sim.maf.maf_contrib.lss_obs_strategy.constants_for_pipeline import (
|
|
28
|
+
normalization_constant,
|
|
29
|
+
power_law_const_a,
|
|
30
|
+
power_law_const_b,
|
|
31
|
+
)
|
|
32
|
+
from rubin_sim.maf.metrics.base_metric import BaseMetric
|
|
33
|
+
from rubin_sim.maf.metrics.exgal_m5 import ExgalM5
|
|
34
|
+
from rubin_sim.maf.metrics.simple_metrics import Coaddm5Metric
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class GalaxyCountsMetricExtended(BaseMetric):
|
|
38
|
+
"""Estimate galaxy counts per HEALpix pixel.
|
|
39
|
+
|
|
40
|
+
Accommodates for dust extinction, magnitude cuts,
|
|
41
|
+
and specification of the galaxy LF to specific redshift bin to consider.
|
|
42
|
+
Dependency (aside from MAF): constantsForPipeline.py
|
|
43
|
+
|
|
44
|
+
Parameters
|
|
45
|
+
------------
|
|
46
|
+
m5_col : `str`
|
|
47
|
+
name of column for depth in the data. Default: 'fiveSigmaDepth'
|
|
48
|
+
nside : `int`, opt
|
|
49
|
+
HEALpix resolution parameter. Default: 128
|
|
50
|
+
upper_mag_limit : `float`
|
|
51
|
+
upper limit on magnitude when calculating the galaxy counts.
|
|
52
|
+
Default: 32.0
|
|
53
|
+
include_dust_extinction : `bool`
|
|
54
|
+
set to False if do not want to include dust extinction.
|
|
55
|
+
Default: True
|
|
56
|
+
filter_band : `str`, opt
|
|
57
|
+
any one of 'u', 'g', 'r', 'i', 'z', 'y'. Default: 'i'
|
|
58
|
+
redshift_bin : `str`, opt
|
|
59
|
+
options include '0.<z<0.15', '0.15<z<0.37', '0.37<z<0.66,
|
|
60
|
+
'0.66<z<1.0',
|
|
61
|
+
'1.0<z<1.5', '1.5<z<2.0', '2.0<z<2.5', '2.5<z<3.0','3.0<z<3.5',
|
|
62
|
+
'3.5<z<4.0',
|
|
63
|
+
'all' for no redshift restriction (i.e. 0.<z<4.0)
|
|
64
|
+
Default: 'all'
|
|
65
|
+
cfht_ls_counts : `bool`, opt
|
|
66
|
+
set to True if want to calculate the total galaxy counts from CFHTLS
|
|
67
|
+
powerlaw from LSST Science Book. Must be run with redshift_bin= 'all'
|
|
68
|
+
Default: False
|
|
69
|
+
normalized_mock_catalog_counts : `bool`, opt
|
|
70
|
+
set to False if want the raw/un-normalized galaxy counts from
|
|
71
|
+
mock catalogs.
|
|
72
|
+
Default: True
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
def __init__(
|
|
76
|
+
self,
|
|
77
|
+
m5_col="fiveSigmaDepth",
|
|
78
|
+
filter_col="filter",
|
|
79
|
+
nside=128,
|
|
80
|
+
metric_name="GalaxyCountsMetricExtended",
|
|
81
|
+
units="Galaxy Counts",
|
|
82
|
+
upper_mag_limit=32.0,
|
|
83
|
+
include_dust_extinction=True,
|
|
84
|
+
filter_band="i",
|
|
85
|
+
redshift_bin="all",
|
|
86
|
+
cfht_ls_counts=False,
|
|
87
|
+
normalized_mock_catalog_counts=True,
|
|
88
|
+
**kwargs,
|
|
89
|
+
):
|
|
90
|
+
self.m5_col = m5_col
|
|
91
|
+
self.filter_col = filter_col
|
|
92
|
+
self.upper_mag_limit = upper_mag_limit
|
|
93
|
+
self.include_dust_extinction = include_dust_extinction
|
|
94
|
+
self.redshift_bin = redshift_bin
|
|
95
|
+
self.filter_band = filter_band
|
|
96
|
+
self.cfhtls_counts = cfht_ls_counts
|
|
97
|
+
self.normalized_mock_catalog_counts = normalized_mock_catalog_counts
|
|
98
|
+
# Use the coadded depth metric to calculate the coadded depth
|
|
99
|
+
# at each point.
|
|
100
|
+
# Specific band (e.g. r-band) will be provided by the sql constraint.
|
|
101
|
+
if self.include_dust_extinction:
|
|
102
|
+
# include dust extinction when calculating the co-added depth
|
|
103
|
+
self.coaddmetric = ExgalM5(m5_col=self.m5_col)
|
|
104
|
+
else:
|
|
105
|
+
self.coaddmetric = Coaddm5Metric(m5_col=self.m5_col)
|
|
106
|
+
|
|
107
|
+
# Need to scale down to indivdual HEALpix pixels.
|
|
108
|
+
# Galaxy count from the coadded depth is per 1 square degree.
|
|
109
|
+
# Number of galaxies ~= 41253 sq. degrees in the full sky divided
|
|
110
|
+
# by number of HEALpix pixels.
|
|
111
|
+
self.scale = 41253.0 / (int(12) * nside**2)
|
|
112
|
+
# Consider power laws from various redshift bins: importing
|
|
113
|
+
# the constant
|
|
114
|
+
# General power law form: 10**(a*m+b).
|
|
115
|
+
self.power_law_const_a = power_law_const_a
|
|
116
|
+
self.power_law_const_b = power_law_const_b
|
|
117
|
+
|
|
118
|
+
super().__init__(
|
|
119
|
+
col=[self.m5_col, self.filter_col],
|
|
120
|
+
metric_name=metric_name,
|
|
121
|
+
maps=self.coaddmetric.maps,
|
|
122
|
+
units=units,
|
|
123
|
+
**kwargs,
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
# ------------------------------------------------------------------------
|
|
127
|
+
# set up the integrand to calculate galaxy counts
|
|
128
|
+
def _gal_count(self, apparent_mag, coaddm5):
|
|
129
|
+
# calculate the change in the power law constant based on the band
|
|
130
|
+
# colors assumed here: (u-g)=(g-r)=(r-i)=(i-z)= (z-y)=0.4
|
|
131
|
+
factor = 0.4
|
|
132
|
+
band_correction_dict = {
|
|
133
|
+
"u": -3.0 * factor,
|
|
134
|
+
"g": -2.0 * factor,
|
|
135
|
+
"r": -1.0 * factor,
|
|
136
|
+
"i": 0.0,
|
|
137
|
+
"z": factor,
|
|
138
|
+
"y": 2.0 * factor,
|
|
139
|
+
}
|
|
140
|
+
if self.filter_band not in band_correction_dict:
|
|
141
|
+
warnings.warn("Invalid band in GalaxyCountsMetricExtended. " "Assuming i-band instead.")
|
|
142
|
+
band_correction = band_correction_dict.get(self.filter_band, 0.0)
|
|
143
|
+
|
|
144
|
+
# check to make sure that the z-bin assigned is valid.
|
|
145
|
+
if (self.redshift_bin != "all") and (self.redshift_bin not in list(self.power_law_const_a.keys())):
|
|
146
|
+
warnings.warn(
|
|
147
|
+
"Invalid redshift bin in GalaxyCountsMetricExtended. " "Defaulting to all redshifts."
|
|
148
|
+
)
|
|
149
|
+
self.redshift_bin = "all"
|
|
150
|
+
|
|
151
|
+
# consider the power laws
|
|
152
|
+
if self.redshift_bin == "all":
|
|
153
|
+
if self.cfhtls_counts:
|
|
154
|
+
# LSST power law: eq. 3.7 from LSST Science Book
|
|
155
|
+
# converted to per sq degree:
|
|
156
|
+
# (46*3600)*10^(0.31(i-25))
|
|
157
|
+
dn_gal = 46.0 * 3600.0 * np.power(10.0, 0.31 * (apparent_mag + band_correction - 25.0))
|
|
158
|
+
else:
|
|
159
|
+
# full z-range considered here: 0.<z<4.0
|
|
160
|
+
# sum the galaxy counts from each individual z-bin
|
|
161
|
+
dn_gal = 0.0
|
|
162
|
+
for key in list(self.power_law_const_a.keys()):
|
|
163
|
+
dn_gal += np.power(
|
|
164
|
+
10.0,
|
|
165
|
+
self.power_law_const_a[key] * (apparent_mag + band_correction)
|
|
166
|
+
+ self.power_law_const_b[key],
|
|
167
|
+
)
|
|
168
|
+
else:
|
|
169
|
+
dn_gal = np.power(
|
|
170
|
+
10.0,
|
|
171
|
+
self.power_law_const_a[self.redshift_bin] * (apparent_mag + band_correction)
|
|
172
|
+
+ self.power_law_const_b[self.redshift_bin],
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
completeness = 0.5 * scipy.special.erfc(apparent_mag - coaddm5)
|
|
176
|
+
return dn_gal * completeness
|
|
177
|
+
|
|
178
|
+
# ------------------------------------------------------------------------
|
|
179
|
+
def run(self, data_slice, slice_point=None):
|
|
180
|
+
# Calculate the coadded depth.
|
|
181
|
+
infilt = np.where(data_slice[self.filter_col] == self.filter_band)[0]
|
|
182
|
+
# If there are no visits in this filter,
|
|
183
|
+
# return immediately with a flagged value
|
|
184
|
+
if len(infilt) == 0:
|
|
185
|
+
return self.badval
|
|
186
|
+
|
|
187
|
+
coaddm5 = self.coaddmetric.run(data_slice[infilt], slice_point)
|
|
188
|
+
|
|
189
|
+
# some coaddm5 values are really small (i.e. min=10**-314).
|
|
190
|
+
# Zero them out.
|
|
191
|
+
if coaddm5 < 1:
|
|
192
|
+
num_gal = 0
|
|
193
|
+
|
|
194
|
+
else:
|
|
195
|
+
num_gal, int_err = scipy.integrate.quad(
|
|
196
|
+
self._gal_count, -np.inf, self.upper_mag_limit, args=coaddm5
|
|
197
|
+
)
|
|
198
|
+
# Normalize the galaxy counts (per sq deg)
|
|
199
|
+
if self.normalized_mock_catalog_counts and not self.cfhtls_counts:
|
|
200
|
+
num_gal = normalization_constant * num_gal
|
|
201
|
+
if num_gal < 1.0:
|
|
202
|
+
num_gal = 0.0
|
|
203
|
+
# scale down to individual HEALpix pixel instead of per sq deg
|
|
204
|
+
num_gal *= self.scale
|
|
205
|
+
return num_gal
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Purpose: Calculate the galaxy counts for each Healpix pixel directly.
|
|
2
|
+
# Necessary when accounting for pixel-specific calibration errors
|
|
3
|
+
# (as they modify the magnitude limit
|
|
4
|
+
# to which incompleteness-corrected galaxy LF is integrated over).
|
|
5
|
+
#
|
|
6
|
+
# Similar to GalaxyCountsMetric_extended but does the analysis on each
|
|
7
|
+
# HEALpix pixel individually,
|
|
8
|
+
# without communicating with the slicer. Like a psuedo-metric.
|
|
9
|
+
# Accommodates individual redshift
|
|
10
|
+
# bins; galaxy LF powerlaws based on mock catalogs from Padilla et al.
|
|
11
|
+
#
|
|
12
|
+
# Need constantsForPipeline.py to import the power law constants
|
|
13
|
+
# and the normalization factor.
|
|
14
|
+
#
|
|
15
|
+
# Humna Awan: humna.awan@rutgers.edu
|
|
16
|
+
|
|
17
|
+
__all__ = ("galaxy_counts_with_pixel_calibration",)
|
|
18
|
+
|
|
19
|
+
import warnings
|
|
20
|
+
|
|
21
|
+
import numpy as np
|
|
22
|
+
import scipy
|
|
23
|
+
|
|
24
|
+
from rubin_sim.maf.maf_contrib.lss_obs_strategy.constants_for_pipeline import (
|
|
25
|
+
normalization_constant,
|
|
26
|
+
power_law_const_a,
|
|
27
|
+
power_law_const_b,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def galaxy_counts_with_pixel_calibration(
|
|
32
|
+
coaddm5,
|
|
33
|
+
upper_mag_limit,
|
|
34
|
+
nside=128,
|
|
35
|
+
filter_band="i",
|
|
36
|
+
redshift_bin="all",
|
|
37
|
+
cfhtls_counts=False,
|
|
38
|
+
normalized_mock_catalog_counts=True,
|
|
39
|
+
):
|
|
40
|
+
"""Estimate galaxy counts for a given HEALpix pixel directly
|
|
41
|
+
(without a slicer).
|
|
42
|
+
|
|
43
|
+
Parameters
|
|
44
|
+
----------
|
|
45
|
+
coaddm5 : `float`
|
|
46
|
+
coadded 5sigma limiting magnitude for the pixel.
|
|
47
|
+
upper_mag_limit : `float`
|
|
48
|
+
upper limit on the magnitude, used to calculate num_gal.
|
|
49
|
+
nside: `int`, opt
|
|
50
|
+
HEALpix resolution parameter. Default: 128
|
|
51
|
+
filter_band : `str`, opt
|
|
52
|
+
Any one of 'u', 'g', 'r', 'i', 'z', 'y'. Default: 'i'
|
|
53
|
+
redshift_bin : `str`, opt
|
|
54
|
+
options include '0.<z<0.15', '0.15<z<0.37', '0.37<z<0.66,
|
|
55
|
+
'0.66<z<1.0',
|
|
56
|
+
'1.0<z<1.5', '1.5<z<2.0', '2.0<z<2.5', '2.5<z<3.0','3.0<z<3.5',
|
|
57
|
+
'3.5<z<4.0',
|
|
58
|
+
'all' for no redshift restriction (i.e. 0.<z<4.0)
|
|
59
|
+
Default: 'all'
|
|
60
|
+
cfhtls_counts : `bool`, opt
|
|
61
|
+
set to True if want to calculate the total galaxy counts from CFHTLS
|
|
62
|
+
powerlaw from LSST Science Book. Must be run with redshift_bin= 'all'
|
|
63
|
+
Default: False
|
|
64
|
+
normalized_mock_catalog_counts: `bool`, opt
|
|
65
|
+
set to False if want the raw/un-normalized galaxy counts from
|
|
66
|
+
mock catalogs.
|
|
67
|
+
Default: True
|
|
68
|
+
|
|
69
|
+
"""
|
|
70
|
+
# Need to scale down to indivdual HEALpix pixels.
|
|
71
|
+
# Galaxy count from the Coadded depth is per 1 square degree.
|
|
72
|
+
# Number of galaxies ~= 41253 sq. degrees in the full sky
|
|
73
|
+
# divided by number of HEALpix pixels.
|
|
74
|
+
scale = 41253.0 / (int(12) * nside**2)
|
|
75
|
+
|
|
76
|
+
# ------------------------------------------------------------------------
|
|
77
|
+
# calculate the change in the power law constant based on the band
|
|
78
|
+
# colors assumed here: (u-g)=(g-r)=(r-i)=(i-z)= (z-y)=0.4
|
|
79
|
+
band_correction = -100
|
|
80
|
+
if filter_band == "u":
|
|
81
|
+
# dimmer than i: u-g= 0.4 => g= u-0.4 => i= u-0.4*3
|
|
82
|
+
band_correction = -0.4 * 3.0
|
|
83
|
+
elif filter_band == "g":
|
|
84
|
+
# dimmer than i: g-r= 0.4 => r= g-0.4 => i= g-0.4*2
|
|
85
|
+
band_correction = -0.4 * 2.0
|
|
86
|
+
elif filter_band == "r":
|
|
87
|
+
# dimmer than i: i= r-0.4
|
|
88
|
+
band_correction = -0.4
|
|
89
|
+
elif filter_band == "i":
|
|
90
|
+
# i
|
|
91
|
+
band_correction = 0.0
|
|
92
|
+
elif filter_band == "z":
|
|
93
|
+
# brighter than i: i-z= 0.4 => i= z+0.4
|
|
94
|
+
band_correction = 0.4
|
|
95
|
+
elif filter_band == "y":
|
|
96
|
+
# brighter than i: z-y= 0.4 => z= y+0.4 => i= y+0.4*2
|
|
97
|
+
band_correction = 0.4 * 2.0
|
|
98
|
+
else:
|
|
99
|
+
print("ERROR: Invalid band in GalaxyCountsMetric_withPixelCalibErrors. Assuming i-band.")
|
|
100
|
+
band_correction = 0
|
|
101
|
+
|
|
102
|
+
# ------------------------------------------------------------------------
|
|
103
|
+
# check to make sure that the z-bin assigned is valid.
|
|
104
|
+
if (redshift_bin != "all") and (redshift_bin not in list(power_law_const_a.keys())):
|
|
105
|
+
print(
|
|
106
|
+
"ERROR: Invalid redshift bin in GalaxyCountsMetric_withPixelCalibration. "
|
|
107
|
+
"Defaulting to all redshifts."
|
|
108
|
+
)
|
|
109
|
+
redshift_bin = "all"
|
|
110
|
+
|
|
111
|
+
# ------------------------------------------------------------------------
|
|
112
|
+
# set up the functions for the integrand
|
|
113
|
+
# when have a redshift slice
|
|
114
|
+
def gal_count_bin(apparent_mag, coaddm5):
|
|
115
|
+
dn_gal = np.power(
|
|
116
|
+
10.0,
|
|
117
|
+
power_law_const_a[redshift_bin] * (apparent_mag + band_correction)
|
|
118
|
+
+ power_law_const_b[redshift_bin],
|
|
119
|
+
)
|
|
120
|
+
completeness = 0.5 * scipy.special.erfc(apparent_mag - coaddm5)
|
|
121
|
+
return dn_gal * completeness
|
|
122
|
+
|
|
123
|
+
# when have to consider the entire z-range
|
|
124
|
+
def gal_count_all(apparent_mag, coaddm5):
|
|
125
|
+
if cfhtls_counts:
|
|
126
|
+
# LSST power law: eq. 3.7 from LSST Science Book
|
|
127
|
+
# converted to per sq degree:
|
|
128
|
+
# (46*3600)*10^(0.31(i-25))
|
|
129
|
+
dn_gal = 46.0 * 3600.0 * np.power(10.0, 0.31 * (apparent_mag + band_correction - 25.0))
|
|
130
|
+
else:
|
|
131
|
+
# full z-range considered here: 0.<z<4.0
|
|
132
|
+
# sum the galaxy counts from each individual z-bin
|
|
133
|
+
dn_gal = 0.0
|
|
134
|
+
for key in list(power_law_const_a.keys()):
|
|
135
|
+
dn_gal += np.power(
|
|
136
|
+
10.0,
|
|
137
|
+
power_law_const_a[key] * (apparent_mag + band_correction) + power_law_const_b[key],
|
|
138
|
+
)
|
|
139
|
+
completeness = 0.5 * scipy.special.erfc(apparent_mag - coaddm5)
|
|
140
|
+
return dn_gal * completeness
|
|
141
|
+
|
|
142
|
+
# ------------------------------------------------------------------------
|
|
143
|
+
# some coaddm5 values come out really small (i.e. min= 10**-314).
|
|
144
|
+
# Zero them out.
|
|
145
|
+
if coaddm5 < 1:
|
|
146
|
+
coaddm5 = 0
|
|
147
|
+
|
|
148
|
+
# Calculate the number of galaxies.
|
|
149
|
+
with warnings.catch_warnings():
|
|
150
|
+
warnings.simplefilter("ignore")
|
|
151
|
+
# set up parameters to consider individual redshift range
|
|
152
|
+
if redshift_bin == "all":
|
|
153
|
+
num_gal, int_err = scipy.integrate.quad(gal_count_all, -np.inf, upper_mag_limit, args=coaddm5)
|
|
154
|
+
else:
|
|
155
|
+
num_gal, int_err = scipy.integrate.quad(gal_count_bin, -np.inf, upper_mag_limit, args=coaddm5)
|
|
156
|
+
|
|
157
|
+
if normalized_mock_catalog_counts and not cfhtls_counts:
|
|
158
|
+
# Normalize the counts from mock catalogs to match up to
|
|
159
|
+
# CFHTLS counts fori<25.5 galaxy catalog
|
|
160
|
+
# Found the scaling factor separately.
|
|
161
|
+
num_gal = normalization_constant * num_gal
|
|
162
|
+
|
|
163
|
+
# coaddm5=0 implies no observation. Set no observation to zero to num_gal.
|
|
164
|
+
if coaddm5 < 1.0:
|
|
165
|
+
num_gal = 0.0
|
|
166
|
+
if num_gal < 1.0:
|
|
167
|
+
num_gal = 0.0
|
|
168
|
+
|
|
169
|
+
# scale down to individual HEALpix pixel
|
|
170
|
+
num_gal *= scale
|
|
171
|
+
return num_gal
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .lv_dwarfs_metrics import *
|