rubin-sim 2.2.0__tar.gz → 2.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.github/workflows/build_docs.yaml +4 -6
  2. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.github/workflows/cache.yaml +3 -5
  3. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.github/workflows/ruff.yaml +1 -1
  4. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.github/workflows/test_and_build.yaml +5 -7
  5. {rubin_sim-2.2.0/rubin_sim.egg-info → rubin_sim-2.2.2}/PKG-INFO +6 -4
  6. rubin_sim-2.2.2/batch/compile_prenight_metadata_cache.sh +34 -0
  7. rubin_sim-2.2.2/batch/run_prenight_sims.sh +69 -0
  8. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/api.rst +3 -1
  9. rubin_sim-2.2.2/docs/archive.rst +276 -0
  10. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/installation.rst +17 -26
  11. rubin_sim-2.2.2/docs/sim-archive-api.rst +12 -0
  12. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/user-guide.rst +2 -3
  13. rubin_sim-2.2.2/example_deployment.yaml +73 -0
  14. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/pyproject.toml +10 -13
  15. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/requirements.txt +3 -1
  16. rubin_sim-2.2.2/rubin_sim/__init__.py +7 -0
  17. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/data/rs_download_data.py +1 -1
  18. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/__init__.py +1 -2
  19. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/common.py +1 -1
  20. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/glance_batch.py +3 -3
  21. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/hourglass_batch.py +1 -2
  22. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/info_batch.py +1 -1
  23. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/metadata_batch.py +1 -2
  24. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/openshutter_batch.py +1 -2
  25. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/radar_limited.py +10 -10
  26. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/science_radar_batch.py +18 -18
  27. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/skycoverage.py +1 -2
  28. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/slew_batch.py +1 -2
  29. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/time_batch.py +8 -9
  30. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/time_sci_batch.py +4 -5
  31. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/db/results_db.py +4 -2
  32. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/ddf_dir.py +6 -5
  33. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/glance_dir.py +6 -5
  34. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/tdes_pop_metric.py +1 -1
  35. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/transient_ascii_sed_metric.py +1 -1
  36. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_night_report.py +12 -12
  37. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/make_fbs_tracking_db.py +2 -2
  38. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metadata_dir.py +7 -6
  39. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metric_bundles/metric_bundle.py +9 -11
  40. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metric_bundles/mo_metric_bundle.py +1 -1
  41. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/area_summary_metrics.py +1 -1
  42. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/base_metric.py +1 -1
  43. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/galplane_time_sampling_metrics.py +1 -1
  44. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/sky_sat_metric.py +1 -1
  45. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/sn_n_sn_metric.py +2 -2
  46. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/summary_metrics.py +6 -7
  47. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/technical_metrics.py +4 -4
  48. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/use_metrics.py +1 -1
  49. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/hg_plotters.py +1 -2
  50. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/neo_distance_plotter.py +2 -1
  51. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/skyproj_plotters.py +4 -4
  52. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/spatial_plotters.py +1 -4
  53. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_comparison/archive.py +1 -2
  54. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_comparison/summary_plots.py +1 -2
  55. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/scimaf_dir.py +6 -5
  56. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/time_interval_slicers.py +2 -2
  57. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/opsim_utils.py +25 -14
  58. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/stellar_mags.py +1 -1
  59. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/maf_run_results.py +1 -1
  60. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/maf_tracking.py +10 -0
  61. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/satellite_constellations/sat_utils.py +2 -2
  62. rubin_sim-2.2.2/rubin_sim/sim_archive/__init__.py +11 -0
  63. rubin_sim-2.2.2/rubin_sim/sim_archive/make_snapshot.py +188 -0
  64. rubin_sim-2.2.2/rubin_sim/sim_archive/prenight.py +386 -0
  65. rubin_sim-2.2.2/rubin_sim/sim_archive/sim_archive.py +1122 -0
  66. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/allsky_db.py +1 -1
  67. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/data/ESO_Spectra/eso_tools.py +1 -1
  68. {rubin_sim-2.2.0 → rubin_sim-2.2.2/rubin_sim.egg-info}/PKG-INFO +6 -4
  69. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim.egg-info/SOURCES.txt +13 -1
  70. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim.egg-info/entry_points.txt +4 -0
  71. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim.egg-info/requires.txt +3 -2
  72. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim.egg-info/top_level.txt +1 -0
  73. rubin_sim-2.2.2/showmaf-deploy.yaml +96 -0
  74. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/test-requirements.txt +1 -1
  75. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_3x2fom.py +1 -1
  76. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_batchcommon.py +2 -2
  77. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_batches.py +28 -10
  78. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_hgplotters.py +1 -1
  79. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_io.py +4 -4
  80. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_metricbundle.py +1 -1
  81. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_opsimutils.py +2 -2
  82. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_plotters.py +8 -10
  83. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_stackers.py +6 -11
  84. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_summarymetrics.py +2 -2
  85. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_technicalmetrics.py +59 -28
  86. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_timeintervalslicers.py +4 -2
  87. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_vectormetrics.py +3 -4
  88. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_visitgroupsmetric.py +15 -7
  89. rubin_sim-2.2.2/tests/sim_archive/test_make_snapshot.py +24 -0
  90. rubin_sim-2.2.2/tests/sim_archive/test_prenight.py +28 -0
  91. rubin_sim-2.2.2/tests/sim_archive/test_sim_archive.py +167 -0
  92. rubin_sim-2.2.0/rubin_sim/__init__.py +0 -1
  93. rubin_sim-2.2.0/rubin_sim/version.py +0 -3
  94. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.git_archival.txt +0 -0
  95. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.gitattributes +0 -0
  96. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.github/workflows/build_container.yaml +0 -0
  97. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.github/workflows/rebase_checker.yaml +0 -0
  98. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.gitignore +0 -0
  99. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/.pre-commit-config.yaml +0 -0
  100. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/Dockerfile +0 -0
  101. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/LICENSE +0 -0
  102. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/README.md +0 -0
  103. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/README_dev.md +0 -0
  104. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/container_environment.yaml +0 -0
  105. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/.gitignore +0 -0
  106. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/Makefile +0 -0
  107. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/conf.py +0 -0
  108. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/data-api.rst +0 -0
  109. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/data-download.rst +0 -0
  110. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/documenteer.toml +0 -0
  111. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/index.rst +0 -0
  112. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/introduction.rst +0 -0
  113. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-batches.rst +0 -0
  114. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-db.rst +0 -0
  115. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-maf-contrib.rst +0 -0
  116. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-maps.rst +0 -0
  117. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-metricbundles.rst +0 -0
  118. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-metrics.rst +0 -0
  119. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-plots.rst +0 -0
  120. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-run-comparison.rst +0 -0
  121. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-slicers.rst +0 -0
  122. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-stackers.rst +0 -0
  123. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api-utils.rst +0 -0
  124. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf-api.rst +0 -0
  125. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/maf.rst +0 -0
  126. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/metric_list.py +0 -0
  127. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/moving-objects-api.rst +0 -0
  128. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/moving-objects.rst +0 -0
  129. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/phot-utils-api.rst +0 -0
  130. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/phot-utils.rst +0 -0
  131. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/satellite-constellations-api.rst +0 -0
  132. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/satellite-constellations.rst +0 -0
  133. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/selfcal-api.rst +0 -0
  134. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/selfcal.rst +0 -0
  135. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/skybrightness-api.rst +0 -0
  136. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/docs/skybrightness.rst +0 -0
  137. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/optional-requirements.txt +0 -0
  138. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/data/__init__.py +0 -0
  139. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/__init__.py +0 -0
  140. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/altaz_batch.py +0 -0
  141. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/col_map_dict.py +0 -0
  142. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/ddf_batch.py +0 -0
  143. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/filterchange_batch.py +0 -0
  144. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/moving_objects_batch.py +0 -0
  145. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/srd_batch.py +0 -0
  146. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/batches/visitdepth_batch.py +0 -0
  147. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/db/__init__.py +0 -0
  148. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/db/add_run.py +0 -0
  149. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/db/tracking_db.py +0 -0
  150. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/generate_ss.py +0 -0
  151. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/__init__.py +0 -0
  152. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/calculate_lsst_field_visibility_astropy.py +0 -0
  153. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/depth_limited_num_gal_metric.py +0 -0
  154. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/example_new_metrics.py +0 -0
  155. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/filter_pair_t_gaps_metric.py +0 -0
  156. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/grb_transient_metric.py +0 -0
  157. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/gw170817_det_metric.py +0 -0
  158. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/intervals_between_obs_metric.py +0 -0
  159. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/kne_metrics.py +0 -0
  160. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/lss_metrics.py +0 -0
  161. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/lss_obs_strategy/__init__.py +0 -0
  162. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/lss_obs_strategy/constants_for_pipeline.py +0 -0
  163. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_metric_extended.py +0 -0
  164. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_with_pixel_calibration.py +0 -0
  165. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/lv_dwarfs/__init__.py +0 -0
  166. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/lv_dwarfs/lv_dwarfs_metrics.py +0 -0
  167. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/microlensing_metric.py +0 -0
  168. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/num_obs_in_survey_time_overlap_metric.py +0 -0
  169. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/periodic_metric.py +0 -0
  170. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/periodic_star_metric.py +0 -0
  171. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/periodic_star_modulation_metric.py +0 -0
  172. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/presto_color_kne_pop_metric.py +0 -0
  173. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/selfcal_uniformity_metric.py +0 -0
  174. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_count_mass_metric.py +0 -0
  175. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_count_metric.py +0 -0
  176. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_counts/__init__.py +0 -0
  177. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_counts/abs_mag.py +0 -0
  178. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_counts/coords.py +0 -0
  179. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_counts/readme.txt +0 -0
  180. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_counts/spec_type.py +0 -0
  181. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_counts/starcount.py +0 -0
  182. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_counts/starcount_bymass.py +0 -0
  183. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/star_counts/stellardensity.py +0 -0
  184. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/static_probes_fom_summary_metric.py +0 -0
  185. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/triplet_metric.py +0 -0
  186. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/var_depth_metric.py +0 -0
  187. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/xrb_metrics.py +0 -0
  188. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maf_contrib/young_stellar_objects_metric.py +0 -0
  189. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/__init__.py +0 -0
  190. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/base_map.py +0 -0
  191. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/create_gaia_density_map.py +0 -0
  192. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/dust_map.py +0 -0
  193. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/dust_map_3d.py +0 -0
  194. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/ebv_3d_hp.py +0 -0
  195. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/ebv_hp.py +0 -0
  196. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/gal_coords_map.py +0 -0
  197. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/galactic_plane_priority_maps.py +0 -0
  198. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/stellar_density_map.py +0 -0
  199. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/maps/trilegal_map.py +0 -0
  200. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metric_bundles/__init__.py +0 -0
  201. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metric_bundles/metric_bundle_group.py +0 -0
  202. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/__init__.py +0 -0
  203. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/agn_time_lag_metric.py +0 -0
  204. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/agnstructure.py +0 -0
  205. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/brown_dwarf_metric.py +0 -0
  206. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/cadence_metrics.py +0 -0
  207. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/calibration_metrics.py +0 -0
  208. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/chip_vendor_metric.py +0 -0
  209. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/color_slope_metrics.py +0 -0
  210. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/coverage_metric.py +0 -0
  211. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/crowding_metric.py +0 -0
  212. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/cumulative_metric.py +0 -0
  213. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/dcr_metric.py +0 -0
  214. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/exgal_m5.py +0 -0
  215. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/fft_metric.py +0 -0
  216. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/galactic_plane_metrics.py +0 -0
  217. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/hourglass_metric.py +0 -0
  218. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/incremental_template_metric.py +0 -0
  219. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/kuiper_metrics.py +0 -0
  220. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/mo_metrics.py +0 -0
  221. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/mo_summary_metrics.py +0 -0
  222. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/night_pointing_metric.py +0 -0
  223. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/optimal_m5_metric.py +0 -0
  224. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/pair_metric.py +0 -0
  225. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/periodic_detect_metric.py +0 -0
  226. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/phase_gap_metric.py +0 -0
  227. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/qso_number_counts_metric.py +0 -0
  228. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/scaling_metrics.py +0 -0
  229. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/schedview_metrics.py +0 -0
  230. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/season_metrics.py +0 -0
  231. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/simple_metrics.py +0 -0
  232. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/sn_cadence_metric.py +0 -0
  233. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/sn_sl_metric.py +0 -0
  234. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/sn_snr_metric.py +0 -0
  235. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/snr_weight.py +0 -0
  236. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/star_density.py +0 -0
  237. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/string_count_metric.py +0 -0
  238. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/surfb_metric.py +0 -0
  239. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/tgaps.py +0 -0
  240. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/transient_metrics.py +0 -0
  241. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/vector_metrics.py +0 -0
  242. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/visit_groups_metric.py +0 -0
  243. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/metrics/weak_lensing_systematics_metric.py +0 -0
  244. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/__init__.py +0 -0
  245. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/hourglass_plotters.py +0 -0
  246. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/mo_plotters.py +0 -0
  247. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/nd_plotters.py +0 -0
  248. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/night_pointing_plotter.py +0 -0
  249. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/oned_plotters.py +0 -0
  250. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/perceptual_rainbow.py +0 -0
  251. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/plot_handler.py +0 -0
  252. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/special_plotters.py +0 -0
  253. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/two_d_plotters.py +0 -0
  254. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/plots/xyplotter.py +0 -0
  255. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_comparison/__init__.py +0 -0
  256. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_comparison/gather_summaries.py +0 -0
  257. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_comparison/microlensing_compare.py +0 -0
  258. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_comparison/radar_plot.py +0 -0
  259. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_moving_calc.py +0 -0
  260. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_moving_fractions.py +0 -0
  261. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_moving_join.py +2 -2
  262. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/run_selfcal_metric.py +7 -7
  263. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/show_maf.py +0 -0
  264. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/__init__.py +0 -0
  265. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/base_slicer.py +0 -0
  266. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/base_spatial_slicer.py +0 -0
  267. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/healpix_sdss_slicer.py +0 -0
  268. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/healpix_slicer.py +0 -0
  269. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/healpix_subset_slicer.py +0 -0
  270. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/hourglass_slicer.py +0 -0
  271. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/mo_slicer.py +0 -0
  272. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/movie_slicer.py +0 -0
  273. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/nd_slicer.py +0 -0
  274. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/one_d_slicer.py +0 -0
  275. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/uni_slicer.py +0 -0
  276. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/slicers/user_points_slicer.py +0 -0
  277. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/__init__.py +0 -0
  278. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/base_stacker.py +0 -0
  279. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/coord_stackers.py +0 -0
  280. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/date_stackers.py +0 -0
  281. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/general_stackers.py +0 -0
  282. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/get_col_info.py +0 -0
  283. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/label_stackers.py +0 -0
  284. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/m5_optimal_stacker.py +0 -0
  285. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/mo_phase.py +0 -0
  286. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/mo_stackers.py +0 -0
  287. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/n_follow_stacker.py +0 -0
  288. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/neo_dist_stacker.py +0 -0
  289. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/sdss_stackers.py +0 -0
  290. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/sn_stacker.py +0 -0
  291. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/stackers/teff_stacker.py +0 -0
  292. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/__init__.py +0 -0
  293. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/astrometry_utils.py +0 -0
  294. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/generate_fov_map.py +0 -0
  295. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/get_date_version.py +0 -0
  296. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/maf_utils.py +0 -0
  297. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/output_utils.py +0 -0
  298. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/sn_n_sn_utils.py +0 -0
  299. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/utils/sn_utils.py +0 -0
  300. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/__init__.py +0 -0
  301. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/favicon.ico +0 -0
  302. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/sorttable.js +0 -0
  303. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/allmetricresults.html +0 -0
  304. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/configs.html +0 -0
  305. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/macros.html +0 -0
  306. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/master.html +0 -0
  307. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/metricselect.html +0 -0
  308. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/multicolor.html +0 -0
  309. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/results.html +0 -0
  310. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/runselect.html +0 -0
  311. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/maf/web/templates/stats.html +0 -0
  312. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/__init__.py +0 -0
  313. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/base_obs.py +0 -0
  314. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/cheby_fits.py +0 -0
  315. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/cheby_values.py +0 -0
  316. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/chebyshev_utils.py +0 -0
  317. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/direct_obs.py +0 -0
  318. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/make_lsst_obs.py +0 -0
  319. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/ooephemerides.py +0 -0
  320. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/orbits.py +0 -0
  321. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/pre_generate.py +0 -0
  322. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/moving_objects/utils.py +0 -0
  323. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/__init__.py +0 -0
  324. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/bandpass.py +0 -0
  325. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/photometric_parameters.py +0 -0
  326. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/physical_parameters.py +0 -0
  327. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/predicted_zeropoints.py +0 -0
  328. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/sed.py +0 -0
  329. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/sed_utils.py +0 -0
  330. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/signaltonoise.py +0 -0
  331. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/phot_utils/spectral_resampling.py +0 -0
  332. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/satellite_constellations/__init__.py +0 -0
  333. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/satellite_constellations/basis_function.py +0 -0
  334. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/satellite_constellations/model_observatory.py +0 -0
  335. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/selfcal/__init__.py +0 -0
  336. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/selfcal/generate_catalog.py +0 -0
  337. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/selfcal/offsets.py +0 -0
  338. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/selfcal/solver.py +0 -0
  339. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/selfcal/star_tools.py +0 -0
  340. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/__init__.py +0 -0
  341. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/data/solarSpec/package.py +0 -0
  342. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/generate_hdf5.py +0 -0
  343. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/interp_components.py +0 -0
  344. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/sky_model.py +0 -0
  345. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/twilight_func.py +0 -0
  346. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim/skybrightness/utils.py +0 -0
  347. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/rubin_sim.egg-info/dependency_links.txt +0 -0
  348. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/setup.cfg +0 -0
  349. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/setup.py +0 -0
  350. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/data/test_data.py +0 -0
  351. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/data/test_ddf_grid.py +0 -0
  352. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_archive.py +0 -0
  353. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_basemetrics.py +0 -0
  354. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_cadencemetrics.py +0 -0
  355. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_calibrationmetrics.py +0 -0
  356. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_color_slopes.py +0 -0
  357. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_gathersummaries.py +0 -0
  358. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_healpixslicer.py +3 -3
  359. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_healpixsubsetslicer.py +0 -0
  360. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_hourglassmetric.py +0 -0
  361. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_json.py +0 -0
  362. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_maps.py +0 -0
  363. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_mometrics.py +0 -0
  364. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_movieslicer.py +0 -0
  365. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_ndslicer.py +0 -0
  366. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_neodistanceplotter.py +0 -0
  367. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_onedslicer.py +0 -0
  368. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_resultsdb.py +0 -0
  369. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_schedviewmetrics.py +0 -0
  370. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_simplemetrics.py +0 -0
  371. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_snmetrics.py +0 -0
  372. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_snmetrics_nsn.py +0 -0
  373. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_stellarmags.py +0 -0
  374. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_stringcount.py +0 -0
  375. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_summary_plots.py +0 -0
  376. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_templatemetrics.py +0 -0
  377. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_trackingdb.py +0 -0
  378. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/maf/test_unislicer.py +0 -0
  379. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/moving_objects/test_camera.py +0 -0
  380. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/moving_objects/test_chebyfits.py +0 -0
  381. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/moving_objects/test_chebyshevutils.py +0 -0
  382. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/moving_objects/test_chebyvalues.py +0 -0
  383. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/moving_objects/test_ephemerides.py +0 -0
  384. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/moving_objects/test_orbits.py +0 -0
  385. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/phot_utils/test_approximatebandpasses.py +0 -0
  386. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/phot_utils/test_photometricparameters.py +0 -0
  387. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/phot_utils/test_photometry.py +0 -0
  388. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/phot_utils/test_predicted_zeropoints.py +0 -0
  389. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/phot_utils/test_read_bandpasses.py +0 -0
  390. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/phot_utils/test_sed.py +0 -0
  391. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/phot_utils/test_snr.py +0 -0
  392. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/satellite_constellations/test_satellites.py +0 -0
  393. {rubin_sim-2.2.0 → rubin_sim-2.2.2}/tests/skybrightness/test_skymodel.py +0 -0
