rubin-sim 2.6.1.dev1__tar.gz → 2.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.github/workflows/ruff.yaml +11 -7
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.pre-commit-config.yaml +2 -2
- {rubin_sim-2.6.1.dev1/rubin_sim.egg-info → rubin_sim-2.6.2}/PKG-INFO +6 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/data-download.rst +1 -1
- rubin_sim-2.6.2/docs/prenight.rst +485 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/optional-requirements.txt +4 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/pyproject.toml +6 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/__init__.py +1 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/glance_batch.py +7 -5
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/science_radar_batch.py +7 -7
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/time_batch.py +2 -2
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/time_sci_batch.py +3 -3
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/db/results_db.py +3 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/depth_limited_num_gal_metric.py +1 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/kne_metrics.py +2 -4
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_metric_extended.py +1 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/lv_dwarfs/lv_dwarfs_metrics.py +8 -3
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/microlensing_metric.py +5 -3
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metric_bundles/metric_bundle_group.py +1 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/qso_number_counts_metric.py +1 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/simple_metrics.py +32 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/sn_n_sn_metric.py +4 -10
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/surfb_metric.py +2 -5
- rubin_sim-2.6.2/rubin_sim/maf/metrics/use_metrics.py +56 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/skyproj_plotters.py +1 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/general_stackers.py +166 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/teff_stacker.py +9 -16
- rubin_sim-2.6.2/rubin_sim/sim_archive/prenight.py +370 -0
- rubin_sim-2.6.2/rubin_sim/sim_archive/prenightindex.py +464 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/prototype.py +72 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/sim_archive.py +54 -18
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/vseqarchive.py +1 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/vseqmetadata.py +80 -13
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/generate_hdf5.py +6 -4
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2/rubin_sim.egg-info}/PKG-INFO +6 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim.egg-info/SOURCES.txt +3 -3
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim.egg-info/requires.txt +6 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim.egg-info/top_level.txt +0 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_batches.py +1 -1
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_simplemetrics.py +14 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_stackers.py +3 -3
- rubin_sim-2.6.2/tests/sim_archive/test_prenight.py +75 -0
- rubin_sim-2.6.2/tests/sim_archive/test_prenightindex.py +385 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/sim_archive/test_prototype_sim_archive.py +6 -0
- rubin_sim-2.6.2/tests/sim_archive/test_sim_archive_utils.py +184 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/sim_archive/test_vseqarchive.py +6 -12
- rubin_sim-2.6.1.dev1/batch/compile_prenight_metadata_cache.sh +0 -34
- rubin_sim-2.6.1.dev1/batch/run_auxtel_prenight_sims.sh +0 -163
- rubin_sim-2.6.1.dev1/batch/run_prenight_sims.sh +0 -239
- rubin_sim-2.6.1.dev1/docs/prenight.rst +0 -117
- rubin_sim-2.6.1.dev1/rubin_sim/maf/metrics/use_metrics.py +0 -55
- rubin_sim-2.6.1.dev1/rubin_sim/sim_archive/prenight.py +0 -216
- rubin_sim-2.6.1.dev1/rubin_sim/sim_archive/prenightindex.py +0 -229
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.git_archival.txt +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.gitattributes +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.github/workflows/build_container.yaml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.github/workflows/build_docs.yaml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.github/workflows/cache.yaml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.github/workflows/rebase_checker.yaml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.github/workflows/test_and_build.yaml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/.gitignore +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/Dockerfile +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/LICENSE +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/README.md +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/README_dev.md +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/container_environment.yaml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/.gitignore +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/Makefile +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/conf.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/data-api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/developer.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/documenteer.toml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/index.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/installation.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/introduction.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-batches.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-db.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-maf-contrib.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-maps.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-metricbundles.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-metrics.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-plots.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-run-comparison.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-slicers.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-stackers.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api-utils.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf-api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/maf.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/metric_list.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/moving-objects-api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/moving-objects.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/phot-utils-api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/phot-utils.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/protoarchive.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/satellite-constellations-api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/satellite-constellations.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/selfcal-api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/selfcal.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/sim-archive-api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/skybrightness-api.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/skybrightness.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/user-guide.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/vseqarchive-architecture.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/vseqarchive-setup.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/docs/vseqarchive.rst +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/example_deployment.yaml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/requirements.txt +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/data/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/data/rs_download_data.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/altaz_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/col_map_dict.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/common.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/ddf_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/filterchange_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/hourglass_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/info_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/metadata_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/moving_objects_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/openshutter_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/radar_limited.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/skycoverage.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/slew_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/srd_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/batches/visitdepth_batch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/db/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/db/add_run.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/db/tracking_db.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/ddf_dir.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/generate_ss.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/glance_dir.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/calculate_lsst_field_visibility_astropy.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/example_new_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/filter_pair_t_gaps_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/grb_transient_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/gw170817_det_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/intervals_between_obs_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/lss_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/lss_obs_strategy/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/lss_obs_strategy/constants_for_pipeline.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_with_pixel_calibration.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/lv_dwarfs/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/num_obs_in_survey_time_overlap_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/periodic_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/periodic_star_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/periodic_star_modulation_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/presto_color_kne_pop_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/selfcal_uniformity_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_count_mass_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_count_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_counts/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_counts/abs_mag.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_counts/coords.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_counts/readme.txt +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_counts/spec_type.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_counts/starcount.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_counts/starcount_bymass.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/star_counts/stellardensity.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/static_probes_fom_summary_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/tdes_pop_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/transient_ascii_sed_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/triplet_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/var_depth_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/xrb_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_contrib/young_stellar_objects_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maf_night_report.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/make_fbs_tracking_db.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/base_map.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/create_gaia_density_map.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/dust_map.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/dust_map_3d.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/ebv_3d_hp.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/ebv_hp.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/gal_coords_map.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/galactic_plane_priority_maps.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/stellar_density_map.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/maps/trilegal_map.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metadata_dir.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metric_bundles/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metric_bundles/metric_bundle.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metric_bundles/mo_metric_bundle.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/agn_time_lag_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/agnstructure.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/area_summary_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/base_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/brown_dwarf_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/cadence_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/calibration_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/chip_vendor_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/color_slope_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/cosmology_summary_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/coverage_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/crowding_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/cumulative_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/dcr_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/exgal_m5.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/fft_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/galactic_plane_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/galplane_time_sampling_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/hourglass_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/incremental_template_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/kuiper_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/mo_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/mo_summary_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/night_pointing_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/optimal_m5_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/pair_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/periodic_detect_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/phase_gap_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/scaling_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/schedview_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/season_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/sky_sat_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/sn_cadence_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/sn_sl_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/sn_snr_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/snr_weight.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/star_density.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/string_count_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/summary_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/technical_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/tgaps.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/tomography_models.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/transient_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/uniformity_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/vector_metrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/visit_groups_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/metrics/weak_lensing_systematics_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/hg_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/hourglass_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/mo_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/nd_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/neo_distance_plotter.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/night_pointing_plotter.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/oned_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/perceptual_rainbow.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/plot_handler.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/spatial_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/special_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/two_d_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/plots/xyplotter.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_comparison/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_comparison/archive.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_comparison/gather_summaries.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_comparison/microlensing_compare.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_comparison/radar_plot.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_comparison/summary_plots.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_moving_calc.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_moving_fractions.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_moving_join.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/run_selfcal_metric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/scimaf_dir.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/show_maf.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/base_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/base_spatial_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/healpix_sdss_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/healpix_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/healpix_subset_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/hourglass_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/mo_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/movie_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/nd_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/one_d_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/time_interval_slicers.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/uni_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/slicers/user_points_slicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/base_stacker.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/coord_stackers.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/date_stackers.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/get_col_info.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/label_stackers.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/m5_optimal_stacker.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/mo_phase.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/mo_stackers.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/n_follow_stacker.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/neo_dist_stacker.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/sdss_stackers.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/stackers/sn_stacker.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/astrometry_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/generate_fov_map.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/get_date_version.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/maf_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/opsim_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/output_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/sn_n_sn_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/sn_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/utils/stellar_mags.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/favicon.ico +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/maf_run_results.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/maf_tracking.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/sorttable.js +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/allmetricresults.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/configs.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/macros.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/master.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/metricselect.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/multicolor.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/results.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/runselect.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/maf/web/templates/stats.html +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/base_obs.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/cheby_fits.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/cheby_values.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/chebyshev_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/direct_obs.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/make_lsst_obs.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/ooephemerides.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/orbits.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/pre_generate.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/moving_objects/utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/bandpass.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/photometric_parameters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/physical_parameters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/predicted_zeropoints.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/sed.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/sed_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/signaltonoise.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/phot_utils/spectral_resampling.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/satellite_constellations/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/satellite_constellations/basis_function.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/satellite_constellations/model_observatory.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/satellite_constellations/sat_utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/selfcal/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/selfcal/generate_catalog.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/selfcal/offsets.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/selfcal/solver.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/selfcal/star_tools.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/conda_packages.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/future_vsarch.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/make_snapshot.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/tempdb.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/sim_archive/util.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/__init__.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/allsky_db.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/data/ESO_Spectra/eso_tools.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/data/solarSpec/package.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/interp_components.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/sky_model.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/twilight_func.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim/skybrightness/utils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim.egg-info/dependency_links.txt +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/rubin_sim.egg-info/entry_points.txt +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/setup.cfg +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/setup.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/showmaf-deploy.yaml +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/sql/make_vseqmeta.sql +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/test-requirements.txt +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/data/test_data.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/data/test_ddf_grid.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_3x2fom.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_archive.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_basemetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_batchcommon.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_cadencemetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_calibrationmetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_color_slopes.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_cosmology_summaries.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_gathersummaries.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_healpixslicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_healpixsubsetslicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_hgplotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_hourglassmetric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_io.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_json.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_maps.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_metricbundle.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_mometrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_movieslicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_ndslicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_neodistanceplotter.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_onedslicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_opsimutils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_plotters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_resultsdb.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_schedviewmetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_snmetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_snmetrics_nsn.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_stellarmags.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_stringcount.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_summary_plots.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_summarymetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_technicalmetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_templatemetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_timeintervalslicers.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_trackingdb.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_unislicer.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_vectormetrics.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/maf/test_visitgroupsmetric.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/moving_objects/test_camera.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/moving_objects/test_chebyfits.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/moving_objects/test_chebyshevutils.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/moving_objects/test_chebyvalues.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/moving_objects/test_ephemerides.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/moving_objects/test_orbits.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/moving_objects/test_sed_data.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/phot_utils/test_approximatebandpasses.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/phot_utils/test_photometricparameters.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/phot_utils/test_photometry.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/phot_utils/test_predicted_zeropoints.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/phot_utils/test_read_bandpasses.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/phot_utils/test_sed.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/phot_utils/test_snr.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/satellite_constellations/test_satellites.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/sim_archive/test_make_snapshot.py +0 -0
- {rubin_sim-2.6.1.dev1 → rubin_sim-2.6.2}/tests/skybrightness/test_skymodel.py +0 -0
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
name:
|
|
1
|
+
name: Lint
|
|
2
2
|
on:
|
|
3
|
-
# Trigger the workflow on push (to main) or pull request
|
|
4
3
|
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
4
|
pull_request:
|
|
8
|
-
branches:
|
|
9
|
-
- main
|
|
10
5
|
workflow_dispatch:
|
|
11
6
|
|
|
12
7
|
jobs:
|
|
@@ -21,4 +16,13 @@ jobs:
|
|
|
21
16
|
runs-on: ubuntu-latest
|
|
22
17
|
steps:
|
|
23
18
|
- uses: actions/checkout@v4
|
|
24
|
-
- uses: astral-sh/ruff-action@v3
|
|
19
|
+
- uses: astral-sh/ruff-action@v3
|
|
20
|
+
black:
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
- uses: psf/black@stable
|
|
25
|
+
with:
|
|
26
|
+
options: "--check --verbose"
|
|
27
|
+
version: "~= 26.1"
|
|
28
|
+
|
|
@@ -7,14 +7,14 @@ repos:
|
|
|
7
7
|
- id: trailing-whitespace
|
|
8
8
|
- id: check-toml
|
|
9
9
|
- repo: https://github.com/psf/black
|
|
10
|
-
rev:
|
|
10
|
+
rev: 26.1.0
|
|
11
11
|
hooks:
|
|
12
12
|
- id: black
|
|
13
13
|
# It is recommended to specify the latest version of Python
|
|
14
14
|
# supported by your project here, or alternatively use
|
|
15
15
|
# pre-commit's default_language_version, see
|
|
16
16
|
# https://pre-commit.com/#top_level-default_language_version
|
|
17
|
-
language_version: python3.
|
|
17
|
+
language_version: python3.13
|
|
18
18
|
- repo: https://github.com/pycqa/isort
|
|
19
19
|
rev: 5.12.0
|
|
20
20
|
hooks:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rubin-sim
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.2
|
|
4
4
|
Summary: Scheduler, survey strategy analysis, and other simulation tools for Rubin Observatory.
|
|
5
5
|
License: GPL
|
|
6
6
|
Project-URL: documentation, https://rubin-sim.lsst.io
|
|
@@ -47,6 +47,11 @@ Requires-Dist: documenteer[guide]; extra == "dev"
|
|
|
47
47
|
Provides-Extra: extras
|
|
48
48
|
Requires-Dist: george; extra == "extras"
|
|
49
49
|
Requires-Dist: pyoorb; extra == "extras"
|
|
50
|
+
Provides-Extra: vseqarchive
|
|
51
|
+
Requires-Dist: click; extra == "vseqarchive"
|
|
52
|
+
Requires-Dist: psycopg2; extra == "vseqarchive"
|
|
53
|
+
Requires-Dist: botocore; extra == "vseqarchive"
|
|
54
|
+
Requires-Dist: boto3; extra == "vseqarchive"
|
|
50
55
|
Dynamic: license-file
|
|
51
56
|
|
|
52
57
|
# rubin_sim
|
|
@@ -52,7 +52,7 @@ to the directories originating from `rubin_scheduler <https://rubin-scheduler.ls
|
|
|
52
52
|
* sim_baseline (containing the current baseline simulation output)
|
|
53
53
|
* skybrightness (containing information needed for the skybrightness module)
|
|
54
54
|
* throughputs (current baseline throughput information)
|
|
55
|
-
*
|
|
55
|
+
* tests (containing data for unit tests)
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
Note that the data will only be downloaded for the directories which do
|
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
.. py:currentmodule:: rubin_sim.data
|
|
2
|
+
|
|
3
|
+
.. _prenight:
|
|
4
|
+
|
|
5
|
+
####################
|
|
6
|
+
Prenight Simulations
|
|
7
|
+
####################
|
|
8
|
+
|
|
9
|
+
===================================================================
|
|
10
|
+
Generating new pre-night simulations and adding them to the archive
|
|
11
|
+
===================================================================
|
|
12
|
+
|
|
13
|
+
Introduction
|
|
14
|
+
============
|
|
15
|
+
|
|
16
|
+
Prenight simulation tools generate simulations of a few nights of observing, and add them to an archive.
|
|
17
|
+
These simulations can then be seen by ``schedview``'s reporting tools, and used to generate pre-night brifing reports.
|
|
18
|
+
Normally, these simulation are run by submitting the `batch/run_prenight_sims.sh script <https://github.com/lsst-sims/lsst_survey_sim/blob/main/batch/run_prenight_sims.sh>`_ in the `lsst_survey_sim repository <https://github.com/lsst-sims/lsst_survey_sim/>`_ as a batch job, either by hand or using a cron job.
|
|
19
|
+
For more fine-grained control, the simulations and be run and added to the archive using lower-level tools,
|
|
20
|
+
|
|
21
|
+
Running a standard set of pre-night simulations
|
|
22
|
+
===============================================
|
|
23
|
+
|
|
24
|
+
The standard set of pre-night simulations can be run by calling the ``batch/run_prenight_sims.sh`` shell (for SV) or ``batch/run_auxtel_prenight_sims.sh`` (for auxtel) scripts.
|
|
25
|
+
These scripts are "protected" by gate files: for user ``${USER}`` to run ``batch/run_prenight_sims.sh``, the file ``/sdf/data/rubin/shared/scheduler/cron_gates/run_prenight_sims/${USER}`` must exist,
|
|
26
|
+
and for that user to run ``batch/run_auxtel_prenight_sims.sh``, the file ``/sdf/data/rubin/shared/scheduler/cron_gates/run_auxtel_prenight_sims/${USER}`` must exist.
|
|
27
|
+
(This was done so that any user with write access to ``/sdf/data/rubin/shared/scheduler/cron_gates/${SCRIPT}`` can stop a cron job that runs the corresponding script from doing anything, even if that cron job is not owned by that user.)
|
|
28
|
+
|
|
29
|
+
If ``LSST_SURVEY_SIM_DIR`` is the ``lsst_survey_sim`` root directory, it can be called thus::
|
|
30
|
+
|
|
31
|
+
${LSST_SURVEY_SIM_DIR}/batch/run_prenight_sims.sh
|
|
32
|
+
|
|
33
|
+
or thus::
|
|
34
|
+
|
|
35
|
+
${LSST_SURVEY_SIM_DIR}/batch/run_auxtel_prenight_sims.sh auxtel
|
|
36
|
+
|
|
37
|
+
or they can be submitted as a batch job to slurm.
|
|
38
|
+
At the USDF, there is an installation of ``lsst_survey_sim`` at ``/sdf/data/rubin/shared/scheduler/packages/lsst_survey_sim`` such that the commands become::
|
|
39
|
+
|
|
40
|
+
/sdf/data/rubin/shared/scheduler/packages/lsst_survey_sim/batch/run_auxtel_prenight_sims.sh
|
|
41
|
+
/sdf/data/rubin/shared/scheduler/packages/lsst_survey_sim/batch/run_prenight_sims.sh
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
These scripts build python environments in the USDF scratch disks of the user running the script, in directories of the form::
|
|
45
|
+
|
|
46
|
+
/sdf/scratch/users/${USER:0:1}/${USER}/prenight_venvs/prenight-YYYY-MM-DDTHHMMSS-XXXXXX
|
|
47
|
+
|
|
48
|
+
Where ``${USER:0:1}`` is the first letter of a username, and the ``XXXXXX`` is replaced by random characters.
|
|
49
|
+
For example, a recent environment created was: ``/sdf/scratch/users/n/neilsen/prenight_venvs/prenight-2025-12-16T141515-gCnXfu``.
|
|
50
|
+
|
|
51
|
+
These batch jobs will record their logs (stderr and stdout) in:
|
|
52
|
+
|
|
53
|
+
* ``/sdf/data/rubin/shared/scheduler/prenight/sbatch/run_prenight_sims_%A_%a.out`` and
|
|
54
|
+
* ``/sdf/data/rubin/shared/scheduler/prenight/sbatch/run_prenight_sims_%A_%a.err``
|
|
55
|
+
|
|
56
|
+
The working files can be found in ``/sdf/data/rubin/shared/scheduler/prenight/work/run_prenight_sims/%Y-%m-%dT%H%M%``.
|
|
57
|
+
|
|
58
|
+
Automated runs of prenight simulations
|
|
59
|
+
======================================
|
|
60
|
+
|
|
61
|
+
Batch jobs are submitted automatically each morning following the ``sbatch`` commands shown above.
|
|
62
|
+
The ``crontab`` entries are::
|
|
63
|
+
|
|
64
|
+
15 6 * * * /opt/slurm/slurm-curr/bin/sbatch /sdf/data/rubin/shared/scheduler/packages/lsst_survey_sim/batch/run_auxtel_prenight_sims.sh 2>&1 >> /sdf/data/rubin/shared/scheduler/prenight/daily/daily_auxtel_cr on.out
|
|
65
|
+
55 6 * * * /opt/slurm/slurm-curr/bin/sbatch /sdf/data/rubin/shared/scheduler/packages/lsst_survey_sim/batch/run_prenight_sims.sh 2>&1 >> /sdf/data/rubin/shared/scheduler/prenight/daily/daily_simonyi_cron.out
|
|
66
|
+
|
|
67
|
+
If necessary, these cron jobs can be stopped from doing anything, even a user that does not own the cron job, if they have write access to ``/sdf/data/rubin/shared/scheduler/cron_gates/${SCRIPT}``.
|
|
68
|
+
This is accomplished using gate files: early in each script, the script checks for the existence of a file with name ``/sdf/data/rubin/shared/scheduler/cron_gates/${SCRIPT_NAME}/${USER}`` and aborts if it does not exist.
|
|
69
|
+
Any user with write access to ``/sdf/data/rubin/shared/scheduler/cron_gates/${SCRIPT_NAME}`` can create or remove files in that directory, so a user can cause these scripts to immediately abort
|
|
70
|
+
when started by a cron job owned by a different user by removing ``/sdf/data/rubin/shared/scheduler/cron_gates/${SCRIPT_NAME}/${CRON_JOB_USER}``.
|
|
71
|
+
|
|
72
|
+
So, to stop the ``run_prenight_sims.sh`` cron job owned by user ``neilsen``, remove the file ``/sdf/data/rubin/shared/scheduler/cron_gates/run_prenight_sims/neilsen``,
|
|
73
|
+
and to stop the ``run_auxtel_prenight_sims.sh`` cron job owned by user ``neilsen``, remove the file ``/sdf/data/rubin/shared/scheduler/cron_gates/run_auxtel_prenight_sims/neilsen``,
|
|
74
|
+
|
|
75
|
+
The logs of the cron jobs (and any other executions of these scripts submitted using ``sbatch``) can be found in ``/sdf/data/rubin/shared/scheduler/prenight/sbatch/run_prenight_sims_%A_%a.out``,
|
|
76
|
+
where ``%A`` is the slurm "Job array's master job allocation number" and ``%a`` is the slum "Job array ID (index) number".
|
|
77
|
+
|
|
78
|
+
Updating the versions of the scripts
|
|
79
|
+
====================================
|
|
80
|
+
|
|
81
|
+
The batch jobs run versions of ``lsst_survey_sim/batch/run_prenight_sims.sh`` and ``lsst_survey_sim/run_auxtel_prenight_sims.sh`` installed in ``/sdf/data/rubin/shared/scheduler/packages``.
|
|
82
|
+
Versions of ``lsst_survey_sim`` installed in ``/sdf/data/rubin/shared/scheduler/packages`` can be updated as follows.
|
|
83
|
+
|
|
84
|
+
First, if one does not exist already, tag ``lsst_survey_sim`` at the commit you want.
|
|
85
|
+
To find the next available tag::
|
|
86
|
+
|
|
87
|
+
curl -s https://api.github.com/repos/lsst-sims/lsst_survey_sims/tags \
|
|
88
|
+
| jq -r '.[].name' \
|
|
89
|
+
| egrep '^v[0-9]+.[0-9]+.[0-9]+.*$' \
|
|
90
|
+
| sort -V
|
|
91
|
+
|
|
92
|
+
Make and push a new tag (with the base of the repository at the commit you want as the current working directory)::
|
|
93
|
+
|
|
94
|
+
NEWVERSION="0.1.0.dev2"
|
|
95
|
+
NEWTAG=v${NEWVERSION}
|
|
96
|
+
echo "New version is ${NEWVERSION} with tag ${NEWTAG}"
|
|
97
|
+
echo ""
|
|
98
|
+
git tag ${NEWTAG}
|
|
99
|
+
git push origin tag ${NEWTAG}
|
|
100
|
+
|
|
101
|
+
Then install it in ``/sdf/data/rubin/shared/scheduler/packages``::
|
|
102
|
+
|
|
103
|
+
PACKAGEDIR="/sdf/data/rubin/shared/scheduler/packages"
|
|
104
|
+
TARGETDIR="${PACKAGEDIR}/lsst_survey_sim-${NEWVERSION}"
|
|
105
|
+
PIPORIGIN="git+https://github.com/lsst-sims/lsst_survey_sim.git@${NEWTAG}"
|
|
106
|
+
echo "Installing from ${PIPORIGIN} to ${TARGETDIR}"
|
|
107
|
+
echo ""
|
|
108
|
+
pip install \
|
|
109
|
+
--no-deps \
|
|
110
|
+
--target=${TARGETDIR} \
|
|
111
|
+
${PIPORIGIN}
|
|
112
|
+
|
|
113
|
+
If you want to make it the default version, replace the link::
|
|
114
|
+
|
|
115
|
+
if test -L ${PACKAGEDIR}/lsst_survey_sim ; then
|
|
116
|
+
rm ${PACKAGEDIR}/lsst_survey_sim
|
|
117
|
+
fi
|
|
118
|
+
ln -s ${TARGETDIR} ${PACKAGEDIR}/lsst_survey_sim
|
|
119
|
+
|
|
120
|
+
Custom runs of prenight simulations
|
|
121
|
+
===================================
|
|
122
|
+
|
|
123
|
+
Preparation of the environment
|
|
124
|
+
------------------------------
|
|
125
|
+
|
|
126
|
+
Much of the ``run_prenight_sims.sh`` script is dedicated to figuring out what environment to use and configuring it.
|
|
127
|
+
If these defaults are not desired, a user can configure an environment to their liking, and run the simulation with the following steps.
|
|
128
|
+
The dependencies of ``lsst_survey_sim`` provide most of what the preniight simulations require to run.
|
|
129
|
+
The additional dependencies beyond what ``lsst_survey_sim`` requires are:
|
|
130
|
+
|
|
131
|
+
- ``click``
|
|
132
|
+
- ``psycopg2``
|
|
133
|
+
- ``botocore``
|
|
134
|
+
- ``boto3``
|
|
135
|
+
- ``lsst-resources``
|
|
136
|
+
|
|
137
|
+
You will also need to configure environment variables for access to the prenight S3 bucket and metadata database::
|
|
138
|
+
|
|
139
|
+
export VSARCHIVE_PGDATABASE="opsim_log"
|
|
140
|
+
export VSARCHIVE_PGHOST="usdf-maf-visit-seq-archive-tx.sdf.slac.stanford.edu"
|
|
141
|
+
export VSARCHIVE_PGUSER="writer"
|
|
142
|
+
export VSARCHIVE_PGSCHEMA="vsmd"
|
|
143
|
+
|
|
144
|
+
Get completed visits
|
|
145
|
+
--------------------
|
|
146
|
+
|
|
147
|
+
First, retrieve the set of completed visits at the start of the nights to be simulated.
|
|
148
|
+
For example::
|
|
149
|
+
|
|
150
|
+
DAYOBS="$(date -u --date='-12 hours' +'%Y%m%d')"
|
|
151
|
+
TOKEN_FILE="~/.lsst/usdf_access_token"
|
|
152
|
+
fetch_lsst_visits ${DAYOBS} completed_visits.db ${TOKEN_FILE}
|
|
153
|
+
|
|
154
|
+
You can register this visit list in the prenight simulation metadata database::
|
|
155
|
+
|
|
156
|
+
PREVIOUS_NIGHT_ISO="$(date --date='-36 hours' -u +'%F')"
|
|
157
|
+
COMPLETED=$(vseqarchive record-visitseq-metadata \
|
|
158
|
+
completed \
|
|
159
|
+
completed_visits.db \
|
|
160
|
+
"Consdb query through ${PREVIOUS_NIGHT_ISO}" \
|
|
161
|
+
--first_day_obs 20250620 \
|
|
162
|
+
--last_day_obs ${PREVIOUS_NIGHT_ISO})
|
|
163
|
+
|
|
164
|
+
The ``vseqarchive record-visitseq-metadata`` command creates a row in the ``completed`` table in the visit sequence archive metadata database,
|
|
165
|
+
automatically assigning it a UUID and recording a checksum of the table of visits and the label and date range provided as arguments in the above command.
|
|
166
|
+
It **does not** save the visits themselves in the S3 bucket:
|
|
167
|
+
it only records the checksum of the set of visits in the metadata database and assigns the set a UUID.
|
|
168
|
+
Above, this automatically generated UUID is saved in the ``COMPLETED`` environment variable.
|
|
169
|
+
|
|
170
|
+
Note that the ``fetch_lsst_visits`` command required the ``dayobs`` of the night you are about to simulate in ``YYYYMMDD`` format,
|
|
171
|
+
while the ``vseqarchive record-visitseq-metadata`` command takes the ``dayobs`` of the last night in the completed visits
|
|
172
|
+
(probably the night before the one used in ``fetch_lsst_visits``) in either ``YYYYMMDD`` or ``YYYY-MM-DD`` format.
|
|
173
|
+
|
|
174
|
+
Create pickles of the objects you need to run the simulation
|
|
175
|
+
------------------------------------------------------------
|
|
176
|
+
|
|
177
|
+
If you do not already have a pickle, begin by getting the configuration you want from ``ts_config_scheduler``::
|
|
178
|
+
|
|
179
|
+
TS_CONFIG_SCHEDULER_REFERENCE="develop"
|
|
180
|
+
SCHED_CONFIG_FNAME="ts_config_scheduler/Scheduler/feature_scheduler/maintel/fbs_config_lsst_survey.py"
|
|
181
|
+
git clone --depth 1 https://github.com/lsst-ts/ts_config_scheduler
|
|
182
|
+
cd ts_config_scheduler
|
|
183
|
+
git fetch --depth 1 origin "${TS_CONFIG_SCHEDULER_REFERENCE}"
|
|
184
|
+
git checkout FETCH_HEAD
|
|
185
|
+
|
|
186
|
+
Create a pickle of the scheduler you want to run::
|
|
187
|
+
|
|
188
|
+
make_lsst_scheduler scheduler.p --opsim completed_visits.db --config_script ${SCHED_CONFIG_FNAME}
|
|
189
|
+
|
|
190
|
+
Create a model observatory pickle::
|
|
191
|
+
|
|
192
|
+
make_model_observatory observatory.p
|
|
193
|
+
|
|
194
|
+
Run the simulation
|
|
195
|
+
------------------
|
|
196
|
+
|
|
197
|
+
Set a directory in which to save the results of the simulations::
|
|
198
|
+
|
|
199
|
+
OPSIM_RESULTS_DIR=/my/results/directory
|
|
200
|
+
mkdir ${OPSIM_RESULTS_DIR}
|
|
201
|
+
|
|
202
|
+
Finally, run the sim (and add it to the archive)::
|
|
203
|
+
|
|
204
|
+
OPSIMRUN="prenight_nominal_$(date --iso=s)"
|
|
205
|
+
NUM_NIGHTS="3"
|
|
206
|
+
LABEL="Nominal start and overhead, ideal conditions, run at $(date --iso=s)"
|
|
207
|
+
run_lsst_sim scheduler.p observatory.p "" ${DAYOBS} ${NUM_NIGHTS} "${OPSIMRUN}" \
|
|
208
|
+
--keep_rewards --label "${LABEL}" \
|
|
209
|
+
--delay 0 --anom_overhead_scale 0 \
|
|
210
|
+
--results ${OPSIM_RESULT_DIR}
|
|
211
|
+
|
|
212
|
+
Add the simulation to the S3 bucket and metadata database
|
|
213
|
+
---------------------------------------------------------
|
|
214
|
+
|
|
215
|
+
Set ``LAST_DAYOBS`` to whatever the last dayobs in the simualtion was.
|
|
216
|
+
In the above example, that's three days ofter tonight::
|
|
217
|
+
|
|
218
|
+
LAST_DAYOBS="$(date -u --date='+36 hours' +'%Y%m%d')"
|
|
219
|
+
|
|
220
|
+
Register the simulation in the database::
|
|
221
|
+
|
|
222
|
+
SIM_UUID=$(vseqarchive record-visitseq-metadata \
|
|
223
|
+
simulations \
|
|
224
|
+
${OPSIM_RESULT_DIR}/opsim.db \
|
|
225
|
+
"${LABEL}" \
|
|
226
|
+
--first_day_obs ${DAYOBS} \
|
|
227
|
+
--last_day_obs ${LAST_DAYOBS}
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
Add additional metadata for this entry recording where the pre-simulation visits came from::
|
|
231
|
+
|
|
232
|
+
vseqarchive update-visitseq-metadata ${SIM_UUID} parent_visitseq_uuid ${COMPLETED}
|
|
233
|
+
vseqarchive update-visitseq-metadata ${SIM_UUID} parent_last_day_obs ${PREVIOUS_NIGHT_ISO}
|
|
234
|
+
|
|
235
|
+
Set appropriate tags.
|
|
236
|
+
The following set of tags make the visit sequence recognized as a standard prenight by tools like ``obsloctap`` and the prenight brifing report::
|
|
237
|
+
|
|
238
|
+
vseqarchive tag ${SIM_UUID} prenight ideal nominal
|
|
239
|
+
|
|
240
|
+
Save the visits themselves to the S3 bucket, simultaneously updating the metadata database with references for their locations::
|
|
241
|
+
|
|
242
|
+
ARCHIVE="s3://rubin:rubin-scheduler-prenight/opsim/vseq/"
|
|
243
|
+
vseqarchive archive-file ${SIM_UUID} ${OPSIM_RESULT_DIR}/opsim.db visits --archive-base ${ARCHIVE}
|
|
244
|
+
|
|
245
|
+
When the opsim visits file has an extension that indicates that it is an ``sqlite3`` database (as it will be in this example),
|
|
246
|
+
it will be automatically converted to an HDF5 file for archiving.
|
|
247
|
+
|
|
248
|
+
If you used the ``--keep-rewords`` option in ``run_lsst_sim`` (as was done above), save the rewards file you generated as well::
|
|
249
|
+
|
|
250
|
+
vseqarchive archive-file ${SIM_UUID} ${OPSIM_RESULT_DIR}/rewards.h5 rewards --archive-base ${ARCHIVE}
|
|
251
|
+
|
|
252
|
+
Update the indexes of prenight simulations
|
|
253
|
+
------------------------------------------
|
|
254
|
+
|
|
255
|
+
Some services (e.g. ``obsloctap``) need to query for prenight simulation of a given night, but do not have access to the prenight simulation database.
|
|
256
|
+
To support them, we maintain the results of queries to the metadata database for prenight sims of a given night in a pre-determined location in the S3 bucket.
|
|
257
|
+
When we create a new simulation, we need to update the objects with the results in the S3 bucket.
|
|
258
|
+
We need to do this for each night simulated.
|
|
259
|
+
In this example, the ``DAYOBS`` environment variable contains the first night (tonight).
|
|
260
|
+
We specified that we were simulating 3 nights above, so set variables for tomorrow and the day after, and iterate over them::
|
|
261
|
+
|
|
262
|
+
NEXT_DAYOBS="$(date -u --date='+12 hours' +'%Y%m%d')"
|
|
263
|
+
LAST_DAYOBS="$(date -u --date='+36 hours' +'%Y%m%d')"
|
|
264
|
+
DAYOBS_SIMULATED="$DAYOBS $NEXT_DAYOBS $LAST_DAYOBS"
|
|
265
|
+
for DAYOBS_TO_INDEX in ${DAYOBS_SIMULATED}; do
|
|
266
|
+
vseqarchive make-prenight-index ${DAYOBS_TO_INDEX} simonyi
|
|
267
|
+
done
|
|
268
|
+
|
|
269
|
+
==========================================
|
|
270
|
+
Retrieving indexes of prenight simulations
|
|
271
|
+
==========================================
|
|
272
|
+
|
|
273
|
+
The typical user of the prenight simulations should use the ``rubin_sim.sim_archive.prenightindex.get_prenight_index`` function.
|
|
274
|
+
|
|
275
|
+
``get_prenight_index`` first attempts to query the metadata database for the data necessary to create the index.
|
|
276
|
+
If this query fails (e.g. due to access restrictions), it falls back on reading the index in the S3 bucket created by the ``vseqarchive make-prenight-index`` command.
|
|
277
|
+
For example::
|
|
278
|
+
|
|
279
|
+
>>> from rubin_sim.sim_archive.prenightindex import get_prenight_index
|
|
280
|
+
>>> pn_index_df = get_prenight_index('2025-12-10', 'simonyi')
|
|
281
|
+
>>> pn_index_df.tail()
|
|
282
|
+
sim_creation_day_obs daily_id visitseq_label ... tags comments files
|
|
283
|
+
visitseq_uuid ...
|
|
284
|
+
7468dd4a-54ef-44fb-8bc0-8091ad49e9ab 2025-12-10 2 Nominal start and overhead, ideal conditions, ... ... [ideal, nominal, prenight] {} {'rewards': 's3://rubin:rubin-scheduler-prenig...
|
|
285
|
+
c24d9a7a-995e-4b3a-8da6-40ac7ed3688d 2025-12-10 3 Start time delayed by 60 minutes, nominal slew... ... [delay_60, ideal, prenight] {} {'rewards': 's3://rubin:rubin-scheduler-prenig...
|
|
286
|
+
ff6df943-8a5b-4871-bbe2-5729f8aa0820 2025-12-10 4 Start time delayed by 240 minutes, nominal sle... ... [delay_240, ideal, prenight] {} {'rewards': 's3://rubin:rubin-scheduler-prenig...
|
|
287
|
+
6ee29551-5326-4d3b-9b2e-ba50c9e292d6 2025-12-10 5 Anomalous overhead (101, 0.1), nominal start, ... ... [anomalous_overhead, ideal, prenight] {} {'rewards': 's3://rubin:rubin-scheduler-prenig...
|
|
288
|
+
d08fb912-d57b-46ab-a911-ee97fd1a013f 2025-12-10 6 Anomalous overhead (102, 0.1), nominal start, ... ... [anomalous_overhead, ideal, prenight] {} {'rewards': 's3://rubin:rubin-scheduler-prenig...
|
|
289
|
+
|
|
290
|
+
[5 rows x 17 columns]
|
|
291
|
+
>>> pn_index_df.columns
|
|
292
|
+
Index(['sim_creation_day_obs', 'daily_id', 'visitseq_label', 'visitseq_url',
|
|
293
|
+
'telescope', 'first_day_obs', 'last_day_obs', 'creation_time',
|
|
294
|
+
'scheduler_version', 'config_url', 'sim_runner_kwargs',
|
|
295
|
+
'conda_env_sha256', 'parent_visitseq_uuid', 'parent_last_day_obs',
|
|
296
|
+
'tags', 'comments', 'files'],
|
|
297
|
+
dtype='object')
|
|
298
|
+
|
|
299
|
+
The columns of this `pandas.DataFrame` are as follows:
|
|
300
|
+
|
|
301
|
+
.. list-table:: VisitSequence Metadata Fields
|
|
302
|
+
:widths: 25 20 55
|
|
303
|
+
:header-rows: 1
|
|
304
|
+
|
|
305
|
+
* - Field
|
|
306
|
+
- Type
|
|
307
|
+
- Description
|
|
308
|
+
* - visitseq_label
|
|
309
|
+
- ``str``
|
|
310
|
+
- Human-readable label for the simulation
|
|
311
|
+
* - visitseq_url
|
|
312
|
+
- ``str`` or ``None``
|
|
313
|
+
- URL of the visits file (HDF5)
|
|
314
|
+
* - telescope
|
|
315
|
+
- ``str``
|
|
316
|
+
- Telescope identifier (``simonyi`` or ``auxtel``)
|
|
317
|
+
* - first_day_obs
|
|
318
|
+
- ``datetime.date`` or ``None``
|
|
319
|
+
- Local evening of the first night covered by the simulation
|
|
320
|
+
* - last_day_obs
|
|
321
|
+
- ``datetime.date`` or ``None``
|
|
322
|
+
- Local evening of the last night covered
|
|
323
|
+
* - creation_time
|
|
324
|
+
- ``pd.Timestamp`` or ``None``
|
|
325
|
+
- When the simulation was run (UTC)
|
|
326
|
+
* - scheduler_version
|
|
327
|
+
- ``str`` or ``None``
|
|
328
|
+
- Version of **rubin_scheduler** used
|
|
329
|
+
* - config_url
|
|
330
|
+
- ``str`` or ``None``
|
|
331
|
+
- URL of the configuration script (if recorded)
|
|
332
|
+
* - sim_runner_kwargs
|
|
333
|
+
- ``dict`` or ``None``
|
|
334
|
+
- Arguments passed to ``sim_runner`` (JSON-serialisable)
|
|
335
|
+
* - conda_env_sha256
|
|
336
|
+
- ``str`` (hex) or ``None``
|
|
337
|
+
- SHA-256 hash of the Conda environment used
|
|
338
|
+
* - parent_visitseq_uuid
|
|
339
|
+
- ``uuid.UUID`` or ``None``
|
|
340
|
+
- UUID of the parent simulation (if this is a continuation)
|
|
341
|
+
* - parent_last_day_obs
|
|
342
|
+
- ``datetime.date`` or ``None``
|
|
343
|
+
- Last night of the parent simulation
|
|
344
|
+
* - sim_creation_day_obs
|
|
345
|
+
- ``datetime.date`` or ``None``
|
|
346
|
+
- Derived from ``creation_time`` (UTC-12 day)
|
|
347
|
+
* - daily_id
|
|
348
|
+
- ``int``
|
|
349
|
+
- Sequential ID for simulations created on the same day (1-based)
|
|
350
|
+
* - stats
|
|
351
|
+
- ``dict`` or ``None``
|
|
352
|
+
- Aggregated nightly statistics for the simulation. Structure follows the output of ``VisitSequenceArchiveMetadata.sims_on_night_with_stats`` – a mapping from metric name to a sub-dictionary of statistic values (``count``, ``mean``, ``p05``, ``q1``, ``median``, ``q3``, ``p95``, ``min``, ``max``, etc.)
|
|
353
|
+
* - tags
|
|
354
|
+
- ``list[str]``
|
|
355
|
+
- List of tags attached to the simulation (e.g., ``["prenight","ideal","nominal"]``)
|
|
356
|
+
* - files
|
|
357
|
+
- ``dict``
|
|
358
|
+
- Mapping from file type (e.g., ``"scheduler"``, ``"observatory"``, ``"rewards"``) to the URL where that file is stored
|
|
359
|
+
* - comments
|
|
360
|
+
- ``dict``
|
|
361
|
+
- Mapping from comment timestamp (ISO string) to comment text
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
This data may also be read directly from the S3 bucket for the desired night (dayobs).
|
|
365
|
+
The URL for the json data is of the form::
|
|
366
|
+
|
|
367
|
+
s3://rubin:rubin-scheduler-prenight/opsim/prenight_index/{telescope}/{year}/{month}/{telescope}_prenights_for_{YYYY-MM-DD}.json
|
|
368
|
+
|
|
369
|
+
The content is a json file with (hex representations of) simulation UUIDs as keys and dictionaries with metadata as the values of those keys.
|
|
370
|
+
The start of a sample index looks like this::
|
|
371
|
+
|
|
372
|
+
{
|
|
373
|
+
"e572d2b3-d07b-496b-a0c3-a69c915a5ad4":{
|
|
374
|
+
"sim_creation_day_obs":"2025-12-08",
|
|
375
|
+
"daily_id":2,
|
|
376
|
+
"visitseq_label":"Nominal start and overhead, ideal conditions, run at 2025-12-08T06:59:18-08:00",
|
|
377
|
+
"visitseq_url":"s3:\/\/rubin:rubin-scheduler-prenight\/opsim\/vseq\/simonyi\/2025-12-08\/e572d2b3-d07b-496b-a0c3-a69c915a5ad4\/visits.h5",
|
|
378
|
+
"telescope":"simonyi",
|
|
379
|
+
"first_day_obs":"2025-12-08",
|
|
380
|
+
"last_day_obs":"2025-12-10",
|
|
381
|
+
"creation_time":"2025-12-08T15:09:51.399Z",
|
|
382
|
+
"scheduler_version":"",
|
|
383
|
+
"config_url":null,
|
|
384
|
+
"sim_runner_kwargs":null,
|
|
385
|
+
"conda_env_sha256":"52333af3b43db7704318f35d4fe7b9ddf770ca49c892f9681933c20de36cb0b3",
|
|
386
|
+
"parent_visitseq_uuid":"93b058db-c0f4-4395-b856-4064454299f3",
|
|
387
|
+
"parent_last_day_obs":"2025-12-07",
|
|
388
|
+
"tags":[
|
|
389
|
+
"ideal",
|
|
390
|
+
"nominal",
|
|
391
|
+
"prenight"
|
|
392
|
+
],
|
|
393
|
+
"comments":{
|
|
394
|
+
|
|
395
|
+
},
|
|
396
|
+
"files":{
|
|
397
|
+
"rewards":"s3:\/\/rubin:rubin-scheduler-prenight\/opsim\/vseq\/simonyi\/2025-12-08\/e572d2b3-d07b-496b-a0c3-a69c915a5ad4\/rewards.h5"
|
|
398
|
+
},
|
|
399
|
+
"stats":{
|
|
400
|
+
"azimuth":{
|
|
401
|
+
"q1":174.9977611669,
|
|
402
|
+
"q3":295.2438484415,
|
|
403
|
+
"max":359.7925184257,
|
|
404
|
+
"min":0.0004341731,
|
|
405
|
+
"p05":20.4236498145,
|
|
406
|
+
"p95":344.7673586831,
|
|
407
|
+
"std":82.3488406074,
|
|
408
|
+
"mean":226.8318565587,
|
|
409
|
+
"count":562,
|
|
410
|
+
"median":222.7917334351,
|
|
411
|
+
"accumulated":false
|
|
412
|
+
},
|
|
413
|
+
|
|
414
|
+
It can be read using `lsst.resource.ResourcePath`::
|
|
415
|
+
|
|
416
|
+
>>> from lsst.resources import ResourcePath
|
|
417
|
+
>>> import json
|
|
418
|
+
>>> prenight_index_rp = ResourcePath('s3://rubin:rubin-scheduler-prenight/opsim/prenight_index/simonyi/2025/12/simonyi_prenights_for_2025-12-10.json')
|
|
419
|
+
>>> prenight_index_json = prenight_index_rp.read().decode()
|
|
420
|
+
>>> prenight_index = json.loads(prenight_index_json)
|
|
421
|
+
|
|
422
|
+
===============================================
|
|
423
|
+
Retrieving the table of visits for a simulation
|
|
424
|
+
===============================================
|
|
425
|
+
|
|
426
|
+
The indexed of simulations above include the ``visitseq_url`` referece to the HDF5 file with table of simulated visits themselves.
|
|
427
|
+
The simplest way to read these is with the ``rubin_sim.sim_archive.vseqarchive.get_visits`` utility::
|
|
428
|
+
|
|
429
|
+
>>> from rubin_sim.sim_archive.vseqarchive import get_visits
|
|
430
|
+
>>> visitseq_url = 's3://rubin:rubin-scheduler-prenight/opsim/vseq/simonyi/2025-12-08/e572d2b3-d07b-496b-a0c3-a69c915a5ad4/visits.h5'
|
|
431
|
+
>>> visits = get_visits(visitseq_url)
|
|
432
|
+
>>> visits.head()
|
|
433
|
+
observationId fieldRA fieldDec observationStartMJD flush_by_mjd visitExposureTime band filter rotSkyPos ... moonRA moonDec moonDistance solarElong moonPhase cummTelAz observation_reason science_program cloud_extinction
|
|
434
|
+
0 0 25.485040 -21.566665 61018.046632 0.0 150.0 r r_57 98.333137 ... 136.719114 19.773488 116.187971 113.972844 68.590565 8.975898 cwfs BLOCK-T630 0.0
|
|
435
|
+
1 1 24.731275 -13.747277 61018.048581 0.0 30.0 r r_57 92.888439 ... 136.749727 19.766991 115.028941 118.157641 68.575266 4.362920 singles_r BLOCK-407 0.0
|
|
436
|
+
2 2 26.590414 -11.364966 61018.049060 0.0 30.0 r r_57 97.394703 ... 136.757232 19.765397 112.626404 121.019966 68.571516 10.054260 singles_r BLOCK-407 0.0
|
|
437
|
+
3 3 25.249855 -8.776389 61018.049521 0.0 30.0 r r_57 93.312776 ... 136.764443 19.763864 113.121836 121.402330 68.567913 5.944932 singles_r BLOCK-407 0.0
|
|
438
|
+
4 4 23.904252 -6.185058 61018.049972 0.0 30.0 r r_57 90.071152 ... 136.771498 19.762364 113.578828 121.674979 68.564388 2.665790 singles_r BLOCK-407 0.0
|
|
439
|
+
|
|
440
|
+
The columns contained are those generated by the ``rubin_scheduler`` ``opsim`` simulation, and can therefore be analyzed using ``rubin_sim.maf`` tools.
|
|
441
|
+
|
|
442
|
+
The ``get_visits`` utility used above can accept a ``stackers`` keyword argument that takes a list of ``maf`` stackers, which supplement the base columns included in the HDF5 file with derived columns.
|
|
443
|
+
|
|
444
|
+
The HDF5 in the S3 store can alse be read directly using lower level tools::
|
|
445
|
+
|
|
446
|
+
>>> from lsst.resources import ResourcePath
|
|
447
|
+
>>> from tempfile import TemporaryDirectory
|
|
448
|
+
>>> import pandas as pd
|
|
449
|
+
>>> visitseq_url = 's3://rubin:rubin-scheduler-prenight/opsim/vseq/simonyi/2025-12-08/e572d2b3-d07b-496b-a0c3-a69c915a5ad4/visits.h5'
|
|
450
|
+
>>> visitseq_origin = ResourcePath(visitseq_url)
|
|
451
|
+
>>> with TemporaryDirectory() as temp_dir:
|
|
452
|
+
... h5_destination = ResourcePath(temp_dir).join("visits.h5")
|
|
453
|
+
... h5_destination.transfer_from(visitseq_origin, "copy")
|
|
454
|
+
... visits = pd.read_hdf(h5_destination.ospath, key="observations")
|
|
455
|
+
...
|
|
456
|
+
>>> visits.head()
|
|
457
|
+
observationId fieldRA fieldDec observationStartMJD flush_by_mjd visitExposureTime band filter rotSkyPos ... moonRA moonDec moonDistance solarElong moonPhase cummTelAz observation_reason science_program cloud_extinction
|
|
458
|
+
0 0 25.485040 -21.566665 61018.046632 0.0 150.0 r r_57 98.333137 ... 136.719114 19.773488 116.187971 113.972844 68.590565 8.975898 cwfs BLOCK-T630 0.0
|
|
459
|
+
1 1 24.731275 -13.747277 61018.048581 0.0 30.0 r r_57 92.888439 ... 136.749727 19.766991 115.028941 118.157641 68.575266 4.362920 singles_r BLOCK-407 0.0
|
|
460
|
+
2 2 26.590414 -11.364966 61018.049060 0.0 30.0 r r_57 97.394703 ... 136.757232 19.765397 112.626404 121.019966 68.571516 10.054260 singles_r BLOCK-407 0.0
|
|
461
|
+
3 3 25.249855 -8.776389 61018.049521 0.0 30.0 r r_57 93.312776 ... 136.764443 19.763864 113.121836 121.402330 68.567913 5.944932 singles_r BLOCK-407 0.0
|
|
462
|
+
4 4 23.904252 -6.185058 61018.049972 0.0 30.0 r r_57 90.071152 ... 136.771498 19.762364 113.578828 121.674979 68.564388 2.665790 singles_r BLOCK-407 0.0
|
|
463
|
+
|
|
464
|
+
=============================================================
|
|
465
|
+
Retrieving the latest nominal prenight simulation for a night
|
|
466
|
+
=============================================================
|
|
467
|
+
|
|
468
|
+
A particularly common use of the prenight archive is to simply return visits from the latest nominal simulation for a given night and telescope.
|
|
469
|
+
The ``rubin_sim.sim_archive.fetch_sim_for_nights`` utility simplifies this task,
|
|
470
|
+
reading the prenight index, finding the ones with desirend metadata, and loading the corresponding visits from the latest matching simulation::
|
|
471
|
+
|
|
472
|
+
>>> from rubin_sim.sim_archive import fetch_sim_for_nights
|
|
473
|
+
>>> visits = fetch_sim_for_nights('2025-12-10', '2025-12-12', which_sim={'tags': ('ideal', 'nominal'), 'telescope': 'simonyi', 'max_simulation_age': 30})
|
|
474
|
+
>>> visits.head()
|
|
475
|
+
index observationId fieldRA fieldDec observationStartMJD flush_by_mjd visitExposureTime band filter ... moonRA moonDec moonDistance solarElong moonPhase cummTelAz observation_reason science_program cloud_extinction
|
|
476
|
+
0 0 0 27.728086 -21.211953 61020.047709 0.0 150.0 r r_57 ... 161.557441 8.748750 133.877255 114.115281 55.110377 7.944240 cwfs BLOCK-T630 0.0
|
|
477
|
+
1 1 1 28.993789 -13.374352 61020.049674 0.0 30.0 r r_57 ... 161.587119 8.738341 133.309112 119.900287 55.094211 10.547646 singles_r BLOCK-407 0.0
|
|
478
|
+
2 2 2 28.459780 -10.287782 61020.050117 0.0 30.0 r r_57 ... 161.593783 8.736001 133.791467 121.288930 55.090581 8.213424 singles_r BLOCK-407 0.0
|
|
479
|
+
3 3 3 27.969350 -7.184119 61020.050559 0.0 30.0 r r_57 ... 161.600448 8.733660 134.078759 122.629332 55.086950 6.614253 singles_r BLOCK-407 0.0
|
|
480
|
+
4 4 4 27.540610 -4.060129 61020.051002 0.0 30.0 r r_57 ... 161.607111 8.731318 134.143320 123.935418 55.083320 5.542837 singles_r BLOCK-407 0.0
|
|
481
|
+
|
|
482
|
+
The above call returns the latest simulation of the ``simonyi`` telescope that covers nights starting 2025-12-10 through 2025-12-12, has tags ``ideal`` and ``nominal``.
|
|
483
|
+
Simulations older than 30 days are ignored, such that no visits will be return if the latest simulation is older than this.
|
|
484
|
+
|
|
485
|
+
Like the ``rubin_sim.sim_archive.vseqarchive.get_visits`` described above, the ``rubin_sim.sim_archive.get_sim_for_nights`` function can take a list of stackers in the ``stackers`` keyword argument.
|
|
@@ -349,7 +349,7 @@ def glanceBatch(
|
|
|
349
349
|
displayDict["caption"] = "Fraction of observations that are in pairs"
|
|
350
350
|
displayDict["subgroup"] = "Solar System"
|
|
351
351
|
|
|
352
|
-
sql = "%s (
|
|
352
|
+
sql = "%s (band='g' or band='r' or band='i')" % sqlC
|
|
353
353
|
pairSlicer = slicers.HealpixSlicer(
|
|
354
354
|
nside=pairnside,
|
|
355
355
|
lat_col=colmap["dec"],
|
|
@@ -383,7 +383,7 @@ def glanceBatch(
|
|
|
383
383
|
if "scheduler_note" in colmap.keys():
|
|
384
384
|
displayDict = {"group": "Basic Stats", "subgroup": "Percent stats"}
|
|
385
385
|
metric = metrics.StringCountMetric(
|
|
386
|
-
col=colmap["
|
|
386
|
+
col=colmap["scheduler_note_root"], percent=True, metric_name="Percents", clip_end=False
|
|
387
387
|
)
|
|
388
388
|
sql = (
|
|
389
389
|
"scheduler_note like 'pair%%' or scheduler_note like 'twilight%%' or scheduler_note like 'blob%%'"
|
|
@@ -392,7 +392,9 @@ def glanceBatch(
|
|
|
392
392
|
bundle = metric_bundles.MetricBundle(metric, slicer, sql, display_dict=displayDict)
|
|
393
393
|
bundle_list.append(bundle)
|
|
394
394
|
displayDict["subgroup"] = "Count Stats"
|
|
395
|
-
metric = metrics.StringCountMetric(
|
|
395
|
+
metric = metrics.StringCountMetric(
|
|
396
|
+
col=colmap["scheduler_note_root"], metric_name="Counts", clip_end=False
|
|
397
|
+
)
|
|
396
398
|
bundle = metric_bundles.MetricBundle(metric, slicer, sql, display_dict=displayDict)
|
|
397
399
|
bundle_list.append(bundle)
|
|
398
400
|
|
|
@@ -510,7 +512,7 @@ def glanceBatch(
|
|
|
510
512
|
sky = EuclidOverlapFootprint(nside=nside_foot, smc_radius=4, lmc_radius=6)
|
|
511
513
|
footprints_hp_array, labels = sky.return_maps()
|
|
512
514
|
for filtername in filternames:
|
|
513
|
-
sql = "
|
|
515
|
+
sql = "band='%s' and night < 365" % filtername
|
|
514
516
|
metric = metrics.CountMetric(col="night", metric_name="N year 1")
|
|
515
517
|
summary_stat = metrics.FootprintFractionMetric(
|
|
516
518
|
footprint=footprints_hp_array[filtername],
|
|
@@ -536,7 +538,7 @@ def glanceBatch(
|
|
|
536
538
|
lat_lon_deg=colmap["raDecDeg"],
|
|
537
539
|
)
|
|
538
540
|
for filtername in filternames:
|
|
539
|
-
sql = "
|
|
541
|
+
sql = "band='%s' and scheduler_note like 'ToO%%'" % filtername
|
|
540
542
|
metric = metrics.CountMetric(col=colmap["mjd"], metric_name="N ToO")
|
|
541
543
|
bundle = metric_bundles.MetricBundle(
|
|
542
544
|
metric,
|