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,56 @@
|
|
|
1
|
+
__all__ = ("StarCountMetric",)
|
|
2
|
+
|
|
3
|
+
import numpy as np
|
|
4
|
+
|
|
5
|
+
from rubin_sim.maf.metrics import BaseMetric
|
|
6
|
+
|
|
7
|
+
from .star_counts import starcount
|
|
8
|
+
|
|
9
|
+
# Example for CountMetric
|
|
10
|
+
# Mike Lund - Vanderbilt University
|
|
11
|
+
# mike.lund@gmail.com
|
|
12
|
+
# Last edited 8/15/2015
|
|
13
|
+
# Motivation: The distances to stars in LSST will be significant enough
|
|
14
|
+
# that the structure of the Galaxy will be readily apparent because of
|
|
15
|
+
# its influence on the number of stars in a given field.
|
|
16
|
+
# Any metric concerned with the number of potential objects to be
|
|
17
|
+
# detected will need to feature not only the effects of the cadence
|
|
18
|
+
# but also the number of objects per field.
|
|
19
|
+
# This metric identifies the number of stars in a given field in a
|
|
20
|
+
# particular distance range.
|
|
21
|
+
# D1 and D2 are the close and far distances in parsecs.
|
|
22
|
+
# Requires StarCounts.StarCounts
|
|
23
|
+
|
|
24
|
+
# NOTE
|
|
25
|
+
# There are stellar luminosity function maps available within MAF
|
|
26
|
+
# that may supersede these StarCount functions
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class StarCountMetric(BaseMetric):
|
|
30
|
+
"""Find the number of stars in a given field between d1 and d2 in parsecs.
|
|
31
|
+
|
|
32
|
+
This metric uses the stellar distance and luminosity equations
|
|
33
|
+
contributed by Mike Lund, which are based on the Galfast model.
|
|
34
|
+
There are some imposed limitations on the expected magnitudes
|
|
35
|
+
of the stars included for the metric, based on assuming saturation
|
|
36
|
+
at 16th magnitude and not considering stars with magnitude
|
|
37
|
+
uncertainties greater than 0.03 (based on photometry/m5 alone).
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
Parameters
|
|
41
|
+
----------
|
|
42
|
+
d1 : `float`
|
|
43
|
+
d1 in parsecs
|
|
44
|
+
d2 : `float`
|
|
45
|
+
d2 in parsecs
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
def __init__(self, d1=100, d2=1000, **kwargs):
|
|
49
|
+
self.d1 = d1
|
|
50
|
+
self.d2 = d2
|
|
51
|
+
super(StarCountMetric, self).__init__(col=[], **kwargs)
|
|
52
|
+
|
|
53
|
+
def run(self, data_slice, slice_point=None):
|
|
54
|
+
self.dec_col = np.degrees(data_slice[0][3])
|
|
55
|
+
self.ra_col = np.degrees(data_slice[0][2])
|
|
56
|
+
return starcount(self.ra_col, self.dec_col, self.d1, self.d2)
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
# Mike Lund - Vanderbilt University
|
|
4
|
+
# mike.lund@gmail.com
|
|
5
|
+
# Last edited 8/15/2015
|
|
6
|
+
# Description: Calculates absolute magnitudes as a function of spectral type.
|
|
7
|
+
# For use with Field Star Count metric
|
|
8
|
+
import sys
|
|
9
|
+
|
|
10
|
+
import numpy as np
|
|
11
|
+
from scipy.interpolate import interp1d
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def extrap1d(interpolator):
|
|
15
|
+
xs = interpolator.x
|
|
16
|
+
ys = interpolator.y
|
|
17
|
+
|
|
18
|
+
def pointwise(x):
|
|
19
|
+
if x < xs[0]:
|
|
20
|
+
return ys[0]
|
|
21
|
+
elif x > xs[-1]:
|
|
22
|
+
return ys[-1]
|
|
23
|
+
else:
|
|
24
|
+
return interpolator(x)
|
|
25
|
+
|
|
26
|
+
def ufunclike(xs):
|
|
27
|
+
return np.array(list(map(pointwise, np.array(xs))))
|
|
28
|
+
|
|
29
|
+
return ufunclike
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def abs_mag(spec_type):
|
|
33
|
+
spec_range = [
|
|
34
|
+
5,
|
|
35
|
+
9,
|
|
36
|
+
10,
|
|
37
|
+
11,
|
|
38
|
+
13,
|
|
39
|
+
16,
|
|
40
|
+
18,
|
|
41
|
+
19,
|
|
42
|
+
20,
|
|
43
|
+
22,
|
|
44
|
+
23,
|
|
45
|
+
25,
|
|
46
|
+
27,
|
|
47
|
+
30,
|
|
48
|
+
32,
|
|
49
|
+
35,
|
|
50
|
+
36,
|
|
51
|
+
38,
|
|
52
|
+
40,
|
|
53
|
+
42,
|
|
54
|
+
45,
|
|
55
|
+
48,
|
|
56
|
+
50,
|
|
57
|
+
52,
|
|
58
|
+
53,
|
|
59
|
+
54,
|
|
60
|
+
55,
|
|
61
|
+
57,
|
|
62
|
+
60,
|
|
63
|
+
61,
|
|
64
|
+
62,
|
|
65
|
+
62.5,
|
|
66
|
+
63,
|
|
67
|
+
64,
|
|
68
|
+
65,
|
|
69
|
+
66,
|
|
70
|
+
]
|
|
71
|
+
abs_u = [
|
|
72
|
+
-5.8,
|
|
73
|
+
-4.92,
|
|
74
|
+
-3.78,
|
|
75
|
+
-2.75,
|
|
76
|
+
-1.51,
|
|
77
|
+
-0.54,
|
|
78
|
+
0.17,
|
|
79
|
+
1.14,
|
|
80
|
+
2.72,
|
|
81
|
+
3.55,
|
|
82
|
+
3.64,
|
|
83
|
+
4.12,
|
|
84
|
+
4.52,
|
|
85
|
+
5.24,
|
|
86
|
+
5.4,
|
|
87
|
+
5.52,
|
|
88
|
+
5.97,
|
|
89
|
+
6.29,
|
|
90
|
+
6.65,
|
|
91
|
+
7.23,
|
|
92
|
+
7.52,
|
|
93
|
+
8.17,
|
|
94
|
+
8.66,
|
|
95
|
+
9.74,
|
|
96
|
+
10.58,
|
|
97
|
+
11.18,
|
|
98
|
+
12.19,
|
|
99
|
+
12.74,
|
|
100
|
+
13.33,
|
|
101
|
+
13.92,
|
|
102
|
+
14.11,
|
|
103
|
+
14.95,
|
|
104
|
+
15.35,
|
|
105
|
+
17.15,
|
|
106
|
+
18.12,
|
|
107
|
+
19.37,
|
|
108
|
+
]
|
|
109
|
+
abs_g = [
|
|
110
|
+
-5.41,
|
|
111
|
+
-4.6,
|
|
112
|
+
-3.53,
|
|
113
|
+
-2.62,
|
|
114
|
+
-1.69,
|
|
115
|
+
-1.05,
|
|
116
|
+
-0.58,
|
|
117
|
+
0.28,
|
|
118
|
+
1.63,
|
|
119
|
+
2.39,
|
|
120
|
+
2.49,
|
|
121
|
+
2.92,
|
|
122
|
+
3.31,
|
|
123
|
+
4.08,
|
|
124
|
+
4.28,
|
|
125
|
+
4.43,
|
|
126
|
+
4.83,
|
|
127
|
+
5.07,
|
|
128
|
+
5.35,
|
|
129
|
+
5.86,
|
|
130
|
+
6.03,
|
|
131
|
+
6.57,
|
|
132
|
+
6.98,
|
|
133
|
+
7.79,
|
|
134
|
+
8.48,
|
|
135
|
+
8.97,
|
|
136
|
+
9.65,
|
|
137
|
+
10.18,
|
|
138
|
+
10.68,
|
|
139
|
+
11.2,
|
|
140
|
+
11.52,
|
|
141
|
+
12.21,
|
|
142
|
+
12.68,
|
|
143
|
+
14.02,
|
|
144
|
+
15.07,
|
|
145
|
+
16.38,
|
|
146
|
+
]
|
|
147
|
+
abs_r = [
|
|
148
|
+
-5.02,
|
|
149
|
+
-4.28,
|
|
150
|
+
-3.28,
|
|
151
|
+
-2.49,
|
|
152
|
+
-1.87,
|
|
153
|
+
-1.56,
|
|
154
|
+
-1.33,
|
|
155
|
+
-0.58,
|
|
156
|
+
0.54,
|
|
157
|
+
1.23,
|
|
158
|
+
1.34,
|
|
159
|
+
1.72,
|
|
160
|
+
2.1,
|
|
161
|
+
2.92,
|
|
162
|
+
3.16,
|
|
163
|
+
3.34,
|
|
164
|
+
3.69,
|
|
165
|
+
3.85,
|
|
166
|
+
4.05,
|
|
167
|
+
4.49,
|
|
168
|
+
4.54,
|
|
169
|
+
4.97,
|
|
170
|
+
5.3,
|
|
171
|
+
5.84,
|
|
172
|
+
6.38,
|
|
173
|
+
6.76,
|
|
174
|
+
7.11,
|
|
175
|
+
7.62,
|
|
176
|
+
8.03,
|
|
177
|
+
8.48,
|
|
178
|
+
8.93,
|
|
179
|
+
9.47,
|
|
180
|
+
10.01,
|
|
181
|
+
10.89,
|
|
182
|
+
12.02,
|
|
183
|
+
13.39,
|
|
184
|
+
]
|
|
185
|
+
abs_i = [
|
|
186
|
+
-4.65,
|
|
187
|
+
-3.93,
|
|
188
|
+
-2.93,
|
|
189
|
+
-2.16,
|
|
190
|
+
-1.61,
|
|
191
|
+
-1.33,
|
|
192
|
+
-1.1,
|
|
193
|
+
-0.35,
|
|
194
|
+
0.72,
|
|
195
|
+
1.4,
|
|
196
|
+
1.49,
|
|
197
|
+
1.83,
|
|
198
|
+
2.18,
|
|
199
|
+
2.93,
|
|
200
|
+
3.13,
|
|
201
|
+
3.31,
|
|
202
|
+
3.61,
|
|
203
|
+
3.75,
|
|
204
|
+
3.91,
|
|
205
|
+
4.33,
|
|
206
|
+
4.38,
|
|
207
|
+
4.78,
|
|
208
|
+
5.08,
|
|
209
|
+
5.6,
|
|
210
|
+
6.06,
|
|
211
|
+
6.38,
|
|
212
|
+
6.71,
|
|
213
|
+
7.08,
|
|
214
|
+
7.39,
|
|
215
|
+
7.7,
|
|
216
|
+
8.08,
|
|
217
|
+
8.46,
|
|
218
|
+
8.81,
|
|
219
|
+
9.38,
|
|
220
|
+
10.29,
|
|
221
|
+
11.27,
|
|
222
|
+
]
|
|
223
|
+
abs_z = [
|
|
224
|
+
-4.3,
|
|
225
|
+
-3.57,
|
|
226
|
+
-2.61,
|
|
227
|
+
-1.9,
|
|
228
|
+
-1.35,
|
|
229
|
+
-1.1,
|
|
230
|
+
-0.93,
|
|
231
|
+
-0.17,
|
|
232
|
+
0.89,
|
|
233
|
+
1.55,
|
|
234
|
+
1.64,
|
|
235
|
+
1.93,
|
|
236
|
+
2.26,
|
|
237
|
+
3.02,
|
|
238
|
+
3.15,
|
|
239
|
+
3.33,
|
|
240
|
+
3.62,
|
|
241
|
+
3.72,
|
|
242
|
+
3.89,
|
|
243
|
+
4.29,
|
|
244
|
+
4.32,
|
|
245
|
+
4.72,
|
|
246
|
+
5.01,
|
|
247
|
+
5.49,
|
|
248
|
+
5.93,
|
|
249
|
+
6.22,
|
|
250
|
+
6.51,
|
|
251
|
+
6.78,
|
|
252
|
+
7.01,
|
|
253
|
+
7.24,
|
|
254
|
+
7.56,
|
|
255
|
+
7.83,
|
|
256
|
+
8.14,
|
|
257
|
+
8.62,
|
|
258
|
+
9.35,
|
|
259
|
+
10.03,
|
|
260
|
+
]
|
|
261
|
+
abs_y = [
|
|
262
|
+
-4.96,
|
|
263
|
+
-4.18,
|
|
264
|
+
-3.05,
|
|
265
|
+
-2.22,
|
|
266
|
+
-1.95,
|
|
267
|
+
-1.5,
|
|
268
|
+
-1.27,
|
|
269
|
+
-0.61,
|
|
270
|
+
0.32,
|
|
271
|
+
0.96,
|
|
272
|
+
0.99,
|
|
273
|
+
1.38,
|
|
274
|
+
1.79,
|
|
275
|
+
2.51,
|
|
276
|
+
2.57,
|
|
277
|
+
2.74,
|
|
278
|
+
3.04,
|
|
279
|
+
3.11,
|
|
280
|
+
3.36,
|
|
281
|
+
3.7,
|
|
282
|
+
3.76,
|
|
283
|
+
4.16,
|
|
284
|
+
4.61,
|
|
285
|
+
4.98,
|
|
286
|
+
5.43,
|
|
287
|
+
5.8,
|
|
288
|
+
6.07,
|
|
289
|
+
6.38,
|
|
290
|
+
6.45,
|
|
291
|
+
6.86,
|
|
292
|
+
6.97,
|
|
293
|
+
7.25,
|
|
294
|
+
7.52,
|
|
295
|
+
7.82,
|
|
296
|
+
8.39,
|
|
297
|
+
8.6,
|
|
298
|
+
]
|
|
299
|
+
f1 = interp1d(spec_range, abs_z)
|
|
300
|
+
func_z = extrap1d(f1)
|
|
301
|
+
f2 = interp1d(spec_range, abs_i)
|
|
302
|
+
func_i = extrap1d(f2)
|
|
303
|
+
f3 = interp1d(spec_range, abs_r)
|
|
304
|
+
func_r = extrap1d(f3)
|
|
305
|
+
f4 = interp1d(spec_range, abs_g)
|
|
306
|
+
func_g = extrap1d(f4)
|
|
307
|
+
f5 = interp1d(spec_range, abs_u)
|
|
308
|
+
func_u = extrap1d(f5)
|
|
309
|
+
f6 = interp1d(spec_range, abs_y)
|
|
310
|
+
func_y = extrap1d(f6)
|
|
311
|
+
abs_all = [
|
|
312
|
+
func_z([spec_type])[0],
|
|
313
|
+
func_y([spec_type])[0],
|
|
314
|
+
func_i([spec_type])[0],
|
|
315
|
+
func_r([spec_type])[0],
|
|
316
|
+
func_g([spec_type])[0],
|
|
317
|
+
func_u([spec_type])[0],
|
|
318
|
+
]
|
|
319
|
+
bands = ["z", "y", "i", "r", "g", "u"]
|
|
320
|
+
return abs_all, bands
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
if __name__ == "__main__":
|
|
324
|
+
print(abs_mag(float(sys.argv[1]))[0]) # spectral type
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
# Mike Lund - Vanderbilt University
|
|
4
|
+
# mike.lund@gmail.com
|
|
5
|
+
# Last edited 8/15/2015
|
|
6
|
+
# Description: Provides the coordinate conversions between equatorial and
|
|
7
|
+
# galactic coordinates, as well as to galactic cylindrical coordinates.
|
|
8
|
+
# Two different functions are present that do the conversion, and a third
|
|
9
|
+
# that uses ephem package, for redundancy purposes.
|
|
10
|
+
# For use with Field Star Count metric
|
|
11
|
+
import astropy.units as u
|
|
12
|
+
import numpy as np
|
|
13
|
+
from astropy.coordinates import SkyCoord
|
|
14
|
+
from scipy.optimize import fsolve
|
|
15
|
+
|
|
16
|
+
rad1 = np.radians(282.25)
|
|
17
|
+
rad2 = np.radians(62.6)
|
|
18
|
+
rad3 = np.radians(33.0)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def eq_gal(eq_ra, eq_dec):
|
|
22
|
+
d = np.radians(eq_dec)
|
|
23
|
+
a = np.radians(eq_ra)
|
|
24
|
+
|
|
25
|
+
def equations(p):
|
|
26
|
+
b, ll, x = p
|
|
27
|
+
f1a = np.cos(d) * (np.cos(a - rad1))
|
|
28
|
+
f2a = np.sin(d) * np.sin(rad2) + np.cos(d) * np.sin(a - rad1) * np.cos(rad2)
|
|
29
|
+
f3a = np.sin(d) * np.cos(rad2) - np.cos(d) * np.sin(a - rad1) * np.sin(rad2)
|
|
30
|
+
f1 = np.cos(b) * np.cos(ll - rad3) - f1a
|
|
31
|
+
f2 = np.cos(b) * np.sin(ll - rad3) - f2a
|
|
32
|
+
f3 = np.sin(b) - f3a
|
|
33
|
+
return (f1, f2, f3)
|
|
34
|
+
|
|
35
|
+
b, ll, x = fsolve(equations, (0, 0, 0))
|
|
36
|
+
b_deg = np.degrees(b) % 360 # galactic latitude
|
|
37
|
+
if b_deg >= 270:
|
|
38
|
+
b_deg = b_deg - 360
|
|
39
|
+
if b_deg > 90:
|
|
40
|
+
b_deg = 180 - b_deg
|
|
41
|
+
ll = ll + np.pi
|
|
42
|
+
l_deg = np.degrees(ll) % 360 # galactic longitude
|
|
43
|
+
return b_deg, l_deg
|
|
44
|
+
# http://scienceworld.wolfram.com/astronomy/GalacticCoordinates.html
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def eq_gal2(eq_ra, eq_dec):
|
|
48
|
+
d = np.radians(eq_dec)
|
|
49
|
+
p = np.radians(eq_ra)
|
|
50
|
+
AB = np.radians(62.8717)
|
|
51
|
+
CAB = np.radians(192.8585) - p
|
|
52
|
+
cos_bc = np.sin(d) * np.cos(AB) + np.cos(d) * np.sin(AB) * np.cos(CAB)
|
|
53
|
+
BC = np.arccos(cos_bc)
|
|
54
|
+
AD = np.radians(118.9362)
|
|
55
|
+
CAD = np.radians(266.4051) - p
|
|
56
|
+
cos_cd = np.sin(d) * np.cos(AD) + np.cos(d) * np.sin(AD) * np.cos(CAD)
|
|
57
|
+
cos_cbd = cos_cd / np.sin(BC)
|
|
58
|
+
if cos_cbd > 1:
|
|
59
|
+
cos_cbd = 1
|
|
60
|
+
elif cos_cbd < -1:
|
|
61
|
+
cos_cbd = -1
|
|
62
|
+
CBD = np.arccos(cos_cbd)
|
|
63
|
+
b_deg = 90.0 - np.degrees(BC)
|
|
64
|
+
cad = np.radians(282.8595) - p
|
|
65
|
+
coscbd = np.cos(cad) * np.cos(d) / np.sin(BC)
|
|
66
|
+
if coscbd > 1:
|
|
67
|
+
coscbd = 1
|
|
68
|
+
elif coscbd < -1:
|
|
69
|
+
coscbd = -1
|
|
70
|
+
cbd = np.arccos(coscbd)
|
|
71
|
+
if cbd - CBD < 32.9319:
|
|
72
|
+
l_deg = 360.0 - np.degrees(CBD)
|
|
73
|
+
else:
|
|
74
|
+
l_deg = np.degrees(CBD)
|
|
75
|
+
return b_deg, l_deg
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def eq_gal3(eq_ra, eq_dec):
|
|
79
|
+
# assume input ra, dec are in deg
|
|
80
|
+
coordset = SkyCoord(
|
|
81
|
+
ra=np.radians(eq_ra) * u.radians, dec=np.rad(eq_dec) * u.rad, frame="icrs", unit="deg"
|
|
82
|
+
)
|
|
83
|
+
# convert to galactic
|
|
84
|
+
galactic = coordset.galactic
|
|
85
|
+
# return b,l in deg
|
|
86
|
+
return galactic.b.value, galactic.l.values
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def gal_cyn(b_deg, l_deg, dist):
|
|
90
|
+
b_rad = np.radians(b_deg)
|
|
91
|
+
l_rad = np.radians(l_deg)
|
|
92
|
+
Z = np.sin(b_rad) * dist
|
|
93
|
+
xy = np.cos(b_rad) * dist
|
|
94
|
+
x = np.cos(l_rad) * xy
|
|
95
|
+
y = np.sin(l_rad) * xy
|
|
96
|
+
x_new = 8000.0 - x
|
|
97
|
+
R = np.power(x_new**2 + y**2, 0.5)
|
|
98
|
+
rho = np.arctan(y / x)
|
|
99
|
+
return R, rho, Z
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
The codes included in StarCounts.StarCounts are required for use with the field star count metrics (CountMassMetric and CountMetric)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
# Mike Lund - Vanderbilt University
|
|
4
|
+
# mike.lund@gmail.com
|
|
5
|
+
# Last edited 8/15/2015
|
|
6
|
+
# Description: Calculates spectral types for stars on the main sequence as
|
|
7
|
+
# a function of stellar mass. For use with Field Star Count metric
|
|
8
|
+
import sys
|
|
9
|
+
|
|
10
|
+
import numpy as np
|
|
11
|
+
from scipy.interpolate import interp1d
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def extrap1d(interpolator):
|
|
15
|
+
xs = interpolator.x
|
|
16
|
+
ys = interpolator.y
|
|
17
|
+
|
|
18
|
+
def pointwise(x):
|
|
19
|
+
if x < xs[0]:
|
|
20
|
+
return ys[0]
|
|
21
|
+
elif x > xs[-1]:
|
|
22
|
+
return ys[-1]
|
|
23
|
+
else:
|
|
24
|
+
return interpolator(x)
|
|
25
|
+
|
|
26
|
+
def ufunclike(xs):
|
|
27
|
+
return np.array(list(map(pointwise, np.array(xs))))
|
|
28
|
+
|
|
29
|
+
return ufunclike
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def spec_type(mass):
|
|
33
|
+
mass_range = [
|
|
34
|
+
0.06,
|
|
35
|
+
0.21,
|
|
36
|
+
0.40,
|
|
37
|
+
0.51,
|
|
38
|
+
0.67,
|
|
39
|
+
0.79,
|
|
40
|
+
0.92,
|
|
41
|
+
1.05,
|
|
42
|
+
1.4,
|
|
43
|
+
1.6,
|
|
44
|
+
2.0,
|
|
45
|
+
2.9,
|
|
46
|
+
3.8,
|
|
47
|
+
5.9,
|
|
48
|
+
7.6,
|
|
49
|
+
17.5,
|
|
50
|
+
23,
|
|
51
|
+
37,
|
|
52
|
+
60,
|
|
53
|
+
120,
|
|
54
|
+
]
|
|
55
|
+
spec_range = [
|
|
56
|
+
68,
|
|
57
|
+
65,
|
|
58
|
+
62,
|
|
59
|
+
60,
|
|
60
|
+
55,
|
|
61
|
+
50,
|
|
62
|
+
45,
|
|
63
|
+
40,
|
|
64
|
+
35,
|
|
65
|
+
30,
|
|
66
|
+
25,
|
|
67
|
+
20,
|
|
68
|
+
18,
|
|
69
|
+
15,
|
|
70
|
+
13,
|
|
71
|
+
10,
|
|
72
|
+
8,
|
|
73
|
+
6,
|
|
74
|
+
5,
|
|
75
|
+
3,
|
|
76
|
+
]
|
|
77
|
+
f = interp1d(mass_range, spec_range)
|
|
78
|
+
f2 = extrap1d(f)
|
|
79
|
+
# f2=interp1d(mass_range, spec_range, kind='slinear')
|
|
80
|
+
if mass == 0:
|
|
81
|
+
xnew = np.logspace(-2, 3, 100)
|
|
82
|
+
import matplotlib.pyplot as plt
|
|
83
|
+
|
|
84
|
+
plt.plot(mass_range, spec_range, "o", xnew, f2(xnew), "-") # , xnew, f2(xnew),'--')
|
|
85
|
+
plt.xscale("log")
|
|
86
|
+
plt.show()
|
|
87
|
+
return f2([mass])
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
if __name__ == "__main__":
|
|
91
|
+
print(spec_type(float(sys.argv[1]))) # mass
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
# Mike Lund - Vanderbilt University
|
|
4
|
+
# mike.lund@gmail.com
|
|
5
|
+
# Last edited 8/15/2015
|
|
6
|
+
# Description: Calculates the number of stars in a given direction and
|
|
7
|
+
# between a given set of distances. For use with Field Star Count metric
|
|
8
|
+
|
|
9
|
+
import numpy as np
|
|
10
|
+
|
|
11
|
+
from . import coords, stellardensity
|
|
12
|
+
|
|
13
|
+
skyarea = 41253.0
|
|
14
|
+
distancebins = 51
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def star_vols(d1, d2, area):
|
|
18
|
+
distance_edges = (np.linspace((d1**3.0), (d2**3.0), num=distancebins)) ** (1.0 / 3)
|
|
19
|
+
volumeshell = (area / skyarea) * (4.0 * np.pi / 3) * (distance_edges[1:] ** 3 - distance_edges[:-1] ** 3)
|
|
20
|
+
distances = ((distance_edges[1:] ** 3 + distance_edges[:-1] ** 3) / 2.0) ** (1.0 / 3)
|
|
21
|
+
return volumeshell, distances
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def starcount(eq_ra, eq_dec, d1, d2):
|
|
25
|
+
volumes, distances = star_vols(d1, d2, 9.62)
|
|
26
|
+
b_deg, l_deg = coords.eq_gal3(eq_ra, eq_dec)
|
|
27
|
+
positions = [coords.gal_cyn(b_deg, l_deg, x) for x in distances]
|
|
28
|
+
densities = [stellardensity.stellardensity(x[0], x[2]) for x in positions]
|
|
29
|
+
totalcount = np.sum(np.asarray(volumes) * np.asarray(densities))
|
|
30
|
+
return totalcount
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
# Mike Lund - Vanderbilt University
|
|
4
|
+
# mike.lund@gmail.com
|
|
5
|
+
# Last edited 8/15/2015
|
|
6
|
+
# Description: Takes a given set of galactic coordinates and a stellar
|
|
7
|
+
# mass range, then calculates the number of stars within that range
|
|
8
|
+
# that will be fainter than mag 16, and have sufficiently low noise
|
|
9
|
+
# in the given band. For use with Field Star Count metric
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
import numpy as np
|
|
13
|
+
from scipy.optimize import newton
|
|
14
|
+
|
|
15
|
+
from . import abs_mag, spec_type
|
|
16
|
+
from .starcount import starcount
|
|
17
|
+
|
|
18
|
+
xi = 1.0
|
|
19
|
+
alpha = 2.35
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def IMF(lower, upper):
|
|
23
|
+
exp = alpha - 1.0
|
|
24
|
+
part1 = xi / exp
|
|
25
|
+
part2 = lower**-exp - upper**-exp
|
|
26
|
+
part3 = part1 * part2
|
|
27
|
+
return part3
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def get_distance(apparent, absolute):
|
|
31
|
+
part1 = (apparent - absolute) / 5.0
|
|
32
|
+
part2 = 10 * 10**part1
|
|
33
|
+
return part2
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def noise_opt(m, band, sigma):
|
|
37
|
+
part1 = mag_error(m, band)
|
|
38
|
+
part2 = part1**2.0
|
|
39
|
+
part3 = sigma**2.0
|
|
40
|
+
total = part2 - part3
|
|
41
|
+
return total
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def mag_error(ap_mag, band, calcm5=0): # apparent magnitude and band
|
|
45
|
+
gamma = {"u": 0.037, "g": 0.038, "r": 0.039, "i": 0.039, "z": 0.040, "y": 0.040}
|
|
46
|
+
m5 = {"u": 23.9, "g": 25.0, "r": 24.7, "i": 24.0, "z": 23.3, "y": 22.1}
|
|
47
|
+
if calcm5 == 0:
|
|
48
|
+
calcm5 = m5[band]
|
|
49
|
+
X = 10.0 ** (0.4 * (ap_mag - calcm5))
|
|
50
|
+
random_2 = np.sqrt((0.04 - gamma[band]) * X + gamma[band] * X * X)
|
|
51
|
+
error_2 = random_2**2.0 + (0.005) ** 2.0
|
|
52
|
+
mag_error = np.sqrt(error_2)
|
|
53
|
+
return mag_error
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def noise_calc(band):
|
|
57
|
+
gamma = {"u": 0.037, "g": 0.038, "r": 0.039, "i": 0.039, "z": 0.040, "y": 0.040}
|
|
58
|
+
m5 = {"u": 23.9, "g": 25.0, "r": 24.7, "i": 24.0, "z": 23.3, "y": 22.1}
|
|
59
|
+
sigma = 0.03
|
|
60
|
+
sigma_sys = 0.005
|
|
61
|
+
|
|
62
|
+
def fun(x):
|
|
63
|
+
sigma_sys**2
|
|
64
|
+
+(0.04 - gamma[band]) * 10 ** (0.4 * (x - m5[band]))
|
|
65
|
+
+gamma[band] * 10 ** (0.8 * (x - m5[band]))
|
|
66
|
+
-(sigma**2)
|
|
67
|
+
|
|
68
|
+
return newton(fun, 25)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def dist_calc(mass, band):
|
|
72
|
+
# mass to spectral type
|
|
73
|
+
# spectral type to absolute mag
|
|
74
|
+
bands = ["z", "y", "i", "r", "g", "u"]
|
|
75
|
+
output = abs_mag.abs_mag(spec_type.spec_type(mass))[0]
|
|
76
|
+
indexvalue = bands.index(band)
|
|
77
|
+
absolutemag = output[indexvalue][0]
|
|
78
|
+
apparent = noise_calc(band)
|
|
79
|
+
dist_min = get_distance(16, absolutemag)
|
|
80
|
+
dist_max = get_distance(apparent, absolutemag)
|
|
81
|
+
return dist_min, dist_max
|
|
82
|
+
# abs mag to apparent mag ranges, > 16, noise dependent upper limit
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def starcount_bymass(eq_ra, eq_dec, m1, m2, band):
|
|
86
|
+
masses = np.linspace(m1, m2, num=20)
|
|
87
|
+
totmass = IMF(m1, m2)
|
|
88
|
+
totmass = IMF(0.2, 1.04)
|
|
89
|
+
massbins = IMF(masses[:-1], masses[1:])
|
|
90
|
+
massfractions = massbins / totmass
|
|
91
|
+
distances = [dist_calc(x, band) for x in masses[:-1]]
|
|
92
|
+
starcounts = [y * starcount(eq_ra, eq_dec, x[0], x[1]) for x, y in zip(distances, massfractions)]
|
|
93
|
+
return sum(starcounts)
|