@@ -18,18 +18,16 @@ jobs:
18
18
  - uses: conda-incubator/setup-miniconda@v3
19
19
  with:
20
20
  auto-update-conda: true
21
- python-version: "3.11"
22
- miniforge-variant: Miniforge3
21
+ python-version: "3.12"
22
+ miniforge-version: latest
23
23
  channels: conda-forge,defaults
24
- use-mamba: true
25
- channel-priority: strict
26
24
  show-channel-urls: true
27
25
 
28
26
  - name: configure conda and install requirements
29
27
  shell: bash -l {0}
30
28
  run: |
31
- mamba install --quiet pip
32
- mamba install --quiet --file=requirements.txt
29
+ conda install --yes pip
30
+ conda install --yes --file=requirements.txt
33
31
  pip install "documenteer[guide]"
34
32
 
35
33
  - name: install rubin_sim
@@ -15,17 +15,15 @@ jobs:
15
15
  - uses: conda-incubator/setup-miniconda@v3
16
16
  with:
17
17
  auto-update-conda: true
18
- python-version: ${{ matrix.python-version }}
19
- miniforge-variant: Miniforge3
18
+ python-version: "3.12"
19
+ miniforge-version: latest
20
20
  channels: conda-forge,defaults
21
- use-mamba: true
22
- channel-priority: strict
23
21
  show-channel-urls: true
