rubin-sim 2.2.2__tar.gz → 2.2.4__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.2 → rubin_sim-2.2.4}/.github/workflows/test_and_build.yaml +1 -0
  2. {rubin_sim-2.2.2/rubin_sim.egg-info → rubin_sim-2.2.4}/PKG-INFO +19 -17
  3. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/batch/run_prenight_sims.sh +7 -3
  4. rubin_sim-2.2.4/optional-requirements.txt +6 -0
  5. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/pyproject.toml +23 -20
  6. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/requirements.txt +16 -20
  7. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/static_probes_fom_summary_metric.py +1 -1
  8. rubin_sim-2.2.4/rubin_sim/maf/run_comparison/gather_summaries.py +125 -0
  9. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/coord_stackers.py +37 -1
  10. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/date_stackers.py +48 -0
  11. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/opsim_utils.py +1 -1
  12. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/stellar_mags.py +1 -1
  13. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/sim_archive/prenight.py +62 -15
  14. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/sim_archive/sim_archive.py +94 -10
  15. {rubin_sim-2.2.2 → rubin_sim-2.2.4/rubin_sim.egg-info}/PKG-INFO +19 -17
  16. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/requires.txt +19 -16
  17. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_gathersummaries.py +2 -2
  18. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_stackers.py +51 -0
  19. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/sim_archive/test_prenight.py +2 -1
  20. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/sim_archive/test_sim_archive.py +3 -3
  21. rubin_sim-2.2.2/optional-requirements.txt +0 -2
  22. rubin_sim-2.2.2/rubin_sim/maf/run_comparison/gather_summaries.py +0 -154
  23. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.git_archival.txt +0 -0
  24. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.gitattributes +0 -0
  25. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/build_container.yaml +0 -0
  26. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/build_docs.yaml +0 -0
  27. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/cache.yaml +0 -0
  28. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/rebase_checker.yaml +0 -0
  29. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/ruff.yaml +0 -0
  30. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.gitignore +0 -0
  31. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.pre-commit-config.yaml +0 -0
  32. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/Dockerfile +0 -0
  33. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/LICENSE +0 -0
  34. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/README.md +0 -0
  35. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/README_dev.md +0 -0
  36. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/batch/compile_prenight_metadata_cache.sh +0 -0
  37. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/container_environment.yaml +0 -0
  38. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/.gitignore +0 -0
  39. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/Makefile +0 -0
  40. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/api.rst +0 -0
  41. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/archive.rst +0 -0
  42. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/conf.py +0 -0
  43. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/data-api.rst +0 -0
  44. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/data-download.rst +0 -0
  45. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/documenteer.toml +0 -0
  46. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/index.rst +0 -0
  47. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/installation.rst +0 -0
  48. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/introduction.rst +0 -0
  49. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-batches.rst +0 -0
  50. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-db.rst +0 -0
  51. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-maf-contrib.rst +0 -0
  52. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-maps.rst +0 -0
  53. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-metricbundles.rst +0 -0
  54. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-metrics.rst +0 -0
  55. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-plots.rst +0 -0
  56. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-run-comparison.rst +0 -0
  57. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-slicers.rst +0 -0
  58. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-stackers.rst +0 -0
  59. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-utils.rst +0 -0
  60. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api.rst +0 -0
  61. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf.rst +0 -0
  62. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/metric_list.py +0 -0
  63. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/moving-objects-api.rst +0 -0
  64. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/moving-objects.rst +0 -0
  65. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/phot-utils-api.rst +0 -0
  66. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/phot-utils.rst +0 -0
  67. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/satellite-constellations-api.rst +0 -0
  68. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/satellite-constellations.rst +0 -0
  69. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/selfcal-api.rst +0 -0
  70. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/selfcal.rst +0 -0
  71. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/sim-archive-api.rst +0 -0
  72. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/skybrightness-api.rst +0 -0
  73. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/skybrightness.rst +0 -0
  74. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/user-guide.rst +0 -0
  75. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/example_deployment.yaml +0 -0
  76. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/__init__.py +0 -0
  77. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/data/__init__.py +0 -0
  78. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/data/rs_download_data.py +0 -0
  79. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/__init__.py +0 -0
  80. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/__init__.py +0 -0
  81. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/altaz_batch.py +0 -0
  82. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/col_map_dict.py +0 -0
  83. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/common.py +0 -0
  84. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/ddf_batch.py +0 -0
  85. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/filterchange_batch.py +0 -0
  86. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/glance_batch.py +0 -0
  87. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/hourglass_batch.py +0 -0
  88. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/info_batch.py +0 -0
  89. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/metadata_batch.py +0 -0
  90. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/moving_objects_batch.py +0 -0
  91. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/openshutter_batch.py +0 -0
  92. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/radar_limited.py +0 -0
  93. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/science_radar_batch.py +0 -0
  94. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/skycoverage.py +0 -0
  95. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/slew_batch.py +0 -0
  96. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/srd_batch.py +0 -0
  97. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/time_batch.py +0 -0
  98. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/time_sci_batch.py +0 -0
  99. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/visitdepth_batch.py +0 -0
  100. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/db/__init__.py +0 -0
  101. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/db/add_run.py +0 -0
  102. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/db/results_db.py +0 -0
  103. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/db/tracking_db.py +0 -0
  104. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/ddf_dir.py +0 -0
  105. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/generate_ss.py +0 -0
  106. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/glance_dir.py +0 -0
  107. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/__init__.py +0 -0
  108. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/calculate_lsst_field_visibility_astropy.py +0 -0
  109. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/depth_limited_num_gal_metric.py +0 -0
  110. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/example_new_metrics.py +0 -0
  111. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/filter_pair_t_gaps_metric.py +0 -0
  112. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/grb_transient_metric.py +0 -0
  113. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/gw170817_det_metric.py +0 -0
  114. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/intervals_between_obs_metric.py +0 -0
  115. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/kne_metrics.py +0 -0
  116. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lss_metrics.py +0 -0
  117. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lss_obs_strategy/__init__.py +0 -0
  118. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lss_obs_strategy/constants_for_pipeline.py +0 -0
  119. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_metric_extended.py +0 -0
  120. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_with_pixel_calibration.py +0 -0
  121. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lv_dwarfs/__init__.py +0 -0
  122. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lv_dwarfs/lv_dwarfs_metrics.py +0 -0
  123. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/microlensing_metric.py +0 -0
  124. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/num_obs_in_survey_time_overlap_metric.py +0 -0
  125. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/periodic_metric.py +0 -0
  126. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/periodic_star_metric.py +0 -0
  127. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/periodic_star_modulation_metric.py +0 -0
  128. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/presto_color_kne_pop_metric.py +0 -0
  129. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/selfcal_uniformity_metric.py +0 -0
  130. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_count_mass_metric.py +0 -0
  131. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_count_metric.py +0 -0
  132. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/__init__.py +0 -0
  133. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/abs_mag.py +0 -0
  134. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/coords.py +0 -0
  135. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/readme.txt +0 -0
  136. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/spec_type.py +0 -0
  137. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/starcount.py +0 -0
  138. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/starcount_bymass.py +0 -0
  139. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/stellardensity.py +0 -0
  140. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/tdes_pop_metric.py +0 -0
  141. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/transient_ascii_sed_metric.py +0 -0
  142. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/triplet_metric.py +0 -0
  143. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/var_depth_metric.py +0 -0
  144. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/xrb_metrics.py +0 -0
  145. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/young_stellar_objects_metric.py +0 -0
  146. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_night_report.py +0 -0
  147. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/make_fbs_tracking_db.py +0 -0
  148. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/__init__.py +0 -0
  149. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/base_map.py +0 -0
  150. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/create_gaia_density_map.py +0 -0
  151. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/dust_map.py +0 -0
  152. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/dust_map_3d.py +0 -0
  153. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/ebv_3d_hp.py +0 -0
  154. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/ebv_hp.py +0 -0
  155. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/gal_coords_map.py +0 -0
  156. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/galactic_plane_priority_maps.py +0 -0
  157. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/stellar_density_map.py +0 -0
  158. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/trilegal_map.py +0 -0
  159. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metadata_dir.py +0 -0
  160. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metric_bundles/__init__.py +0 -0
  161. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metric_bundles/metric_bundle.py +0 -0
  162. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metric_bundles/metric_bundle_group.py +0 -0
  163. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metric_bundles/mo_metric_bundle.py +0 -0
  164. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/__init__.py +0 -0
  165. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/agn_time_lag_metric.py +0 -0
  166. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/agnstructure.py +0 -0
  167. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/area_summary_metrics.py +0 -0
  168. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/base_metric.py +0 -0
  169. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/brown_dwarf_metric.py +0 -0
  170. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/cadence_metrics.py +0 -0
  171. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/calibration_metrics.py +0 -0
  172. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/chip_vendor_metric.py +0 -0
  173. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/color_slope_metrics.py +0 -0
  174. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/coverage_metric.py +0 -0
  175. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/crowding_metric.py +0 -0
  176. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/cumulative_metric.py +0 -0
  177. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/dcr_metric.py +0 -0
  178. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/exgal_m5.py +0 -0
  179. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/fft_metric.py +0 -0
  180. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/galactic_plane_metrics.py +0 -0
  181. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/galplane_time_sampling_metrics.py +0 -0
  182. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/hourglass_metric.py +0 -0
  183. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/incremental_template_metric.py +0 -0
  184. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/kuiper_metrics.py +0 -0
  185. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/mo_metrics.py +0 -0
  186. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/mo_summary_metrics.py +0 -0
  187. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/night_pointing_metric.py +0 -0
  188. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/optimal_m5_metric.py +0 -0
  189. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/pair_metric.py +0 -0
  190. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/periodic_detect_metric.py +0 -0
  191. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/phase_gap_metric.py +0 -0
  192. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/qso_number_counts_metric.py +0 -0
  193. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/scaling_metrics.py +0 -0
  194. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/schedview_metrics.py +0 -0
  195. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/season_metrics.py +0 -0
  196. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/simple_metrics.py +0 -0
  197. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sky_sat_metric.py +0 -0
  198. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sn_cadence_metric.py +0 -0
  199. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sn_n_sn_metric.py +0 -0
  200. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sn_sl_metric.py +0 -0
  201. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sn_snr_metric.py +0 -0
  202. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/snr_weight.py +0 -0
  203. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/star_density.py +0 -0
  204. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/string_count_metric.py +0 -0
  205. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/summary_metrics.py +0 -0
  206. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/surfb_metric.py +0 -0
  207. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/technical_metrics.py +0 -0
  208. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/tgaps.py +0 -0
  209. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/transient_metrics.py +0 -0
  210. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/use_metrics.py +0 -0
  211. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/vector_metrics.py +0 -0
  212. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/visit_groups_metric.py +0 -0
  213. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/weak_lensing_systematics_metric.py +0 -0
  214. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/__init__.py +0 -0
  215. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/hg_plotters.py +0 -0
  216. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/hourglass_plotters.py +0 -0
  217. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/mo_plotters.py +0 -0
  218. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/nd_plotters.py +0 -0
  219. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/neo_distance_plotter.py +0 -0
  220. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/night_pointing_plotter.py +0 -0
  221. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/oned_plotters.py +0 -0
  222. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/perceptual_rainbow.py +0 -0
  223. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/plot_handler.py +0 -0
  224. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/skyproj_plotters.py +0 -0
  225. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/spatial_plotters.py +0 -0
  226. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/special_plotters.py +0 -0
  227. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/two_d_plotters.py +0 -0
  228. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/xyplotter.py +0 -0
  229. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/__init__.py +0 -0
  230. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/archive.py +0 -0
  231. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/microlensing_compare.py +0 -0
  232. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/radar_plot.py +0 -0
  233. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/summary_plots.py +0 -0
  234. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_moving_calc.py +0 -0
  235. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_moving_fractions.py +0 -0
  236. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_moving_join.py +0 -0
  237. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_selfcal_metric.py +0 -0
  238. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/scimaf_dir.py +0 -0
  239. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/show_maf.py +0 -0
  240. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/__init__.py +0 -0
  241. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/base_slicer.py +0 -0
  242. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/base_spatial_slicer.py +0 -0
  243. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/healpix_sdss_slicer.py +0 -0
  244. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/healpix_slicer.py +0 -0
  245. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/healpix_subset_slicer.py +0 -0
  246. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/hourglass_slicer.py +0 -0
  247. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/mo_slicer.py +0 -0
  248. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/movie_slicer.py +0 -0
  249. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/nd_slicer.py +0 -0
  250. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/one_d_slicer.py +0 -0
  251. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/time_interval_slicers.py +0 -0
  252. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/uni_slicer.py +0 -0
  253. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/user_points_slicer.py +0 -0
  254. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/__init__.py +0 -0
  255. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/base_stacker.py +0 -0
  256. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/general_stackers.py +0 -0
  257. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/get_col_info.py +0 -0
  258. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/label_stackers.py +0 -0
  259. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/m5_optimal_stacker.py +0 -0
  260. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/mo_phase.py +0 -0
  261. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/mo_stackers.py +0 -0
  262. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/n_follow_stacker.py +0 -0
  263. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/neo_dist_stacker.py +0 -0
  264. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/sdss_stackers.py +0 -0
  265. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/sn_stacker.py +0 -0
  266. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/teff_stacker.py +0 -0
  267. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/__init__.py +0 -0
  268. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/astrometry_utils.py +0 -0
  269. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/generate_fov_map.py +0 -0
  270. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/get_date_version.py +0 -0
  271. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/maf_utils.py +0 -0
  272. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/output_utils.py +0 -0
  273. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/sn_n_sn_utils.py +0 -0
  274. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/sn_utils.py +0 -0
  275. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/__init__.py +0 -0
  276. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/favicon.ico +0 -0
  277. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/maf_run_results.py +0 -0
  278. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/maf_tracking.py +0 -0
  279. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/sorttable.js +0 -0
  280. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/allmetricresults.html +0 -0
  281. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/configs.html +0 -0
  282. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/macros.html +0 -0
  283. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/master.html +0 -0
  284. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/metricselect.html +0 -0
  285. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/multicolor.html +0 -0
  286. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/results.html +0 -0
  287. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/runselect.html +0 -0
  288. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/stats.html +0 -0
  289. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/__init__.py +0 -0
  290. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/base_obs.py +0 -0
  291. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/cheby_fits.py +0 -0
  292. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/cheby_values.py +0 -0
  293. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/chebyshev_utils.py +0 -0
  294. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/direct_obs.py +0 -0
  295. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/make_lsst_obs.py +0 -0
  296. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/ooephemerides.py +0 -0
  297. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/orbits.py +0 -0
  298. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/pre_generate.py +0 -0
  299. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/utils.py +0 -0
  300. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/__init__.py +0 -0
  301. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/bandpass.py +0 -0
  302. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/photometric_parameters.py +0 -0
  303. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/physical_parameters.py +0 -0
  304. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/predicted_zeropoints.py +0 -0
  305. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/sed.py +0 -0
  306. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/sed_utils.py +0 -0
  307. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/signaltonoise.py +0 -0
  308. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/spectral_resampling.py +0 -0
  309. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/satellite_constellations/__init__.py +0 -0
  310. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/satellite_constellations/basis_function.py +0 -0
  311. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/satellite_constellations/model_observatory.py +0 -0
  312. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/satellite_constellations/sat_utils.py +0 -0
  313. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/__init__.py +0 -0
  314. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/generate_catalog.py +0 -0
  315. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/offsets.py +0 -0
  316. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/solver.py +0 -0
  317. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/star_tools.py +0 -0
  318. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/sim_archive/__init__.py +0 -0
  319. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/sim_archive/make_snapshot.py +0 -0
  320. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/__init__.py +0 -0
  321. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/allsky_db.py +0 -0
  322. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/data/ESO_Spectra/eso_tools.py +0 -0
  323. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/data/solarSpec/package.py +0 -0
  324. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/generate_hdf5.py +0 -0
  325. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/interp_components.py +0 -0
  326. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/sky_model.py +0 -0
  327. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/twilight_func.py +0 -0
  328. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/utils.py +0 -0
  329. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/SOURCES.txt +0 -0
  330. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/dependency_links.txt +0 -0
  331. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/entry_points.txt +0 -0
  332. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/top_level.txt +0 -0
  333. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/setup.cfg +0 -0
  334. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/setup.py +0 -0
  335. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/showmaf-deploy.yaml +0 -0
  336. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/test-requirements.txt +0 -0
  337. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/data/test_data.py +0 -0
  338. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/data/test_ddf_grid.py +0 -0
  339. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_3x2fom.py +0 -0
  340. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_archive.py +0 -0
  341. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_basemetrics.py +0 -0
  342. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_batchcommon.py +0 -0
  343. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_batches.py +0 -0
  344. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_cadencemetrics.py +0 -0
  345. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_calibrationmetrics.py +0 -0
  346. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_color_slopes.py +0 -0
  347. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_healpixslicer.py +0 -0
  348. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_healpixsubsetslicer.py +0 -0
  349. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_hgplotters.py +0 -0
  350. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_hourglassmetric.py +0 -0
  351. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_io.py +0 -0
  352. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_json.py +0 -0
  353. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_maps.py +0 -0
  354. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_metricbundle.py +0 -0
  355. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_mometrics.py +0 -0
  356. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_movieslicer.py +0 -0
  357. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_ndslicer.py +0 -0
  358. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_neodistanceplotter.py +0 -0
  359. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_onedslicer.py +0 -0
  360. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_opsimutils.py +0 -0
  361. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_plotters.py +0 -0
  362. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_resultsdb.py +0 -0
  363. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_schedviewmetrics.py +0 -0
  364. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_simplemetrics.py +0 -0
  365. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_snmetrics.py +0 -0
  366. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_snmetrics_nsn.py +0 -0
  367. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_stellarmags.py +0 -0
  368. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_stringcount.py +0 -0
  369. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_summary_plots.py +0 -0
  370. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_summarymetrics.py +0 -0
  371. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_technicalmetrics.py +0 -0
  372. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_templatemetrics.py +0 -0
  373. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_timeintervalslicers.py +0 -0
  374. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_trackingdb.py +0 -0
  375. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_unislicer.py +0 -0
  376. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_vectormetrics.py +0 -0
  377. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_visitgroupsmetric.py +0 -0
  378. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_camera.py +0 -0
  379. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_chebyfits.py +0 -0
  380. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_chebyshevutils.py +0 -0
  381. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_chebyvalues.py +0 -0
  382. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_ephemerides.py +0 -0
  383. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_orbits.py +0 -0
  384. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_approximatebandpasses.py +0 -0
  385. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_photometricparameters.py +0 -0
  386. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_photometry.py +0 -0
  387. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_predicted_zeropoints.py +0 -0
  388. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_read_bandpasses.py +0 -0
  389. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_sed.py +0 -0
  390. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_snr.py +0 -0
  391. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/satellite_constellations/test_satellites.py +0 -0
  392. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/sim_archive/test_make_snapshot.py +0 -0
  393. {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/skybrightness/test_skymodel.py +0 -0
@@ -36,6 +36,7 @@ jobs:
36
36
  shell: bash -l {0}
37
37
  run: |
38
38
  conda install --yes --file=requirements.txt
39
+ conda install --yes --file=optional-requirements.txt
39
40
  conda install --yes --file=test-requirements.txt
40
41
 
41
42
  - name: install rubin_sim
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rubin-sim
3
- Version: 2.2.2
3
+ Version: 2.2.4
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
@@ -14,28 +14,26 @@ Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Topic :: Scientific/Engineering :: Astronomy
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: numpy
18
- Requires-Dist: matplotlib
19
- Requires-Dist: healpy
20
- Requires-Dist: pandas
21
- Requires-Dist: numexpr
22
- Requires-Dist: scipy
23
- Requires-Dist: sqlalchemy
24
- Requires-Dist: astropy
25
- Requires-Dist: tables
26
- Requires-Dist: h5py
27
17
  Requires-Dist: astroplan
18
+ Requires-Dist: astropy
28
19
  Requires-Dist: colorcet
29
20
  Requires-Dist: cycler
30
- Requires-Dist: george
31
- Requires-Dist: scikit-learn
21
+ Requires-Dist: gitpython
22
+ Requires-Dist: h5py
23
+ Requires-Dist: healpy
24
+ Requires-Dist: matplotlib
25
+ Requires-Dist: numexpr
26
+ Requires-Dist: numpy
27
+ Requires-Dist: pandas
28
+ Requires-Dist: pyarrow
29
+ Requires-Dist: rubin-scheduler>=3.0
30
+ Requires-Dist: scipy
32
31
  Requires-Dist: shapely
33
- Requires-Dist: skyfield
32
+ Requires-Dist: skyfield>=1.52
34
33
  Requires-Dist: skyproj
34
+ Requires-Dist: sqlalchemy
35
+ Requires-Dist: tables
35
36
  Requires-Dist: tqdm
36
- Requires-Dist: rubin-scheduler>=3.0
37
- Requires-Dist: pyarrow
38
- Requires-Dist: gitpython
39
37
  Provides-Extra: test
40
38
  Requires-Dist: pytest; extra == "test"
41
39
  Requires-Dist: black>=25; extra == "test"
@@ -44,6 +42,10 @@ Requires-Dist: isort; extra == "test"
44
42
  Requires-Dist: pytest-cov; extra == "test"
45
43
  Provides-Extra: dev
46
44
  Requires-Dist: documenteer[guide]; extra == "dev"
45
+ Provides-Extra: extras
46
+ Requires-Dist: george; extra == "extras"
47
+ Requires-Dist: scikit-learn; extra == "extras"
48
+ Requires-Dist: pyoorb; extra == "extras"
47
49
  Dynamic: license-file
48
50
 
49
51
  # rubin_sim
@@ -29,6 +29,7 @@ conda activate /sdf/data/rubin/shared/scheduler/envs/prenight
29
29
 
30
30
  set -o xtrace
31
31
 
32
+ export TELESCOPE=$1
32
33
  export AWS_PROFILE=prenight
33
34
  WORK_DIR=$(date '+/sdf/data/rubin/shared/scheduler/prenight/work/run_prenight_sims/%Y-%m-%dT%H%M%S' --utc)
34
35
  echo "Working in $WORK_DIR"
@@ -36,8 +37,9 @@ mkdir ${WORK_DIR}
36
37
  cd ${WORK_DIR}
37
38
 
38
39
  # Get ts_ocs_config
40
+ TS_CONFIG_OCS_REPO="https://github.com/lsst-ts/ts_config_ocs"
39
41
  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
42
+ curl --location --output ts_config_ocs.zip ${TS_CONFIG_OCS_REPO}/archive/${TS_CONFIG_OCS_VERSION}.zip
41
43
  unzip ts_config_ocs.zip
42
44
  mv $(find . -maxdepth 1 -type d -name ts_config_ocs\*) ts_config_ocs
43
45
 
@@ -54,16 +56,18 @@ TS_FBS_UTILS_TAG=$(curl -s https://api.github.com/repos/lsst-ts/ts_fbs_utils/tag
54
56
  pip install --no-deps --target=${PACKAGE_DIR} git+https://github.com/lsst-ts/ts_fbs_utils.git@${TS_FBS_UTILS_TAG}
55
57
 
56
58
  # Get the scheduler configuration script
57
- SCHEDULER_CONFIG_SCRIPT=$(scheduler_config_at_time latiss)
59
+ SCHEDULER_CONFIG_SCRIPT=$(scheduler_config_at_time ${TELESCOPE})
58
60
 
59
61
  # Get the path to prenight_sim as provided by the current environment,
60
62
  # so we do not accidentally run one from the adjusted PATH below.
61
63
  PRENIGHT_SIM=$(which prenight_sim)
62
64
 
65
+ export SIM_ARCHIVE_LOG_FILE=${WORK_DIR}/sim_archive_log.txt
66
+ export PRENIGHT_LOG_FILE=${WORK_DIR}/prenight_log.txt
63
67
  export PYTHONPATH=${PACKAGE_DIR}:${PYTHONPATH}
64
68
  export PATH=${PACKAGE_DIR}/bin:${PATH}
65
69
  printenv > env.out
66
70
  date --iso=s
67
- time ${PRENIGHT_SIM} --scheduler auxtel.pickle.xz --opsim None --script ${SCHEDULER_CONFIG_SCRIPT}
71
+ time ${PRENIGHT_SIM} --scheduler ${TELESCOPE}.pickle.xz --opsim None --repo=${TS_CONFIG_OCS_REPO} --script ${SCHEDULER_CONFIG_SCRIPT} --config_version ${TS_CONFIG_OCS_VERSION} --telescope ${TELESCOPE} 2>&1 > ${WORK_DIR}/prenight_sim.out
68
72
  date --iso=s
69
73
  echo "******* END of run_prenight_sims.sh *********"
@@ -0,0 +1,6 @@
1
+ openorb
2
+ openorb-data-de405
3
+ george
4
+ scikit-learn
5
+ jinja2
6
+ tornado
@@ -19,28 +19,26 @@ classifiers = [
19
19
  urls = {documentation = "https://rubin-sim.lsst.io", repository = "https://github.com/lsst/rubin_sim" }
20
20
  dynamic = [ "version" ]
21
21
  dependencies = [
22
- "numpy",
23
- "matplotlib",
24
- "healpy",
25
- "pandas",
26
- "numexpr",
27
- "scipy",
28
- "sqlalchemy",
29
- "astropy",
30
- "tables",
31
- "h5py",
32
22
  "astroplan",
23
+ "astropy",
33
24
  "colorcet",
34
25
  "cycler",
35
- "george",
36
- "scikit-learn",
26
+ "gitpython",
27
+ "h5py",
28
+ "healpy",
29
+ "matplotlib",
30
+ "numexpr",
31
+ "numpy",
32
+ "pandas",
33
+ "pyarrow",
34
+ "rubin-scheduler>=3.0",
35
+ "scipy",
37
36
  "shapely",
38
- "skyfield",
37
+ "skyfield>=1.52",
39
38
  "skyproj",
40
- "tqdm",
41
- "rubin-scheduler>=3.0",
42
- "pyarrow",
43
- "gitpython",
39
+ "sqlalchemy",
40
+ "tables",
41
+ "tqdm"
44
42
  ]
45
43
 
46
44
  [project.optional-dependencies]
@@ -54,6 +52,11 @@ test = [
54
52
  dev = [
55
53
  "documenteer[guide]",
56
54
  ]
55
+ extras = [
56
+ "george",
57
+ "scikit-learn",
58
+ "pyoorb",
59
+ ]
57
60
 
58
61
  [project.scripts]
59
62
  rs_download_data = "rubin_sim.data.rs_download_data:rs_download_data"
@@ -85,7 +88,7 @@ version = { attr = "setuptools_scm.get_version" }
85
88
  where = [ "" ]
86
89
 
87
90
  [tool.setuptools_scm]
88
- version_file = "rubin_sim/_version.py"
91
+ version_file = "rubin_sim/version.py"
89
92
 
90
93
 
91
94
  [tool.pytest.ini_options]
@@ -98,7 +101,7 @@ exclude = "version.py"
98
101
 
99
102
  [tool.black]
100
103
  line-length = 110
101
- target-version = ["py311"]
104
+ target-version = ["py312"]
102
105
 
103
106
  [tool.isort]
104
107
  profile = "black"
@@ -109,7 +112,7 @@ exclude = [
109
112
  "__init__.py",
110
113
  ]
111
114
  line-length = 110
112
- target-version = "py311"
115
+ target-version = "py312"
113
116
 
114
117
  [tool.ruff.lint]
115
118
  ignore = [
@@ -1,27 +1,23 @@
1
- setuptools_scm
2
- setuptools_scm_git_archive
3
- numpy
4
- matplotlib
1
+ astropy-base
2
+ astroplan
3
+ colorcet
4
+ conda
5
+ cycler
6
+ gitpython
5
7
  healpy
8
+ h5py
9
+ matplotlib-base
10
+ numpy
11
+ numexpr
6
12
  pandas
7
13
  pyarrow
8
- numexpr
9
- scipy
10
- sqlalchemy
11
- astropy
12
14
  pytables
13
- h5py
14
- astroplan
15
- colorcet
16
- cycler
17
- george
18
- scikit-learn
15
+ rubin-scheduler >=3.0
16
+ scipy
17
+ setuptools_scm
18
+ setuptools_scm_git_archive
19
19
  shapely
20
- skyfield
20
+ skyfield >=1.52
21
21
  skyproj
22
- tornado
23
- jinja2
22
+ sqlalchemy
24
23
  tqdm
25
- gitpython
26
- conda
27
- rubin-scheduler >=3.0
@@ -4,7 +4,6 @@ import healpy as hp
4
4
  import numpy as np
5
5
  import pandas as pd
6
6
  from scipy.optimize import minimize
7
- from sklearn.preprocessing import StandardScaler
8
7
 
9
8
  from rubin_sim.maf.metrics.base_metric import BaseMetric
10
9
 
@@ -326,6 +325,7 @@ class StaticProbesFoMEmulatorMetric(BaseMetric):
326
325
  def run(self, data_slice, slice_point=None):
327
326
  import george
328
327
  from george import kernels
328
+ from sklearn.preprocessing import StandardScaler
329
329
 
330
330
  # Chop off any outliers
331
331
  good_pix = np.where(data_slice[self.col] > 0)[0]
@@ -0,0 +1,125 @@
1
+ __all__ = ("combine_result_dbs", "gather_summaries")
2
+
3
+ import argparse
4
+ import glob
5
+ import logging
6
+ import os
7
+ import sqlite3
8
+
9
+ import pandas as pd
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+
14
+ def combine_result_dbs(run_dirs, dbfilename="resultsDb_sqlite.db"):
15
+ """Helper function for gather_summaries
16
+
17
+ Parameters
18
+ ----------
19
+ run_dirs : `list` [`str`]
20
+ A list of directories to search for MAF result databases.
21
+ dbfilename : `str`
22
+ The database filename to look for (default: resultsDb_sqlite.db).
23
+ """
24
+
25
+ # query to grab all the summary stats
26
+ sql_q = "SELECT summarystats.summary_value, "
27
+ sql_q += "metrics.metric_name, metrics.metric_info_label, "
28
+ sql_q += "metrics.slicer_name, summarystats.summary_name, metrics.run_name "
29
+ sql_q += "FROM summarystats INNER JOIN metrics ON metrics.metric_id=summarystats.metric_id"
30
+
31
+ all_summaries = []
32
+ for rdir in run_dirs:
33
+ fname = os.path.join(rdir, dbfilename)
34
+ if not os.path.isfile(fname):
35
+ logger.warning(f"No resultsDb database in {rdir}")
36
+
37
+ con = sqlite3.connect(fname)
38
+ temp_df = pd.read_sql(sql_q, con)
39
+ con.close()
40
+
41
+ # Make column names
42
+ def make_summary_name(x):
43
+ summary_name = " ".join(
44
+ [
45
+ x.summary_name.strip(),
46
+ x.metric_name.strip(),
47
+ x.metric_info_label.strip(),
48
+ x.slicer_name.strip(),
49
+ ]
50
+ )
51
+ summary_name = summary_name.replace(" ", " ")
52
+ return summary_name
53
+
54
+ temp_df["summary_names"] = temp_df.apply(make_summary_name, axis=1)
55
+ all_summaries.append(temp_df[["summary_names", "summary_value", "run_name"]])
56
+
57
+ # Make one big dataframe
58
+ all_summaries = pd.concat(all_summaries)
59
+ # Group by run names and drop duplicates
60
+ g = all_summaries.groupby(["run_name", "summary_names"]).agg({"summary_value": "last"})
61
+ # Convert to one row with all summary stats per run
62
+ result_df = g.reset_index("summary_names").pivot(columns="summary_names")
63
+ # That ended up as a MultiIndex which we didn't need, so fix and rename
64
+ result_df.columns = result_df.columns.droplevel(0).rename("metric")
65
+ return result_df
66
+
67
+
68
+ def gather_summaries():
69
+ """Find resultsDbs in a series of directories and gather up their summary
70
+ stats into a single CSV or hdf5 file. Outputs one row per unique run name.
71
+ """
72
+
73
+ parser = argparse.ArgumentParser(
74
+ description="Find resultsDbs in a series of directories and "
75
+ "gather up their summary stats into a single CSV or hdf5 file. "
76
+ "Intended to run on a set of metrics run on multiple "
77
+ "simulations, so that each results_db has similar summary"
78
+ "statistics."
79
+ )
80
+ parser.add_argument(
81
+ "--base_dir",
82
+ type=str,
83
+ default=".",
84
+ help="Root directory from where to search for MAF (sub)directories.",
85
+ )
86
+ parser.add_argument(
87
+ "--outfile",
88
+ type=str,
89
+ default="summary",
90
+ help="Output file name. Default (summary)",
91
+ )
92
+ parser.add_argument(
93
+ "--to_csv",
94
+ dest="to_csv",
95
+ action="store_true",
96
+ help="Create a .csv file, instead of the default hdf file.",
97
+ )
98
+ parser.add_argument("--to_hdf", dest="to_hdf", action="store_true")
99
+ parser.add_argument(
100
+ "--dirs",
101
+ type=str,
102
+ default=None,
103
+ help="comma separated list of directories to use, default None",
104
+ )
105
+
106
+ args = parser.parse_args()
107
+ if args.dirs is None:
108
+ run_dirs = glob.glob(args.base_dir + "/*/")
109
+ else:
110
+ run_dirs = args.dirs.split(",")
111
+
112
+ # Create output file name if needed
113
+ if args.to_csv:
114
+ outfile = args.outfile + ".csv"
115
+ else:
116
+ outfile = args.outfile + ".h5"
117
+
118
+ result_df = combine_result_dbs(run_dirs)
119
+
120
+ # Save summary statistics
121
+ if args.to_csv:
122
+ result_df.to_csv(outfile)
123
+ else:
124
+ # Create a CSV file
125
+ result_df.to_hdf(outfile, key="stats")
@@ -1,5 +1,6 @@
1
- __all__ = ("ra_dec2_alt_az", "GalacticStacker", "EclipticStacker")
1
+ __all__ = ("ra_dec2_alt_az", "GalacticStacker", "EclipticStacker", "HealpixStacker")
2
2
 
3
+ import healpy as hp
3
4
  import numpy as np
4
5
  from astropy import units as u
5
6
  from astropy.coordinates import SkyCoord, get_sun
@@ -186,3 +187,38 @@ class EclipticStacker(BaseStacker):
186
187
  sim_data["eclipLon"] = np.degrees(sim_data["eclipLon"])
187
188
  sim_data["eclipLat"] = np.degrees(sim_data["eclipLat"])
188
189
  return sim_data
190
+
191
+
192
+ class HealpixStacker(BaseStacker):
193
+ """Add healpix id
194
+
195
+ Parameters
196
+ ----------
197
+ ra_col : str, optional
198
+ Name of the RA column. Default fieldRA.
199
+ dec_col : str, optional
200
+ Name of the Dec column. Default fieldDec.
201
+ nside : int
202
+ nside healpix to use. Default to 128.
203
+ """
204
+
205
+ cols_added = ["ring_healpix", "nest_healpix"]
206
+
207
+ def __init__(self, ra_col: str = "fieldRA", dec_col: str = "fieldDec", nside: int = 128):
208
+ self.cols_req = [ra_col, dec_col]
209
+ self.ra_col = ra_col
210
+ self.dec_col = dec_col
211
+ self.nside = nside
212
+ self.units = [f"healpix (ring, nside={nside})", f"healpix (nest, nside={nside})"]
213
+
214
+ def _run(self, sim_data, cols_present=False):
215
+ if cols_present:
216
+ # Column already present in data;
217
+ # assume it is correct and does not need recalculating.
218
+ return sim_data
219
+
220
+ ra = sim_data[self.ra_col]
221
+ decl = sim_data[self.dec_col]
222
+ sim_data["ring_healpix"] = hp.ang2pix(self.nside, ra, decl, nest=False, lonlat=True)
223
+ sim_data["nest_healpix"] = hp.ang2pix(self.nside, ra, decl, nest=True, lonlat=True)
224
+ return sim_data
@@ -1,11 +1,13 @@
1
1
  __all__ = (
2
2
  "ObservationStartDatetime64Stacker",
3
+ "ObservationStartTimestampStacker",
3
4
  "DayObsStacker",
4
5
  "DayObsMJDStacker",
5
6
  "DayObsISOStacker",
6
7
  )
7
8
 
8
9
  import numpy as np
10
+ import pandas as pd
9
11
  from astropy.time import Time
10
12
 
11
13
  from .base_stacker import BaseStacker
@@ -36,6 +38,52 @@ class ObservationStartDatetime64Stacker(BaseStacker):
36
38
  return sim_data
37
39
 
38
40
 
41
+ class ObservationStartTimestampStacker(BaseStacker):
42
+ """Add the observation start time as a pandas.Timestamp."""
43
+
44
+ cols_added = ["start_timestamp"]
45
+
46
+ def __init__(
47
+ self,
48
+ mjd_col="observationStartMJD",
49
+ ):
50
+ self.mjd_col = mjd_col
51
+ self.cols_req = [self.mjd_col]
52
+ self.units = [None]
53
+ self.cols_added_dtypes = ["O"]
54
+
55
+ def run(self, sim_data, override=False):
56
+ # Override the run from the base class, not _run,
57
+ # because the implementation
58
+ # of _add_stackers_cols in run in the base closs
59
+ # clobbers the type for the new column,
60
+ # which we really need.
61
+
62
+ visits = sim_data if isinstance(sim_data, pd.DataFrame) else pd.DataFrame(sim_data)
63
+
64
+ if "start_timestamp" in visits.columns and not override:
65
+ return sim_data
66
+
67
+ if len(visits[self.mjd_col]) > 0:
68
+ visits["start_timestamp"] = pd.to_datetime(
69
+ visits[self.mjd_col] + 2400000.5, origin="julian", unit="D", utc=True
70
+ )
71
+ else:
72
+ # If we are passed an empty series, be sure to return add an empty
73
+ # series of the correct type back.
74
+ # This is handy if the result is being passed to bokeh
75
+ # for plotting.
76
+ visits["start_timestamp"] = pd.to_datetime(2460000.5, origin="julian", unit="D", utc=True)
77
+
78
+ match sim_data:
79
+ case pd.DataFrame():
80
+ return visits
81
+ case dict():
82
+ return visits.to_dict()
83
+ case _:
84
+ return visits.to_records(index=False)
85
+
86
+
39
87
  def _compute_day_obs_mjd(mjd):
40
88
  day_obs_mjd = np.floor(mjd - 0.5).astype("int")
41
89
  return day_obs_mjd
@@ -72,7 +72,7 @@ def get_sim_data(
72
72
  elif "summary" in tables[0]:
73
73
  table_name = "summary"
74
74
  else:
75
- ValueError("Could not guess table_name, set with table_name or full_sql_query kwargs")
75
+ raise ValueError("Could not guess table_name, set with table_name or full_sql_query kwargs")
76
76
  elif (table_name is None) & (full_sql_query is None):
77
77
  # If someone passes in a connection object with an old table_name
78
78
  # things will fail
@@ -81,7 +81,7 @@ def stellar_mags(stellar_type, rmag=19.0):
81
81
  if not hasattr(stellar_mags, "data"):
82
82
  names = ["stellar_type", "Model Name", "u-g", "g-r", "r-i", "i-z", "z-y"]
83
83
  types = [("U", 20), ("U", 35), float, float, float, float, float]
84
- data = np._core.records.fromrecords(
84
+ data = np.rec.fromrecords(
85
85
  [
86
86
  (
87
87
  "O",
@@ -15,6 +15,7 @@ import lzma
15
15
  import os
16
16
  import pickle
17
17
  import typing
18
+ import warnings
18
19
  from datetime import datetime
19
20
  from functools import partial
20
21
  from tempfile import TemporaryFile
@@ -33,14 +34,19 @@ from rubin_scheduler.site_models import Almanac
33
34
 
34
35
  from rubin_sim.sim_archive.sim_archive import drive_sim
35
36
 
36
- from .make_snapshot import add_make_scheduler_snapshot_args, get_scheduler, save_scheduler
37
+ from .make_snapshot import (
38
+ add_make_scheduler_snapshot_args,
39
+ get_scheduler,
40
+ get_scheduler_instance_from_path,
41
+ save_scheduler,
42
+ )
37
43
 
38
44
  try:
39
45
  from rubin_sim.data import get_baseline # type: ignore
40
46
  except ModuleNotFoundError:
41
47
  get_baseline = partial(warn, "Cannot find default baseline because rubin_sim is not installed.")
42
48
 
43
- DEFAULT_ARCHIVE_URI = "s3://rubin-scheduler-prenight/opsim/"
49
+ DEFAULT_ARCHIVE_URI = "s3://rubin:rubin-scheduler-prenight/opsim/"
44
50
 
45
51
 
46
52
  def _run_sim(
@@ -210,7 +216,7 @@ def run_prenights(
210
216
  opsim_db: Optional[str] = None,
211
217
  minutes_delays: tuple[float, ...] = (0, 1, 10, 60, 240),
212
218
  anomalous_overhead_seeds: tuple[int, ...] = (101, 102, 103, 104, 105),
213
- sim_nights: int = 2,
219
+ sim_nights: int = 3,
214
220
  opsim_metadata: dict | None = None,
215
221
  ) -> None:
216
222
  """Run the set of scheduler simulations needed to prepare for a night.
@@ -234,7 +240,7 @@ def run_prenights(
234
240
  anomalous_overhead_seeds: `tuple` of `int`
235
241
  Random number seeds to use for anomalous overhead runs.
236
242
  sim_nights: `int`
237
- Number of nights to simulate. Defaults to 2.
243
+ Number of nights to simulate. Defaults to 3.
238
244
  opsim_metadata: `dict`
239
245
  Extra metadata for the archive
240
246
  """
@@ -337,6 +343,33 @@ def prenight_sim_cli(cli_args: list = []) -> None:
337
343
  help="Archive in which to store simulation results.",
338
344
  )
339
345
  parser.add_argument("--scheduler", type=str, default=None, help="pickle file of the scheduler to run.")
346
+ parser.add_argument("--config_version", type=str, default=None, help="Version of ts_config_ocs used.")
347
+ parser.add_argument("--telescope", type=str, default=None, help="Telescope scheduled.")
348
+
349
+ # Configure logging
350
+ stream_handler = logging.StreamHandler()
351
+ stream_handler.setLevel(logging.INFO)
352
+ log_handlers = [stream_handler]
353
+
354
+ log_file = os.environ.get("PRENIGHT_LOG_FILE", None)
355
+ if log_file is not None:
356
+ file_handler = logging.FileHandler(log_file, mode="w")
357
+ file_handler.setLevel(logging.DEBUG)
358
+ log_handlers.append(file_handler)
359
+
360
+ logging.basicConfig(
361
+ level=logging.DEBUG,
362
+ format="%(asctime)s: %(message)s",
363
+ datefmt="%Y-%m-%dT%H:%M:%S%z",
364
+ handlers=[stream_handler, file_handler],
365
+ )
366
+
367
+ # FIXME
368
+ warnings.filterwarnings(
369
+ "ignore",
370
+ category=UserWarning,
371
+ message="IntRounded being used with a potentially too-small scale factor.",
372
+ )
340
373
 
341
374
  # Only pass a default if we have an opsim
342
375
  baseline = get_baseline()
@@ -356,20 +389,34 @@ def prenight_sim_cli(cli_args: list = []) -> None:
356
389
  opsim_db = None if args.opsim in ("", "None") else args.opsim
357
390
 
358
391
  scheduler_file = args.scheduler
359
- if args.repo is not None or args.script is not None:
392
+ opsim_metadata = {"telescope": args.telescope}
393
+ if args.repo is not None:
360
394
  if os.path.exists(scheduler_file):
361
395
  raise ValueError(f"File {scheduler_file} already exists!")
362
396
 
363
- scheduler: CoreScheduler = get_scheduler(args.repo, args.script, args.branch)
364
- save_scheduler(scheduler, scheduler_file)
365
-
366
- opsim_metadata = {
367
- "opsim_config_repository": args.repo,
368
- "opsim_config_script": args.script,
369
- "opsim_config_branch": args.branch,
370
- }
371
- else:
372
- opsim_metadata = None
397
+ if args.config_version is not None:
398
+ scheduler: CoreScheduler = get_scheduler_instance_from_path(args.script)
399
+ save_scheduler(scheduler, scheduler_file)
400
+ opsim_metadata.update(
401
+ {
402
+ "opsim_config_repository": args.repo,
403
+ "opsim_config_script": args.script,
404
+ "opsim_config_version": args.config_version,
405
+ }
406
+ )
407
+ elif args.branch is not None:
408
+ scheduler: CoreScheduler = get_scheduler(args.repo, args.script, args.branch)
409
+ save_scheduler(scheduler, scheduler_file)
410
+
411
+ opsim_metadata.update(
412
+ {
413
+ "opsim_config_repository": args.repo,
414
+ "opsim_config_script": args.script,
415
+ "opsim_config_branch": args.branch,
416
+ }
417
+ )
418
+ else:
419
+ raise ValueError("Either the branch or the version of ts_ocs_config must be specified")
373
420
 
374
421
  run_prenights(
375
422
  day_obs_mjd,