rubin-sim 2.6.1.dev2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- batch/compile_prenight_metadata_cache.sh +34 -0
- batch/run_auxtel_prenight_sims.sh +163 -0
- batch/run_prenight_sims.sh +239 -0
- docs/.gitignore +3 -0
- docs/Makefile +32 -0
- docs/api.rst +25 -0
- docs/conf.py +8 -0
- docs/data-api.rst +12 -0
- docs/data-download.rst +70 -0
- docs/developer.rst +14 -0
- docs/documenteer.toml +11 -0
- docs/index.rst +22 -0
- docs/installation.rst +76 -0
- docs/introduction.rst +37 -0
- docs/maf-api-batches.rst +12 -0
- docs/maf-api-db.rst +12 -0
- docs/maf-api-maf-contrib.rst +12 -0
- docs/maf-api-maps.rst +12 -0
- docs/maf-api-metricbundles.rst +12 -0
- docs/maf-api-metrics.rst +12 -0
- docs/maf-api-plots.rst +12 -0
- docs/maf-api-run-comparison.rst +12 -0
- docs/maf-api-slicers.rst +12 -0
- docs/maf-api-stackers.rst +12 -0
- docs/maf-api-utils.rst +12 -0
- docs/maf-api.rst +22 -0
- docs/maf.rst +60 -0
- docs/metric_list.py +49 -0
- docs/moving-objects-api.rst +12 -0
- docs/moving-objects.rst +22 -0
- docs/phot-utils-api.rst +12 -0
- docs/phot-utils.rst +11 -0
- docs/prenight.rst +117 -0
- docs/protoarchive.rst +276 -0
- docs/satellite-constellations-api.rst +12 -0
- docs/satellite-constellations.rst +13 -0
- docs/selfcal-api.rst +12 -0
- docs/selfcal.rst +15 -0
- docs/sim-archive-api.rst +12 -0
- docs/skybrightness-api.rst +12 -0
- docs/skybrightness.rst +23 -0
- docs/user-guide.rst +28 -0
- docs/vseqarchive-architecture.rst +438 -0
- docs/vseqarchive-setup.rst +238 -0
- docs/vseqarchive.rst +225 -0
- rubin_sim/__init__.py +7 -0
- rubin_sim/data/__init__.py +1 -0
- rubin_sim/data/rs_download_data.py +155 -0
- rubin_sim/maf/__init__.py +34 -0
- rubin_sim/maf/batches/__init__.py +18 -0
- rubin_sim/maf/batches/altaz_batch.py +161 -0
- rubin_sim/maf/batches/col_map_dict.py +274 -0
- rubin_sim/maf/batches/common.py +388 -0
- rubin_sim/maf/batches/ddf_batch.py +728 -0
- rubin_sim/maf/batches/filterchange_batch.py +182 -0
- rubin_sim/maf/batches/glance_batch.py +591 -0
- rubin_sim/maf/batches/hourglass_batch.py +79 -0
- rubin_sim/maf/batches/info_batch.py +114 -0
- rubin_sim/maf/batches/metadata_batch.py +558 -0
- rubin_sim/maf/batches/moving_objects_batch.py +1587 -0
- rubin_sim/maf/batches/openshutter_batch.py +100 -0
- rubin_sim/maf/batches/radar_limited.py +1100 -0
- rubin_sim/maf/batches/science_radar_batch.py +1910 -0
- rubin_sim/maf/batches/skycoverage.py +155 -0
- rubin_sim/maf/batches/slew_batch.py +146 -0
- rubin_sim/maf/batches/srd_batch.py +637 -0
- rubin_sim/maf/batches/time_batch.py +757 -0
- rubin_sim/maf/batches/time_sci_batch.py +105 -0
- rubin_sim/maf/batches/visitdepth_batch.py +485 -0
- rubin_sim/maf/db/__init__.py +2 -0
- rubin_sim/maf/db/add_run.py +34 -0
- rubin_sim/maf/db/results_db.py +1074 -0
- rubin_sim/maf/db/tracking_db.py +332 -0
- rubin_sim/maf/ddf_dir.py +53 -0
- rubin_sim/maf/generate_ss.py +218 -0
- rubin_sim/maf/glance_dir.py +58 -0
- rubin_sim/maf/maf_contrib/__init__.py +25 -0
- rubin_sim/maf/maf_contrib/calculate_lsst_field_visibility_astropy.py +170 -0
- rubin_sim/maf/maf_contrib/depth_limited_num_gal_metric.py +109 -0
- rubin_sim/maf/maf_contrib/example_new_metrics.py +40 -0
- rubin_sim/maf/maf_contrib/filter_pair_t_gaps_metric.py +208 -0
- rubin_sim/maf/maf_contrib/grb_transient_metric.py +249 -0
- rubin_sim/maf/maf_contrib/gw170817_det_metric.py +72 -0
- rubin_sim/maf/maf_contrib/intervals_between_obs_metric.py +68 -0
- rubin_sim/maf/maf_contrib/kne_metrics.py +473 -0
- rubin_sim/maf/maf_contrib/lss_metrics.py +45 -0
- rubin_sim/maf/maf_contrib/lss_obs_strategy/__init__.py +3 -0
- rubin_sim/maf/maf_contrib/lss_obs_strategy/constants_for_pipeline.py +73 -0
- rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_metric_extended.py +205 -0
- rubin_sim/maf/maf_contrib/lss_obs_strategy/galaxy_counts_with_pixel_calibration.py +171 -0
- rubin_sim/maf/maf_contrib/lv_dwarfs/__init__.py +1 -0
- rubin_sim/maf/maf_contrib/lv_dwarfs/lv_dwarfs_metrics.py +388 -0
- rubin_sim/maf/maf_contrib/microlensing_metric.py +593 -0
- rubin_sim/maf/maf_contrib/num_obs_in_survey_time_overlap_metric.py +43 -0
- rubin_sim/maf/maf_contrib/periodic_metric.py +51 -0
- rubin_sim/maf/maf_contrib/periodic_star_metric.py +186 -0
- rubin_sim/maf/maf_contrib/periodic_star_modulation_metric.py +236 -0
- rubin_sim/maf/maf_contrib/presto_color_kne_pop_metric.py +441 -0
- rubin_sim/maf/maf_contrib/selfcal_uniformity_metric.py +171 -0
- rubin_sim/maf/maf_contrib/star_count_mass_metric.py +64 -0
- rubin_sim/maf/maf_contrib/star_count_metric.py +56 -0
- rubin_sim/maf/maf_contrib/star_counts/__init__.py +8 -0
- rubin_sim/maf/maf_contrib/star_counts/abs_mag.py +324 -0
- rubin_sim/maf/maf_contrib/star_counts/coords.py +99 -0
- rubin_sim/maf/maf_contrib/star_counts/readme.txt +1 -0
- rubin_sim/maf/maf_contrib/star_counts/spec_type.py +91 -0
- rubin_sim/maf/maf_contrib/star_counts/starcount.py +30 -0
- rubin_sim/maf/maf_contrib/star_counts/starcount_bymass.py +93 -0
- rubin_sim/maf/maf_contrib/star_counts/stellardensity.py +59 -0
- rubin_sim/maf/maf_contrib/static_probes_fom_summary_metric.py +386 -0
- rubin_sim/maf/maf_contrib/tdes_pop_metric.py +362 -0
- rubin_sim/maf/maf_contrib/transient_ascii_sed_metric.py +652 -0
- rubin_sim/maf/maf_contrib/triplet_metric.py +156 -0
- rubin_sim/maf/maf_contrib/var_depth_metric.py +157 -0
- rubin_sim/maf/maf_contrib/xrb_metrics.py +523 -0
- rubin_sim/maf/maf_contrib/young_stellar_objects_metric.py +200 -0
- rubin_sim/maf/maf_night_report.py +200 -0
- rubin_sim/maf/make_fbs_tracking_db.py +90 -0
- rubin_sim/maf/maps/__init__.py +8 -0
- rubin_sim/maf/maps/base_map.py +72 -0
- rubin_sim/maf/maps/create_gaia_density_map.py +158 -0
- rubin_sim/maf/maps/dust_map.py +66 -0
- rubin_sim/maf/maps/dust_map_3d.py +190 -0
- rubin_sim/maf/maps/ebv_3d_hp.py +170 -0
- rubin_sim/maf/maps/ebv_hp.py +64 -0
- rubin_sim/maf/maps/gal_coords_map.py +22 -0
- rubin_sim/maf/maps/galactic_plane_priority_maps.py +210 -0
- rubin_sim/maf/maps/stellar_density_map.py +73 -0
- rubin_sim/maf/maps/trilegal_map.py +82 -0
- rubin_sim/maf/metadata_dir.py +90 -0
- rubin_sim/maf/metric_bundles/__init__.py +3 -0
- rubin_sim/maf/metric_bundles/metric_bundle.py +816 -0
- rubin_sim/maf/metric_bundles/metric_bundle_group.py +834 -0
- rubin_sim/maf/metric_bundles/mo_metric_bundle.py +646 -0
- rubin_sim/maf/metrics/__init__.py +52 -0
- rubin_sim/maf/metrics/agn_time_lag_metric.py +118 -0
- rubin_sim/maf/metrics/agnstructure.py +141 -0
- rubin_sim/maf/metrics/area_summary_metrics.py +120 -0
- rubin_sim/maf/metrics/base_metric.py +215 -0
- rubin_sim/maf/metrics/brown_dwarf_metric.py +162 -0
- rubin_sim/maf/metrics/cadence_metrics.py +400 -0
- rubin_sim/maf/metrics/calibration_metrics.py +618 -0
- rubin_sim/maf/metrics/chip_vendor_metric.py +43 -0
- rubin_sim/maf/metrics/color_slope_metrics.py +189 -0
- rubin_sim/maf/metrics/cosmology_summary_metrics.py +1212 -0
- rubin_sim/maf/metrics/coverage_metric.py +48 -0
- rubin_sim/maf/metrics/crowding_metric.py +255 -0
- rubin_sim/maf/metrics/cumulative_metric.py +46 -0
- rubin_sim/maf/metrics/dcr_metric.py +93 -0
- rubin_sim/maf/metrics/exgal_m5.py +57 -0
- rubin_sim/maf/metrics/fft_metric.py +27 -0
- rubin_sim/maf/metrics/galactic_plane_metrics.py +375 -0
- rubin_sim/maf/metrics/galplane_time_sampling_metrics.py +236 -0
- rubin_sim/maf/metrics/hourglass_metric.py +130 -0
- rubin_sim/maf/metrics/incremental_template_metric.py +255 -0
- rubin_sim/maf/metrics/kuiper_metrics.py +26 -0
- rubin_sim/maf/metrics/mo_metrics.py +1496 -0
- rubin_sim/maf/metrics/mo_summary_metrics.py +464 -0
- rubin_sim/maf/metrics/night_pointing_metric.py +70 -0
- rubin_sim/maf/metrics/optimal_m5_metric.py +94 -0
- rubin_sim/maf/metrics/pair_metric.py +69 -0
- rubin_sim/maf/metrics/periodic_detect_metric.py +133 -0
- rubin_sim/maf/metrics/phase_gap_metric.py +172 -0
- rubin_sim/maf/metrics/qso_number_counts_metric.py +138 -0
- rubin_sim/maf/metrics/scaling_metrics.py +148 -0
- rubin_sim/maf/metrics/schedview_metrics.py +39 -0
- rubin_sim/maf/metrics/season_metrics.py +344 -0
- rubin_sim/maf/metrics/simple_metrics.py +546 -0
- rubin_sim/maf/metrics/sky_sat_metric.py +18 -0
- rubin_sim/maf/metrics/sn_cadence_metric.py +104 -0
- rubin_sim/maf/metrics/sn_n_sn_metric.py +1364 -0
- rubin_sim/maf/metrics/sn_sl_metric.py +216 -0
- rubin_sim/maf/metrics/sn_snr_metric.py +715 -0
- rubin_sim/maf/metrics/snr_weight.py +24 -0
- rubin_sim/maf/metrics/star_density.py +77 -0
- rubin_sim/maf/metrics/string_count_metric.py +95 -0
- rubin_sim/maf/metrics/summary_metrics.py +201 -0
- rubin_sim/maf/metrics/surfb_metric.py +175 -0
- rubin_sim/maf/metrics/technical_metrics.py +271 -0
- rubin_sim/maf/metrics/tgaps.py +412 -0
- rubin_sim/maf/metrics/tomography_models.py +2034 -0
- rubin_sim/maf/metrics/transient_metrics.py +268 -0
- rubin_sim/maf/metrics/uniformity_metrics.py +418 -0
- rubin_sim/maf/metrics/use_metrics.py +55 -0
- rubin_sim/maf/metrics/vector_metrics.py +190 -0
- rubin_sim/maf/metrics/visit_groups_metric.py +341 -0
- rubin_sim/maf/metrics/weak_lensing_systematics_metric.py +210 -0
- rubin_sim/maf/plots/__init__.py +14 -0
- rubin_sim/maf/plots/hg_plotters.py +1117 -0
- rubin_sim/maf/plots/hourglass_plotters.py +120 -0
- rubin_sim/maf/plots/mo_plotters.py +358 -0
- rubin_sim/maf/plots/nd_plotters.py +220 -0
- rubin_sim/maf/plots/neo_distance_plotter.py +140 -0
- rubin_sim/maf/plots/night_pointing_plotter.py +96 -0
- rubin_sim/maf/plots/oned_plotters.py +114 -0
- rubin_sim/maf/plots/perceptual_rainbow.py +30 -0
- rubin_sim/maf/plots/plot_handler.py +766 -0
- rubin_sim/maf/plots/skyproj_plotters.py +540 -0
- rubin_sim/maf/plots/spatial_plotters.py +1029 -0
- rubin_sim/maf/plots/special_plotters.py +256 -0
- rubin_sim/maf/plots/two_d_plotters.py +177 -0
- rubin_sim/maf/plots/xyplotter.py +37 -0
- rubin_sim/maf/run_comparison/__init__.py +5 -0
- rubin_sim/maf/run_comparison/archive.py +584 -0
- rubin_sim/maf/run_comparison/gather_summaries.py +125 -0
- rubin_sim/maf/run_comparison/microlensing_compare.py +514 -0
- rubin_sim/maf/run_comparison/radar_plot.py +202 -0
- rubin_sim/maf/run_comparison/summary_plots.py +710 -0
- rubin_sim/maf/run_moving_calc.py +239 -0
- rubin_sim/maf/run_moving_fractions.py +128 -0
- rubin_sim/maf/run_moving_join.py +103 -0
- rubin_sim/maf/run_selfcal_metric.py +92 -0
- rubin_sim/maf/scimaf_dir.py +87 -0
- rubin_sim/maf/show_maf.py +227 -0
- rubin_sim/maf/slicers/__init__.py +13 -0
- rubin_sim/maf/slicers/base_slicer.py +513 -0
- rubin_sim/maf/slicers/base_spatial_slicer.py +202 -0
- rubin_sim/maf/slicers/healpix_sdss_slicer.py +118 -0
- rubin_sim/maf/slicers/healpix_slicer.py +189 -0
- rubin_sim/maf/slicers/healpix_subset_slicer.py +293 -0
- rubin_sim/maf/slicers/hourglass_slicer.py +37 -0
- rubin_sim/maf/slicers/mo_slicer.py +171 -0
- rubin_sim/maf/slicers/movie_slicer.py +288 -0
- rubin_sim/maf/slicers/nd_slicer.py +147 -0
- rubin_sim/maf/slicers/one_d_slicer.py +210 -0
- rubin_sim/maf/slicers/time_interval_slicers.py +283 -0
- rubin_sim/maf/slicers/uni_slicer.py +57 -0
- rubin_sim/maf/slicers/user_points_slicer.py +141 -0
- rubin_sim/maf/stackers/__init__.py +13 -0
- rubin_sim/maf/stackers/base_stacker.py +221 -0
- rubin_sim/maf/stackers/coord_stackers.py +224 -0
- rubin_sim/maf/stackers/date_stackers.py +192 -0
- rubin_sim/maf/stackers/general_stackers.py +683 -0
- rubin_sim/maf/stackers/get_col_info.py +104 -0
- rubin_sim/maf/stackers/label_stackers.py +114 -0
- rubin_sim/maf/stackers/m5_optimal_stacker.py +126 -0
- rubin_sim/maf/stackers/mo_phase.py +265 -0
- rubin_sim/maf/stackers/mo_stackers.py +486 -0
- rubin_sim/maf/stackers/n_follow_stacker.py +187 -0
- rubin_sim/maf/stackers/neo_dist_stacker.py +126 -0
- rubin_sim/maf/stackers/sdss_stackers.py +30 -0
- rubin_sim/maf/stackers/sn_stacker.py +152 -0
- rubin_sim/maf/stackers/teff_stacker.py +154 -0
- rubin_sim/maf/utils/__init__.py +6 -0
- rubin_sim/maf/utils/astrometry_utils.py +93 -0
- rubin_sim/maf/utils/generate_fov_map.py +58 -0
- rubin_sim/maf/utils/get_date_version.py +28 -0
- rubin_sim/maf/utils/maf_utils.py +212 -0
- rubin_sim/maf/utils/opsim_utils.py +259 -0
- rubin_sim/maf/utils/output_utils.py +34 -0
- rubin_sim/maf/utils/sn_n_sn_utils.py +894 -0
- rubin_sim/maf/utils/sn_utils.py +369 -0
- rubin_sim/maf/utils/stellar_mags.py +197 -0
- rubin_sim/maf/web/__init__.py +2 -0
- rubin_sim/maf/web/favicon.ico +0 -0
- rubin_sim/maf/web/maf_run_results.py +645 -0
- rubin_sim/maf/web/maf_tracking.py +139 -0
- rubin_sim/maf/web/sorttable.js +496 -0
- rubin_sim/maf/web/templates/allmetricresults.html +72 -0
- rubin_sim/maf/web/templates/configs.html +28 -0
- rubin_sim/maf/web/templates/macros.html +243 -0
- rubin_sim/maf/web/templates/master.html +294 -0
- rubin_sim/maf/web/templates/metricselect.html +91 -0
- rubin_sim/maf/web/templates/multicolor.html +147 -0
- rubin_sim/maf/web/templates/results.html +82 -0
- rubin_sim/maf/web/templates/runselect.html +58 -0
- rubin_sim/maf/web/templates/stats.html +50 -0
- rubin_sim/moving_objects/__init__.py +8 -0
- rubin_sim/moving_objects/base_obs.py +468 -0
- rubin_sim/moving_objects/cheby_fits.py +689 -0
- rubin_sim/moving_objects/cheby_values.py +231 -0
- rubin_sim/moving_objects/chebyshev_utils.py +365 -0
- rubin_sim/moving_objects/direct_obs.py +376 -0
- rubin_sim/moving_objects/make_lsst_obs.py +282 -0
- rubin_sim/moving_objects/ooephemerides.py +643 -0
- rubin_sim/moving_objects/orbits.py +507 -0
- rubin_sim/moving_objects/pre_generate.py +37 -0
- rubin_sim/moving_objects/utils.py +61 -0
- rubin_sim/phot_utils/__init__.py +7 -0
- rubin_sim/phot_utils/bandpass.py +425 -0
- rubin_sim/phot_utils/photometric_parameters.py +449 -0
- rubin_sim/phot_utils/physical_parameters.py +50 -0
- rubin_sim/phot_utils/predicted_zeropoints.py +245 -0
- rubin_sim/phot_utils/sed.py +1773 -0
- rubin_sim/phot_utils/sed_utils.py +52 -0
- rubin_sim/phot_utils/signaltonoise.py +695 -0
- rubin_sim/phot_utils/spectral_resampling.py +161 -0
- rubin_sim/satellite_constellations/__init__.py +3 -0
- rubin_sim/satellite_constellations/basis_function.py +40 -0
- rubin_sim/satellite_constellations/model_observatory.py +157 -0
- rubin_sim/satellite_constellations/sat_utils.py +488 -0
- rubin_sim/selfcal/__init__.py +4 -0
- rubin_sim/selfcal/generate_catalog.py +188 -0
- rubin_sim/selfcal/offsets.py +119 -0
- rubin_sim/selfcal/solver.py +143 -0
- rubin_sim/selfcal/star_tools.py +42 -0
- rubin_sim/sim_archive/__init__.py +14 -0
- rubin_sim/sim_archive/conda_packages.py +65 -0
- rubin_sim/sim_archive/future_vsarch.py +480 -0
- rubin_sim/sim_archive/make_snapshot.py +255 -0
- rubin_sim/sim_archive/prenight.py +216 -0
- rubin_sim/sim_archive/prenightindex.py +229 -0
- rubin_sim/sim_archive/prototype.py +1029 -0
- rubin_sim/sim_archive/sim_archive.py +680 -0
- rubin_sim/sim_archive/tempdb.py +56 -0
- rubin_sim/sim_archive/util.py +146 -0
- rubin_sim/sim_archive/vseqarchive.py +965 -0
- rubin_sim/sim_archive/vseqmetadata.py +1721 -0
- rubin_sim/skybrightness/__init__.py +5 -0
- rubin_sim/skybrightness/allsky_db.py +93 -0
- rubin_sim/skybrightness/data/ESO_Spectra/eso_tools.py +505 -0
- rubin_sim/skybrightness/data/solarSpec/package.py +22 -0
- rubin_sim/skybrightness/generate_hdf5.py +243 -0
- rubin_sim/skybrightness/interp_components.py +798 -0
- rubin_sim/skybrightness/sky_model.py +771 -0
- rubin_sim/skybrightness/twilight_func.py +83 -0
- rubin_sim/skybrightness/utils.py +91 -0
- rubin_sim-2.6.1.dev2.dist-info/METADATA +95 -0
- rubin_sim-2.6.1.dev2.dist-info/RECORD +387 -0
- rubin_sim-2.6.1.dev2.dist-info/WHEEL +5 -0
- rubin_sim-2.6.1.dev2.dist-info/entry_points.txt +24 -0
- rubin_sim-2.6.1.dev2.dist-info/licenses/LICENSE +674 -0
- rubin_sim-2.6.1.dev2.dist-info/top_level.txt +5 -0
- sql/make_vseqmeta.sql +251 -0
- tests/data/test_data.py +26 -0
- tests/data/test_ddf_grid.py +17 -0
- tests/maf/test_3x2fom.py +68 -0
- tests/maf/test_archive.py +162 -0
- tests/maf/test_basemetrics.py +99 -0
- tests/maf/test_batchcommon.py +36 -0
- tests/maf/test_batches.py +159 -0
- tests/maf/test_cadencemetrics.py +388 -0
- tests/maf/test_calibrationmetrics.py +242 -0
- tests/maf/test_color_slopes.py +71 -0
- tests/maf/test_cosmology_summaries.py +20 -0
- tests/maf/test_gathersummaries.py +48 -0
- tests/maf/test_healpixslicer.py +439 -0
- tests/maf/test_healpixsubsetslicer.py +273 -0
- tests/maf/test_hgplotters.py +145 -0
- tests/maf/test_hourglassmetric.py +33 -0
- tests/maf/test_io.py +187 -0
- tests/maf/test_json.py +169 -0
- tests/maf/test_maps.py +199 -0
- tests/maf/test_metricbundle.py +69 -0
- tests/maf/test_mometrics.py +422 -0
- tests/maf/test_movieslicer.py +216 -0
- tests/maf/test_ndslicer.py +240 -0
- tests/maf/test_neodistanceplotter.py +41 -0
- tests/maf/test_onedslicer.py +245 -0
- tests/maf/test_opsimutils.py +80 -0
- tests/maf/test_plotters.py +134 -0
- tests/maf/test_resultsdb.py +145 -0
- tests/maf/test_schedviewmetrics.py +14 -0
- tests/maf/test_simplemetrics.py +200 -0
- tests/maf/test_snmetrics.py +335 -0
- tests/maf/test_snmetrics_nsn.py +123 -0
- tests/maf/test_stackers.py +423 -0
- tests/maf/test_stellarmags.py +50 -0
- tests/maf/test_stringcount.py +26 -0
- tests/maf/test_summary_plots.py +197 -0
- tests/maf/test_summarymetrics.py +82 -0
- tests/maf/test_technicalmetrics.py +267 -0
- tests/maf/test_templatemetrics.py +86 -0
- tests/maf/test_timeintervalslicers.py +97 -0
- tests/maf/test_trackingdb.py +88 -0
- tests/maf/test_unislicer.py +116 -0
- tests/maf/test_vectormetrics.py +225 -0
- tests/maf/test_visitgroupsmetric.py +181 -0
- tests/moving_objects/test_camera.py +39 -0
- tests/moving_objects/test_chebyfits.py +188 -0
- tests/moving_objects/test_chebyshevutils.py +76 -0
- tests/moving_objects/test_chebyvalues.py +245 -0
- tests/moving_objects/test_ephemerides.py +219 -0
- tests/moving_objects/test_orbits.py +170 -0
- tests/moving_objects/test_sed_data.py +61 -0
- tests/phot_utils/test_approximatebandpasses.py +91 -0
- tests/phot_utils/test_photometricparameters.py +268 -0
- tests/phot_utils/test_photometry.py +61 -0
- tests/phot_utils/test_predicted_zeropoints.py +53 -0
- tests/phot_utils/test_read_bandpasses.py +29 -0
- tests/phot_utils/test_sed.py +368 -0
- tests/phot_utils/test_snr.py +370 -0
- tests/satellite_constellations/test_satellites.py +36 -0
- tests/sim_archive/test_make_snapshot.py +24 -0
- tests/sim_archive/test_prototype_sim_archive.py +204 -0
- tests/sim_archive/test_vseqarchive.py +947 -0
- tests/skybrightness/test_skymodel.py +359 -0
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
__all__ = ("PhotometricParameters", "DustValues")
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
from rubin_scheduler.data import get_data_dir
|
|
7
|
+
|
|
8
|
+
from .bandpass import Bandpass
|
|
9
|
+
from .sed import Sed
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DustValues:
|
|
13
|
+
"""Calculate extinction values
|
|
14
|
+
|
|
15
|
+
Parameters
|
|
16
|
+
----------
|
|
17
|
+
R_v : `float`
|
|
18
|
+
Extinction law parameter (3.1).
|
|
19
|
+
bandpassDict : `dict`
|
|
20
|
+
A dict with keys of filtername and values of
|
|
21
|
+
rubin_sim.phot_utils.Bandpass objects.
|
|
22
|
+
Default of None will load the standard ugrizy bandpasses.
|
|
23
|
+
ref_ev : `float`
|
|
24
|
+
The reference E(B-V) value to use. Things in MAF assume 1.
|
|
25
|
+
|
|
26
|
+
Note
|
|
27
|
+
----
|
|
28
|
+
The value that dust_values calls "ax1" is equivalent to r_x in any filter.
|
|
29
|
+
And r_x * ebv = A_x (the extinction due to dust in any bandpass).
|
|
30
|
+
DustValues.r_x is also provided as a copy of DustValues.ax1 ..
|
|
31
|
+
eventually ax1 may be deprecated in favor of r_x.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def __init__(self, r_v=3.1, bandpass_dict=None, ref_ebv=1.0):
|
|
35
|
+
# Calculate dust extinction values
|
|
36
|
+
self.ax1 = {}
|
|
37
|
+
if bandpass_dict is None:
|
|
38
|
+
bandpass_dict = {}
|
|
39
|
+
root_dir = os.path.join(get_data_dir(), "throughputs", "baseline")
|
|
40
|
+
for f in ["u", "g", "r", "i", "z", "y"]:
|
|
41
|
+
bandpass_dict[f] = Bandpass()
|
|
42
|
+
bandpass_dict[f].read_throughput(os.path.join(root_dir, f"total_{f}.dat"))
|
|
43
|
+
|
|
44
|
+
for filtername in bandpass_dict:
|
|
45
|
+
wavelen_min = bandpass_dict[filtername].wavelen.min()
|
|
46
|
+
wavelen_max = bandpass_dict[filtername].wavelen.max()
|
|
47
|
+
testsed = Sed()
|
|
48
|
+
testsed.set_flat_sed(wavelen_min=wavelen_min, wavelen_max=wavelen_max, wavelen_step=1.0)
|
|
49
|
+
self.ref_ebv = ref_ebv
|
|
50
|
+
# Calculate non-dust-extincted magnitude
|
|
51
|
+
flatmag = testsed.calc_mag(bandpass_dict[filtername])
|
|
52
|
+
# Add dust
|
|
53
|
+
a, b = testsed.setup_ccm_ab()
|
|
54
|
+
testsed.add_dust(a, b, ebv=self.ref_ebv, r_v=r_v)
|
|
55
|
+
# Calculate difference due to dust when EBV=1.0
|
|
56
|
+
# (m_dust = m_nodust - Ax, Ax > 0)
|
|
57
|
+
self.ax1[filtername] = testsed.calc_mag(bandpass_dict[filtername]) - flatmag
|
|
58
|
+
# Add the R_x term, to start to transition toward this name.
|
|
59
|
+
self.r_x = self.ax1.copy()
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def make_dict(value, bandpass_names=("u", "g", "r", "i", "z", "y", "any")):
|
|
63
|
+
newdict = {}
|
|
64
|
+
for f in bandpass_names:
|
|
65
|
+
newdict[f] = value
|
|
66
|
+
return newdict
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class DefaultPhotometricParameters:
|
|
70
|
+
"""
|
|
71
|
+
This class will just contain a bunch of dict which store
|
|
72
|
+
the default PhotometricParameters for LSST Bandpasses
|
|
73
|
+
|
|
74
|
+
Users should not access this class (which is why it is
|
|
75
|
+
not included in the __all__ declaration for this file).
|
|
76
|
+
|
|
77
|
+
It is only used to initialize PhotometricParameters for
|
|
78
|
+
a bandpass name.
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
# Obviously, some of these parameters (effarea, gain, platescale,
|
|
82
|
+
# darkcurrent, and readnoise) will not change as a function of bandpass;
|
|
83
|
+
# we are just making them dicts here to be consistent with
|
|
84
|
+
# everything else (and to make it possible for
|
|
85
|
+
# PhotometricParameters to access them using the bandpass name
|
|
86
|
+
# passed to its constructor)
|
|
87
|
+
#
|
|
88
|
+
# Note: all dicts contain an 'any' key which will be the default
|
|
89
|
+
# value if an unknown bandpass is asked for
|
|
90
|
+
#
|
|
91
|
+
# 'any' values should be kept consistent with r band
|
|
92
|
+
|
|
93
|
+
bandpass_names = ["u", "g", "r", "i", "z", "y", "any"]
|
|
94
|
+
|
|
95
|
+
# exposure time in seconds
|
|
96
|
+
exptime_sec = 15.0
|
|
97
|
+
exptime = make_dict(exptime_sec)
|
|
98
|
+
|
|
99
|
+
# number of exposures
|
|
100
|
+
nexp_n = 2
|
|
101
|
+
nexp = make_dict(nexp_n)
|
|
102
|
+
|
|
103
|
+
# effective area in cm^2
|
|
104
|
+
effarea_cm2 = np.pi * (6.423 / 2.0 * 100) ** 2
|
|
105
|
+
effarea = make_dict(effarea_cm2)
|
|
106
|
+
|
|
107
|
+
# electrons per ADU
|
|
108
|
+
gain_adu = 2.3
|
|
109
|
+
gain = make_dict(gain_adu)
|
|
110
|
+
|
|
111
|
+
# electrons per pixel per exposure
|
|
112
|
+
readnoise_e = 8.8
|
|
113
|
+
readnoise = make_dict(readnoise_e)
|
|
114
|
+
|
|
115
|
+
# electrons per pixel per second
|
|
116
|
+
darkcurrent_e = 0.2
|
|
117
|
+
darkcurrent = make_dict(darkcurrent_e)
|
|
118
|
+
|
|
119
|
+
# electrons per pixel per exposure
|
|
120
|
+
othernoise_e = 0.0
|
|
121
|
+
othernoise = make_dict(othernoise_e)
|
|
122
|
+
|
|
123
|
+
# arcseconds per pixel
|
|
124
|
+
platescale_as = 0.2
|
|
125
|
+
platescale = make_dict(platescale_as)
|
|
126
|
+
|
|
127
|
+
# systematic squared error in magnitudes
|
|
128
|
+
# see Table 14 of the SRD document
|
|
129
|
+
# https://docushare.lsstcorp.org/docushare/dsweb/Get/LPM-17
|
|
130
|
+
sigma_sys = {
|
|
131
|
+
"u": 0.0075,
|
|
132
|
+
"g": 0.005,
|
|
133
|
+
"r": 0.005,
|
|
134
|
+
"i": 0.005,
|
|
135
|
+
"z": 0.0075,
|
|
136
|
+
"y": 0.0075,
|
|
137
|
+
"any": 0.005,
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
class PhotometricParameters:
|
|
142
|
+
def __init__(
|
|
143
|
+
self,
|
|
144
|
+
exptime=None,
|
|
145
|
+
nexp=None,
|
|
146
|
+
effarea=None,
|
|
147
|
+
gain=None,
|
|
148
|
+
readnoise=None,
|
|
149
|
+
darkcurrent=None,
|
|
150
|
+
othernoise=None,
|
|
151
|
+
platescale=None,
|
|
152
|
+
sigma_sys=None,
|
|
153
|
+
bandpass=None,
|
|
154
|
+
):
|
|
155
|
+
"""Store photometric parameters for SNR calculations.
|
|
156
|
+
|
|
157
|
+
Parameters
|
|
158
|
+
----------
|
|
159
|
+
exptime : `float`
|
|
160
|
+
Exposure time in seconds (per exposure).
|
|
161
|
+
None will default to value from DefaultPhotometricParameters.
|
|
162
|
+
nexp : `int`
|
|
163
|
+
Number of exposures per visit.
|
|
164
|
+
None will default to value from DefaultPhotometricParameters.
|
|
165
|
+
effarea : `float`
|
|
166
|
+
Effective area in cm^2.
|
|
167
|
+
None will default to value from DefaultPhotometricParameters.
|
|
168
|
+
gain : `float`
|
|
169
|
+
Electrons per ADU.
|
|
170
|
+
None will default to value from DefaultPhotometricParameters.
|
|
171
|
+
readnoise : `float`
|
|
172
|
+
Electrons per pixel per exposure.
|
|
173
|
+
None will default to value from DefaultPhotometricParameters.
|
|
174
|
+
darkcurrent : `float`
|
|
175
|
+
Electons per pixel per second.
|
|
176
|
+
None will default to value from DefaultPhotometricParameters.
|
|
177
|
+
othernoise : `float`
|
|
178
|
+
Electrons per pixel per exposure.
|
|
179
|
+
None will default to value from DefaultPhotometricParameters.
|
|
180
|
+
platescale : `float`
|
|
181
|
+
Arcseconds per pixel.
|
|
182
|
+
None will default to value from DefaultPhotometricParameters.
|
|
183
|
+
sigma_sys : `float`
|
|
184
|
+
Systematic error in magnitudes.
|
|
185
|
+
None will default to value from DefaultPhotometricParameters.
|
|
186
|
+
bandpass : `str`
|
|
187
|
+
The name of the bandpass for these parameters.
|
|
188
|
+
|
|
189
|
+
Examples
|
|
190
|
+
--------
|
|
191
|
+
If `bandpass` is set to an LSST bandpass,
|
|
192
|
+
the constructor will initialize
|
|
193
|
+
PhotometricParameters to LSST default values for that bandpass,
|
|
194
|
+
excepting any parameters that have been set by hand. e.g.
|
|
195
|
+
|
|
196
|
+
>>> myPhotParams = PhotometricParameters(nexp=3, bandpass='u')
|
|
197
|
+
|
|
198
|
+
will initialize a PhotometricParameters object to `u` band defaults,
|
|
199
|
+
except with 3 exposures instead of 2. A bandpass value of None
|
|
200
|
+
will use defaults from LSST `r` band where appropriate.
|
|
201
|
+
"""
|
|
202
|
+
# readnoise, darkcurrent and othernoise are measured in electrons.
|
|
203
|
+
# This is taken from the specifications document LSE-30 on Docushare
|
|
204
|
+
# Section 3.4.2.3 states that the total noise per pixel shall
|
|
205
|
+
# be 12.7 electrons per visit which the defaults sum to
|
|
206
|
+
# (remember to multply darkcurrent by the number of seconds
|
|
207
|
+
# in an exposure=15). [9 e- per 15 second exposure]
|
|
208
|
+
|
|
209
|
+
self._exptime = None
|
|
210
|
+
self._nexp = None
|
|
211
|
+
self._effarea = None
|
|
212
|
+
self._gain = None
|
|
213
|
+
self._platescale = None
|
|
214
|
+
self._sigma_sys = None
|
|
215
|
+
self._readnoise = None
|
|
216
|
+
self._darkcurrent = None
|
|
217
|
+
self._othernoise = None
|
|
218
|
+
|
|
219
|
+
self._bandpass = bandpass
|
|
220
|
+
defaults = DefaultPhotometricParameters()
|
|
221
|
+
|
|
222
|
+
if bandpass is None:
|
|
223
|
+
bandpass_key = "any"
|
|
224
|
+
# This is so we do not set the self._bandpass member variable
|
|
225
|
+
# without the user's explicit consent, but we can still access
|
|
226
|
+
# default values from the PhotometricParameterDefaults
|
|
227
|
+
else:
|
|
228
|
+
bandpass_key = bandpass
|
|
229
|
+
|
|
230
|
+
if bandpass_key in defaults.bandpass_names:
|
|
231
|
+
self._exptime = defaults.exptime[bandpass_key]
|
|
232
|
+
self._nexp = defaults.nexp[bandpass_key]
|
|
233
|
+
self._effarea = defaults.effarea[bandpass_key]
|
|
234
|
+
self._gain = defaults.gain[bandpass_key]
|
|
235
|
+
self._platescale = defaults.platescale[bandpass_key]
|
|
236
|
+
self._sigma_sys = defaults.sigma_sys[bandpass_key]
|
|
237
|
+
self._readnoise = defaults.readnoise[bandpass_key]
|
|
238
|
+
self._darkcurrent = defaults.darkcurrent[bandpass_key]
|
|
239
|
+
self._othernoise = defaults.othernoise[bandpass_key]
|
|
240
|
+
|
|
241
|
+
if exptime is not None:
|
|
242
|
+
self._exptime = exptime
|
|
243
|
+
|
|
244
|
+
if nexp is not None:
|
|
245
|
+
self._nexp = nexp
|
|
246
|
+
|
|
247
|
+
if effarea is not None:
|
|
248
|
+
self._effarea = effarea
|
|
249
|
+
|
|
250
|
+
if gain is not None:
|
|
251
|
+
self._gain = gain
|
|
252
|
+
|
|
253
|
+
if platescale is not None:
|
|
254
|
+
self._platescale = platescale
|
|
255
|
+
|
|
256
|
+
if sigma_sys is not None:
|
|
257
|
+
self._sigma_sys = sigma_sys
|
|
258
|
+
|
|
259
|
+
if readnoise is not None:
|
|
260
|
+
self._readnoise = readnoise
|
|
261
|
+
|
|
262
|
+
if darkcurrent is not None:
|
|
263
|
+
self._darkcurrent = darkcurrent
|
|
264
|
+
|
|
265
|
+
if othernoise is not None:
|
|
266
|
+
self._othernoise = othernoise
|
|
267
|
+
|
|
268
|
+
failure_message = ""
|
|
269
|
+
failure_ct = 0
|
|
270
|
+
|
|
271
|
+
if self._exptime is None:
|
|
272
|
+
failure_message += "did not set exptime\n"
|
|
273
|
+
failure_ct += 1
|
|
274
|
+
|
|
275
|
+
if self._nexp is None:
|
|
276
|
+
failure_message += "did not set nexp\n"
|
|
277
|
+
failure_ct += 1
|
|
278
|
+
|
|
279
|
+
if self._effarea is None:
|
|
280
|
+
failure_message += "did not set effarea\n"
|
|
281
|
+
failure_ct += 1
|
|
282
|
+
|
|
283
|
+
if self._gain is None:
|
|
284
|
+
failure_message += "did not set gain\n"
|
|
285
|
+
failure_ct += 1
|
|
286
|
+
|
|
287
|
+
if self._platescale is None:
|
|
288
|
+
failure_message += "did not set platescale\n"
|
|
289
|
+
failure_ct += 1
|
|
290
|
+
|
|
291
|
+
if self._sigma_sys is None:
|
|
292
|
+
failure_message += "did not set sigma_sys\n"
|
|
293
|
+
failure_ct += 1
|
|
294
|
+
|
|
295
|
+
if self._readnoise is None:
|
|
296
|
+
failure_message += "did not set readnoise\n"
|
|
297
|
+
failure_ct += 1
|
|
298
|
+
|
|
299
|
+
if self._darkcurrent is None:
|
|
300
|
+
failure_message += "did not set darkcurrent\n"
|
|
301
|
+
failure_ct += 1
|
|
302
|
+
|
|
303
|
+
if self._othernoise is None:
|
|
304
|
+
failure_message += "did not set othernoise\n"
|
|
305
|
+
failure_ct += 1
|
|
306
|
+
|
|
307
|
+
if failure_ct > 0:
|
|
308
|
+
raise RuntimeError("In PhotometricParameters:\n%s" % failure_message)
|
|
309
|
+
|
|
310
|
+
@property
|
|
311
|
+
def bandpass(self):
|
|
312
|
+
"""
|
|
313
|
+
The name of the bandpass associated with these parameters.
|
|
314
|
+
Can be None.
|
|
315
|
+
"""
|
|
316
|
+
return self._bandpass
|
|
317
|
+
|
|
318
|
+
@bandpass.setter
|
|
319
|
+
def bandpass(self, value):
|
|
320
|
+
raise RuntimeError(
|
|
321
|
+
"You should not be setting bandpass on the fly; "
|
|
322
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
@property
|
|
326
|
+
def exptime(self):
|
|
327
|
+
"""
|
|
328
|
+
exposure time in seconds
|
|
329
|
+
"""
|
|
330
|
+
return self._exptime
|
|
331
|
+
|
|
332
|
+
@exptime.setter
|
|
333
|
+
def exptime(self, value):
|
|
334
|
+
raise RuntimeError(
|
|
335
|
+
"You should not be setting exptime on the fly; "
|
|
336
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
337
|
+
)
|
|
338
|
+
|
|
339
|
+
@property
|
|
340
|
+
def nexp(self):
|
|
341
|
+
"""
|
|
342
|
+
number of exposures
|
|
343
|
+
"""
|
|
344
|
+
return self._nexp
|
|
345
|
+
|
|
346
|
+
@nexp.setter
|
|
347
|
+
def nexp(self, value):
|
|
348
|
+
raise RuntimeError(
|
|
349
|
+
"You should not be setting nexp on the fly; "
|
|
350
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
351
|
+
)
|
|
352
|
+
|
|
353
|
+
@property
|
|
354
|
+
def effarea(self):
|
|
355
|
+
"""
|
|
356
|
+
effective area in cm^2
|
|
357
|
+
"""
|
|
358
|
+
return self._effarea
|
|
359
|
+
|
|
360
|
+
@effarea.setter
|
|
361
|
+
def effarea(self, value):
|
|
362
|
+
raise RuntimeError(
|
|
363
|
+
"You should not be setting effarea on the fly; "
|
|
364
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
365
|
+
)
|
|
366
|
+
|
|
367
|
+
@property
|
|
368
|
+
def gain(self):
|
|
369
|
+
"""
|
|
370
|
+
electrons per ADU
|
|
371
|
+
"""
|
|
372
|
+
return self._gain
|
|
373
|
+
|
|
374
|
+
@gain.setter
|
|
375
|
+
def gain(self, value):
|
|
376
|
+
raise RuntimeError(
|
|
377
|
+
"You should not be setting gain on the fly; "
|
|
378
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
379
|
+
)
|
|
380
|
+
|
|
381
|
+
@property
|
|
382
|
+
def platescale(self):
|
|
383
|
+
"""
|
|
384
|
+
arcseconds per pixel
|
|
385
|
+
"""
|
|
386
|
+
return self._platescale
|
|
387
|
+
|
|
388
|
+
@platescale.setter
|
|
389
|
+
def platescale(self, value):
|
|
390
|
+
raise RuntimeError(
|
|
391
|
+
"You should not be setting platescale on the fly; "
|
|
392
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
393
|
+
)
|
|
394
|
+
|
|
395
|
+
@property
|
|
396
|
+
def readnoise(self):
|
|
397
|
+
"""
|
|
398
|
+
electrons per pixel per exposure
|
|
399
|
+
"""
|
|
400
|
+
return self._readnoise
|
|
401
|
+
|
|
402
|
+
@readnoise.setter
|
|
403
|
+
def readnoise(self, value):
|
|
404
|
+
raise RuntimeError(
|
|
405
|
+
"You should not be setting readnoise on the fly; "
|
|
406
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
@property
|
|
410
|
+
def darkcurrent(self):
|
|
411
|
+
"""
|
|
412
|
+
electrons per pixel per second
|
|
413
|
+
"""
|
|
414
|
+
return self._darkcurrent
|
|
415
|
+
|
|
416
|
+
@darkcurrent.setter
|
|
417
|
+
def darkcurrent(self, value):
|
|
418
|
+
raise RuntimeError(
|
|
419
|
+
"You should not be setting darkcurrent on the fly; "
|
|
420
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
421
|
+
)
|
|
422
|
+
|
|
423
|
+
@property
|
|
424
|
+
def othernoise(self):
|
|
425
|
+
"""
|
|
426
|
+
electrons per pixel per exposure
|
|
427
|
+
"""
|
|
428
|
+
return self._othernoise
|
|
429
|
+
|
|
430
|
+
@othernoise.setter
|
|
431
|
+
def othernoise(self, value):
|
|
432
|
+
raise RuntimeError(
|
|
433
|
+
"You should not be setting othernoise on the fly; "
|
|
434
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
@property
|
|
438
|
+
def sigma_sys(self):
|
|
439
|
+
"""
|
|
440
|
+
systematic error in magnitudes
|
|
441
|
+
"""
|
|
442
|
+
return self._sigma_sys
|
|
443
|
+
|
|
444
|
+
@sigma_sys.setter
|
|
445
|
+
def sigma_sys(self, value):
|
|
446
|
+
raise RuntimeError(
|
|
447
|
+
"You should not be setting sigma_sys on the fly; "
|
|
448
|
+
+ "Just instantiate a new case of PhotometricParameters"
|
|
449
|
+
)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
__all__ = ("PhysicalParameters",)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class PhysicalParameters:
|
|
5
|
+
"""
|
|
6
|
+
Stores physical constants and other immutable parameters
|
|
7
|
+
used by the sims_phot_utils code.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
def __init__(self):
|
|
11
|
+
self._lightspeed = 299792458.0 # speed of light, m/s
|
|
12
|
+
self._planck = 6.626068e-27 # planck's constant, ergs*seconds
|
|
13
|
+
self._nm2m = 1.00e-9 # nanometers to meters conversion m/nm
|
|
14
|
+
self._ergsetc2jansky = 1.00e23 # erg/cm2/s/Hz to Jansky units (fnu)
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def lightspeed(self):
|
|
18
|
+
"""Speed of light in meters per second."""
|
|
19
|
+
return self._lightspeed
|
|
20
|
+
|
|
21
|
+
@lightspeed.setter
|
|
22
|
+
def lightspeed(self, value):
|
|
23
|
+
raise RuntimeError("Cannot change the value of lightspeed " + "(Einstein does not approve)")
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def nm2m(self):
|
|
27
|
+
"""Conversion factor to go from nm to m."""
|
|
28
|
+
return self._nm2m
|
|
29
|
+
|
|
30
|
+
@nm2m.setter
|
|
31
|
+
def nm2m(self, value):
|
|
32
|
+
raise RuntimeError("Cannot change the value of nm2m")
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
def ergsetc2jansky(self):
|
|
36
|
+
"""Conversion factor to go from ergs/sec/cm^2 to Janskys."""
|
|
37
|
+
return self._ergsetc2jansky
|
|
38
|
+
|
|
39
|
+
@ergsetc2jansky.setter
|
|
40
|
+
def ergsetc2jansky(self, value):
|
|
41
|
+
raise RuntimeError("Cannot change the value of ergsetc2Jansky")
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def planck(self):
|
|
45
|
+
"""Planck's constant in ergs*seconds."""
|
|
46
|
+
return self._planck
|
|
47
|
+
|
|
48
|
+
@planck.setter
|
|
49
|
+
def planck(self, value):
|
|
50
|
+
raise RuntimeError("Cannot change the value of planck")
|