24
22
 
25
23
  - name: Configure conda and install minimal requirements for cache
26
24
  shell: bash -l {0}
27
25
  run: |
28
- mamba install --quiet rubin-scheduler -c conda-forge
26
+ conda install --yes rubin-scheduler
29
27
 
30
28
  - name: Install rubin_sim from git
31
29
  shell: bash -l {0}
@@ -21,4 +21,4 @@ jobs:
21
21
  runs-on: ubuntu-latest
22
22
  steps:
23
23
  - uses: actions/checkout@v4
24
- - uses: chartboost/ruff-action@v1
24
+ - uses: astral-sh/ruff-action@v3
@@ -28,17 +28,15 @@ jobs:
28
28
  with:
29
29
  auto-update-conda: true
30
30
  python-version: ${{ matrix.python-version }}
31
- miniforge-variant: Miniforge3
32
- channels: conda-forge
33
- use-mamba: true
34
- channel-priority: strict
31
+ miniforge-version: latest
32
+ channels: conda-forge,defaults
35
33
  show-channel-urls: true
36
34
 
37
35
  - name: configure conda and install requirements
38
36
  shell: bash -l {0}
39
37
  run: |
40
- mamba install --quiet --file=requirements.txt
41
- mamba install --quiet --file=test-requirements.txt
38
+ conda install --yes --file=requirements.txt
39
+ conda install --yes --file=test-requirements.txt
42
40
 
