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.
Files changed (387) hide show
  1. batch/compile_prenight_metadata_cache.sh +34 -0
  2. batch/run_auxtel_prenight_sims.sh +163 -0
  3. batch/run_prenight_sims.sh +239 -0
  4. docs/.gitignore +3 -0
  5. docs/Makefile +32 -0
  6. docs/api.rst +25 -0
  7. docs/conf.py +8 -0
  8. docs/data-api.rst +12 -0
  9. docs/data-download.rst +70 -0
  10. docs/developer.rst +14 -0
  11. docs/documenteer.toml +11 -0
  12. docs/index.rst +22 -0
  13. docs/installation.rst +76 -0
  14. docs/introduction.rst +37 -0
  15. docs/maf-api-batches.rst +12 -0
  16. docs/maf-api-db.rst +12 -0
  17. docs/maf-api-maf-contrib.rst +12 -0
  18. docs/maf-api-maps.rst +12 -0
  19. docs/maf-api-metricbundles.rst +12 -0
  20. docs/maf-api-metrics.rst +12 -0
  21. docs/maf-api-plots.rst +12 -0
  22. docs/maf-api-run-comparison.rst +12 -0
  23. docs/maf-api-slicers.rst +12 -0
  24. docs/maf-api-stackers.rst +12 -0
  25. docs/maf-api-utils.rst +12 -0
  26. docs/maf-api.rst +22 -0
  27. docs/maf.rst +60 -0
  28. docs/metric_list.py +49 -0
  29. docs/moving-objects-api.rst +12 -0
  30. docs/moving-objects.rst +22 -0
  31. docs/phot-utils-api.rst +12 -0
  32. docs/phot-utils.rst +11 -0
  33. docs/prenight.rst +117 -0
  34. docs/protoarchive.rst +276 -0
  35. docs/satellite-constellations-api.rst +12 -0
  36. docs/satellite-constellations.rst +13 -0
  37. docs/selfcal-api.rst +12 -0
  38. docs/selfcal.rst +15 -0
  39. docs/sim-archive-api.rst +12 -0
  40. docs/skybrightness-api.rst +12 -0
  41. docs/skybrightness.rst +23 -0
  42. docs/user-guide.rst +28 -0
  43. docs/vseqarchive-architecture.rst +438 -0
  44. docs/vseqarchive-setup.rst +238 -0
  45. docs/vseqarchive.rst +225 -0
  46. rubin_sim/__init__.py +7 -0
  47. rubin_sim/data/__init__.py +1 -0
  48. rubin_sim/data/rs_download_data.py +155 -0
  49. rubin_sim/maf/__init__.py +34 -0
  50. rubin_sim/maf/batches/__init__.py +18 -0
  51. rubin_sim/maf/batches/altaz_batch.py +161 -0
  52. rubin_sim/maf/batches/col_map_dict.py +274 -0
  53. rubin_sim/maf/batches/common.py +388 -0
  54. rubin_sim/maf/batches/ddf_batch.py +728 -0
  55. rubin_sim/maf/batches/filterchange_batch.py +182 -0
  56. rubin_sim/maf/batches/glance_batch.py +591 -0
  57. rubin_sim/maf/batches/hourglass_batch.py +79 -0
  58. rubin_sim/maf/batches/info_batch.py +114 -0
  59. rubin_sim/maf/batches/metadata_batch.py +558 -0
  60. rubin_sim/maf/batches/moving_objects_batch.py +1587 -0
  61. rubin_sim/maf/batches/openshutter_batch.py +100 -0
  62. rubin_sim/maf/batches/radar_limited.py +1100 -0
  63. rubin_sim/maf/batches/science_radar_batch.py +1910 -0
  64. rubin_sim/maf/batches/skycoverage.py +155 -0
  65. rubin_sim/maf/batches/slew_batch.py +146 -0
  66. rubin_sim/maf/batches/srd_batch.py +637 -0
  67. rubin_sim/maf/batches/time_batch.py +757 -0
  68. rubin_sim/maf/batches/time_sci_batch.py +105 -0
  69. rubin_sim/maf/batches/visitdepth_batch.py +485 -0
  70. rubin_sim/maf/db/__init__.py +2 -0
  71. rubin_sim/maf/db/add_run.py +34 -0
  72. rubin_sim/maf/db/results_db.py +1074 -0
  73. rubin_sim/maf/db/tracking_db.py +332 -0
  74. rubin_sim/maf/ddf_dir.py +53 -0
  75. rubin_sim/maf/generate_ss.py +218 -0
  76. rubin_sim/maf/glance_dir.py +58 -0
  77. rubin_sim/maf/maf_contrib/__init__.py +25 -0
  78. rubin_sim/maf/maf_contrib/calculate_lsst_field_visibility_astropy.py +170 -0
  79. rubin_sim/maf/maf_contrib/depth_limited_num_gal_metric.py +109 -0
  80. rubin_sim/maf/maf_contrib/example_new_metrics.py +40 -0
  81. rubin_sim/maf/maf_contrib/filter_pair_t_gaps_metric.py +208 -0
  82. rubin_sim/maf/maf_contrib/grb_transient_metric.py +249 -0
  83. rubin_sim/maf/maf_contrib/gw170817_det_metric.py +72 -0
  84. rubin_sim/maf/maf_contrib/intervals_between_obs_metric.py +68 -0
  85. rubin_sim/maf/maf_contrib/kne_metrics.py +473 -0
  86. rubin_sim/maf/maf_contrib/lss_metrics.py +45 -0
  87. rubin_sim/maf/maf_contrib/lss_obs_strategy/__init__.py +3 -0
  88. rubin_sim/maf/maf_contrib/lss_obs_strategy/constants_for_pipeline.py +73 -0
  89. rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_metric_extended.py +205 -0
  90. rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_with_pixel_calibration.py +171 -0
  91. rubin_sim/maf/maf_contrib/lv_dwarfs/__init__.py +1 -0
  92. rubin_sim/maf/maf_contrib/lv_dwarfs/lv_dwarfs_metrics.py +388 -0
  93. rubin_sim/maf/maf_contrib/microlensing_metric.py +593 -0
  94. rubin_sim/maf/maf_contrib/num_obs_in_survey_time_overlap_metric.py +43 -0
  95. rubin_sim/maf/maf_contrib/periodic_metric.py +51 -0
  96. rubin_sim/maf/maf_contrib/periodic_star_metric.py +186 -0
  97. rubin_sim/maf/maf_contrib/periodic_star_modulation_metric.py +236 -0
  98. rubin_sim/maf/maf_contrib/presto_color_kne_pop_metric.py +441 -0
  99. rubin_sim/maf/maf_contrib/selfcal_uniformity_metric.py +171 -0
  100. rubin_sim/maf/maf_contrib/star_count_mass_metric.py +64 -0
  101. rubin_sim/maf/maf_contrib/star_count_metric.py +56 -0
  102. rubin_sim/maf/maf_contrib/star_counts/__init__.py +8 -0
  103. rubin_sim/maf/maf_contrib/star_counts/abs_mag.py +324 -0
  104. rubin_sim/maf/maf_contrib/star_counts/coords.py +99 -0
  105. rubin_sim/maf/maf_contrib/star_counts/readme.txt +1 -0
  106. rubin_sim/maf/maf_contrib/star_counts/spec_type.py +91 -0
  107. rubin_sim/maf/maf_contrib/star_counts/starcount.py +30 -0
  108. rubin_sim/maf/maf_contrib/star_counts/starcount_bymass.py +93 -0
  109. rubin_sim/maf/maf_contrib/star_counts/stellardensity.py +59 -0
  110. rubin_sim/maf/maf_contrib/static_probes_fom_summary_metric.py +386 -0
  111. rubin_sim/maf/maf_contrib/tdes_pop_metric.py +362 -0
  112. rubin_sim/maf/maf_contrib/transient_ascii_sed_metric.py +652 -0
  113. rubin_sim/maf/maf_contrib/triplet_metric.py +156 -0
  114. rubin_sim/maf/maf_contrib/var_depth_metric.py +157 -0
  115. rubin_sim/maf/maf_contrib/xrb_metrics.py +523 -0
  116. rubin_sim/maf/maf_contrib/young_stellar_objects_metric.py +200 -0
  117. rubin_sim/maf/maf_night_report.py +200 -0
  118. rubin_sim/maf/make_fbs_tracking_db.py +90 -0
  119. rubin_sim/maf/maps/__init__.py +8 -0
  120. rubin_sim/maf/maps/base_map.py +72 -0
  121. rubin_sim/maf/maps/create_gaia_density_map.py +158 -0
  122. rubin_sim/maf/maps/dust_map.py +66 -0
  123. rubin_sim/maf/maps/dust_map_3d.py +190 -0
  124. rubin_sim/maf/maps/ebv_3d_hp.py +170 -0
  125. rubin_sim/maf/maps/ebv_hp.py +64 -0
  126. rubin_sim/maf/maps/gal_coords_map.py +22 -0
  127. rubin_sim/maf/maps/galactic_plane_priority_maps.py +210 -0
  128. rubin_sim/maf/maps/stellar_density_map.py +73 -0
  129. rubin_sim/maf/maps/trilegal_map.py +82 -0
  130. rubin_sim/maf/metadata_dir.py +90 -0
  131. rubin_sim/maf/metric_bundles/__init__.py +3 -0
  132. rubin_sim/maf/metric_bundles/metric_bundle.py +816 -0
  133. rubin_sim/maf/metric_bundles/metric_bundle_group.py +834 -0
  134. rubin_sim/maf/metric_bundles/mo_metric_bundle.py +646 -0
  135. rubin_sim/maf/metrics/__init__.py +52 -0
  136. rubin_sim/maf/metrics/agn_time_lag_metric.py +118 -0
  137. rubin_sim/maf/metrics/agnstructure.py +141 -0
  138. rubin_sim/maf/metrics/area_summary_metrics.py +120 -0
  139. rubin_sim/maf/metrics/base_metric.py +215 -0
  140. rubin_sim/maf/metrics/brown_dwarf_metric.py +162 -0
  141. rubin_sim/maf/metrics/cadence_metrics.py +400 -0
  142. rubin_sim/maf/metrics/calibration_metrics.py +618 -0
  143. rubin_sim/maf/metrics/chip_vendor_metric.py +43 -0
  144. rubin_sim/maf/metrics/color_slope_metrics.py +189 -0
  145. rubin_sim/maf/metrics/cosmology_summary_metrics.py +1212 -0
  146. rubin_sim/maf/metrics/coverage_metric.py +48 -0
  147. rubin_sim/maf/metrics/crowding_metric.py +255 -0
  148. rubin_sim/maf/metrics/cumulative_metric.py +46 -0
  149. rubin_sim/maf/metrics/dcr_metric.py +93 -0
  150. rubin_sim/maf/metrics/exgal_m5.py +57 -0
  151. rubin_sim/maf/metrics/fft_metric.py +27 -0
  152. rubin_sim/maf/metrics/galactic_plane_metrics.py +375 -0
  153. rubin_sim/maf/metrics/galplane_time_sampling_metrics.py +236 -0
  154. rubin_sim/maf/metrics/hourglass_metric.py +130 -0
  155. rubin_sim/maf/metrics/incremental_template_metric.py +255 -0
  156. rubin_sim/maf/metrics/kuiper_metrics.py +26 -0
  157. rubin_sim/maf/metrics/mo_metrics.py +1496 -0
  158. rubin_sim/maf/metrics/mo_summary_metrics.py +464 -0
  159. rubin_sim/maf/metrics/night_pointing_metric.py +70 -0
  160. rubin_sim/maf/metrics/optimal_m5_metric.py +94 -0
  161. rubin_sim/maf/metrics/pair_metric.py +69 -0
  162. rubin_sim/maf/metrics/periodic_detect_metric.py +133 -0
  163. rubin_sim/maf/metrics/phase_gap_metric.py +172 -0
  164. rubin_sim/maf/metrics/qso_number_counts_metric.py +138 -0
  165. rubin_sim/maf/metrics/scaling_metrics.py +148 -0
  166. rubin_sim/maf/metrics/schedview_metrics.py +39 -0
  167. rubin_sim/maf/metrics/season_metrics.py +344 -0
  168. rubin_sim/maf/metrics/simple_metrics.py +546 -0
  169. rubin_sim/maf/metrics/sky_sat_metric.py +18 -0
  170. rubin_sim/maf/metrics/sn_cadence_metric.py +104 -0
  171. rubin_sim/maf/metrics/sn_n_sn_metric.py +1364 -0
  172. rubin_sim/maf/metrics/sn_sl_metric.py +216 -0
  173. rubin_sim/maf/metrics/sn_snr_metric.py +715 -0
  174. rubin_sim/maf/metrics/snr_weight.py +24 -0
  175. rubin_sim/maf/metrics/star_density.py +77 -0
  176. rubin_sim/maf/metrics/string_count_metric.py +95 -0
  177. rubin_sim/maf/metrics/summary_metrics.py +201 -0
  178. rubin_sim/maf/metrics/surfb_metric.py +175 -0
  179. rubin_sim/maf/metrics/technical_metrics.py +271 -0
  180. rubin_sim/maf/metrics/tgaps.py +412 -0
  181. rubin_sim/maf/metrics/tomography_models.py +2034 -0
  182. rubin_sim/maf/metrics/transient_metrics.py +268 -0
  183. rubin_sim/maf/metrics/uniformity_metrics.py +418 -0
  184. rubin_sim/maf/metrics/use_metrics.py +55 -0
  185. rubin_sim/maf/metrics/vector_metrics.py +190 -0
  186. rubin_sim/maf/metrics/visit_groups_metric.py +341 -0
  187. rubin_sim/maf/metrics/weak_lensing_systematics_metric.py +210 -0
  188. rubin_sim/maf/plots/__init__.py +14 -0
  189. rubin_sim/maf/plots/hg_plotters.py +1117 -0
  190. rubin_sim/maf/plots/hourglass_plotters.py +120 -0
  191. rubin_sim/maf/plots/mo_plotters.py +358 -0
  192. rubin_sim/maf/plots/nd_plotters.py +220 -0
  193. rubin_sim/maf/plots/neo_distance_plotter.py +140 -0
  194. rubin_sim/maf/plots/night_pointing_plotter.py +96 -0
  195. rubin_sim/maf/plots/oned_plotters.py +114 -0
  196. rubin_sim/maf/plots/perceptual_rainbow.py +30 -0
  197. rubin_sim/maf/plots/plot_handler.py +766 -0
  198. rubin_sim/maf/plots/skyproj_plotters.py +540 -0
  199. rubin_sim/maf/plots/spatial_plotters.py +1029 -0
  200. rubin_sim/maf/plots/special_plotters.py +256 -0
  201. rubin_sim/maf/plots/two_d_plotters.py +177 -0
  202. rubin_sim/maf/plots/xyplotter.py +37 -0
  203. rubin_sim/maf/run_comparison/__init__.py +5 -0
  204. rubin_sim/maf/run_comparison/archive.py +584 -0
  205. rubin_sim/maf/run_comparison/gather_summaries.py +125 -0
  206. rubin_sim/maf/run_comparison/microlensing_compare.py +514 -0
  207. rubin_sim/maf/run_comparison/radar_plot.py +202 -0
  208. rubin_sim/maf/run_comparison/summary_plots.py +710 -0
  209. rubin_sim/maf/run_moving_calc.py +239 -0
  210. rubin_sim/maf/run_moving_fractions.py +128 -0
  211. rubin_sim/maf/run_moving_join.py +103 -0
  212. rubin_sim/maf/run_selfcal_metric.py +92 -0
  213. rubin_sim/maf/scimaf_dir.py +87 -0
  214. rubin_sim/maf/show_maf.py +227 -0
  215. rubin_sim/maf/slicers/__init__.py +13 -0
  216. rubin_sim/maf/slicers/base_slicer.py +513 -0
  217. rubin_sim/maf/slicers/base_spatial_slicer.py +202 -0
  218. rubin_sim/maf/slicers/healpix_sdss_slicer.py +118 -0
  219. rubin_sim/maf/slicers/healpix_slicer.py +189 -0
  220. rubin_sim/maf/slicers/healpix_subset_slicer.py +293 -0
  221. rubin_sim/maf/slicers/hourglass_slicer.py +37 -0
  222. rubin_sim/maf/slicers/mo_slicer.py +171 -0
  223. rubin_sim/maf/slicers/movie_slicer.py +288 -0
  224. rubin_sim/maf/slicers/nd_slicer.py +147 -0
  225. rubin_sim/maf/slicers/one_d_slicer.py +210 -0
  226. rubin_sim/maf/slicers/time_interval_slicers.py +283 -0
  227. rubin_sim/maf/slicers/uni_slicer.py +57 -0
  228. rubin_sim/maf/slicers/user_points_slicer.py +141 -0
  229. rubin_sim/maf/stackers/__init__.py +13 -0
  230. rubin_sim/maf/stackers/base_stacker.py +221 -0
  231. rubin_sim/maf/stackers/coord_stackers.py +224 -0
  232. rubin_sim/maf/stackers/date_stackers.py +192 -0
  233. rubin_sim/maf/stackers/general_stackers.py +683 -0
  234. rubin_sim/maf/stackers/get_col_info.py +104 -0
  235. rubin_sim/maf/stackers/label_stackers.py +114 -0
  236. rubin_sim/maf/stackers/m5_optimal_stacker.py +126 -0
  237. rubin_sim/maf/stackers/mo_phase.py +265 -0
  238. rubin_sim/maf/stackers/mo_stackers.py +486 -0
  239. rubin_sim/maf/stackers/n_follow_stacker.py +187 -0
  240. rubin_sim/maf/stackers/neo_dist_stacker.py +126 -0
  241. rubin_sim/maf/stackers/sdss_stackers.py +30 -0
  242. rubin_sim/maf/stackers/sn_stacker.py +152 -0
  243. rubin_sim/maf/stackers/teff_stacker.py +154 -0
  244. rubin_sim/maf/utils/__init__.py +6 -0
  245. rubin_sim/maf/utils/astrometry_utils.py +93 -0
  246. rubin_sim/maf/utils/generate_fov_map.py +58 -0
  247. rubin_sim/maf/utils/get_date_version.py +28 -0
  248. rubin_sim/maf/utils/maf_utils.py +212 -0
  249. rubin_sim/maf/utils/opsim_utils.py +259 -0
  250. rubin_sim/maf/utils/output_utils.py +34 -0
  251. rubin_sim/maf/utils/sn_n_sn_utils.py +894 -0
  252. rubin_sim/maf/utils/sn_utils.py +369 -0
  253. rubin_sim/maf/utils/stellar_mags.py +197 -0
  254. rubin_sim/maf/web/__init__.py +2 -0
  255. rubin_sim/maf/web/favicon.ico +0 -0
  256. rubin_sim/maf/web/maf_run_results.py +645 -0
  257. rubin_sim/maf/web/maf_tracking.py +139 -0
  258. rubin_sim/maf/web/sorttable.js +496 -0
  259. rubin_sim/maf/web/templates/allmetricresults.html +72 -0
  260. rubin_sim/maf/web/templates/configs.html +28 -0
  261. rubin_sim/maf/web/templates/macros.html +243 -0
  262. rubin_sim/maf/web/templates/master.html +294 -0
  263. rubin_sim/maf/web/templates/metricselect.html +91 -0
  264. rubin_sim/maf/web/templates/multicolor.html +147 -0
  265. rubin_sim/maf/web/templates/results.html +82 -0
  266. rubin_sim/maf/web/templates/runselect.html +58 -0
  267. rubin_sim/maf/web/templates/stats.html +50 -0
  268. rubin_sim/moving_objects/__init__.py +8 -0
  269. rubin_sim/moving_objects/base_obs.py +468 -0
  270. rubin_sim/moving_objects/cheby_fits.py +689 -0
  271. rubin_sim/moving_objects/cheby_values.py +231 -0
  272. rubin_sim/moving_objects/chebyshev_utils.py +365 -0
  273. rubin_sim/moving_objects/direct_obs.py +376 -0
  274. rubin_sim/moving_objects/make_lsst_obs.py +282 -0
  275. rubin_sim/moving_objects/ooephemerides.py +643 -0
  276. rubin_sim/moving_objects/orbits.py +507 -0
  277. rubin_sim/moving_objects/pre_generate.py +37 -0
  278. rubin_sim/moving_objects/utils.py +61 -0
  279. rubin_sim/phot_utils/__init__.py +7 -0
  280. rubin_sim/phot_utils/bandpass.py +425 -0
  281. rubin_sim/phot_utils/photometric_parameters.py +449 -0
  282. rubin_sim/phot_utils/physical_parameters.py +50 -0
  283. rubin_sim/phot_utils/predicted_zeropoints.py +245 -0
  284. rubin_sim/phot_utils/sed.py +1773 -0
  285. rubin_sim/phot_utils/sed_utils.py +52 -0
  286. rubin_sim/phot_utils/signaltonoise.py +695 -0
  287. rubin_sim/phot_utils/spectral_resampling.py +161 -0
  288. rubin_sim/satellite_constellations/__init__.py +3 -0
  289. rubin_sim/satellite_constellations/basis_function.py +40 -0
  290. rubin_sim/satellite_constellations/model_observatory.py +157 -0
  291. rubin_sim/satellite_constellations/sat_utils.py +488 -0
  292. rubin_sim/selfcal/__init__.py +4 -0
  293. rubin_sim/selfcal/generate_catalog.py +188 -0
  294. rubin_sim/selfcal/offsets.py +119 -0
  295. rubin_sim/selfcal/solver.py +143 -0
  296. rubin_sim/selfcal/star_tools.py +42 -0
  297. rubin_sim/sim_archive/__init__.py +14 -0
  298. rubin_sim/sim_archive/conda_packages.py +65 -0
  299. rubin_sim/sim_archive/future_vsarch.py +480 -0
  300. rubin_sim/sim_archive/make_snapshot.py +255 -0
  301. rubin_sim/sim_archive/prenight.py +216 -0
  302. rubin_sim/sim_archive/prenightindex.py +229 -0
  303. rubin_sim/sim_archive/prototype.py +1029 -0
  304. rubin_sim/sim_archive/sim_archive.py +680 -0
  305. rubin_sim/sim_archive/tempdb.py +56 -0
  306. rubin_sim/sim_archive/util.py +146 -0
  307. rubin_sim/sim_archive/vseqarchive.py +965 -0
  308. rubin_sim/sim_archive/vseqmetadata.py +1721 -0
  309. rubin_sim/skybrightness/__init__.py +5 -0
  310. rubin_sim/skybrightness/allsky_db.py +93 -0
  311. rubin_sim/skybrightness/data/ESO_Spectra/eso_tools.py +505 -0
  312. rubin_sim/skybrightness/data/solarSpec/package.py +22 -0
  313. rubin_sim/skybrightness/generate_hdf5.py +243 -0
  314. rubin_sim/skybrightness/interp_components.py +798 -0
  315. rubin_sim/skybrightness/sky_model.py +771 -0
  316. rubin_sim/skybrightness/twilight_func.py +83 -0
  317. rubin_sim/skybrightness/utils.py +91 -0
  318. rubin_sim-2.6.1.dev2.dist-info/METADATA +95 -0
  319. rubin_sim-2.6.1.dev2.dist-info/RECORD +387 -0
  320. rubin_sim-2.6.1.dev2.dist-info/WHEEL +5 -0
  321. rubin_sim-2.6.1.dev2.dist-info/entry_points.txt +24 -0
  322. rubin_sim-2.6.1.dev2.dist-info/licenses/LICENSE +674 -0
  323. rubin_sim-2.6.1.dev2.dist-info/top_level.txt +5 -0
  324. sql/make_vseqmeta.sql +251 -0
  325. tests/data/test_data.py +26 -0
  326. tests/data/test_ddf_grid.py +17 -0
  327. tests/maf/test_3x2fom.py +68 -0
  328. tests/maf/test_archive.py +162 -0
  329. tests/maf/test_basemetrics.py +99 -0
  330. tests/maf/test_batchcommon.py +36 -0
  331. tests/maf/test_batches.py +159 -0
  332. tests/maf/test_cadencemetrics.py +388 -0
  333. tests/maf/test_calibrationmetrics.py +242 -0
  334. tests/maf/test_color_slopes.py +71 -0
  335. tests/maf/test_cosmology_summaries.py +20 -0
  336. tests/maf/test_gathersummaries.py +48 -0
  337. tests/maf/test_healpixslicer.py +439 -0
  338. tests/maf/test_healpixsubsetslicer.py +273 -0
  339. tests/maf/test_hgplotters.py +145 -0
  340. tests/maf/test_hourglassmetric.py +33 -0
  341. tests/maf/test_io.py +187 -0
  342. tests/maf/test_json.py +169 -0
  343. tests/maf/test_maps.py +199 -0
  344. tests/maf/test_metricbundle.py +69 -0
  345. tests/maf/test_mometrics.py +422 -0
  346. tests/maf/test_movieslicer.py +216 -0
  347. tests/maf/test_ndslicer.py +240 -0
  348. tests/maf/test_neodistanceplotter.py +41 -0
  349. tests/maf/test_onedslicer.py +245 -0
  350. tests/maf/test_opsimutils.py +80 -0
  351. tests/maf/test_plotters.py +134 -0
  352. tests/maf/test_resultsdb.py +145 -0
  353. tests/maf/test_schedviewmetrics.py +14 -0
  354. tests/maf/test_simplemetrics.py +200 -0
  355. tests/maf/test_snmetrics.py +335 -0
  356. tests/maf/test_snmetrics_nsn.py +123 -0
  357. tests/maf/test_stackers.py +423 -0
  358. tests/maf/test_stellarmags.py +50 -0
  359. tests/maf/test_stringcount.py +26 -0
  360. tests/maf/test_summary_plots.py +197 -0
  361. tests/maf/test_summarymetrics.py +82 -0
  362. tests/maf/test_technicalmetrics.py +267 -0
  363. tests/maf/test_templatemetrics.py +86 -0
  364. tests/maf/test_timeintervalslicers.py +97 -0
  365. tests/maf/test_trackingdb.py +88 -0
  366. tests/maf/test_unislicer.py +116 -0
  367. tests/maf/test_vectormetrics.py +225 -0
  368. tests/maf/test_visitgroupsmetric.py +181 -0
  369. tests/moving_objects/test_camera.py +39 -0
  370. tests/moving_objects/test_chebyfits.py +188 -0
  371. tests/moving_objects/test_chebyshevutils.py +76 -0
  372. tests/moving_objects/test_chebyvalues.py +245 -0
  373. tests/moving_objects/test_ephemerides.py +219 -0
  374. tests/moving_objects/test_orbits.py +170 -0
  375. tests/moving_objects/test_sed_data.py +61 -0
  376. tests/phot_utils/test_approximatebandpasses.py +91 -0
  377. tests/phot_utils/test_photometricparameters.py +268 -0
  378. tests/phot_utils/test_photometry.py +61 -0
  379. tests/phot_utils/test_predicted_zeropoints.py +53 -0
  380. tests/phot_utils/test_read_bandpasses.py +29 -0
  381. tests/phot_utils/test_sed.py +368 -0
  382. tests/phot_utils/test_snr.py +370 -0
  383. tests/satellite_constellations/test_satellites.py +36 -0
  384. tests/sim_archive/test_make_snapshot.py +24 -0
  385. tests/sim_archive/test_prototype_sim_archive.py +204 -0
  386. tests/sim_archive/test_vseqarchive.py +947 -0
  387. 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 *