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,388 @@
|
|
|
1
|
+
__all__ = (
|
|
2
|
+
"generate_known_lv_dwarf_slicer",
|
|
3
|
+
"make__fake_old_galaxy_lf",
|
|
4
|
+
"make_dwarf_lf_dicts",
|
|
5
|
+
"LVDwarfsMetric",
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
|
|
10
|
+
import astropy.units as u
|
|
11
|
+
import numpy as np
|
|
12
|
+
from astropy.coordinates import SkyCoord
|
|
13
|
+
from astropy.io import ascii, fits
|
|
14
|
+
from rubin_scheduler.data import get_data_dir
|
|
15
|
+
|
|
16
|
+
from rubin_sim.maf.maf_contrib.lss_obs_strategy import GalaxyCountsMetricExtended
|
|
17
|
+
from rubin_sim.maf.metrics.base_metric import BaseMetric
|
|
18
|
+
from rubin_sim.maf.metrics.exgal_m5 import ExgalM5
|
|
19
|
+
from rubin_sim.maf.metrics.star_density import StarDensityMetric
|
|
20
|
+
from rubin_sim.maf.slicers import UserPointsSlicer
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def generate_known_lv_dwarf_slicer():
|
|
24
|
+
"""Read the Karachentsev+ catalog of nearby galaxies,
|
|
25
|
+
and put the info about them into a UserPointSlicer object.
|
|
26
|
+
"""
|
|
27
|
+
filename = os.path.join(get_data_dir(), "maf/lvdwarfs", "lsst_galaxies_1p25to9Mpc_table.fits")
|
|
28
|
+
lv_dat0 = fits.getdata(filename)
|
|
29
|
+
|
|
30
|
+
# Keep only galaxies at dec < 35 deg.,
|
|
31
|
+
# and with stellar masses > 10^7 M_Sun (and <1e14).
|
|
32
|
+
lv_dat_cuts = (lv_dat0["dec"] < 35.0) & (lv_dat0["MStars"] > 1e7) & (lv_dat0["MStars"] < 1e14)
|
|
33
|
+
lv_dat = lv_dat0[lv_dat_cuts]
|
|
34
|
+
|
|
35
|
+
# Set up the slicer to evaluate the catalog we just made
|
|
36
|
+
slicer = UserPointsSlicer(lv_dat["ra"], lv_dat["dec"], lat_lon_deg=True, badval=-666)
|
|
37
|
+
# Add any additional information about each object to the slicer
|
|
38
|
+
slicer.slice_points["distance"] = lv_dat["dist_Mpc"]
|
|
39
|
+
|
|
40
|
+
return slicer
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# make a simulated LF for old galaxy of given integrated B,
|
|
44
|
+
# distance modulus mu, in any of filters ugrizY
|
|
45
|
+
def make__fake_old_galaxy_lf(int_b, mu, filtername):
|
|
46
|
+
"""
|
|
47
|
+
Make a simulated luminosity function for an old (10 Gyr) dwarf
|
|
48
|
+
galaxy of given integrated B magnitude, at a given distance modulus,
|
|
49
|
+
in any of the filters ugrizy.
|
|
50
|
+
|
|
51
|
+
Parameters
|
|
52
|
+
----------
|
|
53
|
+
int_b : `float`
|
|
54
|
+
Integrated B-band magnitude of the dwarf to simulate.
|
|
55
|
+
mu : `float`
|
|
56
|
+
Distance modulus at which to place the simulated dwarf.
|
|
57
|
+
filternams: `str`
|
|
58
|
+
Filter in which to produce the simulated luminosity function.
|
|
59
|
+
"""
|
|
60
|
+
if filtername == "y":
|
|
61
|
+
filtername == "Y"
|
|
62
|
+
model_bmag = 6.856379 # integrated B mag of the model LF being read
|
|
63
|
+
# Read a simulated luminosity function of [M/H]=-1.5, 10 Gyr stellar
|
|
64
|
+
# population:
|
|
65
|
+
filename = os.path.join(get_data_dir(), "maf/lvdwarfs", "LF_-1.5_10Gyr.dat")
|
|
66
|
+
LF = ascii.read(filename, header_start=12)
|
|
67
|
+
mags = LF["magbinc"]
|
|
68
|
+
counts = LF[filtername + "mag"]
|
|
69
|
+
# shift model LF to requested distance and dim it
|
|
70
|
+
mags = mags + mu
|
|
71
|
+
model_bmag = model_bmag + mu
|
|
72
|
+
# scale model counts up/down to reach the requested int_b
|
|
73
|
+
factor = np.power(10.0, -0.4 * (int_b - model_bmag))
|
|
74
|
+
counts = factor * counts
|
|
75
|
+
return mags, counts
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def make_dwarf_lf_dicts():
|
|
79
|
+
"""
|
|
80
|
+
Create dicts containing g- and i-band LFs for simulated dwarfs between
|
|
81
|
+
-10 < M_B < +3, so they can simply be looked up rather than having to
|
|
82
|
+
recreate them each time. Dict is keyed on M_B value.
|
|
83
|
+
"""
|
|
84
|
+
lf_dict_i = {}
|
|
85
|
+
lf_dict_g = {}
|
|
86
|
+
# Simulate a range from M_B=-10 to M_B=+5 in 0.1-mag increments.
|
|
87
|
+
tmp_mb = -10.0
|
|
88
|
+
|
|
89
|
+
for i in range(151):
|
|
90
|
+
mbkey = f"MB{tmp_mb:.2f}"
|
|
91
|
+
i_l_fmags, i_l_fcounts = make__fake_old_galaxy_lf(tmp_mb, 0.0, "i")
|
|
92
|
+
lf_dict_i[mbkey] = (np.array(i_l_fmags), np.array(i_l_fcounts))
|
|
93
|
+
g_l_fmags, g_l_fcounts = make__fake_old_galaxy_lf(tmp_mb, 0.0, "g")
|
|
94
|
+
lf_dict_g[mbkey] = (np.array(g_l_fmags), np.array(g_l_fcounts))
|
|
95
|
+
tmp_mb += 0.1
|
|
96
|
+
|
|
97
|
+
return lf_dict_g, lf_dict_i
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def _sum_luminosity(l_fmags, l_fcounts):
|
|
101
|
+
"""
|
|
102
|
+
Sum the luminosities from a given luminosity function.
|
|
103
|
+
|
|
104
|
+
Uses the first bin's magnitude as a reference, sums luminosities
|
|
105
|
+
relative to that reference star,
|
|
106
|
+
then converts back to magnitude at the end.
|
|
107
|
+
|
|
108
|
+
Parameters
|
|
109
|
+
----------
|
|
110
|
+
l_fmags : `np.array,` `float`
|
|
111
|
+
Magnitude bin values from the simulated LF.
|
|
112
|
+
l_fcounts : `np.array`, `int`
|
|
113
|
+
Number of stars in each magnitude bin.
|
|
114
|
+
"""
|
|
115
|
+
magref = l_fmags[0]
|
|
116
|
+
totlum = 0.0
|
|
117
|
+
|
|
118
|
+
for mag, count in zip(l_fmags, l_fcounts):
|
|
119
|
+
tmpmags = np.repeat(mag, count)
|
|
120
|
+
totlum += np.sum(10.0 ** ((magref - tmpmags) / 2.5))
|
|
121
|
+
|
|
122
|
+
mtot = magref - 2.5 * np.log10(totlum)
|
|
123
|
+
return mtot
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def _dwarf_sblimit(glim, ilim, nstars, lf_dict_g, lf_dict_i, distlim, rng):
|
|
127
|
+
"""
|
|
128
|
+
Calculate the surface brightness limit given the g- and i-band limiting
|
|
129
|
+
magnitudes and the number of stars required to detect the dwarf of
|
|
130
|
+
interest.
|
|
131
|
+
|
|
132
|
+
Parameters
|
|
133
|
+
----------
|
|
134
|
+
glim : `float`
|
|
135
|
+
Limiting magnitude (coaddM5) in g-band.
|
|
136
|
+
ilim : `float`
|
|
137
|
+
Limiting magnitude (coaddM5) in i-band.
|
|
138
|
+
nstars : `int`
|
|
139
|
+
Number of stars required to be able to detect the dwarf.
|
|
140
|
+
lf_dict_g, lf_dict_i : `dict`
|
|
141
|
+
Dicts of computed luminosity functions for artificial dwarfs, as
|
|
142
|
+
calculated by the function make_LF_dicts.
|
|
143
|
+
distlim : `float`
|
|
144
|
+
Distance limit (in Mpc) for which to calculate the limiting
|
|
145
|
+
surface brightness for dwarf detection.
|
|
146
|
+
rng : `np.random.Generator`
|
|
147
|
+
Random noise generator for poisson random number use.
|
|
148
|
+
"""
|
|
149
|
+
distance_limit = distlim * 1e6 # distance limit in parsecs
|
|
150
|
+
distmod_lim = 5.0 * np.log10(distance_limit) - 5.0
|
|
151
|
+
|
|
152
|
+
if (glim > 15) and (ilim > 15):
|
|
153
|
+
# print(glim, ilim, nstars)
|
|
154
|
+
fake_mb = -10.0
|
|
155
|
+
ng = 1e6
|
|
156
|
+
ni = 1e6
|
|
157
|
+
|
|
158
|
+
while (ng > nstars) and (ni > nstars) and fake_mb < 5.0:
|
|
159
|
+
# B_fake = distmod_limit+fake_mb
|
|
160
|
+
mbkey = f"MB{fake_mb:.2f}"
|
|
161
|
+
i_l_fmags0, i_l_fcounts0 = lf_dict_i[mbkey]
|
|
162
|
+
g_l_fmags0, g_l_fcounts0 = lf_dict_g[mbkey]
|
|
163
|
+
i_l_fcounts = rng.poisson(i_l_fcounts0)
|
|
164
|
+
g_l_fcounts = rng.poisson(g_l_fcounts0)
|
|
165
|
+
# Add the distance modulus to make it apparent mags
|
|
166
|
+
i_l_fmags = i_l_fmags0 + distmod_lim
|
|
167
|
+
# Add the distance modulus to make it apparent mags
|
|
168
|
+
g_l_fmags = g_l_fmags0 + distmod_lim
|
|
169
|
+
gsel = g_l_fmags <= glim
|
|
170
|
+
isel = i_l_fmags <= ilim
|
|
171
|
+
ng = np.sum(g_l_fcounts[gsel])
|
|
172
|
+
ni = np.sum(i_l_fcounts[isel])
|
|
173
|
+
fake_mb += 0.1
|
|
174
|
+
|
|
175
|
+
if fake_mb > -9.9 and (ng > 0) and (ni > 0):
|
|
176
|
+
gmag_tot = _sum_luminosity(g_l_fmags[gsel], g_l_fcounts[gsel]) - distmod_lim
|
|
177
|
+
imag_tot = _sum_luminosity(i_l_fmags[isel], i_l_fcounts[isel]) - distmod_lim
|
|
178
|
+
# S = m + 2.5logA, where in this case things are in sq. arcmin,
|
|
179
|
+
# so A = 1 arcmin^2 = 3600 arcsec^2
|
|
180
|
+
sbtot_g = distmod_lim + gmag_tot + 2.5 * np.log10(3600.0)
|
|
181
|
+
sbtot_i = distmod_lim + imag_tot + 2.5 * np.log10(3600.0)
|
|
182
|
+
mg_lim = gmag_tot
|
|
183
|
+
mi_lim = imag_tot
|
|
184
|
+
sbg_lim = sbtot_g
|
|
185
|
+
sbi_lim = sbtot_i
|
|
186
|
+
if ng < ni:
|
|
187
|
+
flag_lim = "g"
|
|
188
|
+
else:
|
|
189
|
+
flag_lim = "i"
|
|
190
|
+
else:
|
|
191
|
+
mg_lim = 999.9
|
|
192
|
+
mi_lim = 999.9
|
|
193
|
+
sbg_lim = 999.9
|
|
194
|
+
sbi_lim = 999.9
|
|
195
|
+
flag_lim = None
|
|
196
|
+
else:
|
|
197
|
+
mg_lim = 999.9
|
|
198
|
+
mi_lim = 999.9
|
|
199
|
+
sbg_lim = -999.9
|
|
200
|
+
sbi_lim = -999.9
|
|
201
|
+
flag_lim = None
|
|
202
|
+
|
|
203
|
+
return mg_lim, mi_lim, sbg_lim, sbi_lim, flag_lim
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class LVDwarfsMetric(BaseMetric):
|
|
207
|
+
"""
|
|
208
|
+
Estimate the detection limit in total dwarf luminosity for
|
|
209
|
+
resolved dwarf galaxies at a given distance.
|
|
210
|
+
|
|
211
|
+
This metric class uses simulated luminosity functions of dwarf galaxies
|
|
212
|
+
with known (assumed) luminosities to estimate the detection limit
|
|
213
|
+
(in total dwarf luminosity, M_V) for resolved dwarf galaxies at a
|
|
214
|
+
given distance. It can be applied to either known galaxies with their
|
|
215
|
+
discrete positions and distances, or an entire survey simulation with
|
|
216
|
+
a fixed distance limit.
|
|
217
|
+
|
|
218
|
+
In the default use (with the KnownLvDwarfsSlicer),
|
|
219
|
+
it returns detection limits for a catalog of known local volume dwarfs,
|
|
220
|
+
from the Karachentsev+ catalog of nearby galaxies.
|
|
221
|
+
|
|
222
|
+
Parameters
|
|
223
|
+
----------
|
|
224
|
+
radius : `float`
|
|
225
|
+
Radius of the field being considered (for discrete fields only).
|
|
226
|
+
By default, UserPointSlicer uses a 2.45-deg field radius.
|
|
227
|
+
distlim : `float`
|
|
228
|
+
Distance threshold in Mpc for which to calculate the limiting
|
|
229
|
+
dwarf detection luminosity. Only needed for healpix slicers,
|
|
230
|
+
but *required* if healpix is used.
|
|
231
|
+
cmd_frac : `float`
|
|
232
|
+
Fraction of the total area of the color-magnitude diagram
|
|
233
|
+
that is spanned by the tracer selection criteria. (e.g.,
|
|
234
|
+
the size of a box in color and magnitude to select RGB-star candidates)
|
|
235
|
+
stargal_contamination : `float`
|
|
236
|
+
Fraction of objects in CMD selection region that are actually
|
|
237
|
+
unresolved galaxies that were mis-classified as stars.
|
|
238
|
+
nsigma : `float`
|
|
239
|
+
Required detection significance to declare a simulated
|
|
240
|
+
dwarf "detected."
|
|
241
|
+
"""
|
|
242
|
+
|
|
243
|
+
def __init__(
|
|
244
|
+
self,
|
|
245
|
+
radius=2.45,
|
|
246
|
+
distlim=None,
|
|
247
|
+
cmd_frac=0.1,
|
|
248
|
+
stargal_contamination=0.40,
|
|
249
|
+
nsigma=10.0,
|
|
250
|
+
metric_name="LVDwarfs",
|
|
251
|
+
seed=505,
|
|
252
|
+
**kwargs,
|
|
253
|
+
):
|
|
254
|
+
self.radius = radius
|
|
255
|
+
self.filter_col = "filter"
|
|
256
|
+
self.m5_col = "fiveSigmaDepth"
|
|
257
|
+
self.cmd_frac = cmd_frac
|
|
258
|
+
self.stargal_contamination = stargal_contamination
|
|
259
|
+
self.nsigma = nsigma
|
|
260
|
+
|
|
261
|
+
if distlim is not None:
|
|
262
|
+
# If the distance limit was set on input, extract that info:
|
|
263
|
+
self.distlim = distlim
|
|
264
|
+
else:
|
|
265
|
+
# If no distance limit specified, assume the intention is to search
|
|
266
|
+
# around known Local Volume host galaxies.
|
|
267
|
+
self.distlim = None
|
|
268
|
+
filename = os.path.join(get_data_dir(), "maf/lvdwarfs", "lsst_galaxies_1p25to9Mpc_table.fits")
|
|
269
|
+
lv_dat0 = fits.getdata(filename)
|
|
270
|
+
# Keep only galaxies at dec < 35 deg.,
|
|
271
|
+
# and with stellar masses > 10^7 M_Sun.
|
|
272
|
+
lv_dat_cuts = (lv_dat0["dec"] < 35.0) & (lv_dat0["MStars"] > 1e7) & (lv_dat0["MStars"] < 1e14)
|
|
273
|
+
lv_dat = lv_dat0[lv_dat_cuts]
|
|
274
|
+
sc_dat = SkyCoord(
|
|
275
|
+
ra=lv_dat["ra"] * u.deg,
|
|
276
|
+
dec=lv_dat["dec"] * u.deg,
|
|
277
|
+
distance=lv_dat["dist_Mpc"] * u.Mpc,
|
|
278
|
+
)
|
|
279
|
+
self.sc_dat = sc_dat
|
|
280
|
+
|
|
281
|
+
self.lf_dict_g, self.lf_dict_i = make_dwarf_lf_dicts()
|
|
282
|
+
|
|
283
|
+
# Set up already-defined metrics that we will need:
|
|
284
|
+
self.exgal_coaddm5 = ExgalM5(m5_col=self.m5_col, filter_col=self.filter_col)
|
|
285
|
+
# The StarDensityMetric calculates the number of stars in i band
|
|
286
|
+
self.star_density_metric = StarDensityMetric(filtername="i")
|
|
287
|
+
# The galaxy counts metric calculates the number of galaxies in i band
|
|
288
|
+
self.galaxy_counts_metric = GalaxyCountsMetricExtended(
|
|
289
|
+
m5_col=self.m5_col, filter_band="i", include_dust_extinction=True
|
|
290
|
+
)
|
|
291
|
+
# Set the scale for the GalaxyCountMetric_extended to 1, so it returns
|
|
292
|
+
# galaxies per sq deg, not n galaxies per healpixel
|
|
293
|
+
self.galaxy_counts_metric.scale = 1
|
|
294
|
+
|
|
295
|
+
cols = [self.m5_col, self.filter_col]
|
|
296
|
+
# GalaxyCountsMetric needs the DustMap,
|
|
297
|
+
# and StarDensityMetric needs StellarDensityMap:
|
|
298
|
+
maps = ["DustMap", "StellarDensityMap"]
|
|
299
|
+
super().__init__(col=cols, metric_name=metric_name, maps=maps, units="M_V limit", **kwargs)
|
|
300
|
+
|
|
301
|
+
# Set up a random number generator,
|
|
302
|
+
# so that metric results are repeatable
|
|
303
|
+
self.rng = np.random.default_rng(seed)
|
|
304
|
+
|
|
305
|
+
def run(self, data_slice, slice_point=None):
|
|
306
|
+
# Identify observations in g and i bandpasses
|
|
307
|
+
gband = data_slice[self.filter_col] == "g"
|
|
308
|
+
iband = data_slice[self.filter_col] == "i"
|
|
309
|
+
# if there are no visits in either of g or i band, exit
|
|
310
|
+
if len(np.where(gband)[0]) == 0 or len(np.where(iband)[0]) == 0:
|
|
311
|
+
return self.badval
|
|
312
|
+
|
|
313
|
+
# calculate the dust-extincted coadded 5-sigma limiting mags
|
|
314
|
+
# in the g and i bands:
|
|
315
|
+
g5 = self.exgal_coaddm5.run(data_slice[gband], slice_point)
|
|
316
|
+
i5 = self.exgal_coaddm5.run(data_slice[iband], slice_point)
|
|
317
|
+
|
|
318
|
+
if g5 < 15 or i5 < 15:
|
|
319
|
+
# If the limiting magnitudes won't even match the
|
|
320
|
+
# stellar density maps, exit
|
|
321
|
+
return self.badval
|
|
322
|
+
|
|
323
|
+
# Find the number of stars per sq arcsecond at the i band limit
|
|
324
|
+
# (this is a bit of a hack to get the starDensityMetric to
|
|
325
|
+
# calculate the nstars at this mag exactly)
|
|
326
|
+
star_i5 = min(27.9, i5)
|
|
327
|
+
self.star_density_metric.magLimit = star_i5
|
|
328
|
+
|
|
329
|
+
nstar_sqarcsec = self.star_density_metric.run(data_slice, slice_point)
|
|
330
|
+
|
|
331
|
+
# Calculate the number of galaxies per sq degree
|
|
332
|
+
ngal_sqdeg = self.galaxy_counts_metric.run(data_slice, slice_point)
|
|
333
|
+
# GalaxyCountsMetric is undefined in some places. These cases return
|
|
334
|
+
# zero; catch these and set the galaxy counts in those regions to a
|
|
335
|
+
# very high value. (this may not be true after catching earlier
|
|
336
|
+
# no-visits issues)
|
|
337
|
+
if ngal_sqdeg < 10.0:
|
|
338
|
+
ngal_sqdeg = 1e7
|
|
339
|
+
|
|
340
|
+
# Convert from per sq deg and per sq arcsecond
|
|
341
|
+
# into #'s per sq arcminute
|
|
342
|
+
ngal_sqarcmin = ngal_sqdeg / 3600
|
|
343
|
+
nstar_sqarcmin = nstar_sqarcsec * 3600
|
|
344
|
+
|
|
345
|
+
if ngal_sqarcmin < 0 or nstar_sqarcmin < 0:
|
|
346
|
+
print(
|
|
347
|
+
f"Here be a problem - ngals_sqarcmin {ngal_sqarcmin} or nstar_sqarcmin {nstar_sqarcmin} "
|
|
348
|
+
f"are negative. depths: {g5}, {i5}. "
|
|
349
|
+
f'{slice_point["ra"], slice_point["dec"], slice_point["sid"]}'
|
|
350
|
+
)
|
|
351
|
+
# The number of stars required to reach nsigma is
|
|
352
|
+
# nsigma times the Poisson fluctuations of the background
|
|
353
|
+
# (stars+galaxies contamination):
|
|
354
|
+
nstars_required = self.nsigma * np.sqrt(
|
|
355
|
+
(ngal_sqarcmin * self.cmd_frac * self.stargal_contamination) + (nstar_sqarcmin * self.cmd_frac)
|
|
356
|
+
)
|
|
357
|
+
|
|
358
|
+
if self.distlim is not None:
|
|
359
|
+
# Use the distlim if a healpix slicer is input
|
|
360
|
+
distlim = self.distlim
|
|
361
|
+
else:
|
|
362
|
+
# Use discrete distances for known galaxies if a
|
|
363
|
+
# UserPointSlicer:
|
|
364
|
+
distlim = slice_point["distance"] * u.Mpc
|
|
365
|
+
|
|
366
|
+
# Calculate the limiting luminosity and surface brightness
|
|
367
|
+
# based on g5 and i5:
|
|
368
|
+
mg_lim, mi_lim, sb_g_lim, sb_i_lim, flag_lim = _dwarf_sblimit(
|
|
369
|
+
g5,
|
|
370
|
+
i5,
|
|
371
|
+
nstars_required,
|
|
372
|
+
self.lf_dict_g,
|
|
373
|
+
self.lf_dict_i,
|
|
374
|
+
distlim=distlim.value,
|
|
375
|
+
rng=self.rng,
|
|
376
|
+
)
|
|
377
|
+
|
|
378
|
+
if flag_lim is None:
|
|
379
|
+
mv = self.badval
|
|
380
|
+
|
|
381
|
+
else:
|
|
382
|
+
# To go from HSC g and i bands to V, use the conversion
|
|
383
|
+
# from Appendix A of Komiyama+2018, ApJ, 853, 29:
|
|
384
|
+
# V = g_hsc - 0.371*(gi_hsc)-0.068
|
|
385
|
+
mv = mg_lim - 0.371 * (mg_lim - mi_lim) - 0.068
|
|
386
|
+
# sbv = sb_g_lim - 0.371 * (sb_g_lim - sb_i_lim) - 0.068
|
|
387
|
+
|
|
388
|
+
return mv
|