43
41
  - name: install rubin_sim
44
42
  shell: bash -l {0}
@@ -99,7 +97,7 @@ jobs:
99
97
  - name: Set up Python
100
98
  uses: actions/setup-python@v5
101
99
  with:
102
- python-version: 3.11
100
+ python-version: "3.12"
103
101
  cache: "pip"
104
102
 
105
103
  - name: Install dependencies for build
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: rubin-sim
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: Scheduler, survey strategy analysis, and other simulation tools for Rubin Observatory.
5
5
  License: GPL
6
6
  Project-URL: documentation, https://rubin-sim.lsst.io
@@ -33,16 +33,18 @@ Requires-Dist: shapely
33
33
  Requires-Dist: skyfield
34
34
  Requires-Dist: skyproj
35
35
  Requires-Dist: tqdm
36
- Requires-Dist: rubin-scheduler
36
+ Requires-Dist: rubin-scheduler>=3.0
37
37
  Requires-Dist: pyarrow
38
+ Requires-Dist: gitpython
38
39
  Provides-Extra: test
39
40
  Requires-Dist: pytest; extra == "test"
40
- Requires-Dist: black; extra == "test"
41
+ Requires-Dist: black>=25; extra == "test"
41
42
  Requires-Dist: ruff; extra == "test"
42
43
  Requires-Dist: isort; extra == "test"
43
44
  Requires-Dist: pytest-cov; extra == "test"
44
45
  Provides-Extra: dev
45
46
  Requires-Dist: documenteer[guide]; extra == "dev"
47
+ Dynamic: license-file
46
48
 
47
49
  # rubin_sim
