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.
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/test_and_build.yaml +1 -0
- {rubin_sim-2.2.2/rubin_sim.egg-info → rubin_sim-2.2.4}/PKG-INFO +19 -17
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/batch/run_prenight_sims.sh +7 -3
- rubin_sim-2.2.4/optional-requirements.txt +6 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/pyproject.toml +23 -20
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/requirements.txt +16 -20
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/static_probes_fom_summary_metric.py +1 -1
- rubin_sim-2.2.4/rubin_sim/maf/run_comparison/gather_summaries.py +125 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/coord_stackers.py +37 -1
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/date_stackers.py +48 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/opsim_utils.py +1 -1
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/stellar_mags.py +1 -1
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/sim_archive/prenight.py +62 -15
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/sim_archive/sim_archive.py +94 -10
- {rubin_sim-2.2.2 → rubin_sim-2.2.4/rubin_sim.egg-info}/PKG-INFO +19 -17
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/requires.txt +19 -16
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_gathersummaries.py +2 -2
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_stackers.py +51 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/sim_archive/test_prenight.py +2 -1
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/sim_archive/test_sim_archive.py +3 -3
- rubin_sim-2.2.2/optional-requirements.txt +0 -2
- rubin_sim-2.2.2/rubin_sim/maf/run_comparison/gather_summaries.py +0 -154
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.git_archival.txt +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.gitattributes +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/build_container.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/build_docs.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/cache.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/rebase_checker.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.github/workflows/ruff.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.gitignore +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/.pre-commit-config.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/Dockerfile +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/LICENSE +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/README.md +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/README_dev.md +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/batch/compile_prenight_metadata_cache.sh +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/container_environment.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/.gitignore +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/Makefile +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/archive.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/conf.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/data-api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/data-download.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/documenteer.toml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/index.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/installation.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/introduction.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-batches.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-db.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-maf-contrib.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-maps.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-metricbundles.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-metrics.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-plots.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-run-comparison.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-slicers.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-stackers.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api-utils.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf-api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/maf.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/metric_list.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/moving-objects-api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/moving-objects.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/phot-utils-api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/phot-utils.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/satellite-constellations-api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/satellite-constellations.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/selfcal-api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/selfcal.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/sim-archive-api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/skybrightness-api.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/skybrightness.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/docs/user-guide.rst +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/example_deployment.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/data/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/data/rs_download_data.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/altaz_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/col_map_dict.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/common.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/ddf_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/filterchange_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/glance_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/hourglass_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/info_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/metadata_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/moving_objects_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/openshutter_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/radar_limited.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/science_radar_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/skycoverage.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/slew_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/srd_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/time_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/time_sci_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/batches/visitdepth_batch.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/db/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/db/add_run.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/db/results_db.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/db/tracking_db.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/ddf_dir.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/generate_ss.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/glance_dir.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/calculate_lsst_field_visibility_astropy.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/depth_limited_num_gal_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/example_new_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/filter_pair_t_gaps_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/grb_transient_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/gw170817_det_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/intervals_between_obs_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/kne_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lss_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lss_obs_strategy/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lss_obs_strategy/constants_for_pipeline.py +0 -0
- {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
- {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
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lv_dwarfs/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/lv_dwarfs/lv_dwarfs_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/microlensing_metric.py +0 -0
- {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
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/periodic_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/periodic_star_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/periodic_star_modulation_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/presto_color_kne_pop_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/selfcal_uniformity_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_count_mass_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_count_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/abs_mag.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/coords.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/readme.txt +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/spec_type.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/starcount.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/starcount_bymass.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/star_counts/stellardensity.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/tdes_pop_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/transient_ascii_sed_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/triplet_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/var_depth_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/xrb_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/young_stellar_objects_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_night_report.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/make_fbs_tracking_db.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/base_map.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/create_gaia_density_map.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/dust_map.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/dust_map_3d.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/ebv_3d_hp.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/ebv_hp.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/gal_coords_map.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/galactic_plane_priority_maps.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/stellar_density_map.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maps/trilegal_map.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metadata_dir.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metric_bundles/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metric_bundles/metric_bundle.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metric_bundles/metric_bundle_group.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metric_bundles/mo_metric_bundle.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/agn_time_lag_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/agnstructure.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/area_summary_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/base_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/brown_dwarf_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/cadence_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/calibration_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/chip_vendor_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/color_slope_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/coverage_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/crowding_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/cumulative_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/dcr_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/exgal_m5.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/fft_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/galactic_plane_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/galplane_time_sampling_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/hourglass_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/incremental_template_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/kuiper_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/mo_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/mo_summary_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/night_pointing_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/optimal_m5_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/pair_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/periodic_detect_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/phase_gap_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/qso_number_counts_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/scaling_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/schedview_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/season_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/simple_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sky_sat_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sn_cadence_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sn_n_sn_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sn_sl_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/sn_snr_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/snr_weight.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/star_density.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/string_count_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/summary_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/surfb_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/technical_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/tgaps.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/transient_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/use_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/vector_metrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/visit_groups_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/metrics/weak_lensing_systematics_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/hg_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/hourglass_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/mo_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/nd_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/neo_distance_plotter.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/night_pointing_plotter.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/oned_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/perceptual_rainbow.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/plot_handler.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/skyproj_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/spatial_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/special_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/two_d_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/plots/xyplotter.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/archive.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/microlensing_compare.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/radar_plot.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_comparison/summary_plots.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_moving_calc.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_moving_fractions.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_moving_join.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/run_selfcal_metric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/scimaf_dir.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/show_maf.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/base_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/base_spatial_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/healpix_sdss_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/healpix_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/healpix_subset_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/hourglass_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/mo_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/movie_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/nd_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/one_d_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/time_interval_slicers.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/uni_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/slicers/user_points_slicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/base_stacker.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/general_stackers.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/get_col_info.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/label_stackers.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/m5_optimal_stacker.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/mo_phase.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/mo_stackers.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/n_follow_stacker.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/neo_dist_stacker.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/sdss_stackers.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/sn_stacker.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/stackers/teff_stacker.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/astrometry_utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/generate_fov_map.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/get_date_version.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/maf_utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/output_utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/sn_n_sn_utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/utils/sn_utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/favicon.ico +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/maf_run_results.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/maf_tracking.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/sorttable.js +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/allmetricresults.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/configs.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/macros.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/master.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/metricselect.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/multicolor.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/results.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/runselect.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/web/templates/stats.html +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/base_obs.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/cheby_fits.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/cheby_values.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/chebyshev_utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/direct_obs.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/make_lsst_obs.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/ooephemerides.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/orbits.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/pre_generate.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/moving_objects/utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/bandpass.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/photometric_parameters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/physical_parameters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/predicted_zeropoints.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/sed.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/sed_utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/signaltonoise.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/phot_utils/spectral_resampling.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/satellite_constellations/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/satellite_constellations/basis_function.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/satellite_constellations/model_observatory.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/satellite_constellations/sat_utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/generate_catalog.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/offsets.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/solver.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/selfcal/star_tools.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/sim_archive/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/sim_archive/make_snapshot.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/__init__.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/allsky_db.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/data/ESO_Spectra/eso_tools.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/data/solarSpec/package.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/generate_hdf5.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/interp_components.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/sky_model.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/twilight_func.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/skybrightness/utils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/SOURCES.txt +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/dependency_links.txt +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/entry_points.txt +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim.egg-info/top_level.txt +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/setup.cfg +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/setup.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/showmaf-deploy.yaml +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/test-requirements.txt +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/data/test_data.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/data/test_ddf_grid.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_3x2fom.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_archive.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_basemetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_batchcommon.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_batches.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_cadencemetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_calibrationmetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_color_slopes.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_healpixslicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_healpixsubsetslicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_hgplotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_hourglassmetric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_io.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_json.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_maps.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_metricbundle.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_mometrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_movieslicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_ndslicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_neodistanceplotter.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_onedslicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_opsimutils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_plotters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_resultsdb.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_schedviewmetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_simplemetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_snmetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_snmetrics_nsn.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_stellarmags.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_stringcount.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_summary_plots.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_summarymetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_technicalmetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_templatemetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_timeintervalslicers.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_trackingdb.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_unislicer.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_vectormetrics.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/maf/test_visitgroupsmetric.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_camera.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_chebyfits.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_chebyshevutils.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_chebyvalues.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_ephemerides.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/moving_objects/test_orbits.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_approximatebandpasses.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_photometricparameters.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_photometry.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_predicted_zeropoints.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_read_bandpasses.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_sed.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/phot_utils/test_snr.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/satellite_constellations/test_satellites.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/sim_archive/test_make_snapshot.py +0 -0
- {rubin_sim-2.2.2 → rubin_sim-2.2.4}/tests/skybrightness/test_skymodel.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rubin-sim
|
|
3
|
-
Version: 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:
|
|
31
|
-
Requires-Dist:
|
|
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
|
|
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
|
|
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
|
|
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 *********"
|
|
@@ -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
|
-
"
|
|
36
|
-
"
|
|
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
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
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/
|
|
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 = ["
|
|
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 = "
|
|
115
|
+
target-version = "py312"
|
|
113
116
|
|
|
114
117
|
[tool.ruff.lint]
|
|
115
118
|
ignore = [
|
|
@@ -1,27 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
23
|
-
jinja2
|
|
22
|
+
sqlalchemy
|
|
24
23
|
tqdm
|
|
25
|
-
gitpython
|
|
26
|
-
conda
|
|
27
|
-
rubin-scheduler >=3.0
|
{rubin_sim-2.2.2 → rubin_sim-2.2.4}/rubin_sim/maf/maf_contrib/static_probes_fom_summary_metric.py
RENAMED
|
@@ -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.
|
|
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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
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,
|