48
50
  Scheduler, survey strategy analysis, and other simulation tools for Rubin Observatory.
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env bash
2
+ #SBATCH --account=rubin:developers # Account name
3
+ #SBATCH --job-name=auxtel_prenight_daily # Job name
4
+ #SBATCH --output=/sdf/data/rubin/shared/scheduler/prenight/sbatch/compile_prenight_metadata_cache.out # Output file (stdout)
5
+ #SBATCH --error=/sdf/data/rubin/shared/scheduler/prenight/sbatch/compile_prenight_metadata_cache.err # Error file (stderr)
6
+ #SBATCH --partition=milano # Partition (queue) names
7
+ #SBATCH --nodes=1 # Number of nodes
8
+ #SBATCH --ntasks=1 # Number of tasks run in parallel
9
+ #SBATCH --cpus-per-task=1 # Number of CPUs per task
10
+ #SBATCH --mem=4G # Requested memory
11
+ #SBATCH --time=1:00:00 # Wall time (hh:mm:ss)
12
+
13
+ echo "******** START of compile_prenight_metadata_cache.sh **********"
14
+
15
+ # Source global definitions
16
+ if [ -f /etc/bashrc ]; then
17
+ . /etc/bashrc
18
+ fi
19
+
20
+ # SLAC S3DF - source all files under ~/.profile.d
21
+ if [[ -e ~/.profile.d && -n "$(ls -A ~/.profile.d/)" ]]; then
22
+ source <(cat $(find -L ~/.profile.d -name '*.conf'))
23
+ fi
24
+
25
+ source /sdf/group/rubin/sw/w_latest/loadLSST.sh
26
+ conda activate /sdf/data/rubin/shared/scheduler/envs/prenight
27
+ export AWS_PROFILE=prenight
28
+ WORK_DIR=$(date '+/sdf/data/rubin/shared/scheduler/prenight/work/compile_prenight_metadata_cache/%Y-%m-%dT%H%M%S' --utc)
29
+ echo "Working in $WORK_DIR"
30
+ mkdir ${WORK_DIR}
31
+ cd ${WORK_DIR}
32
+ printenv > env.out
33
+ compile_sim_archive_metadata_resource --append
34
+ echo "******* END of compile_prenight_metadata_cache.sh *********"
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env bash
2
+ #SBATCH --account=rubin:developers # Account name
3
+ #SBATCH --job-name=auxtel_prenight_daily # Job name
4
+ #SBATCH --output=/sdf/data/rubin/shared/scheduler/prenight/sbatch/run_prenight_sims.out # Output file (stdout)
5
+ #SBATCH --error=/sdf/data/rubin/shared/scheduler/prenight/sbatch/run_prenight_sims.err # Error file (stderr)
6
+ #SBATCH --partition=milano # Partition (queue) names
7
+ #SBATCH --nodes=1 # Number of nodes
8
+ #SBATCH --ntasks=1 # Number of tasks run in parallel
9
+ #SBATCH --cpus-per-task=1 # Number of CPUs per task
10
+ #SBATCH --mem=4G # Requested memory
11
+ #SBATCH --time=1:00:00 # Wall time (hh:mm:ss)
12
+
13
+ echo "******** START of run_prenight_sims.sh **********"
14
+
15
+ # Source global definitions
16
+ if [ -f /etc/bashrc ]; then
17
+ . /etc/bashrc
18
+ fi
19
+
20
+ # SLAC S3DF - source all files under ~/.profile.d
21
+ if [[ -e ~/.profile.d && -n "$(ls -A ~/.profile.d/)" ]]; then
22
+ source <(cat $(find -L ~/.profile.d -name '*.conf'))
23
+ fi
24
+
25
+ date --iso=s
26
+
27
+ source /sdf/group/rubin/sw/w_latest/loadLSST.sh
28
+ conda activate /sdf/data/rubin/shared/scheduler/envs/prenight
29
+
30
+ set -o xtrace
31
+
32
+ export AWS_PROFILE=prenight
33
+ WORK_DIR=$(date '+/sdf/data/rubin/shared/scheduler/prenight/work/run_prenight_sims/%Y-%m-%dT%H%M%S' --utc)
34
+ echo "Working in $WORK_DIR"
35
+ mkdir ${WORK_DIR}
36
+ cd ${WORK_DIR}
37
+
38
+ # Get ts_ocs_config
39
+ TS_CONFIG_OCS_VERSION=$(obs_version_at_time ts_config_ocs)
40
+ curl --location --output ts_config_ocs.zip https://github.com/lsst-ts/ts_config_ocs/archive/${TS_CONFIG_OCS_VERSION}.zip
41
+ unzip ts_config_ocs.zip
42
+ mv $(find . -maxdepth 1 -type d -name ts_config_ocs\*) ts_config_ocs
43
+
44
+ # Install required python packages
45
+ PACKAGE_DIR=$(readlink -f ${WORK_DIR}/packages)
46
+ mkdir ${PACKAGE_DIR}
47
+
48
+ # Get the scheduler version from the EFD and install it.
49
+ RUBIN_SCHEDULER_TAG=v$(obs_version_at_time rubin_scheduler)
50
+ pip install --no-deps --target=${PACKAGE_DIR} git+https://github.com/lsst/rubin_scheduler.git@${RUBIN_SCHEDULER_TAG}
51
+
52
+ # Cannot get ts_fbs_utils from the EFD, so just guess the highest semantic version tag in the repo.
53
+ TS_FBS_UTILS_TAG=$(curl -s https://api.github.com/repos/lsst-ts/ts_fbs_utils/tags | jq -r '.[].name' | egrep '^v[0-9]+.[0-9]+.[0-9]+$' | sort -V | tail -1)
54
+ pip install --no-deps --target=${PACKAGE_DIR} git+https://github.com/lsst-ts/ts_fbs_utils.git@${TS_FBS_UTILS_TAG}
55
+
56
+ # Get the scheduler configuration script
57
+ SCHEDULER_CONFIG_SCRIPT=$(scheduler_config_at_time latiss)
58
+
59
+ # Get the path to prenight_sim as provided by the current environment,
60
+ # so we do not accidentally run one from the adjusted PATH below.
61
+ PRENIGHT_SIM=$(which prenight_sim)
62
+
63
+ export PYTHONPATH=${PACKAGE_DIR}:${PYTHONPATH}
64
+ export PATH=${PACKAGE_DIR}/bin:${PATH}
65
+ printenv > env.out
66
+ date --iso=s
67
+ time ${PRENIGHT_SIM} --scheduler auxtel.pickle.xz --opsim None --script ${SCHEDULER_CONFIG_SCRIPT}
68
+ date --iso=s
69
+ echo "******* END of run_prenight_sims.sh *********"
@@ -20,4 +20,6 @@ API
20
20
 
21
21
  Self Calibration <selfcal-api>
22
22
 
23
- Skybrightness <skybrightness-api>
23
+ Sim archive <sim-archive-api>
24
+
25
+ Skybrightness <skybrightness-api>
@@ -0,0 +1,276 @@
1
+ .. py:currentmodule:: rubin_sim.sim_archive
2
+
3
+ .. _archive:
4
+
5
+ ========================================================
6
+ The Prototype OpSim Archive for ``schedview`` Dashboards
7
+ ========================================================
8
+
9
+ Introduction
10
+ ------------
11
+
12
+ Several tools will require an archive that provides access to simulations provided by ``rubin_scheduler``.
13
+ For example, the prenight briefing dashboard supplied by ``schedview`` is a tool for visualizing simualtions of a night of observing, and it requires access to such simulations.
14
+ There will eventually be other dashboards that will also need to read such tables for visualization, as well as tables describing visits completed by the actual instruments.
15
+ Users of these dashboards will need to use them to select which data sets are to be visualised: the dashboard code needs to provide both user interface elements that let the user select the desired table of visits, and also actually load the table itself.
16
+ The dashboard servers run within containers on kubernetes-based infrastructure, which operate best when persistent data is stored outside the containers themselves.
17
+ Therefore, these dashboards require an external (to the container) resource that supports searching for available simulations, and access to the data itself.
18
+
19
+ This archive design is intended primarily as a prototype, something to experiment with for a better informed development of requiriments.
20
+ So, flexibility and speed of implementation have been prioritized, with the intention that there be a significant rofactoring (or even outright replacement) when requirements have been more thoroughly developed.
21
+
22
+ Design
23
+ ------
24
+
25
+ The archive itself is a directory tree.
26
+ The URI of an archive is the URI of the root of the directory tree as supported by the ``lsst.resources`` package.
27
+ Each simulation in the archive has its own directory in this directory tree, named according to the ISO-8601 date on which a simulation was added to the archive, and a simple incrementing index separating different simulations added on the same day, such that the format for the directory for a specific simulation is::
28
+
29
+ ${ARCHIVE_URI}/{ISO_DATE}/{ADDITION_INDEX}
30
+
31
+ For example, if the URI of the archive is::
32
+
33
+ file:///my_data/sim_archive
34
+
35
+ then the URI of the third simulation added on June 21, 2030 will be::
36
+
37
+ file:///my_data/sim_archive/2030-06-21/3
38
+
39
+ Each simulation directory contains a metadata yaml file named ``sim_metadata.yaml``.
40
+ In the above example, the URI for this metadata file would be::
41
+
42
+ file:///my_data/sim_archive/2030-06-21/3/sim_metadata.yaml
43
+
44
+ A minimal ``sim_metadata.yaml`` file specifies the name of the sqlite3 database file with the visits.
45
+ For example, if the URI for the visit database in the above example is ``file:///my_data/sim_archive/2030-06-21/3/opsim.db``, then the minimal content of ``sim_metadata.yaml`` would be::
46
+
47
+ files:
48
+ observations:
49
+ name: 'opsim.db'
50
+
51
+ All other data in the metadata file is optional, but additional metadata will be required if the archived simulation is to be used for some use cases.
52
+ For example, if ``schedview``'s ``prenight`` dashboard is to be able to load the reward data, it must be able to locate the reward data from the metadata file, so that the metadata file needs to look something like this::
53
+
54
+ files:
55
+ observations:
56
+ name: 'opsim.db'
57
+ rewards:
58
+ name: 'rewards.h5'
59
+
60
+ Clients of the archive will also need to search available simulations for those meeting relevant criteria.
61
+ For example, the ``prenight`` dashboard will seach for simulations the include a desired night, in which case the range of nights covered by the simulation must be included.
62
+
63
+ A sample metadata file that includes an early guess at what the ``prenight`` dashboard will use looks like this::
64
+
65
+ files:
66
+ observations:
67
+ name: opsim.db
68
+ rewards:
69
+ name: rewards.h5
70
+ label: Notebook test on 2024-01-04 16:49:44.299
71
+ simulated_dates:
72
+ first: '2025-05-05'
73
+ last: '2025-05-05'
74
+
75
+ In the above:
76
+
77
+ ``label``
78
+ Simulations will appear in drop-down section widgets in dashdoards such as the pre-night dashboard.
79
+ The ``label`` element in the determines how the simulation will appear in the dropdown.
80
+ In other applications, this element may also be used as plot annotations or column or row headings.
81
+
82
+ ``simulation_dates``
83
+ Shows the range of dates covered by the simulation.
84
+ When the user specifies a night, the ``prenight`` dashboard will restrict the offered to those that cover the specified date.
85
+
86
+
87
+ Finally, a number of other elements may be included for debugging purposes.
88
+ A full file might look something like this::
89
+
90
+ files:
91
+ environment:
92
+ md5: 4381d7cc82049141c70216121e39f56d
93
+ name: environment.txt
94
+ notebook:
95
+ md5: 6b75c1dd8c4a3b83797c873f3270cc04
96
+ name: notebook.ipynb
97
+ observations:
98
+ md5: 1909d1afaf744ee50bdcf1a9625826ab
99
+ name: opsim.db
100
+ pypi:
101
+ md5: 9c86ea9b4e7aa40d3e206fad1a59ea31
102
+ name: pypi.json
103
+ rewards:
104
+ md5: 6d3c9d3e0dd7764ed60312e459586e1b
105
+ name: rewards.h5
106
+ scheduler:
107
+ md5: 5e88dfee657e6283dbc7a343f048db92
108
+ name: scheduler.pickle.xz
109
+ statistics:
110
+ md5: c515ba27d83bdbfa9e65cdefff2d9d75
111
+ name: obs_stats.txt
112
+ label: Notebook test on 2024-01-04 16:49:44.299
113
+ simulated_dates:
114
+ first: '2025-05-05'
115
+ last: '2025-05-05'
116
+ scheduler_version: 1.0.1.dev25+gba1ca4d.d20240102
117
+ sim_runner_kwargs:
118
+ mjd_start: 60800.9565967191
119
+ record_rewards: true
120
+ survey_length: 0.5155218997970223
121
+ tags:
122
+ - notebook
123
+ - devel
124
+ host: neilsen-nb
125
+ username: neilsen
126
+
127
+ This example has a number of additional elements useful for debugging, and which pehaps might be useful for future applictions, but which are not used (or planned to be used) by the prenight dashboard.
128
+
129
+ ``files/*``
130
+ A number of other types of files associated with specific simulations may be included.
131
+ These may be useful in future applications, or for debugging only.
132
+ See below for descriptions of the extra types of files in this example.
133
+ ``files/${TYPE}/md5``
134
+ Checksums for various files.
135
+ These can be useful both for checking for corruption, and for determining whether two simulations are identical without needing to download either.
136
+ ``scheduler_version``
137
+ The version of the scheduler used to produce the simualtions.
138
+ ``sim_runner_kwargs``
139
+ The arguments to the execution of ``sim_runner`` used to run the simulation.
140
+ ``tags``
141
+ A list of ad-hoc keywords.
142
+ For example, simulations used to test a specific jira issue may all have the name of the issue as a keyword.
143
+ Simulations used to support a give tech note may have the name of the tech note.
144
+ ``host``
145
+ The hostname on which the simulation was run.
146
+ ``username``
147
+ The username of the user who ran the simulation.
148
+
149
+ Optional (for debugging or speculative future uses only) file types listed above are:
150
+
151
+ ``environment``
152
+ The conda environment specification for the environment used to run the simulation.
153
+ ``notebook``
154
+ The notebook used to create the simulation, for example as created using the ``%notebook`` jupyter magic.
155
+ ``pypy``
156
+ The ``pypy`` package list of the environment used to run the simulation.
157
+ If the simulation is run using only conda-installed packages, this will be redundant with ``environment``.
158
+ ``scheduler``
159
+ A python pickle of the scheduler, in the state as of the start of the simulation.
160
+ ``statistics``
161
+ Basic statistics for the visit database.
162
+
163
+ Metadata cache
164
+ --------------
165
+
166
+ Reading each ``sim_metadata.yaml`` individually when loading metadata for a large number of simulations can be slow.
167
+ Therefore, metadata for sets of simulations can be compiled into a ``compiled_metadata_cache.h5`` file.
168
+ This file stores four tables in `hdf5` format: ``simulations``, ``files``, ``kwargs``, and ``tags``.
169
+ Each of these tables is indexed by the URI of a simulation.
170
+
171
+ The ``files`` table contains one column for each key in the ``files`` dictionary in the yaml metadata file for the simulation, providing the metadata needed to reconstruct this element of the dictionary.
172
+
173
+ The ``kwargs`` table contains one column for each key in the ``sim_runner_kwargs`` dictionary in the yaml metadata file for the simulation, providing the metadata needed to reconstruct this element of the dictionary.
174
+ If a keyword argument is not set, an `numpy.nan` value is stored in the table.
175
+
176
+ The ``tags`` table contains one column: ``tag``, and contains one row for each tag in each simulation.
177
+
178
+ The ``simulations`` table contains one column for every other keyword found in the metadata yaml files.
179
+ If a keyword argument is not set, an `numpy.nan` value is stored in the table.
180
+
181
+ The ``compile_sim_archive_metadata_resource`` command in ``rubin_sim`` maintains the ``compiled_metadata_cache.h5`` file in an archive.
182
+ By default, it reads every ``sim_metadata.yaml`` file in the archive and builds a corresponding cache hdf5 file from scratch.
183
+ If called with an ``--append`` flag, it reads an existing metadata cache file, reads ``sim_metadata.yaml`` files for simulations more recently added than the last file in the existing cache, appends them to the previous results from the cache, and writes the result to the cache.
184
+ The ``append`` flag therefore speeds up the update considerably, but does not update the cache for any changes to previously added simulations (including deletions).
185
+
186
+ The ``compile_sim_archive_metadata_resource`` needs to be run to update the cache.
187
+ Normall, a cron job will execute this command routinely to keep the cache reasonably up to date.
188
+ Because the tools read the metadata yaml files for any simulations added after the most recent cache update, it will function correctly even if the cache is out of date (but slower).
189
+
190
+ Automatic archiving of generated data
191
+ -------------------------------------
192
+
193
+ The ``rubin_sim`` package provides a tool to combine running a simulation and adding the results to an archive, including any metadata that can be derived automatically.
194
+ The ``rubin_sim.sim_archive.drive_sim`` function is wrapper around ``rubin_sim.scheduler.sim_runner`` that incorporates this metadata collection and the creation of the entry in an archive.
195
+ It takes all of the same arguments that ``sim_runner`` does, and passes them directly to ``sim_runner``.
196
+ In addition, it takes a few arguments that specify the archive into which it is to be added (``archive_uri``), the label to be included in the metadata (``label``), and the code used to run the simulation (ethier ``script`` or ``notebook``).
197
+ Details are available in the ``drive_sim`` docstring.
198
+
199
+ For example, if this code is put into a file and run as a script, it will run the specificed simulation and add it to the specified archive::
200
+
201
+ from astropy.time import Time
202
+
203
+ from rubin_sim.scheduler.example import example_scheduler
204
+ from rubin_sim.scheduler.model_observatory import ModelObservatory
205
+ from rubin_sim.sim_archive import drive_sim
206
+
207
+ sim_mjd_start = Time("2025-05-05").mjd + 0.5
208
+ # The start date of the simualtion.
209
+ # Offset by 0.5 to avoid starting late when the MJD rollover occurs during or
210
+ # after twilight. See dayObs in SITCOMTN-32: https://sitcomtn-032.lsst.io/ .
211
+
212
+ sim_length = 1.0
213
+ # Passed to sum_runner, in units of days.
214
+
215
+ archive_uri = "file:///sdf/data/rubin/user/neilsen/data/test_sim_archive/"
216
+ # The URI of the root of the archive. The trailing "/" is required.
217
+
218
+ observatory = ModelObservatory()
219
+ scheduler = example_scheduler()
220
+ scheduler.keep_rewards = True
221
+
222
+ results = drive_sim(
223
+ observatory=observatory,
224
+ scheduler=scheduler,
225
+ archive_uri=archive_uri,
226
+ label=f"Example simulation started at {Time.now().iso}.",
227
+ script=__file__,
228
+ tags=["example"],
229
+ mjd_start=sim_mjd_start,
230
+ survey_length=sim_length,
231
+ record_rewards=True,
232
+ )
233
+
234
+ The result looks like this::
235
+
236
+ bash$ ls /sdf/data/rubin/user/neilsen/data/test_sim_archive/2024-01-18/1
237
+ environment.txt example_archived_sim_driver.py obs_stats.txt opsim.db pypi.json rewards.h5 scheduler.pickle.xz sim_metadata.yaml
238
+ bash$ cat /sdf/data/rubin/user/neilsen/data/test_sim_archive/2024-01-18/1/sim_metadata.yaml
239
+ files:
240
+ environment:
241
+ md5: 33f94ddf8975f9641a1f524fd22e362e
242
+ name: environment.txt
243
+ observations:
244
+ md5: 8b1ee9a604a88d2708d2bfd924ac3cd9
245
+ name: opsim.db
246
+ pypi:
247
+ md5: 51a8deee5018f59f20d5741fd1a64778
248
+ name: pypi.json
249
+ rewards:
250
+ md5: 10e4ab9397382bfa108fa21354da3526
251
+ name: rewards.h5
252
+ scheduler:
253
+ md5: 35713860dc9ba7a425500f63939d0e02
254
+ name: scheduler.pickle.xz
255
+ script:
256
+ md5: b4a476a4fd1231ea1ca44149784f1c3f
257
+ name: example_archived_sim_driver.py
258
+ statistics:
259
+ md5: 7c6a6af38aff3ce4145146e35f929b47
260
+ name: obs_stats.txt
261
+ host: sdfrome002.sdf.slac.stanford.edu
262
+ label: Example simulation started at 2024-01-18 15:46:27.758.
263
+ scheduler_version: 1.0.1.dev25+gba1ca4d.d20240102
264
+ sim_runner_kwargs:
265
+ mjd_start: 60800.5
266
+ record_rewards: true
267
+ survey_length: 1.0
268
+ simulated_dates:
269
+ first: '2025-05-04'
270
+ last: '2025-05-04'
271
+ tags:
272
+ - example
273
+ username: neilsen
274
+
275
+ Alternately, the simulation can be run from a ``jupyter`` notebook similarly, excepet that instead of saving the script that generated the simulation, a notebook with the cells of notebook that created the simulation up to the cell that runs the simulation can be stored instead.
276
+ An example can be found in the ``archive/sim_and_archive.ipynb`` in the `rubin_sim_notebook github repository <https://github.com/lsst/rubin_sim_notebooks>`_.
@@ -14,6 +14,8 @@ Installation from PyPI:
14
14
  ::
15
15
 
16
16
  pip install rubin-sim
17
+ scheduler_download_data
18
+ rs_download_data
17
19
 
18
20
  Note: pip installation of rubin-sim will lack the JPL data (DE405, etc.)
19
21
  that is needed to actually run ``pyoorb``, used in ``rubin_sim.moving_objects``, as this is not currently available from PyPI.
@@ -24,10 +26,12 @@ or from conda-forge:
24
26
  ::
25
27
 
26
28
  conda install -c conda-forge rubin-sim
29
+ scheduler_download_data
30
+ rs_download_data
27
31
 
28
- Please note that following either installation,
29
- additional data must be downloaded to use the software,
30
- following the instructions at
32
+ The `scheduler_download_data` and `rs_download_data` commands will
33
+ download data files to the default location of `~/rubin_sim_data`.
34
+ To store the data elsewhere, see instructions at
31
35
  :ref:`Data Download<data-download>`.
32
36
 
33
37
  For Developer Use
@@ -39,34 +43,21 @@ First, clone the `rubin_sim <https://github.com/lsst/rubin_sim>`_ repository:
39
43
 
40
44
  git clone git@github.com:lsst/rubin_sim.git
41
45
  cd rubin_sim
42
-
43
-
44
- Create a conda environment for it:
45
-
46
- ::
47
-
48
- conda create --channel conda-forge --name rubin-sim --file requirements.txt python=3.11
49
-
50
-
51
- If you want to run tests (please do), install the test requirements as well:
52
-
53
- ::
54
-
46
+ conda create --channel conda-forge --name rubin-sim --file requirements.txt python=3.12
55
47
  conda activate rubin-sim
56
- conda install -c conda-forge --file=test-requirements.txt
57
-
58
-
59
- Install the ``rubin_sim`` package into this environment (from the rubin_sim directory):
60
-
61
- ::
62
-
48
+ conda install -c conda-forge --file=test-requirements.txt # Optional test requirements
63
49
  pip install -e . --no-deps
50
+ scheduler_download_data
51
+ rs_download_data
64
52
 
65
- Please note that following installation,
66
- additional data must be downloaded to use the software,
67
- following the instructions at
53
+ The `scheduler_download_data` and `rs_download_data` commands will
54
+ download data files to the default location of `~/rubin_sim_data`.
55
+ To store the data elsewhere, see instructions at
68
56
  :ref:`Data Download<data-download>`.
69
57
 
58
+ Note conda may override previous installs of
59
+ `rubin_scheduler`, in which case one can uninstall the conda version
60
+ and re-run `pip install -e . --no-deps` from the needed git repo directory.
70
61
 
71
62
  Building Documentation
72
63
  ----------------------
@@ -0,0 +1,12 @@
1
+ .. py:currentmodule:: rubin_sim.sim_archive
2
+
3
+ .. _sim-archive-api:
4
+
5
+ ===============
6
+ sim_archive API
7
+ ===============
8
+
9
+ .. automodule:: rubin_sim.sim_archive
10
+ :imported-members:
11
+ :members:
12
+ :show-inheritance:
@@ -21,7 +21,6 @@ User Guide
21
21
 
22
22
  Self Calibration <selfcal>
23
23
 
24
- Skybrightness <skybrightness>
25
-
24
+ Simulation archive <archive>
26
25
 
27
-
26
+ Skybrightness <skybrightness>
@@ -0,0 +1,73 @@
1
+ ---
2
+ apiVersion: v1
3
+ kind: Namespace
4
+ metadata:
5
+ name: maf
6
+
7
+ ---
8
+ apiVersion: apps/v1
9
+ kind: Deployment
10
+ metadata:
11
+ namespace: maf
12
+ name: maf-server
13
+ labels:
14
+ app: maf-server
15
+ spec:
16
+ replicas: 1
17
+ selector:
18
+ matchLabels: app maf-server
19
+ template:
20
+ metadata:
21
+ labels:
22
+ app: maf-server
23
+ spec:
24
+ containers:
25
+ - name: maf
26
+ image: "ghcr.io/....:tag"
27
+ imagePullPolicy: Always
28
+ resources:
29
+ limits:
30
+ cpu: 1
31
+ memory: "2Gi"
32
+ requests:
33
+ cpu: 500m
34
+ memory: "1Gi"
35
+ volumeMounts:
36
+ - mountPath: /sdf/data/rubin
37
+ name: sdf-data-rubin
38
+ volumes:
39
+ - name: sdf-data-rubin
40
+ persistentVolumeClaim:
41
+ claimName: sdf-data-rubin
42
+ ---
43
+ apiVersion: v1
44
+ kind: PersistentVolumeClaim
45
+ metadata:
46
+ namespace: maf
47
+ name: sdf-data-rubin
48
+ spec:
49
+ storageClassName: sdf-data-rubin
50
+ accessModes:
51
+ - ReadOnlyMany
52
+ resources:
53
+ requests:
54
+ storage: 1Gi
55
+ ---
56
+ apiVersion: v1
57
+ kind: Service
58
+ metadata:
59
+ namespace: maf
60
+ name: usdf-maf
61
+ labels:
62
+ app: maf-server
63
+ annotations:
64
+ metallb.universe.tf/address-pool: sdf-services
65
+ spec:
66
+ type: LoadBalancer
67
+ ports:
68
+ - name: http
69
+ port: 80
70
+ protocol: TCP
71
+ targetPort: 80
72
+ selector:
73
+ app: maf-server